我可以使用evdev读取NUML_LED状态。但是,如果我退出程序后在读取了LED之后抓住了设备,即使系统仍处于打开状态,LED也会熄灭。
import evdev
device = evdev.InputDevice('/dev/input/event3')
try:
print(device.leds(verbose=True))
print("Using device:\n" + str(device))
device.grab()
except (KeyboardInterrupt, SystemExit):
pass
如果我只是做grab()
或device.leds()
中的一个而没有另一个,则它们(如预期的那样)不会关闭。但是,调用这两种方式都会导致混乱。
编辑: 我刚刚意识到,当我退出LED时,如果LED_NUML和LED_CAPSL点亮,则当我按下num_lock或caps_lock时,另一个按钮的状态也会固定。
IE:
- LED_NUML and LED_CAPSL are on
- run script
- LED_NUML and LED_CAPSL are off
- press num_lock turns num_lock off (LED_NUML is already off so it stays off)
- LED_CAPSL turns on
答案 0 :(得分:0)
这是不可能的。内核中有问题。正如ssieb在python evdev问题页面about this issue上所说。
释放设备后,将重新启动连接到该设备的所有处理程序。我的猜测是,有一些处理程序正在重置LED。