AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 703911
Accepted
Torben Gundtofte-Bruun
Torben Gundtofte-Bruun
Asked: 2015-11-30 07:32:44 +0800 CST2015-11-30 07:32:44 +0800 CST 2015-11-30 07:32:44 +0800 CST

保持 NumLock 始终开启

  • 772

我已经物理移除了 Num Lock 键帽,所以我不会不小心按下它(我使用非常紧凑的键盘)。但我知道xorg 中有一个错误,off它会在我切换键盘布局时将 Num Lock 切换为。

所以我需要一些东西来防止 Num Lock 完全“关闭”,或者(也许更容易?)监视 Num Lock 状态并在它注意到它“关闭”时立即将其“打开”。

这是一个似乎解决这个问题的 Unix 答案,但适用于 LXDE。我需要做什么才能使这个想法在 Ubuntu 15.04 和 Unity 中发挥作用?

我不知道如何监视或查询 Num Lock 状态,或者如何以编程方式更改 Num Lock 状态,但这里有一个使用一直运行的简单脚本的解决方案。听起来好像可行,但我不确定让它一直运行是否明智?

unity
  • 1 1 个回答
  • 1757 Views

1 个回答

  • Voted
  1. Best Answer
    Jacob Vlijm
    2015-11-30T09:06:55+08:002015-11-30T09:06:55+08:00

    最干净的当然是修复错误,但作为解决方法,下面的后台脚本将完成这项工作:

    #!/usr/bin/env python3
    import subprocess
    import time
    
    key = "org.gnome.settings-daemon.peripherals.keyboard numlock-state"
    while True:
        time.sleep(1)
        state = subprocess.check_output([
            "/bin/bash", "-c", "gsettings get "+key]).decode("utf-8").strip()
        if state != "'on'":
            subprocess.Popen([
                "/bin/bash", "-c", "gsettings set "+key+" 'on'"])
    

    如何使用

    • 将上面的脚本复制到一个空文件中,另存为NM_on.py
    • 使用以下命令在后台测试运行它:

      python3 /path/to/NM_on.py
      
    • 如果一切正常,将其添加到 Startup Applications:Dash > Startup Applications > Add,添加命令:

      /bin/bash -c "sleep 10 && python3 /path/to/NM_on.py"
      

    解释

    Num Lock我们可以通过不止一种方式获取当前状态:

    • 运行命令:

      xset q
      

      这将给出如下输出:

      Keyboard Control:
        auto repeat:  on    key click percent:  0    LED mask:  00000000
        XKB indicators:
          00: Caps Lock:   off    01: Num Lock:    off    02: Scroll Lock: off
          03: Compose:     off    04: Kana:        off    05: Sleep:       off
          06: Suspend:     off    07: Mute:        off    08: Misc:        off
          09: Mail:        off    10: Charging:    off    11: Shift Lock:  off
          12: Group 2:     off    13: Mouse Keys:  off
        auto repeat delay:  500    repeat rate:  33
      .....
      

      或使用命令:

      gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
      

      它只是返回'on','off'或'unknown'。

      由于后者重量极轻,我们可以很好地在后台脚本中使用它来每秒检查一次,并将值设置为'on',如有必要,使用以下命令:

      gsettings set org.gnome.settings-daemon.peripherals.keyboard numlock-state 'on'
      

    所以它确实...


    编辑

    出于某种原因,我错过了您的最后一段,您在其中提到了另一个具有类似解决方案的答案。

    纯粹从理论上讲,我总是遇到盲目(重新)应用设置而不检查当前状态的脚本问题。如果命令_

    gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
    

    要获得当前值,简单地运行会要求更高

    numlockx on
    

    到(重新)设置 numlockx on。
    查看两个命令需要完成的时间(这至少是一个指示),但是相反;命令

    gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
    

    似乎更“轻量级”。

    运行后台脚本不是个好主意吗?

    当然,如果您没有理由运行后台脚本,那就不要运行。同时,如果后台脚本写得很好,经过全面测试,程序经过巧妙优化,并且如果它不会对处理器占用产生任何明显影响,那么如果它增加了重要的影响,不将其用作变通方法将是愚蠢的功能或节省您的时间。

    我经常有至少 4-8 个后台脚本在运行。他们中的大多数人几周没有重新启动。从未注意到对我的旧系统有任何影响。请记住,您的系统无论如何都在运行许多循环。

    • 9

相关问题

  • 如何将 Web 应用程序放入 Unity Launcher?

  • Ubuntu 上网本 10.10 中没有 Alt+F2?

  • Unity 中的 gnome-do 样式键盘快捷键

  • 在哪里提交 Unity 的错误/愿望清单?

  • Unity 启动器——它可以作为单独的包提供吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve