Les claviers envoient des événements à l'ordinateur. Un événement dit «scan code nnn down» ou «scan code nnn up». À l'autre bout de la chaîne, les applications s'exécutant sur un terminal attendent une entrée sous la forme d'une séquence de caractères. (À moins qu'ils n'aient demandé l'accès brut, comme le serveur X.) Lorsque vous appuyez sur A, le clavier envoie les informations «code de balayage 38 vers le bas». Le pilote de la console recherche son clavier et le transforme en «caractère a
» (si aucune touche de modification n'est enfoncée).
Lorsque vous appuyez sur une touche ou une combinaison de touches qui ne génère pas de caractère, les informations doivent être codées en termes de caractères. Quelques touches et combinaisons de touches ont des caractères de contrôle correspondants, par exemple Ctrl+ Aenvoie le caractère ␁
(valeur d'octet 1), Returnenvoie le caractère ␍
(Ctrl + M, valeur d'octet 13), etc. La plupart des touches de fonction n'ont pas de caractère correspondant et envoient plutôt une séquence de caractères commençant par le caractère ␛
(d'échappement, valeur d'octet 27). Par exemple, la clé Upest traduite dans la séquence d'échappement ␛[A
(trois caractères: échappement, crochet ouvert, majuscule A).
L'invite de nom d'utilisateur sur la console est stupide et ne comprend pas la plupart des séquences d'échappement. Il ne possède pas les fonctionnalités d'édition de ligne et d'historique auxquelles vous êtes habitués: celles-ci sont fournies par le shell et, tant que vous n'êtes pas connecté, vous n'avez pas de shell. Donc, il affiche simplement la séquence d'échappement. Il n'y a pas de glyphe pour le ␛
caractère, il est donc affiché sous la forme ^[
. Le ^
signe est traditionnellement utilisé comme préfixe pour les caractères de contrôle et échappe à ^[
cause de sa valeur d'octet: c'est la valeur d'octet de [
moins 64.
Si vous appuyez sur Upà l'invite du shell, la même séquence de 3 caractères est envoyée à votre shell. Le shell interprète cela comme une séquence de commande (généralement pour rappeler l'élément d'historique précédent). Si vous appuyez sur Ctrl+ Vpuis Upà l'invite du shell, la séquence d'échappement est insérée à l'invite: Ctrl+ Vest une commande permettant d'insérer littéralement le caractère suivant au lieu de l'interpréter en tant que commande. Le ␛
caractère n'est donc pas interprété comme le début d'une séquence d'échappement. .
Certaines clés ne sont que des modificateurs et ne sont pas transmises aux applications du terminal. Par exemple, lorsque vous appuyez sur Shift, ces informations restent dans le pilote du terminal et sont prises en compte si vous appuyez ensuite sur Apour que le pilote envoie A
à l'application au lieu de a
.
De plus, certaines touches de fonction peuvent ne pas être mappées dans votre console.
Pour une vue similaire dans l'interface graphique, voir Quelle est la clé méta de bash?
getty
oulogin
, bien que je ne sache pas pourquoi. Les devinettes éclairées disent que l'écran d'impression est interprété spécialement par le noyau pour des raisons historiques. Je ne suis cependant pas sûr à 100%, à l'exception des modificateurs.