Слушайте 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
и внимательно прочитайте его
для тех, кто узнает позже этот вопрос (как случилось со мной): есть замечательная библиотека Георгий Вальков для файлам: