Les données d'un clavier se présentent principalement sous la forme de scancodes, produits par la pression des touches ou utilisés dans le protocole avec l'ordinateur. (Différents codes sont utilisés en interne par le microprogramme du clavier, et il existe également plusieurs jeux de scancodes. Dans cette section, nous ne parlons que des codes par défaut - ceux du jeu de codes traduits 2. Les modes moins courants sont abordés ci-dessous) Chaque pression et relâchement de touche produit entre 0 et 6 scancodes.
1.1 Relâchement de touche
Ci-dessous, je ne mentionnerai que le scancode de l'appui sur une touche (`make'). Le scancode pour le relâchement de la touche (`break') est obtenu en réglant le bit de poids fort (en ajoutant 0x80 = 128). Ainsi, Esc press produit le scancode 01, Esc release le scancode 81 (hex). Pour les séquences, les choses sont similaires : Keypad-/ donne e0 35 lorsqu'il est enfoncé, e0 b5 lorsqu'il est relâché. La plupart des claviers répètent le code de validation (code de descente de touche) lorsque la touche est répétée. Certains simulent également les événements Shift down et Shift up pendant la répétition.
Les touches PrtSc/SysRq et Pause/Break sont spéciales. La première produit le scancode e0 2a e0 37 lorsqu'aucune touche de modification n'est pressée simultanément, e0 37 avec Shift ou Ctrl, mais 54 avec Alt (gauche ou droite). (Et on obtient les séquences attendues au relâchement. Mais voir ci-dessous.) La seconde produit la séquence de scancode e1 1d 45 e1 9d c5 lorsqu'elle est pressée (sans modificateur) et rien du tout au relâchement. Cependant, avec Ctrl (gauche ou droite), on obtient e0 46 e0 c6, et à nouveau rien au relâchement. Cela ne se répète pas.
Voir ci-dessous un rapport sur les touches ayant un comportement différent.
De nombreux rapports font état d'ordinateurs portables dont les événements d'enfoncement de touche sont mal amortis. Par conséquent, les événements inattendus d'enfoncement de touche doivent être considérés comme normaux et ignorés.
---