Bonjour à tous !
J’ai le même phénomène qui peut paraitre déroutant, mais pour moi c’est normal et je ne pense pas qu'il y ait une anomalie.
Voici mon explication personnelle sans aucune garantie concernant l’exactitude de mon analyse :
Les touches Ctrl, Shift, Alt… sont des touches "ordinaires"
si elles sont utilisées seules.
Par exemple, la touche
Ctrl a le code KEY_UP_CODE = 17 et KEY_DOWN_CODE = 17. Il n'y a pas besoin des variables système KEY_UP_SPECIAL ou KEY_DOWN_SPECIAL pour savoir si elles sont actionnées.
Elles deviendront "spéciales" dès qu’elles seront associées avec une autre touche.Les variables système KEY_UP_SPECIAL ou KEY_DOWN_SPECIAL nous indiquent s’il y a un évènement simultané entre une des touches Ctrl, Shift… et une autre touche.
Si j’appuie sur la touche Ctrl que je maintiens enfoncée puis sur la lettre
t, la lecture des variables système me donne :
Tout va bien !
Dans un deuxième temps, je relâche la touche
t tout en conservant l’appui sur la touche Ctrl.
La lecture des variables système me donne :
Tout va toujours bien !
Pause !
A ce moment-là, nous venons d’arriver à une situation où une
seule la touche Ctrl est enfoncée. Comme je le disais plus haut, cette touche est donc redevenue une touche ordinaire où la variable système KEY_UP_SPECIAL n’aura plus de signification puisqu’il qu’il n’y a plus d’association de plusieurs touches.
Troisième temps, je relâche la touche Ctrl. La lecture des variables système me donne :
La touche Ctrl relâchée étant seule, la variable système KEY_UP_SPECIAL n’a plus de signification (remise à zéro) et KEY_UP_CODE nous indique 17. Nous avons bien relâché la touche Ctrl qui était enfoncée seule.
Pour moi, tout est cohérent pour KEY_UP_SPECIAL.
Bonne programmation à tous !