Слушайте USB-клавиатуру с Python

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

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

как начало-вполне достаточно, чтобы эхо введенных пользователем символов в текстовый файл с заданным именем.

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

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

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

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

но более цивилизованный способ по-прежнему высоко ценится

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

2 ответов


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

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

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

добавить: в откройте для себя фактическое eventN,

cat /proc/bus/input/devices

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


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

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

http://python-evdev.readthedocs.org/en/latest/index.html