我已经物理移除了 Num Lock 键帽,所以我不会不小心按下它(我使用的是非常紧凑的键盘)。但我知道xorg中有一个错误,off当我切换键盘布局时,它会将 Num Lock 切换到。
所以我需要一些东西,要么完全阻止 Num Lock “关闭”,要么(也许更容易?)监视 Num Lock 状态并在它注意到它“关闭”时立即将其“打开”。
这是一个 Unix 答案,似乎解决了这个问题,但对于 LXDE。我需要做什么才能使这个想法在 Ubuntu 15.04 和 Unity 中发挥作用?
我不知道如何监视或查询 Num Lock 状态,也不知道如何以编程方式更改 Num Lock 状态,但这里有一个使用始终运行的简单脚本的解决方案。听起来它会起作用,但我不确定让它一直运行是否明智?
最干净的当然是修复错误,但作为一种解决方法,下面的后台脚本将完成这项工作:
#!/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'"])
Run Code Online (Sandbox Code Playgroud)
NM_on.py使用以下命令在后台测试运行它:
python3 /path/to/NM_on.py
Run Code Online (Sandbox Code Playgroud)如果一切正常,请将其添加到启动应用程序:Dash > 启动应用程序 > 添加,添加命令:
/bin/bash -c "sleep 10 && python3 /path/to/NM_on.py"
Run Code Online (Sandbox Code Playgroud)我们可以通过Num Lock多种方式获取当前状态:
运行命令:
xset q
Run Code Online (Sandbox Code Playgroud)
这将给出如下输出:
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
.....
Run Code Online (Sandbox Code Playgroud)
或使用以下命令:
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
Run Code Online (Sandbox Code Playgroud)
它只是返回'on','off'或'unknown'。
由于后者的重量极轻,我们可以很好地在后台脚本中使用它每秒检查一次,并在'on'必要时使用以下命令将值设置为:
gsettings set org.gnome.settings-daemon.peripherals.keyboard numlock-state 'on'
Run Code Online (Sandbox Code Playgroud)所以它确实......
出于某种原因,我错过了您的最后一段,其中您提到了具有类似解决方案的另一个答案。
纯粹从理论上讲,我总是对盲目(重新)应用设置而不检查当前状态的脚本有问题。有可能是,如果命令这样做,一种说法
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
Run Code Online (Sandbox Code Playgroud)
要获得当前值,只需运行就会要求更高
numlockx on
Run Code Online (Sandbox Code Playgroud)
到(重新)设置 numlockx on。
查看两个命令需要完成的时间(这至少是一个指示),但情况正好相反;命令
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
Run Code Online (Sandbox Code Playgroud)
似乎更“轻量级”。
当然,如果你没有理由运行后台脚本,那就不要。同时,如果后台脚本编写得很好,经过彻底测试,程序经过巧妙优化,如果它不会对处理器占用产生任何显着影响,如果它增加了重要功能或节省您的时间。
我经常有至少 4-8 个后台脚本在运行。他们中的大多数数周没有重新启动。从未注意到对我的老年系统有任何影响。请记住,您的系统无论如何都在运行多个循环。
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |