Есть ли в Python способ программно изменить состояния CAPS LOCK/NUM LOCK/SCROLL LOCK на устройстве hidraw
Это тот же вопрос, что и в разделе " Изменение блокировок клавиатуры в Python" или " Как изменить статус блокировки прописных букв без нажатия клавиши".
Но есть разница!!
Я не хочу менять индикаторы на / dev / console или / dev / tty, но на устройстве с человеческим интерфейсом, которое подключено через USB и распознается как /dev/hidraw0.
Чтобы сделать это еще сложнее, это используется на Raspberry Pi.
Метод, предложенный в других вопросах, не работает.
1 ответ
Используя библиотеку в библиотеке Якуба Уилка по адресу http://jwilk.net/software/python-keyboardleds, это довольно просто:
lk = LedKit('/dev/input/event1')
lk.num_lock.reset()
lk.caps_lock.reset()
Хитрость заключается в том, чтобы определить, какое устройство ввода ваша клавиатура. Чтобы понять это, вы посмотрите на /proc/bus/input/devices. (Спасибо Якубу за это решение)
Я проверил это на двух клавиатурах:
- Клавиатура PS1 подключена через адаптер PS1 к USB с набором микросхем Holtek (04d9:1400)
- Дешевая цифровая клавиатура, также с чипсетом Holtek (04d9:1603), HT82M99E.
Результат: это работает для первых, но не для последних.
Возможно, кто-то знает, является ли это проблемой с драйвером или проблемой самого оборудования (не отвечает на запросы от драйвера).