0

我可以使用 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()ORdevice.leds()而没有另一个,它们(如预期的那样)不会关闭。但是调用两个 LED 都会弄乱。

编辑: 我刚刚意识到,如果 LED_NUML 和 LED_CAPSL 在我退出时打开,则 LED 关闭,但是当我按下 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
4

1 回答 1

0

在这个时候是不可能的。内核中有问题。正如 ssieb 在有关此问题的 python evdev 问题页面上所说。

当一个设备被释放时,所有连接到该设备的处理程序都会重新启动。我的猜测是有一些处理程序正在重置 LED。

于 2019-06-06T18:47:33.750 回答