web-dev-qa-db-fra.com

description de la structure input_event (à partir de linux / input.h)

Quelqu'un peut-il me dire quelles sont les propriétés des types de données utilisés par la structure input_event?

Il est défini comme suit dans le fichier input.h:

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

mais il n'y a pas d'autres descriptions! Même googler ne m'a rien donné d'intéressant.

La seule chose que je sais, c'est que time donne des secondes ou des millisecondes depuis Epoch et value donne le code du bouton pressé. Mais même la valeur de la propriété value n'est pas vraiment claire pour moi. Dans mon programme, chaque frappe génère six événements. Les événements suivants sont une réponse pour avoir appuyé sur la touche ENTER:

type=4,code=4,value=458792
type=1,code=28,value=1
type=0,code=0,value=0
type=4,code=4,value=458792
type=1,code=28,value=0
type=0,code=0,value=0 

et ceux-ci sont pour a lettre:

type=4,code=4,value=458756
type=1,code=30,value=1
type=0,code=0,value=0
atype=4,code=4,value=458756
type=1,code=30,value=0
type=0,code=0,value=0

Je voudrais décoder la valeur à la vraie lettre, mais je ne comprends pas la signification des propriétés.

Aidez-moi!

24
SP5RFD

Le struct input_event est, entre autres, défini dans include/linux/input.h .


De 5. Interface d'événement dans le noyau Linux Documentation/input/input.txt (et modifiée pour fournir les noms de fichier d'en-tête corrects):

  • time est l'horodatage, il renvoie l'heure à laquelle l'événement s'est produit.

  • type est par exemple EV_REL pour l'instant relatif, EV_KEY pour une pression sur une touche ou un relâchement. D'autres types sont définis dans include/linux/input-event-codes.h .

  • code est un code d'événement, par exemple REL_X ou KEY_BACKSPACE, encore une liste complète se trouve dans inclure/linux/input-event-codes.h .

  • value est la valeur de l'événement. Soit un changement relatif pour EV_REL, nouvelle valeur absolue pour EV_ABS (joysticks ...) ou 0 pour EV_KEY pour publication, 1 pour les touches et 2 pour la répétition automatique.

Pour les guides et les exemples de code, effectuez une recherche sur le Web pour "linux kernel" "input subsystem" .

45
Nominal Animal