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!
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"
.