Cómo depurar la entrada desde un dispositivo de entrada (/ dev / input / event *)

19

Tengo un receptor IR que utiliza el controlador imon y me gustaría que funcione con el núcleo. En este momento, la mitad de las teclas del control remoto ( imagen ) funciona, ¡pero una idea muy importante como las teclas numéricas no!

La extraña idea es que el módulo de mapa de teclas del núcleo (rc-imon-pad) parece ser correcto, pero parece que realmente no se usa ya que las mismas teclas funcionan sin ese módulo.

Parece que el módulo rc-imon-pad siempre se carga cuando cargo imon, y luego sospecho que los códigos de teclas se almacenan en caché, por lo que no hay diferencia si descargo rc-imon-pad

Ahora estoy perdido, si lo hago cat /dev/input/event5o ir-keytable -thay datos, no importa qué tecla presione, por lo que el controlador registra los botones, pero parece que están traducidos a los códigos de teclas incorrectos.

My kernels es un kernel de ubuntu de Natty (Linux xbmc 2.6.37-11-generic # 25-Ubuntu SMP martes 21 de diciembre 23:42:56 UTC 2010 x86_64 GNU / Linux)

LassePoulsen
fuente
2
Parece que el problema es que el núcleo envía códigos de clave mayores que 255 que X no registra porque está limitado a un entero de 8 bits sin signo. Y ahora estoy volviendo a compilar el módulo del núcleo con códigos de teclas modificados para probar esta teoría ...
LassePoulsen
1
Por cierto, en lugar de catque pueda usar, evtestque proporciona información muy bien analizada.
9000

Respuestas:

3

Tengo el mismo control remoto y lo tengo enviando códigos de teclas correctos a mi kernel 2.6.38-gentoo-r3. No compilé códigos de teclas como módulo, porque probablemente todavía no hayan tenido tiempo de hacer posible seleccionar mapas de teclas individuales. Es todo o nada y no me gusta un millón de módulos inútiles que me abarrotan. En cambio, dejo que v4l-utils lo maneje con udev.

Un par de cosas que aprendí:

  • Verifique la salida de ir-keytable -r, debe enumerar todos los códigos de teclas aplicables a su control remoto.
  • Cargue la tabla de teclas manualmente: ir-keytable -c -w bleh / keymaps / imon_pad, después de lo cual ir-keytable -r debería devolverle la tabla
  • Es posible que tenga un receptor defectuoso, no menciona nada sobre la historia. Recuerdo haber visto al menos un mensaje en lirc-list donde el tipo dijo que devolver el caso y obtener uno nuevo resolvió sus problemas.

Háganos saber cómo te fue.

lkraav
fuente
Asegúrese de revisar esta respuesta para todos, xinput testes muy útil aquí. unix.stackexchange.com/a/6231/27902
Elijah Lynn
17

Puede encontrar útiles xinput listy xinput test <device>.

Por ejemplo,

$ xinput list
Id Id. Del puntero del núcleo virtual = 2 [puntero maestro (3)]
⎜ ↳ ID de puntero XTEST de núcleo virtual = 4 [puntero esclavo (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 11 [puntero esclavo (2)]
⎣ Id. Del teclado del núcleo virtual = 3 [teclado maestro (2)]
    Id Id. Del teclado XTEST del núcleo virtual = 5 [teclado esclavo (3)]
    Id ID del botón de encendido = 6 [teclado esclavo (3)]
    Id Identificación del bus de video = 7 [teclado esclavo (3)]
    ↳ ID del botón de reposo = 8 [teclado esclavo (3)]
    Buttons Asus Laptop extra buttons id = 9 [teclado esclavo (3)]
    ↳ AT Translated Set 2 keyboard id = 10 [teclado esclavo (3)]

y puedo monitorear mi teclado ( xinput test 10) o panel táctil ( xinput test 11o incluso xinput test "SynPS/2 Synaptics TouchPad") para todo tipo de eventos de entrada, y se imprimen bastante en la consola, y los parámetros se extraen e imprimen también.

Esto no resolverá su problema, pero al menos ayudará un poco descifrando el desorden que, por ejemplo, cat /dev/input/event1produce.

ulidtko
fuente
1
Muchas gracias! Construí un detector de teclado basado en esta respuesta.
l0b0