Слушайте USB-клавиатуру с Python - PullRequest
11 голосов
/ 16 мая 2011

Настройка: минималистичный Linux (OpenWRT на маршрутизаторе ASUS), клавиатура USB (предположим, я знаю имя устройства, например / dev / hiddev0)

Цель: написать Python (или оболочку, в этомВ этом случае я могу использовать его как сценарий прокси для Python), который будет прослушивать это устройство и выполнять некоторые действия, основанные на вводе пользователем

В качестве начала - вполне достаточно для вывода введенных пользователем символов в текстовый файл данногоимя.

PyUSB выглядит действительно запутанным.Я в порядке с PySerial, хотя я не уверен, подходит ли это для задачи - при попытке открыть устройство пишет «serial.serialutil.SerialException: не удалось настроить порт: (22,« Неверный аргумент »)»

UPD: хорошо, хорошо, тривиальный ответ был "cat / dev / input / event1"

Но вывод действительно загадочный - какой-либо намек на его интерпретацию (как int-коды символов)?

UPD UPD : hexdump / dev / input / event1 намного лучше!он дает 6 9-ти кортежей для каждого нажатия клавиши (я полагаю, 3 для нажатия клавиши, 3 для нажатия клавиши вверх) Вероятно, это будет не , поэтому трудно расшифровать его

Но более гражданским способомвсе еще высоко ценится

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py выглядит интересно ...

Ответы [ 2 ]

6 голосов
/ 16 мая 2011

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py - реальный ответ - выходные данные очень детализированы, и есть готовый .poll() метод, который возвращает события.

единственная проблема, с которой я столкнулся - readMetadata () завершился с ошибкой 22. Затем я прокомментировал его вызов, и он работал как чудо

на самом деле, я скачал более свежую версию с http://autokey.googlecode.com/svn/trunk/src/lib/evdev.py

Добавить: чтобы узнать фактическое событиеN,

cat /proc/bus/input/devices

и внимательно прочитайте

3 голосов
/ 03 мая 2014

Для тех, кто узнает этот вопрос позже (как это случилось со мной): есть замечательная библиотека Георгия Валкова для evdev:

https://github.com/gvalkov/python-evdev

http://python -evdev.readthedocs.org / ен / последний / index.html

...