2010-09-07 5 views
5

Ich habe mit der Erfassung der Eingabe von meiner Tastatur Gerät herumspielen:/dev/input Tastaturformat

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

für mich, und ich habe mich gefragt, ob es eine Spezifikation für das, was es gibt, mit

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

zu hören. Ich bin hauptsächlich wegen des Verhaltens bestimmter Schlüssel neugierig; die Meta, Pfeiltasten, Numpad Schrägstrich.

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 

Jede andere Schlüssel ich bisher haben gesucht hat, die beiden Bytes in Klammern als Werte übereinstimmt, gibt es keinen Grund diese besondere sind?

Antwort

12

/dev/input/by-path/platform-i8042-serio-0-event-kbd ist nur ein symbolischer Link zu /dev/input/eventX Ereignis Gerätedatei. Die Daten können von Ereignisgerätedateien als

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

in /usr/include/linux/input.h definiert gelesen werden.

Mögliche Werte von type werden mit EV_ vorangestellt. Mögliche Werte von code sind abhängig von type. Sie haben das Präfix oder BTN_ oder REL_ oder so weiter. Mögliche Werte von value hängen sowohl von type als auch code ab. Zum Beispiel für Tastendruckereignisse value entspricht 1 und für Schlüssel-Release-Ereignisse 0.

Sie können mit Ereignisdaten überprüfen:

evtest /dev/input/eventX 

wo X das Ereignis Gerätenummer auf der Tastatur (oder jede andere Veranstaltung Gerät). Ein Tastendruck oder -freigabe gibt normalerweise drei Ereignisse aus (EV_MSC, EV_KEY und EV_SYN).

3

Einige Tasten haben ungewöhnlichen Scan-Codes ...

Von: http://www.beyondlogic.org/keyboard/keybrd.htm (mit Änderungen):

Jetzt gibt es 101 Tasten und 8 Bit 256 verschiedene Kombinationen machen, so dass nur Sie einen Byte senden müssen pro Schlüssel, richtig?

Nein. Leider sind eine Handvoll der auf Ihrer Tastatur gefundenen Schlüssel erweiterte Schlüssel und erfordern daher zwei Scan-Codes. Vor diesen Tasten steht ein E0 (Hex). Aber es hört auch nicht bei zwei Scan-Codes auf. Wie wäre es mit E1,14,77, E1, F0,14, F0,77! Jetzt kann das kein gültiger Scan-Code sein? Wieder falsch. Es wird zufällig gesendet, wenn Sie die Taste Pause/Pause drücken. Frag mich nicht, warum sie es so lange schaffen müssen! Vielleicht hatten sie einen schlechten Tag oder so?