Question

Je joue autour avec la capture de l'entrée de mon appareil du clavier:

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

pour moi, et je me demandais s'il y avait un cahier des charges pour ce qu'elle retourne, en utilisant

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

pour écouter. Je suis curieux principalement en raison du comportement de certaines touches; les touches meta, flèche, numpad barre oblique.

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

Toutes les autres clé que je l'ai regardé a jusqu'à présent les deux octets entre parenthèses comme valeurs correspondantes, est-il une raison particulière sont ceux-ci?

Était-ce utile?

La solution

/dev/input/by-path/platform-i8042-serio-0-event-kbd est juste un lien symbolique vers le fichier de périphérique événement /dev/input/eventX. Les données peuvent être lues à partir des fichiers de périphériques d'événements comme

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

défini dans /usr/include/linux/input.h.

Les valeurs possibles de type sont préfixées avec EV_. Les valeurs possibles de code dépendent type. Ils sont préfixées avec KEY_ ou BTN_ ou REL_ ou ainsi de suite. Les valeurs possibles de value dépendent à la fois type et code. Par exemple pour les événements presse touche value est égale à 1 et pour des événements à libération touche 0.

Vous pouvez examiner les données d'événement avec:

evtest /dev/input/eventX

X est le numéro de périphérique d'événement de votre clavier (ou tout autre appareil de l'événement). Une pression sur la touche ou la libération émet normalement trois événements (EV_MSC, EV_KEY et EV_SYN).

Autres conseils

Certaines touches ont des codes d'analyse inhabituels ...

De: http://www.beyondlogic.org/keyboard/keybrd.htm (avec des modifications):

Maintenant, il y a 101 touches et 8 bits font 256 combinaisons différentes, donc il vous suffit d'envoyer un octet par clé, à droite?

Non. Malheureusement, une poignée de touches sur votre clavier sont des touches longues et nécessitent donc deux codes de balayage. Ces clés sont précédées d'un E0 (hex). Mais il ne se limite pas à deux codes de balayage soit. Que diriez-vous E1,14,77, E1, F0,14, F0,77! Maintenant que ne peut pas être un code valide scan? Encore faux. Il est arrive à envoyer lorsque vous appuyez sur la Pause / Pause. Ne me demandez pas pourquoi ils doivent le faire si longtemps! Peut-être qu'ils avaient une mauvaise journée ou quelque chose?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top