grab () после того, как device.leds () выключит светодиод - PullRequest
0 голосов
/ 26 мая 2019

Я могу прочитать состояние NUML_LED, используя evdev. Но если я беру () устройство после считывания индикаторов при выходе из программы, индикатор выключится, даже если состояние все еще включено в отношении системы.

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() без другого, они (как и ожидалось) не выключатся. Но вызывая оба беспорядка с светодиодами.

Edit: Я только что понял, что если 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

1 Ответ

0 голосов
/ 06 июня 2019

В настоящее время это невозможно.В ядре есть проблема.Как говорит ssieb на python, страница evdev выпускает страницу об этой проблеме .

Когда устройство освобождается, все обработчики, подключенные к устройству, перезапускаются.Я предполагаю, что есть какой-то обработчик, который сбрасывает светодиоды.

...