table of contents
other languages
CONSOLE_CODES(4) | Manuel du programmeur Linux | CONSOLE_CODES(4) |
NOM¶
console_codes - Séquence de contrôle des consolesDESCRIPTION¶
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 jeu 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émonique 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é, la traduction des codes utilisés pour le prétraitement en codes utilisés pour l'affichage a lieu avant tout. Si la console est en mode UTF-8, les octets arrivant 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). Consultez la section 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. Consultez 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).Commandes de la console Linux¶
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ôleBEL (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, et si LF/NL (mode new-line) est actif, effectue un
retour-chariot ;
CR (0x0D,
^M) déclenche un retour-chariot,
SO (0x0E,
^N) active le jeu de caractères G1,
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
ESC c | RIS | Réinitialisation. |
ESC D | IND | Saut de ligne. |
ESC E | NEL | Nouvelle ligne. |
ESC H | HTS | Positionner une tabulation à la colonne en cours |
ESC M | RI | Saut de ligne inversé. |
ESC Z | DECID | Identification privée DEC. Le noyau renvoie la chaîne ESC [ ? 6 c, simulant un VT102. |
ESC 7 | DECSC | Sauvegarde de l'état en cours (coordonnées curseur, attributs, jeux de caractères pointés par G0, G1). |
ESC 8 | DECRC | Restaure l'état sauvegardé le plus récemment |
par ESC 7. | ||
ESC [ | CSI | Début de séquence de contrôle. |
ESC % | Début de séquence de sélection de jeu de caractère. | |
ESC % @ | Jeu par défaut (ISO 646/ISO 8859-1) | |
ESC % G | Jeu UTF-8 | |
ESC % 8 | Jeu UTF-8 (obsolète) | |
ESC # 8 | DECALN | Test d'alignement d'écran DEC, remplit l'écran avec |
des E. | ||
ESC ( | Début de séquence de définition du jeu G0 | |
ESC ( B | Correspondance par défaut (ISO 8859-1) | |
ESC ( 0 | Correspondance VT100 graphique | |
ESC ( U | Pas de correspondance - caractères en ROM | |
ESC ( K | Correspondance définie par l'utilisateur | |
avec l'utilitaire mapscrn(8). | ||
ESC ) | Début de séquence de définition du jeu G1 | |
(suivi de B, 0, U, K, comme ci-dessus). | ||
ESC > | DECPNM | Mode de pavé numérique. |
ESC = | DECPAM | Mode de pavé alphabétique. |
ESC ] | OSC | (Doit être : Operating system command) ESC ] P nrrvvbb : définit la palette, le paramètre est fourni avec 7 chiffres hexadécimaux après le P final. n est la couleur (0-15), et rrvvbb indique les valeurs rouge/verte/bleue (0-255). ESC ] R : réinitialise la palette. |
@ | ICH | Insère le nombre indiqué de caractères blancs. |
A | CUU | Remonter le curseur du nombre de lignes indiqué. |
B | CUD | Descendre le curseur du nombre de lignes indiqué. |
C | CUF | Avancer le curseur du nombre de colonnes indiqué. |
D | CUB | Reculer le curseur du nombre de colonnes indiqué. |
E | CNL | Descendre le curseur du nombre de lignes indiqué, en |
colonne numéro 1. | ||
F | CPL | Remonter le curseur du nombre de lignes indiqué, |
en colonne numéro 1. | ||
G | CHA | Déplacer le curseur à la ligne indiquée, même colonne. |
H | CUP | Déplacer le curseur à la ligne et à la colonne indiquée |
(origine en 1, 1). | ||
J | ED | Effacer l'écran (par défaut depuis la position du curseur |
jusqu'à la fin de l'écran). | ||
ESC [ 1 J : efface du début jusqu'au curseur. | ||
ESC [ 2 J : efface tout l'écran. | ||
ESC [ 3 J : efface tout l'écran, y compris le tampon de. | ||
défilement arrière (depuis Linux 3.0). | ||
. | ||
K | EL | Efface la ligne (par défaut depuis le curseur jusqu'à |
la fin de la ligne). | ||
ESC [ 1 K : efface du début de ligne jusqu'au curseur. | ||
ESC [ 2 K : efface toute la ligne. | ||
L | IL | Insère le nombre indiqué de lignes blanches. |
M | DL | Supprimer le nombre indiqué de lignes. |
P | DCH | Supprimer le nombre indiqué de caractères sur la ligne |
en cours. | ||
X | ECH | Effacer le nombre indiqué de caractères sur la ligne |
en cours. | ||
a | HPR | Déplacer le curseur vers la droite du nombre de |
colonnes indiqué. | ||
c | DA | Répondre ESC [ ? 6 c : « Je suis un VT102 ». |
d | VPA | Placer le curseur sur la ligne indiquée, même colonne. |
e | VPR | Descendre le curseur du nombre indiqué de lignes. |
f | HVP | Placer le curseur aux lignes et colonnes indiquées. |
g | TBC | Sans paramètre : effacer la tabulation à la position |
courante. | ||
ESC [ 3 g : effacer toutes les tabulations. | ||
h | SM | Définit le mode (voir plus bas). |
l | RM | Réinitialise le mode (voir plus bas). |
m | SGR | Définit les attributs (voir plus bas). |
n | DSR | Indique l'état (voir plus bas). |
q | DECLL | Définit les LED du clavier. |
ESC [ 0 q : Effacer toutes les LED | ||
ESC [ 1 q : Allumer LED Scroll-Lock (Défilement) | ||
ESC [ 2 q : Allumer LED Num-Lock (Pavé numérique) | ||
ESC [ 3 q : Allumer LED Caps-Lock (Majuscules) | ||
r | DECSTBM | Indique une région de défilement, |
les paramètres correspondent aux lignes haute et basse. | ||
s | ? | Mémoriser l'emplacement du curseur. |
u | ? | Restituer l'emplacement du curseur. |
` | HPA | Déplacer le curseur à la colonne indiquée, même ligne. |
param | résultat. |
0 | réinitialiser tous les attributs à leurs valeurs par défaut. |
1 | attribut gras. |
2 | attribut demi-luminosité (simulé par une couleur sur certains |
écrans couleur). | |
4 | attribut soulignement (simulé par une couleur sur certains écrans couleur). (Les couleurs utilisées pour simuler la demi-luminosité ou le soulignement sont choisies en utilisant ESC ] ...). |
5 | clignotement. |
7 | vidéo inversée. |
10 | réinitialise la correspondance des touches, affiche l'état de contrôle et modifie l'attribut « méta » (ECMA-48 l'appelle « fonte principale »). |
11 | active une correspondance nulle, affiche l'état de contrôle et réinitialise l'état de l'attribut « méta » (ECMA-48 l'appelle « première fonte alternative »). |
12 | active une correspondance nulle, affiche l'état de contrôle et active l'attribut « méta » (ECMA-48 l'appelle « seconde fonte alternative »). Le changement d'attribut méta sert à modifier le bit de poids fort avant la conversion avec la table de correspondance). |
21 | intensité normale (ECMA-48 l'appelle "doublement souligné") |
22 | intensité normale. |
24 | pas de soulignement. |
25 | pas de clignotement. |
27 | pas d'inversion vidéo. |
30 | encre noire. |
31 | encre rouge. |
32 | encre verte. |
33 | encre marron. |
34 | encre bleue. |
35 | encre magenta. |
36 | encre cyan. |
37 | encre blanche. |
38 | soulignement, et couleur d'encre par défaut. |
39 | arrêt soulignement et couleur d'encre par défaut. |
40 | fond noir. |
41 | fond rouge. |
42 | fond vert. |
43 | fond marron. |
44 | fond bleu. |
45 | fond magenta. |
46 | fond cyan. |
47 | fond blanc. |
49 | couleur de fond par défaut. |
- ESC [ 3 h
- DECCRM (inactif par défaut) : afficher les caractères de contrôle.
- ESC [ 4 h
- DECIM (inactif par défaut) : mode d'insertion.
- ESC [ 20 h
- LF/NL (inactif par défaut) : faire suivre les LF, VT ou FF par un CR.
- ESC [ 5 n
- Rapport d'état du périphérique (DSR) : la réponse est ESC [ 0 n (Terminal OK).
- ESC [ 6 n
- Rapport de position du curseur (CPR) : la réponse est ESC [ y ; x R, où x,y est la position actuelle du curseur.
- ESC [ ? 1 h
- DECCKM (inactif par défaut) : les touches de déplacement du curseur émettent un préfixe ESC O plutôt que ESC [.
- ESC [ ? 3 h
- DECCOLM (inactif par défaut) : bascule de 80 colonnes à 132 colonnes. Les sources du gestionnaire de console indiquent que ce code n'est pas suffisant à lui seul. Certains utilitaires comme resizecons(8) modifient également les registres matériels de la carte vidéo.
- ESC [ ? 5 h
- DECSCNM (inactif par défaut) : mode d'inversion vidéo.
- ESC [ ? 6 h
- DECOM (inactif par défaut) : adressage du curseur relatif au coin haut gauche de la région de défilement.
- ESC [ ? 7 h
- DECAWM (actif par défaut) : saut de ligne automatique. Un caractère émis après la colonne 80 (ou 132 en mode DECCOLM), est affiché au début de la ligne suivante.
- ESC [ ? 8 h
- DECARM (actif par défaut) : répétition automatique des touches du clavier.
- ESC [ ? 9 h
- État de souris X10 (inactif par défaut) : définit le mode de rapport d'état de la souris à 1 (ou le réinitialise à 0) — voir plus bas.
- ESC [ ? 25 h
- DECTECM (actif par défaut) : curseur visible.
- ESC [ ? 1000 h
- État de souris X11 (inactif par défaut) : définit le mode de rapport d'état de la souris à 2 (ou le réinitialise à 0) — voir plus bas.
ESC [ 1 ; n ] | Choisit la couleur n pour simuler le soulignement. |
ESC [ 2 ; n ] | Choisit la couleur n pour simuler la demi-brillance. |
ESC [ 8 ] | Utilise la paire de couleurs actuelle par défaut. |
ESC [ 9 ; n ] | Délai d'économiseur d'écran en minutes. |
ESC [ 10 ; n ] | Fréquence du bip en Hz. |
ESC [ 11 ; n ] | Durée du bip en ms. |
ESC [ 12 ; n ] | Bascule sur la console virtuelle indiquée. |
ESC [ 13 ] | Arrête l'économiseur d'écran. |
ESC [ 14 ; n ] | Indique l'intervalle d'arrêt écran VESA en minutes. |
Caractères de contrôle¶
Le noyau connaît 4 types de traductions des octets en symboles graphiques pour la console. Les 4 tables sont a) Latin1 -> PC, b) VT100 graphique -> PC, c) PC -> PC, d) spécifique utilisateur. Il existe deux jeux de caractères, appelés G0 et G1, et l'un d'entre eux est sélectionné comme jeu en cours (initialement G0). La frappe de ^N sélectionne le jeu G1 comme jeu en cours, la frappe de ^O sélectionne le jeu G0. Ces variables G0 et G1 pointent vers des tables de traduction, qui peuvent être modifiées par l'utilisateur. Initialement elles pointent respectivement vers les tables a) et b). Les séquences ESC ( B, ESC ( 0, ESC ( U et ESC ( K font pointer G0 respectivement vers les tables a), b), c) et d). Les séquences ESC ) B, ESC ) 0, ESC ) U, ESC ) K font pointer G1 vers les tables a), b), c) et d) respectivement. La séquence ESC c réinitialise le terminal. C'est ce qui doit être effectué lorsque l'écran est rempli de codes incompréhensibles. La commande classique « echo ^V^O » sélectionne seulement le jeu G0, elle ne garantit pas que G0 pointe sur la table a). Dans certaines distributions, on trouve une commande reset(1) qui effectue simplement « echo ^[c ». Si l'entrée de la base terminfo pour la console est correcte, et dispose d'une entrée rs1=\Ec alors la commande « tput reset » fonctionnera aussi. La table de correspondance définie par l'utilisateur peut être construite en utilisant mapscrn(8). Cette correspondance agit ainsi : si le symbole c doit être imprimé, alors le symbole s = map[c] est envoyé à la mémoire vidéo. La représentation graphique correspondant à s est placée par défaut en mémoire morte, et peut être modifiée en utilisant setfont(8).Gestion de souris¶
Les possibilités de gestion de souris sont prévues pour fournir un rapport d'état de la souris compatible avec xterm(1). Comme le gestionnaire de console n'a aucun moyen de connaître le périphérique, ni le type de souris, ces rapports sont envoyés dans le flux de saisie de la console uniquement quand une requête ioctl de mise à jour de la souris est reçue. Ces requêtes doivent être déclenchées par une application utilisateur capable de gérer les souris, comme le démon gpm(8). Les séquences de suivi de souris engendrées par xterm(1) sont encodés dans un unique caractère, de code valeur+040. Par exemple, « ! » correspond à 1. Le système de coordonnées d'écran commence à 1. En mode de compatibilité X10, une séquence d'échappement est envoyée lors de l'appui sur un bouton, encodant la position et le numéro du bouton pressé. Ce mode est activé avec ESC [ ? 9 h et désactivé par ESC [ ? 9 l. Lors d'une pression sur un bouton, xterm(1) envoie ESC [ M bxy (6 caractères). Dans ce message b correspond au numéro de bouton -1, x et y sont les coordonnées de l'emplacement où le bouton a été pressé. Ce sont les mêmes codes que ceux produits par le noyau. En mode de suivi normal (non implémenté sous Linux 2.0.24), une séquence d'échappement est envoyée lors de l'appui sur un bouton, mais aussi lors du relâchement. Des informations sur les touches de modification (SHIFT, CTL...) sont également envoyées. Le mode est activé par ESC [ ? 1000 h et désactivé avec ESC [ ? 1000 l. Lors de l'appui ou du relâchement d'un bouton, xterm(1) envoie ESC [ M bxy. Les deux bits de poids faible de b correspondent à l'état du bouton 0=B1 pressé, 1=B2 pressé, 2=B3 pressé, 3=relâchement. Les bits de poids forts codent l'éventuelle touche modificatrice enfoncée lors de l'appui sur le bouton 4=Shift, 8=Méta, 16=Control. À nouveau x et y sont les coordonnées de la souris au moment de l'événement. Le coin en haut à gauche de l'écran a pour coordonnées (1,1).Comparaison avec d'autres terminaux¶
Beaucoup d'autres terminaux sont dits compatibles VT100, comme la console Linux. Nous allons voir ici les différences entre cette dernière et les deux types principaux de terminaux : le DEC VT102 et xterm(1). Gestion des caractères de contrôleNUL (0x00)
était ignoré.
ENQ (0x05)
renvoyait un message d'identification.
DC1 (0x11,
^Q, XON) reprenait une transaction.
DC3 (0x13,
^S, XOFF) demandait au vt100 d'ignorer tous les codes saufs XOFF et XON
(et d'arrêter également de transmettre).
Une gestion de DC1/DC3 compatible VT100 pouvait être activé par le
gestionnaire de terminaux.
Le programme xterm(1) (en mode VT100) reconnaît les caractères
de contrôle BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC.
Séquences d'échappement
ESC N | SS2 | Basculement G2 simple. (Sélectionner le jeu G2 pour |
le caractère suivant uniquement) | ||
ESC O | SS3 | Basculement G3 simple. (Sélectionner le jeu G3 pour |
le caractère suivant uniquement) | ||
ESC P | DCS | Chaîne de contrôle de périphérique (terminée par |
ESC \) | ||
ESC X | SOS | Début de chaîne. |
ESC ^ | PM | Message privé (terminé par ESC \) |
ESC \ | ST | Fin de chaîne |
ESC * ... | Désigne le jeu de caractère G2 | |
ESC + ... | Désigne le jeu de caractère G3 |
ESC ] 0 ; txt ST | Utiliser txt pour le nom d'icône et le titre de |
la fenêtre | |
ESC ] 1 ; txt ST | Utiliser txt pour le nom d'icône. |
ESC ] 2 ; txt ST | Utiliser txt pour le titre de la fenêtre. |
ESC ] 4 ; num; txt ST | Utiliser txt pour la couleur ANSI num. |
ESC ] 10 ; txt ST | Utiliser txt pour la couleur de texte dynamique |
ESC ] 4 6 ; nom ST | Modifier en nom le nom du fichier de |
journalisation (généralement désactivé à la | |
compilation) | |
ESC ] 5 0 ; fn ST | Choisir la fonte fn |
ESC 7 DECSC | Mémoriser l'emplacement du curseur. | |
ESC 8 DECRC | Restaurer l'emplacement du curseur. |
ESC F | Curseur en bas à gauche de l'écran (si activé par la | |
ressource hpLowerleftBugCompat de xterm(1)) | ||
ESC l | Verrouillage mémoire (comme les terminaux HP). | |
Verrouille la mémoire sous le curseur. | ||
ESC m | Déverrouillage mémoire (comme les terminaux HP); | |
ESC n | LS2 | Invoque le jeu de caractères G2. |
ESC o | LS3 | Invoque le jeu de caractères G3. |
ESC | | LS3R | Choisit le jeu G3 comme GR ([NDT] ??) |
Pas d'effet visible dans un xterm. | ||
ESC } | LS2R | Choisit le jeu G2 comme GR |
Pas d'effet visible dans un xterm. | ||
ESC ~ | LS1R | Choisit le jeu G2 comme GR |
Pas d'effet visible dans un xterm. |
http://invisible-island.net/xterm/xterm.log.html
indique les changements apportés à xterm. Le programme vttest
http://invisible-island.net/vttest/
montre le fonctionnement de beaucoup de ces séquences de contrôle. La distribution source de xterm(1) contient également des scripts d'exemple utilisant d'autres fonctionnalités.
NOTES¶
ESC 8 (DECRC) n'est pas capable de revenir au jeu de caractères précédant le changement fait avec ESC %.BOGUES¶
Avec le noyau 2.0.23, CSI fonctionne mal, et les caractères NUL ne sont pas ignorés dans les séquences d'échappement. Certaines versions du noyau (après 2.0) interprètent les séquences de contrôle sur 8 bits. Ces contrôles « C1 » utilisent des codes entre 128 et 159 pour remplacer ESC [, ESC ] et d'autres initiateurs similaires de séquence de contrôle sur deux octets. Il en existe des fragments dans les noyaux modernes (soit négligés soit cassés par des changements à la gestion UTF-8), mais l'implémentation est incomplète et ne devrait être considérée comme fiable. Les séquences « privées » Linux ne suivent pas les règles ECMA-48 des séquences de contrôle en mode privé. En particulier, celles terminant par ] n'utilisent pas un caractère de terminaison standard. La séquence OSC (de réglage de la palette) pose un problème plus important, puisque xterm(1) peut l'interpréter comme une séquence de contrôle exigeant une fin de chaîne (« string terminator » ou ST). Contrairement aux séquences setterm(1) qui seront ignorées (étant des séquences de contrôle invalides), la séquence de palette donnera l'impression que xterm(1) s'est figé (bien que presser la touche entrée règle ce problème). Pour satisfaire les applications qui ont été codées en dur pour utiliser les séquences de contrôle Linux, réglez la ressource brokenLinuxOSC de xterm(1) à vrai. Une ancienne version de ce document insinuait que Linux reconnaissait la séquence de contrôle ECMA-48 destinée au texte invisible. Elle est ignorée.VOIR AUSSI¶
console(4), console_ioctl(4), charsets(7)COLOPHON¶
Cette page fait partie de la publication 3.44 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <http://www.kernel.org/doc/man-pages/>.TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>. Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Simon Paillard et l'équipe francophone de traduction de Debian (2006-2009). Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr. Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».5 août 2012 | Linux |