Pregunta

He estado jugando un poco con la captura de la entrada de mi dispositivo de teclado:

/dev/input/by-path/platform-i8042-serio-0-event-kbd 

para mí, y me preguntaba si había alguna especificación para lo que devuelve, mediante

od -tx1 /dev/input/by-path/platform-i8042-serio-0-event-kbd 

para escuchar. Tengo curiosidad sobre todo debido al comportamiento de ciertas teclas; la meta, las teclas de flecha, teclado numérico barra inclinada.

0520300 ac 9d 86 4c 6b 0f 04 00 04 00  04  00 (db) 00 00 00
0520320 ac 9d 86 4c 8c 0f 04 00 01 00 (7d) 00  00 00 00 00
0520340 ac 9d 86 4c 95 0f 04 00 00 00  00  00  00 00 00 00

Cada otra tecla que he visto hasta ahora tiene las dos bytes entre paréntesis como valores coincidentes, ¿hay alguna razón estos son especiales?

¿Fue útil?

Solución

/dev/input/by-path/platform-i8042-serio-0-event-kbd es sólo un enlace simbólico al fichero de dispositivo /dev/input/eventX evento. Los datos se pueden leer en los archivos de dispositivos de eventos como

struct input_event {
    struct timeval time;
    __u16 type;
    __u16 code;
    __s32 value;
};

definido en /usr/include/linux/input.h.

Los valores posibles de type tienen el prefijo EV_. Los valores posibles de code dependen de type. Ellos tienen el prefijo KEY_ o BTN_ o REL_ o así sucesivamente. Los valores posibles de value dependen tanto type y code. Por ejemplo, para eventos de pulsación de teclas es igual value 1 y para eventos de liberación clave 0.

Se puede examinar datos de eventos con:

evtest /dev/input/eventX

donde X es el número de dispositivo caso de su teclado (o cualquier otro dispositivo de evento). Una pulsación de tecla o liberar normalmente emite tres eventos (EV_MSC, EV_KEY y EV_SYN).

Otros consejos

Algunas teclas tienen códigos de exploración inusuales ...

De: http://www.beyondlogic.org/keyboard/keybrd.htm (con modificaciones):

Ahora hay 101 teclas y 8 bits de hacer 256 combinaciones diferentes, por lo tanto sólo se necesita para enviar un byte por clave, ¿verdad?

Nop. Por desgracia, un puñado de las teclas que se encuentran en el teclado son teclas extendidas, y por lo tanto requieren dos códigos de exploración. Estas teclas son precedidos por un E0 (hex). Pero no se detiene en dos códigos de exploración tampoco. ¿Qué hay de E1,14,77, E1, F0,14, F0,77! Ahora que no puede haber un código de exploración válida? Nuevamente incorrecto. Se pasa a ser enviado al pulsar la tecla Pause / Break. No me pregunte por qué tienen que hacerlo tanto tiempo! Tal vez tenían un mal día o algo así?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top