Lorsque vous appuyez sur une touche de votre clavier, celui-ci envoie un code numérique à l'ordinateur, appelé code de balayage. Le code de balayage indique à l'ordinateur quelle touche a été enfoncée ; par exemple, sur un clavier américain typique, le A envoie le scan code 30 lorsque vous appuyez dessus (et 158 lorsque vous le relâchez). Le pilote du clavier signale ces codes directement aux applications lorsque le clavier est en mode brut ("brut" signifie non traité, directement sur le clavier). Quelques programmes utilisent le mode brut et effectuent leur propre traitement au clavier; le serveur X est le plus important.
La plupart des programmes s'attendent à ce que lorsque vous appuyez sur A touche, le programme lit le caractère a
(ASCII 97), et que lorsque vous appuyez sur Shift +A le programme lit A
(ASCII 65), et lorsque vous appuyez sur Ctrl +A le programme lit le Ctrl+A
caractère (ASCII 1). Les touches qui n'ont pas de caractères associés envoient des séquences d'échappement, par ex. \e[A
pour Gauche , où \e
est le caractère ESC (ASCII 27). Le pilote du clavier effectue cette traduction lorsque le clavier est en mode ASCII, également appelé mode XLATE (abréviation de « traduire »). Le mode XLATE permet aux applications de saisir des caractères, au prix de ne pas avoir accès à des nuances telles que "touche Maj gauche enfoncée" ou Ctrl + Maj + A par opposition à Ctrl + A.
Le kbd_mode
vous permet de basculer entre les modes et affiche le mode actuel si vous l'invoquez sans aucun argument.
Les combinaisons de touches magiques SysRq sont destinées à se remettre de diverses situations désagréables. L'une des combinaisons de touches est Alt+SysRq+K
pour tuer tous les programmes sur la console virtuelle actuelle ; si ce programme met le clavier en mode brut, vous ne pourrez pas taper à l'invite de connexion (qui apparaîtra souvent, selon la configuration de votre système). En appuyant sur Alt+SysRq+R
restaure le mode ASCII habituel (en dehors de X) où vous pouvez saisir des caractères.
Vous pouvez définir quel type de code votre clavier envoie. Cela se fait via le mode clavier. Vous pouvez changer le mode d'un clavier avec kbd_mode
.
Voici les options de la page de manuel :
-s: scancode mode (RAW),
-k: keycode mode (MEDIUMRAW),
-a: ASCII mode (XLATE),
-u: UTF-8 mode (UNICODE).
Il est beaucoup plus facile pour un développeur d'attraper des événements clés comme la touche Maj gauche enfoncée, s'il peut simplement obtenir les scancodes des touches enfoncées.