Frage

Ich habe mit der Erfassung der Eingabe von meiner Tastatur Gerät herumspielen:

/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 gespannt, vor allem durch das Verhalten bestimmter Tasten; 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 Taste ich bisher haben gesucht hat, die beiden Bytes in Klammern als Attribut-Werte angezeigt, gibt es keinen Grund diese spezielle sind?

War es hilfreich?

Lösung

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

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

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

Mögliche Werte von type mit EV_ vorangestellt. Mögliche Werte von code hängen von type. Sie sind mit KEY_ oder BTN_ oder REL_ Präfix oder so weiter. Mögliche Werte von value hängen sowohl von type und code. Zum Beispiel für Schlüssel Pressetermine value gleich 1 und für Schlüsselentlastungen 0.

Sie können mit Ereignisdaten überprüfen:

evtest /dev/input/eventX

Dabei gilt X das Ereignis Gerätenummer auf der Tastatur (oder jedes andere Ereignis Gerät). Ein Tastendruck oder lassen Sie normalerweise aussendet drei Ereignisse (EV_MSC, EV_KEY und EV_SYN).

Andere Tipps

Einige Tasten haben ungewöhnliche 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 brauchen Sie nur ein Byte pro Schlüssel zu schicken, nicht wahr?

Nein. Leider sind eine Handvoll der Tasten auf der Tastatur zu finden erweiterte Schlüssel und erfordern daher zwei Scan-Codes. Diese Schlüssel werden durch eine E0 (hex) vorangestellt. Aber es ist auch nicht an zwei Scan-Codes zu stoppen. Wie wäre es E1,14,77, E1, F0,14, F0,77! Jetzt kann, dass kein gültiger Scan-Code sein? Wieder falsch. Es geschieht gesendet werden, wenn Sie die Pause / Pause-Taste drücken. Frag mich nicht, warum sie es so lange machen müssen! Vielleicht waren sie einen schlechten Tag oder etwas mit?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top