Linux |
CentOS 4.8 |
|
console_codes(4) |
console_codes − Séquence de contrôle des consoles. |
Sous Linux, le gestionnaire de console implémente un sous-ensemble important des séquences de contrôle des terminaux VT102 et ECMA-48/ISO 6429/ANSI X3.64, ainsi que quelques séquences spécifiques pour le changement de palette de couleurs, de fonte de caractères, etc... Dans la description ci-dessous, la seconde colonne de la table contient les mnémoniques ECMA-48 ou DEC (ces derniers ayant le préfixe DEC) pour chaque fonction indiquée. Les séquences sans mnémoniques ne correspondent ni à l’ECMA-48 ni au VT102. Lorsque tout le prétraitement nécessaire à une sortie est terminé, et qu’un flux de caractères arrive au gestionnaire de console pour être effectivement affiché, se produit tout d’abord une traduction des codes utilisés pour le prétraitement en code utilisés pour l’affichage. Si la console est en mode UTF-8, les octets arrivants sont tout d’abord assemblés en codes sur 16 bits au standard Unicode. Sinon chaque octet est transformé en fonction de la table de correspondance en cours (qui convertit chaque octet en une valeur Unicode). Voir le paragraphe JEUX DE CARACTÃRES plus bas pour plus de détails. Normalement, la valeur Unicode est convertie en un index dans la table de caractères, qui est alors stocké dans la mémoire vidéo, afin que le symbole graphique correspondant (comme ceux qui se trouvent dans la mémoire morte vidéo), apparaisse sur l’écran. Notez que l’utilisation de l’Unicode, et la conception des PC, permettent de disposer simultanément de 512 symboles différents. Si la valeur Unicode rencontrée est un caractère de contrôle, ou si l’on est déjà dans le traitement d’une séquence d’échappement, la valeur sera traitée de manière particulière. Plutôt que d’être convertie en un index dans la table des caractères et affichée comme un symbole, elle peut provoquer un déplacement du curseur, ou toute autre fonction de contrôle. Voir le paragraphe CONTRÃLE DE LA CONSOLE LINUX plus bas pour plus de détails. Il vaut mieux éviter en général de coder en dur les contrôles de terminaux dans les programmes. Linux propose l’utilisation de la base de données terminfo(5) concernant les possibilités des terminaux. Plutôt que d’émettre des séquences d’échappement à la main, vous pourrez presque toujours utiliser des bibliothèques de gestion de terminaux utilisant terminfo, ou des utilitaires comme ncurses(3), tput(1), ou reset(1). |
Ce paragraphe décrit tous les caractères de commande et les séquences d’échappement qui déclenchent certaines fonctions spéciales (c’est à dire n’affichant pas un symbole graphique à la position du curseur) sur la console Linux. |
Caractères de contrôle |
Un caractère est dit "de contrôle" s’il correspond à l’un des 14 codes suivants (avant traduction par la table de correspondance en cours) : 00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0A (LF), 0B (VT), 0C (FF), 0D (CR), 0E (SO), 0F (SI), 18 (CAN), 1A (SUB), 1B (ESC), 7F (DEL). On peut demander un mode d’affichage des caractères de contrôle (voir plus bas), dans lequel les codes 07, 09, 0B, 18, 1A, et 7F seront quand même affichés sous forme graphique. Inversement, en mode UTF-8 tous les codes de l’intervalle 00-1F sont considérés comme des caractères de contrôle quelque soit le mode d’affichage de ces codes. Lorsqu’un caractère de contrôle est rencontré, il agit immédiatement, puis est oublié (même au milieu d’une séquence d’échappement, laquelle continue avec le caractère suivant). Toutefois, ESC indique le début d’une nouvelle séquence d’échappement, annulant alors une éventuelle séquence déjà commencée. De même CAN et SUB annulent toute séquence d’échappement entamée. Les caractères de contrôle reconnus sont BEL, BS, HT, LF, VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI. Ils effectuent les actions suivantes : |
BEL (0x07, ^G) émet un bip, |
BS (0x08, ^H) revient en arrière d’une colonne (mais ne remonte pas à la ligne précédente quand il est invoqué en début de ligne), |
HT (0x09, ^I) saute à la prochaine tabulation, ou à la fin de ligne s’il n’y a pas de tabulation d’ici là , |
LF (0x0A, ^J), VT (0x0B, ^K) et FF (0x0C, ^L) effectuent tous les trois un saut de ligne, |
CR (0x0D, ^M) déclenche un retour-chariot, |
SO (0x0E, ^N) active le jeu de caractères G1, et si LF/NL (mode new-line) est actif, effectue un retour-chariot, |
SI (0x0F, ^O) active le jeu de caractères G0, |
CAN (0x18, ^X) et SUB (0x1A, ^Z) interrompent les séquences d’échappement, |
ESC (0x1B, ^[) débute une séquence d’échappement, |
DEL (0x7F) est ignoré, |
CSI (0x9B) est équivalent à ESC [. |
Séquences d’échappement ESC, non CSI |
|
|
|
|
|
|
BOGUES
VOIR AUSSI
TRADUCTION
|