NOM
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 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). Voir 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. 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).
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ô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). 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, peut être défini. Inversement, en mode
UTF-8, tous les codes de l’intervalle 00-1F sont considérés comme des
caractères de contrôle quel que 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, 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: fixe 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.
Séquences d’échappement ECMA-48 CSI
CSI (ou ESC [) est suivi d’une série de paramètres, au plus NPAR (16),
représentés par des nombres décimaux séparés par des points-virgules.
Un paramètre vide ou absent est considéré comme nul. La série de
paramètres peut être précédée par un point d’interrogation.
Toutefois, après CSI [ (ou ESC [ [) un seul caractère est lu, et le
reste de la séquence est ignoré. L’idée est d’éliminer les touches de
fonctions doublées.
L’action déclenchée par une séquence CSI est indiquée par le dernier
caractère.
@ 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 ligne 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.
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 Supprime le nombre indiqué de caractères sur la ligne en
cours.
X ECH Efface le nombre indiqué de caractères sur la ligne en
cours.
a HPR Avancer le curseur jusqu’à la colonne indiquée.
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 Fixe le mode (voir plus bas).
l RM Réinitialise le mode (voir plus bas).
m SGR Fixe les attributs (voir plus bas).
n DSR Indique l’état (voir plus bas).
q DECLL Fixe 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.
Affichage graphique ECMA-48
La séquence ECMA-48 SGR suivante ESC [ paramtres m fixe les paramètres
d’affichage. Plusieurs attributs peuvent être indiqués dans la même
séquence, séparés par des points-virgules. Un attribut vide (entre les
points-virgules ou en début ou fin de chaîne) est interprété comme
valant zéro.
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.
Modes ECMA-48
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.
Demande de rapport d’état ECMA-48
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.
Modes privés DEC (DECSET/DECRST)
Ces modes ne sont pas décrits dans l’ECMA-48. La liste ci-dessous
présente les séquences d’activation des modes, les séquences de
désactivation sont obtenues en remplaçant le « h » final par un « l ».
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 en 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) : Fixe 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) : Fixe le mode de
rapport d’état de la souris à 2 (ou le réinitialise à 0) — voir
plus bas.
Séquences CSI privées de la console Linux
Les séquences suivantes ne sont ni ECMA-48 ni du VT102 original. Elles
sont spécifiques au gestionnaire de console de Linux. Les couleurs sont
indiquées ainsi : 0 = noir, 1 = rouge, 2 = vert, 3 = marron, 4 = bleu,
5 = magenta, 6 = cyan, 7 = blanc.
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ôle
Le VT102 reconnaissait les caractères de contrôle supplémentaires
suivants:
NUL (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
Les séquences d’échappement VT100 non implémentées sur la console
Linux :
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
Le programme xterm(1) (en mode VT100) reconnaît ESC c, ESC # 8, ESC >,
ESC =, ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \, ESC Z
(il répond ESC [ ? 1 ; 2 c, « Je suis un VT100 avec des options vidéo
avancées ») et ESC ^ ... ESC \ avec les mêmes significations que celles
indiquées plus haut. Il accepte ESC (, ESC ), ESC *, ESC + suivis de 0,
A, B pour les caractères spéciaux DEC, les tracés de lignes, l’ASCII
UK, et l’ASCII US, respectivement.
L’utilisateur peut configurer xterm(1) pour qu’il réponde aux séquences
de contrôle VT220, qui s’identifiera comme VT52, VT100, et au-delà
selon la manière dont il est configuré et initialisé.
Il accepte ESC ] (OSC) pour fixer certaines ressources. En plus de la
fin de chaîne (ST) ECMA-48, xterm(1) accepte qu’une chaîne OSC se
termine par BEL. Il y a quelques séquences de contrôle OSC reconnues
par xterm(1) :
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
Les codes suivants ont une signification légèrement différente des
codes originaux (sauvant plus d’états, avec un comportement plus proche
de VT100/VT220) :
ESC 7 DECSC Mémoriser l’emplacement du curseur.
ESC 8 DECRC Restaurer l’emplacement du curseur.
Il reconnaît également :
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.
Il reconnaît également ESC % et fournit une implémentation plus
complète d’UTF-8 que la console Linux.
Séquences CSI
Les anciennes versions de xterm(1), par exemple depuis X11R5,
interprètent un SGR clignotant comme un SGR gras. Les versions
suivantes implémentant les couleurs ANSI, par exemple XFree86 3.1.2A en
1995, ont amélioré cela en autorisant l’attribut clignotant à être
affiché comme une couleur. Les versions modernes de xterm implémentent
le SGR clignotant sous la forme de texte clignotant et autorisent
encore le texte coloré comme possibilité alternative de rendu des SGR.
Les versions de base sous X11R6 ne reconnaissaient pas les SGR de choix
de couleur avant la publication de X11R6.8, qui a incorporé le xterm de
XFree86. Toutes les séquences ECMA-48 CSI reconnues par Linux le sont
aussi par xterm(1), bien que xterm(1) implémente plusieurs séquences de
contrôle ECMA-48 et DEC non reconnues par Linux.
Le programme xterm(1) reconnaît également toutes les séquences privées
DEC citées plus haut, mais aucune séquence privée Linux. Pour plus de
détail sur les séquences privées d’xterm(1) consulter le document Xterm
Control Sequences d’Edward Moy et Stephen Gildea, disponible avec la
distribution X. Pour une vue générale chronologique,
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.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Simon Paillard
<simon.paillard@resel.enst-bretagne.fr> et l’équipe francophone de
traduction de Debian.
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> ».