自从我第一次在 Surface Pro 3 上双启动 Ubuntu 16.04 以来,键盘上的大写锁定指示灯就一直不亮。我决定最近尝试解决这个问题。当我输入命令
echo 1 | sudo tee /sys/class/leds/input45\:\:capslock/brightness
灯亮了,所以至少可以访问。不过我不确定如何根据大写锁定的状态让灯亮或灭。任何帮助都将不胜感激。
答案1
显然,不知何故,LED 没有自动设置。下面的背景补丁将处理这个问题:
#!/usr/bin/env python3
import subprocess
import time
led = "/sys/class/leds/input45::capslock/brightness"
while True:
time.sleep(1)
ledstate = open(led).read().strip() == "1"
capstate = "Caps Lock: on" in \
subprocess.check_output(["xset", "-q"]).decode("utf-8")
if ledstate != capstate:
newled = "0" if capstate == False else "1"
open(led, "wt").write(newled)
如何使用:
- 将脚本复制到一个空文件中,将其另存为
fix_led
(无扩展名)/usr/local/bin
,然后使其可执行。 - 由于您需要编辑文件,因此
/sys/class/leds/input45::capslock/brightness
您需要将脚本添加到 sudoers 文件中,如下所述这里。 通过运行测试运行脚本
sudo /usr/local/bin/fix_led
在终端中测试您的Caps Lock密钥。
现在将脚本添加到您的启动应用程序中:Dash > 启动应用程序 > 添加。添加命令:
/bin/bash -c "sleep 10 && sudo /usr/local/bin/fix_led"
就是这样。下次重新启动(登录)时,它应该可以正常工作。
笔记
当然,补丁应该适用于所有 LED 无法正常工作的情况。不过,文件的具体位置
capslock/brightness
可能会有所不同。如有必要,请在以下行中设置位置:led = "/sys/class/leds/input45::capslock/brightness"
在脚本的头部(不要转义 in
:
)python
。我通过以错误的方式设置 led 来测试脚本 :)(当 ledCaps Lock亮起时,led 熄灭;当 led 熄灭时,led 亮起)。- 脚本的额外负载为零。
解释
Caps Lock可以通过以下命令获取当前状态的信息:
xset -q
脚本每秒检查一次Caps Lock: on
输出中是否有。脚本还会检查当前状态是否与从文件中读取的 led 状态(1 或 0)匹配capslock/brightness
。
如果这两者不匹配,脚本将根据真实的 Caps Lock状态。