2011-05-15 40 views
11

La configuración: a Linux minimalista (OpenWRT en ASUS router), un teclado USB (supongo que sé el nombre del dispositivo como/dev/hiddev0)Escucha teclado USB con Python

Un objetivo: escribir una pitón (o shell, en este caso puedo usarlo como un proxy para python) secuencia de comandos que escuchará este dispositivo y realizará algunas acciones basadas en la entrada del usuario

Como inicio, lo suficiente como para hacer eco de los caracteres ingresados ​​por el usuario en el archivo de texto del nombre de pila.

PyUSB parece realmente confuso. Estoy bien con PySerial, aunque no estoy seguro si se adapta a la tarea: al intentar abrir el dispositivo dice "serial.serialutil.SerialException: No se pudo configurar el puerto: (22, 'Invalid argument')"

UPD: bueno, vale, la respuesta fue trivial "cat/dev/input/event1"

Pero la salida es muy críptica - ninguna pista sobre la interpretación de la misma (como códigos de carácter int)?

UPD UPD: ¡hexdump/dev/input/event1 es mucho mejor! da 6 9-tuplas para cada pulsación de tecla (supongo, 3 de tecla, 3 de tecla de arriba) Sería probablemente no por lo difícil descifrarlo

Pero más civiles manera sigue siendo muy apreciado

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py parece interesante ...

+0

¿Por qué no acaba de capturar caracteres como entrada del usuario? –

+0

quieres decir leer la entrada de la consola? lea la pregunta - es el sistema integrado (enrutador), el teclado no está conectado a la "pantalla" de script – Guard

+2

posible duplicado de [formato de/dev/input/event *?] (http://stackoverflow.com/questions/5060710/ format-of-dev-input-event) –

Respuesta

6

http://svn.navi.cx/misc/trunk/python/evdev/evdev.py es la verdadera respuesta - la salida es en gran medida detallada, y hay dispuestos .poll() método que devuelve eventos.

el único problema que encontramos - readMetadata() se produjo el error 22. A continuación os comento su llamamiento a cabo, y funcionó como un encanto

realidad, he descargado una versión más reciente de http://autokey.googlecode.com/svn/trunk/src/lib/evdev.py

Agregar : para descubrir la EVENTN real,

cat /proc/bus/input/devices 

y lea cuidadosamente a través de él