Code d'échappement ANSI - ANSI escape code
Standard | |
---|---|
Classification | Code de contrôle basé sur ISO/IEC 2022 et ensemble de séquences de contrôle |
Autre(s) encodage(s) associé(s) | Autres normes de fonction de contrôle : ITU T.101 , JIS X 0207 , ISO 6630 , DIN 31626 , ETS 300 706 |
Les séquences d'échappement ANSI sont une norme de signalisation intrabande pour contrôler l'emplacement du curseur, la couleur, le style de police et d'autres options sur les terminaux de texte vidéo et les émulateurs de terminaux . Certaines séquences d' octets , la plupart commençant par un caractère d'échappement ASCII et un caractère crochet , sont intégrées au texte. Le terminal interprète ces séquences comme des commandes, plutôt que comme du texte à afficher textuellement.
Les séquences ANSI ont été introduites dans les années 1970 pour remplacer les séquences spécifiques au fournisseur et se sont généralisées sur le marché des équipements informatiques au début des années 1980. Ils sont utilisés dans le développement, les applications scientifiques et commerciales basées sur du texte ainsi que dans les systèmes de babillard pour offrir des fonctionnalités standardisées.
Bien que les terminaux texte matériels soient devenus de plus en plus rares au 21e siècle, la pertinence de la norme ANSI persiste car une grande majorité d'émulateurs de terminaux et de consoles de commande interprètent au moins une partie de la norme ANSI.
Histoire
Presque tous les fabricants de terminaux vidéo ont ajouté des séquences d'échappement spécifiques au fournisseur pour effectuer des opérations telles que le placement du curseur à des positions arbitraires sur l'écran. Un exemple est le terminal VT52 , qui permettait de placer le curseur à un emplacement x,y sur l'écran en envoyant le ESC
caractère, un Y
caractère, puis deux caractères représentant avec des valeurs numériques égales à l'emplacement x,y plus 32 (donc en commençant par le caractère espace ASCII et en évitant les caractères de contrôle). Le Hazeltine 1500 avait une fonctionnalité similaire, invoquée à l'aide de ~
, DC1
puis les positions X et Y séparées par une virgule. Alors que les deux terminaux avaient des fonctionnalités identiques à cet égard, des séquences de contrôle différentes devaient être utilisées pour les appeler.
Comme ces séquences étaient différentes pour différents terminaux, des bibliothèques élaborées telles que termcap ("capacités du terminal") et des utilitaires tels que tput ont dû être créés afin que les programmes puissent utiliser la même API pour fonctionner avec n'importe quel terminal. De plus, bon nombre de ces terminaux nécessitaient l'envoi de nombres (tels que ligne et colonne) en tant que valeurs binaires des caractères ; pour certains langages de programmation et pour les systèmes qui n'utilisaient pas l'ASCII en interne, il était souvent difficile de transformer un nombre en caractère correct.
La norme ANSI a tenté de résoudre ces problèmes en créant un jeu de commandes que tous les terminaux utiliseraient et en exigeant que toutes les informations numériques soient transmises sous forme de nombres ASCII. La première norme de la série était ECMA-48, adoptée en 1976. C'était la continuation d'une série de normes de codage de caractères, la première étant ECMA-6 de 1965, une norme à 7 bits à l'origine de l' ISO 646 . Le nom "ANSI escape sequence" date de 1979 lorsque l' ANSI a adopté l'ANSI X3.64. Le comité ANSI X3L2 a collaboré avec le comité ECMA TC 1 pour produire des normes presque identiques. Ces deux normes ont été fusionnées en une norme internationale, ISO 6429. En 1994, l'ANSI a retiré sa norme en faveur de la norme internationale.
Le premier terminal vidéo populaire à prendre en charge ces séquences était le Digital VT100 , introduit en 1978. Ce modèle a connu un grand succès sur le marché, qui a suscité une variété de clones VT100, parmi les plus anciens et les plus populaires, dont le Zenith Z, beaucoup plus abordable. -19 en 1979. D'autres incluaient le Qume QVT-108, le Televideo TVI-970, le Wyse WY-99GT ainsi que les modes optionnels "VT100" ou "VT103" ou "ANSI" avec divers degrés de compatibilité sur de nombreuses autres marques. La popularité de ceux-ci a progressivement conduit à de plus en plus de logiciels (en particulier les systèmes de babillards électroniques et autres services en ligne ) en supposant que les séquences d'échappement fonctionnaient, conduisant à presque tous les nouveaux terminaux et programmes d'émulation les prenant en charge.
En 1981, ANSI X3.64 a été adopté pour être utilisé par le gouvernement américain par la publication FIPS 86. Plus tard, le gouvernement américain a cessé de dupliquer les normes de l'industrie, donc la publication FIPS. 86 a été retiré.
ECMA-48 a été mis à jour plusieurs fois et en est actuellement à sa 5e édition, à partir de 1991. Il est également adopté par l' ISO et la CEI en tant que norme ISO/CEI 6429 . Une version est adoptée en tant que norme industrielle japonaise , en tant que JIS X 0211 .
Ce sont par exemple l' UIT T.61 , le télétex standard, et l' ISO / CEI 8613 , l' architecture Open Document standard (principalement ISO / CEI 8613-6 ou ITU T.416). Les deux systèmes partagent de nombreux codes d'échappement avec le système ANSI, avec des extensions qui ne sont pas nécessairement significatives pour les terminaux informatiques. Les deux systèmes sont rapidement tombés en désuétude, mais ECMA-48 marque les extensions qui y sont utilisées comme réservées.
Prise en charge de la plate-forme
Systèmes de type Unix
Bien que les bibliothèques de style termcap / terminfo aient été principalement développées sur et pour Unix, au milieu des années 1980, les programmes fonctionnant sur des systèmes d' exploitation de type Unix pouvaient presque toujours supposer qu'ils utilisaient un terminal ou un émulateur prenant en charge les séquences ANSI ; cela a conduit à une utilisation généralisée de l'ANSI par les programmes exécutés sur ces plates-formes. Par exemple, de nombreux jeux et scripts shell, ainsi que des utilitaires tels que les listes de répertoires de couleurs, écrivent directement les séquences ANSI et ne peuvent donc pas être utilisés sur un terminal qui ne les interprète pas. De nombreux programmes, y compris des éditeurs de texte tels que vi et GNU Emacs , utilisent termcap ou terminfo, ou utilisent des bibliothèques telles que curses qui utilisent termcap ou terminfo, et prennent donc en théorie en charge les terminaux non ANSI, mais cela est si rarement testé de nos jours qu'ils sont peu probable de fonctionner avec ces terminaux.
Les émulateurs de terminaux pour communiquer avec les programmes locaux ainsi qu'avec les machines distantes et la console du système de texte prennent presque toujours en charge les codes d'échappement ANSI. Cela inclut les émulateurs de terminaux tels que xterm , rxvt , GNOME Terminal et Konsole sur les systèmes dotés de systèmes de fenêtres basés sur X11 ou Wayland , ainsi que Terminal.app et les émulateurs de terminaux tiers tels que iTerm2 sur macOS .
DOS, OS/2 et Windows
MS-DOS 1.x ne prenait pas en charge l'ANSI ou toute autre séquence d'échappement. Seuls quelques caractères de contrôle ( BEL , CR , LF , BS ) ont été interprétés par le BIOS sous-jacent, rendant presque impossible toute application en plein écran. Tous les effets d'affichage devaient être effectués avec des appels BIOS, qui étaient notoirement lents, ou en manipulant directement le matériel du PC IBM.
DOS 2.0 a introduit la possibilité d'ajouter un pilote de périphérique pour les séquences d'échappement ANSI - la norme de facto étant ANSI.SYS , mais d'autres comme ANSI.COM , NANSI.SYS et ANSIPLUS.EXE sont également utilisés (ceux-ci sont considérablement plus rapides car ils contourner le BIOS). La lenteur et le fait qu'il n'ait pas été installé par défaut ont fait que les logiciels en profitaient rarement ; au lieu de cela, les applications ont continué à manipuler directement le matériel pour obtenir l'affichage de texte nécessaire. ANSI.SYS et les pilotes similaires ont continué à fonctionner sous Windows 9x jusqu'à Windows ME et dans les systèmes dérivés de NT pour les programmes hérités 16 bits s'exécutant sous NTVDM .
De nombreux clones de DOS ont pu interpréter les séquences et ne nécessitent pas le chargement d'un pilote ANSI séparé. PTS-DOS ainsi que Concurrent DOS , Multiuser DOS et REAL/32 ont un support intégré (plus un certain nombre d'extensions). OS/2 avait une commande ANSI qui activait les séquences.
La console Windows ne prenait pas en charge les séquences d'échappement ANSI et Microsoft n'a fourni aucune méthode pour les activer. Certains remplacements ou ajouts pour la fenêtre de la console tels que JP Software TCC (anciennement 4NT), Michael J. Mefford ANSI.COM, Jason capot de ANSICON et de Maximus5 ConEmu interprétées séquences d'échappement ANSI imprimées par les programmes. Un package Python interprétait en interne les séquences d'échappement ANSI dans le texte en cours d'impression, les traduisant en appels pour manipuler la couleur et la position du curseur, afin de faciliter le portage du code Python en utilisant ANSI vers Windows. Cygwin effectue une traduction similaire à toutes les sorties écrites sur la console à l'aide des descripteurs de fichiers Cygwin, le filtrage est effectué par les fonctions de sortie de cygwin1.dll , pour permettre le portage du code POSIX C vers Windows.
En 2016, Microsoft a publié la mise à jour de Windows 10 version 1511 qui a mis en œuvre de manière inattendue la prise en charge des séquences d'échappement ANSI, plus de deux décennies après le lancement de Windows NT. Cela a été fait avec le sous-système Windows pour Linux , permettant à un logiciel basé sur un terminal de type Unix d'utiliser les séquences dans la console Windows. Malheureusement, cette option est désactivée par défaut, mais Windows PowerShell 5.1 l'a activé. PowerShell 6 a permis d'intégrer le caractère ESC nécessaire dans une chaîne avec `e
.
Windows Terminal , introduit en 2019, prend en charge les séquences par défaut, et Microsoft entend remplacer la console Windows par Windows Terminal.
Atari ST
L' Atari ST a utilisé le système de commande adapté du VT52 avec quelques extensions pour la prise en charge des couleurs, plutôt que de prendre en charge les codes d'échappement ANSI.
AmigaOS
AmigaOS n'interprète pas seulement les séquences de code ANSI pour la sortie de texte à l'écran, le pilote d' imprimante AmigaOS les interprète également (avec des extensions propriétaires à AmigaOS) et les traduit en codes requis pour l'imprimante particulière qui est réellement connectée.
Effet | |
---|---|
ESC [ nu | Définit la longueur maximale des lignes dans la fenêtre à n. |
ESC [ nt | Définit le nombre maximum de lignes dans la fenêtre à n. |
Echap [ nx | Commence le texte à n pixels du bord gauche de la fenêtre. |
ESC [ ny | Commence le texte à n pixels du bord supérieur de la fenêtre. |
VMS / OpenVMS
Le VMS a été conçu pour être géré de manière interactive à l'aide des terminaux vidéo textuels de Digital tels que le VT100 susmentionné ; plus tard avec des émulateurs de terminaux graphiques tels que le terminal VWS, DECTerm et xterm.
La description
Caractères de contrôle
Bien qu'ils ne fassent pas techniquement partie de la norme, presque tous les utilisateurs assument certaines fonctions de certains caractères à un octet. Ceci est utilisé pour raccourcir la quantité de données transmises ou pour exécuter certaines fonctions qui ne sont pas disponibles à partir des séquences d'échappement :
^ | C0 | Abbr | Nom | Effet |
---|---|---|---|---|
^G | 7 | BEL | cloche | Fait un bruit audible. |
^H | 8 | BS | Retour arrière | Déplace le curseur vers la gauche (mais peut "retourner en arrière" si le curseur est au début de la ligne). |
^Je | 9 | HT | Languette | Déplace le curseur vers la droite au prochain multiple de 8. |
^J | 0x0A | LF | Saut de ligne | Passe à la ligne suivante, fait défiler l'affichage vers le haut si en bas de l'écran. Ne se déplace généralement pas horizontalement, bien que les programmes ne doivent pas s'appuyer sur cela. |
^L | 0x0C | FF | Flux de formulaire | Déplacer une imprimante en haut de la page suivante. Ne se déplace généralement pas horizontalement, bien que les programmes ne doivent pas s'appuyer sur cela. L'effet sur les terminaux vidéo varie. |
^M | 0x0D | RC | Retour chariot | Déplace le curseur sur la colonne zéro. |
^[ | 0x1B | ESC | Échapper | Démarre toutes les séquences d'échappement |
Les séquences d'échappement varient en longueur. Le format général d'une séquence d'échappement conforme à l'ANSI est défini par ANSI X3.41 (équivalent à ECMA-35 ou ISO/IEC 2022). Les séquences d'échappement ne sont constituées que d'octets compris entre 0x20 et 0x7F (tous les caractères ASCII non-contrôle) et peuvent être analysées sans anticipation. Le comportement lorsqu'un caractère de contrôle, un octet avec le bit de poids fort défini ou un octet qui ne fait partie d'aucune séquence valide est rencontré avant la fin est indéfini.
Fe Séquences d'évasion
Si le ESC
est suivi d'un octet compris entre 0x40 et 0x5F, il est de ce type. Délégué à la
norme de code de contrôle C1 applicable . En conséquence, toutes les séquences d'échappement correspondant aux codes de contrôle C1 de ANSI X3.64 / ECMA-48 suivent ce format.
La norme indique que, dans les environnements 8 bits, les fonctions de contrôle correspondant aux Fe
séquences d'échappement de type (celles de l'ensemble des codes de contrôle C1 ) peuvent être représentées sous forme d'octets uniques dans la plage 0x80-0x9F. Cependant, sur les appareils modernes, ces codes sont souvent utilisés à d'autres fins, telles que des parties de UTF-8 ou pour les caractères CP-1252 , de sorte que seule la séquence de 2 octets est généralement utilisée. Dans le cas d'UTF-8, un code de contrôle C1 peut être codé sur deux octets (par exemple 0xC2,0x8E pour U+008E ), mais aucun espace n'est sauvegardé de cette façon.
C1 | Abbr | Nom | Effet | |
---|---|---|---|---|
ESC N | 0x8E | SS2 | Équipe unique deux | Sélectionnez un seul caractère dans l'un des jeux de caractères alternatifs . SS2 sélectionne le jeu de caractères G2 et SS3 sélectionne le jeu de caractères G3. Dans un environnement 7 bits, il est suivi d'un ou plusieurs octets GL (0x20-0x7F) spécifiant un caractère de cet ensemble. Dans un environnement 8 bits, il peut s'agir à la place d'octets GR (0xA0–0xFF). |
ESC O | 0x8F | SS3 | Équipe unique trois | |
ECHAP | 0x90 | DCS | Chaîne de contrôle de périphérique | Terminé par ST. Les utilisations de cette séquence par Xterm incluent la définition de clés définies par l'utilisateur et la demande ou la définition de données Termcap/Terminfo. |
ESC [ | 0x9B | CSI | Introducteur de séquence de contrôle | Démarre la plupart des séquences utiles, terminées par un octet compris entre 0x40 et 0x7E. |
ESC \ | 0x9C | ST | Terminateur de chaîne | Termine les chaînes dans d'autres contrôles. |
ESC ] | 0x9D | OSC | Commande du système d'exploitation | Démarre une chaîne de contrôle à utiliser par le système d'exploitation, terminée par ST. |
Echap X | 0x98 | SOS | Début de chaîne | Prend un argument d'une chaîne de texte, terminé par ST. Les utilisations de ces séquences de contrôle de chaîne sont définies par la discipline d'application ou de confidentialité. Ces fonctions sont rarement implémentées et les arguments sont ignorés par xterm. Certains clients Kermit permettent au serveur d'exécuter automatiquement les commandes Kermit sur le client en les incorporant dans des séquences APC ; il s'agit d'un risque de sécurité potentiel si le serveur n'est pas fiable. |
ECHAP ^ | 0x9E | PM | Message de confidentialité | |
ESC _ | 0x9F | APC | Commande de programme d'application |
Séquences CSI (Control Sequence Introducer)
Pour les commandes Control Sequence Introducer, ou CSI, le ESC [
est suivi de n'importe quel nombre (y compris aucun) d'"octets de paramètre" dans la plage 0x30-0x3F (ASCII 0–9:;<=>?
), puis par n'importe quel nombre "d'octets intermédiaires" dans la plage 0x20-0x2F (espace ASCII et !"#$%&'()*+,-./
), puis enfin par un seul "octet final" compris entre 0x40 et 0x7E (ASCII @A–Z[\]^_`a–z{|}~
).
Toutes les séquences courantes utilisent simplement les paramètres comme une série de nombres séparés par des points-virgules tels que 1;2;3
. Les nombres manquants sont traités comme 0
( 1;;3
agit comme le nombre du milieu est 0
, et aucun paramètre ESC[m
n'agit comme un 0
code de réinitialisation). Certaines séquences (telles que CUU) sont traitées 0
comme 1
afin de rendre utiles les paramètres manquants.
Un sous-ensemble d'arrangements a été déclaré « privé » afin que les fabricants de terminaux puissent insérer leurs propres séquences sans entrer en conflit avec la norme. Les séquences contenant les octets de paramètre <=>?
ou les octets finaux 0x70–0x7E ( p–z{|}~
) sont privées.
Le comportement du terminal n'est pas défini dans le cas où une séquence CSI contient un caractère en dehors de la plage 0x20–0x7E. Ces caractères illégaux sont soit des caractères de contrôle C0 (la plage 0–0x1F), DEL (0x7F), soit des octets avec le bit de poids fort défini. Les réponses possibles sont d'ignorer l'octet, de le traiter immédiatement et, en outre, de continuer avec la séquence CSI, de l'abandonner immédiatement ou d'ignorer le reste.
Abbr | Nom | Effet | |
---|---|---|---|
CSI n A | CUU | Curseur vers le haut | Déplace le curseur n (par défaut 1 ) cellules dans la direction donnée. Si le curseur est déjà au bord de l'écran, cela n'a aucun effet.
|
CSI n B | CUD | Curseur vers le bas | |
CSI n C | CUF | Curseur vers l'avant | |
CSI n D | LIONCEAU | Curseur Retour | |
CSI n E | LNC | Curseur ligne suivante | Déplace le curseur au début de la ligne n (par défaut 1 ) lignes vers le bas. (pas ANSI.SYS )
|
CSI n F | CPL | Curseur Ligne précédente | Déplace le curseur au début de la ligne n (par défaut 1 ) s'aligne. (pas ANSI.SYS )
|
CSI n G | CHA | Curseur Horizontal Absolu | Déplace le curseur dans la colonne n (par défaut 1 ). (pas ANSI.SYS )
|
CSI n ; m H | TASSE | Position du curseur | Déplace le curseur sur la ligne n , colonne m . Les valeurs sont basées sur 1 et sont par défaut 1 (coin supérieur gauche) si elles sont omises. Une séquence telle que CSI ;5H est synonyme de CSI 1;5H ainsi que CSI 17;H est identique à CSI 17H etCSI 17;1H
|
CSI n J | DE | Effacer dans l'affichage | Efface une partie de l'écran. Si n est 0 (ou manquant), effacer du curseur à la fin de l'écran. Si n vaut 1 , effacer du curseur au début de l'écran. Si n vaut 2 , efface tout l'écran (et déplace le curseur en haut à gauche sur DOS ANSI.SYS ). Si n vaut 3 , effacez tout l'écran et supprimez toutes les lignes enregistrées dans le tampon de défilement (cette fonctionnalité a été ajoutée pour xterm et est prise en charge par d'autres applications de terminal).
|
CSI n K | EL | Effacer en ligne | Efface une partie de la ligne. Si n est 0 (ou manquant), effacer du curseur jusqu'à la fin de la ligne. Si n vaut 1 , effacer du curseur au début de la ligne. Si n vaut 2 , effacez toute la ligne. La position du curseur ne change pas.
|
CSI n S | UE | Faites défiler vers le haut | Faites défiler toute la page vers le haut de n1 lignes (par défaut ). De nouvelles lignes sont ajoutées en bas. (pas ANSI.SYS )
|
CSI n T | Dakota du Sud | Défiler vers le bas | Faites défiler toute la page vers le bas de n1 lignes (par défaut ). De nouvelles lignes sont ajoutées en haut. (pas ANSI.SYS )
|
CSI n ; m f | PVH | Position horizontale verticale | Identique à CUP, mais compte comme une fonction d'effecteur de format (comme CR ou LF ) plutôt que comme une fonction d'édition (comme CUD ou CNL). Cela peut conduire à des manipulations différentes dans certains modes de terminal. |
CSI n m | SGR | Sélectionnez le rendu graphique | Définit les couleurs et le style des caractères suivant ce code |
CSI 5i | Port AUX activé | Activer le port série auxiliaire généralement pour l'imprimante série locale | |
CSI 4i | Port AUX désactivé | Désactiver le port série auxiliaire généralement pour l'imprimante série locale
|
|
CSI 6n | DSR | Rapport d'état de l'appareil | Signale la position du curseur (CPR) en transmettant ESC[n;mR , où n est la ligne et m est la colonne.)
|
Abbr | Nom | Effet | |
---|---|---|---|
CSI | SCP, SCOSC | Enregistrer la position actuelle du curseur | Enregistre la position/l'état du curseur en mode console SCO. En mode écran divisé vertical, utilisé à la place pour définir (comme ) ou réinitialiser les marges gauche et droite.
CSI n ; n s |
CSI vous | RCP, SCORC | Restaurer la position enregistrée du curseur | Restaure la position/l'état du curseur en mode console SCO. |
CSI ? 25 heures | DECTCEM | Affiche le curseur, du VT220 . | |
CSI ? 25 litres | DECTCEM | Cache le curseur. | |
CSI ? 1049 heures | Activer le tampon d'écran alternatif, à partir de xterm | ||
CSI ? 1049 litres | Désactiver le tampon d'écran alternatif, à partir de xterm | ||
CSI ? 2004 h | Activez le mode de collage entre crochets. Le texte collé dans le terminal sera entouré de ESC [200~ et ESC [201~ , et les caractères qu'il contient ne doivent pas être traités comme des commandes (par exemple dans Vim). De xterm
|
||
CSI ? 2004 l | Désactivez le mode de collage entre crochets. |
Paramètres SGR (Sélectionner le rendu graphique)
Sélectionner le rendu graphique (SGR) définit les attributs d'affichage. Plusieurs attributs peuvent être définis dans la même séquence, séparés par des points-virgules. Chaque attribut d'affichage reste en vigueur jusqu'à ce qu'une occurrence suivante de SGR le réinitialise. Si aucun code n'est donné, CSI m
est traité comme CSI 0 m
(réinitialisation / normal).
Nom | Noter | |
---|---|---|
0 | Réinitialiser ou normal | Tous les attributs désactivés |
1 | Intensité audacieuse ou augmentée | Comme pour le faible, le changement de couleur est une invention du PC (SCO / CGA ). |
2 | Faible, intensité réduite ou faible | Peut être implémenté comme un poids de police léger comme gras. |
3 | Italique | Pas largement pris en charge. Parfois traité comme inverse ou clignement. |
4 | Souligner | Des extensions de style existent pour Kitty, VTE, mintty et iTerm2. |
5 | Clignotement lent | Moins de 150 par minute |
6 | Clignotement rapide | MS-DOS ANSI.SYS, 150+ par minute ; pas largement pris en charge |
7 | Inverser la vidéo ou inverser | Échangez les couleurs de premier plan et d'arrière-plan ; émulation incohérente |
8 | Dissimuler ou cacher | Pas largement pris en charge. |
9 | Barré , ou grève | Caractères lisibles mais marqués comme à supprimer. |
dix | Police principale (par défaut) | |
11–19 | Police alternative | Sélectionnez une police alternative n − 10 |
20 | Fraktur (gothique) | Rarement pris en charge |
21 | Doublement souligné; ou : pas en gras | Double-underline par ECMA-48, mais désactive la place intensité gras sur plusieurs terminaux, y compris dans le noyau Linux de la console avant la version 4.17. |
22 | Intensité normale | Ni audacieux ni faible; les changements de couleur là où l'intensité est mise en œuvre en tant que telle. |
23 | Ni italique, ni blackletter | |
24 | Non souligné | Ni simplement ni doublement souligné |
25 | Ne clignote pas | |
26 | Espacement proportionnel | ITU T.61 et T.416, non connus pour être utilisés sur les terminaux |
27 | Non inversé | |
28 | Révéler | Non caché |
29 | Non barré | |
30–37 | Définir la couleur de premier plan | |
38 | Définir la couleur de premier plan |
Les arguments suivants sont 5;n ou2;r;g;b
|
39 | Couleur de premier plan par défaut | Mise en œuvre définie (selon norme) |
40–47 | Définir la couleur d' arrière-plan | |
48 | Définir la couleur d' arrière-plan |
Les arguments suivants sont 5;n ou2;r;g;b
|
49 | Couleur d'arrière-plan par défaut | Mise en œuvre définie (selon norme) |
50 | Désactiver l'espacement proportionnel | T.61 et T.416 |
51 | Encadré | Implémenté en tant que " sélecteur de variation emoji " dans mintty. |
52 | Encerclé | |
53 | Surligné | |
54 | Ni encadré ni encerclé | |
55 | Non surligné | |
58 | Définir la couleur de soulignement | Pas en standard ; implémenté dans Kitty, VTE, mintty et iTerm2. Les arguments suivants sont 5;n ou2;r;g;b .
|
59 | Couleur de soulignement par défaut | Pas en standard ; implémenté dans Kitty, VTE, mintty et iTerm2. |
60 | Idéogramme souligné ou ligne latérale droite | Rarement pris en charge |
61 | Idéogramme double souligné, ou double trait sur le côté droit | |
62 | Surlignement de l'idéogramme ou ligne latérale gauche | |
63 | Idéogramme double surlignage, ou double trait sur le côté gauche | |
64 | Marquage d'accentuation des idéogrammes | |
65 | Aucun attribut d'idéogramme | Réinitialiser les effets de tous les 60 –64
|
73 | Exposant | Implémenté uniquement en menthe |
74 | Indice | |
75 | Ni exposant ni indice | |
90-97 | Définir une couleur de premier plan lumineuse | Pas en standard ; initialement mis en œuvre par aixterm |
100–107 | Définir une couleur d'arrière-plan claire |
Couleurs
3 bits et 4 bits
La spécification d'origine n'avait que 8 couleurs et leur donnait juste des noms. Les paramètres SGR 30-37 ont sélectionné la couleur de premier plan, tandis que 40-47 ont sélectionné l'arrière-plan. Un certain nombre de terminaux ont implémenté "gras" (code SGR 1) comme une couleur plus vive plutôt qu'une police différente, fournissant ainsi 8 couleurs de premier plan supplémentaires. Habituellement, vous ne pouviez pas les obtenir comme couleurs d'arrière-plan, bien que parfois la vidéo inverse (code SGR 7) le permette. Exemples : pour obtenir des lettres noires sur fond blanc, utilisez ESC[30;47m
, pour obtenir du rouge, utilisez ESC[31m
pour obtenir un rouge vif ESC[1;31m
. Pour réinitialiser les couleurs à leurs valeurs par défaut, utilisez ESC[39;49m
(non pris en charge sur certains terminaux) ou réinitialisez tous les attributs avec ESC[0m
. Les terminaux ultérieurs ont ajouté la possibilité de spécifier directement les couleurs « brillantes » avec 90-97 et 100-107.
Lorsque le matériel a commencé à utiliser des convertisseurs numérique-analogique (DAC) 8 bits, plusieurs logiciels ont attribué des numéros de couleur 24 bits à ces noms. Le tableau ci-dessous montre les valeurs par défaut envoyées au DAC pour certains matériels et logiciels courants ; dans la plupart des cas, ils sont configurables.
FG | BG | Nom | VGA |
Console Windows XP |
Windows PowerShell |
Code Visual Studio |
Console Windows 10 |
Terminal.app | Mastic | mIRC | xterme | Ubuntu | Terminal Éclipse |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
30 | 40 | Le noir | 0, 0, 0 | 12, 12, 12 | 0, 0, 0 | 1, 1, 1 | 0, 0, 0 | ||||||
31 | 41 | rouge | 170, 0, 0 | 128, 0, 0 | 205, 49, 49 | 197, 15, 31 | 194, 54, 33 | 187, 0, 0 | 127, 0, 0 | 205, 0, 0 | 222, 56, 43 | 205, 0, 0 | |
32 | 42 | Vert | 0, 170, 0 | 0, 128, 0 | 13, 188, 121 | 19, 161, 14 | 37, 188, 36 | 0, 187, 0 | 0, 147, 0 | 0, 205, 0 | 57, 181, 74 | 0, 205, 0 | |
33 | 43 | Jaune | 170, 85, 0 | 128, 128, 0 | 238, 237, 240 | 229, 229, 16 | 193, 156, 0 | 173, 173, 39 | 187, 187, 0 | 252, 127, 0 | 205, 205, 0 | 255, 199, 6 | 205, 205, 0 |
34 | 44 | Bleu | 0, 0, 170 | 0, 0, 128 | 36, 114, 200 | 0, 55, 218 | 73, 46, 225 | 0, 0, 187 | 0, 0, 127 | 0, 0, 238 | 0, 111, 184 | 0, 0, 238 | |
35 | 45 | Magenta | 170, 0, 170 | 128, 0, 128 | 1, 36, 86 | 188, 63, 188 | 136, 23, 152 | 211, 56, 211 | 187, 0, 187 | 156, 0, 156 | 205, 0, 205 | 118, 38, 113 | 205, 0, 205 |
36 | 46 | Cyan | 0, 170, 170 | 0, 128, 128 | 17, 168, 205 | 58, 150, 221 | 51, 187, 200 | 0, 187, 187 | 0, 147, 147 | 0, 205, 205 | 44, 181, 233 | 205, 0, 205 | |
37 | 47 | blanche | 170, 170, 170 | 192, 192, 192 | 229, 229, 229 | 204, 204, 204 | 203, 204, 205 | 187, 187, 187 | 210, 210, 210 | 229, 229, 229 | 204, 204, 204 | 229, 229, 229 | |
90 | 100 | Noir brillant (gris) | 85, 85, 85 | 128, 128, 128 | 102, 102, 102 | 118, 118, 118 | 129, 131, 131 | 85, 85, 85 | 127, 127, 127 | 127, 127, 127 | 128, 128, 128 | 0, 0, 0 | |
91 | 101 | Rouge vif | 255, 85, 85 | 255, 0, 0 | 241, 76, 76 | 231, 72, 86 | 252, 57, 31 | 255, 85, 85 | 255, 0, 0 | 255, 0, 0 | 255, 0, 0 | 255, 0, 0 | |
92 | 102 | Vert clair | 85, 255, 85 | 0, 255, 0 | 35, 209, 139 | 22, 198, 12 | 49, 231, 34 | 85, 255, 85 | 0, 252, 0 | 0, 255, 0 | 0, 255, 0 | 0, 255, 0 | |
93 | 103 | Jaune vif | 255, 255, 85 | 255, 255, 0 | 245, 245, 67 | 249, 241, 165 | 234, 236, 35 | 255, 255, 85 | 255, 255, 0 | 255, 255, 0 | 255, 255, 0 | 255, 255, 0 | |
94 | 104 | Bleu brillant | 85, 85, 255 | 0, 0, 255 | 59, 142, 234 | 59, 120, 255 | 88, 51, 255 | 85, 85, 255 | 0, 0, 252 | 92, 92, 255 | 0, 0, 255 | 92, 92, 255 | |
95 | 105 | Magenta brillant | 255, 85, 255 | 255, 0, 255 | 214, 112, 214 | 180, 0, 158 | 249, 53, 248 | 255, 85, 255 | 255, 0, 255 | 255, 0, 255 | 255, 0, 255 | 255, 0, 255 | |
96 | 106 | Cyan brillant | 85, 255, 255 | 0, 255, 255 | 41, 184, 219 | 97, 214, 214 | 20, 240, 240 | 85, 255, 255 | 0, 255, 255 | 0, 255, 255 | 0, 255, 255 | 0, 255, 255 | |
97 | 107 | Blanc brillant | 255, 255, 255 | 255, 255, 255 | 229, 229, 229 | 242, 242, 242 | 233, 235, 235 | 255, 255, 255 | 255, 255, 255 | 255, 255, 255 | 255, 255, 255 | 255, 255, 255 |
8 bits
Au fur et à mesure que les tables de recherche de 256 couleurs sont devenues courantes sur les cartes graphiques, des séquences d'échappement ont été ajoutées pour sélectionner parmi un ensemble prédéfini de 256 couleurs :
ESC[38;5;⟨n⟩m Select foreground color ESC[48;5;⟨n⟩m Select background color 0- 7: standard colors (as in ESC [ 30–37 m) 8- 15: high intensity colors (as in ESC [ 90–97 m) 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) 232-255: grayscale from black to white in 24 steps
La technologie de l'information T.416 de l' UIT - Architecture de document ouverte (ODA) et format d'échange : les architectures de contenu de caractères utilisent à la place ' :' comme caractères de séparation :
ESC[38;5;⟨n⟩m Select foreground color where n is a number from the table below ESC[48;5;⟨n⟩m Select background color
Mode 256 couleurs — premier plan : ESC[3;5;#m arrière-plan : ESC[48;5;#m | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Couleurs standards | Couleurs de haute intensité | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
216 couleurs | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | ||||||||||||||||||||||||
52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | ||||||||||||||||||||||||
88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | ||||||||||||||||||||||||
124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | ||||||||||||||||||||||||
160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | ||||||||||||||||||||||||
196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | ||||||||||||||||||||||||
Couleurs en niveaux de gris | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Il y a également eu un codage similaire mais incompatible de 88 couleurs utilisant la même séquence d'échappement, vu dans rxvt
et xterm-88color
. On ne sait pas grand-chose sur le schéma en dehors des codes de couleur. Il utilise un cube de couleur 4×4×4.
24 bits
Au fur et à mesure que les cartes graphiques « vraies couleurs » avec 16 à 24 bits de couleur sont devenues courantes, les applications ont commencé à prendre en charge les couleurs 24 bits. Les émulateurs de terminaux prenant en charge la définition de couleurs de premier plan et d'arrière-plan 24 bits avec des séquences d'échappement incluent Xterm, Konsole de KDE et iTerm, ainsi que tous les terminaux basés sur libvte, y compris le terminal GNOME .
ESC[ 38;2;⟨r⟩;⟨g⟩;⟨b⟩ m Select RGB foreground color ESC[ 48;2;⟨r⟩;⟨g⟩;⟨b⟩ m Select RGB background color
La technologie de l'information T.416 de l' UIT - Architecture de document ouverte (ODA) et format d'échange : architectures de contenu de caractères qui a été adoptée en tant que norme internationale ISO/CEI 8613-6 donne une version alternative qui semble être moins prise en charge. Les paramètres après le '2', c'est-à-dire même le r,g,b sont facultatifs. Notez qu'il ne s'agit pas seulement de la séquence ci-dessus avec le point-virgule remplacé par deux-points, il y a un "ID d'espace de couleur" de premier plan (ce fait a été manqué par de nombreux émulateurs de terminaux, cette omission semble provenir de KDE Konsole). La définition de l'ID de l'espace colorimétrique n'est pas incluse dans ce document, il peut donc être vide pour représenter la valeur par défaut non spécifiée. En plus de la valeur '2' pour spécifier un format Rouge-Vert-Bleu (et le '5' ci-dessus pour une couleur indexée 0-255), il existe des alternatives de '0' pour l'implémentation définie et '1' pour transparent - ni l'un ni l'autre de ce qui a d'autres paramètres ; « 3 » spécifie les couleurs en utilisant un schéma Cyan-Magenta-Jaune et « 4 » pour un schéma Cyan-Magenta-Jaune-Noir, ce dernier utilisant la position marquée comme « inutilisée » pour le composant Noir :
ESC[ 38:2:⟨Color-Space-ID⟩:⟨r⟩:⟨g⟩:⟨b⟩:⟨unused⟩:⟨CS tolerance⟩:⟨Color-Space associated with tolerance: 0 for "CIELUV"; 1 for "CIELAB"⟩ m Select RGB foreground color ESC[ 48:2:⟨Color-Space-ID⟩:⟨r⟩:⟨g⟩:⟨b⟩:⟨unused⟩:⟨CS tolerance⟩:⟨Color-Space associated with tolerance: 0 for "CIELUV"; 1 for "CIELAB"⟩ m Select RGB background color
Séquences OSC (Operating System Command)
La plupart d'entre eux ont été définis par Xterm. Pour des raisons historiques, xterm peut terminer la commande avec BEL
ainsi que ST
.
Xterm permet de définir le titre de la fenêtre par ESC ]0;this is the window title BEL
.
Une extension non-xterm est le lien hypertexte, à ESC ]8;;link ST
partir de 2017, utilisé par VTE, iTerm2 et mintty.
La console Linux utilise ESC ] P n rr gg bb
pour changer la palette, qui, si elle est codée en dur dans une application, peut bloquer d'autres terminaux. Cependant, l'ajout ST
sera ignoré par Linux et formera une séquence appropriée et ignorable pour les autres terminaux.
Fs séquences d'échappement
Si le ESC
est suivi d'un octet compris entre 0x60 et 0x7E, il est de ce type. Utilisé pour les fonctions de contrôle enregistrées individuellement dans le registre ISO-IR et, par conséquent, disponible même dans des contextes où un jeu de codes de contrôle C1 différent est utilisé. Plus précisément, ils correspondent à des fonctions de contrôle uniques approuvées par l' ISO/CEI JTC 1/SC 2 et normalisées par l'ISO ou un organisme reconnu par l'ISO. Certains d'entre eux sont spécifiés dans ECMA-35 (ISO 2022 / ANSI X3.41), d'autres dans ECMA-48 (ISO 6429 / ANSI X3.64). ECMA-48 les appelle "fonctions de contrôle indépendantes".
Abbr | Nom | Effet | |
---|---|---|---|
ESC c | SIF | Réinitialiser à l'état initial | Déclenche une réinitialisation complète du terminal à son état d'origine. Cela peut inclure (le cas échéant) : réinitialiser le rendu graphique, effacer les arrêts de tabulation, réinitialiser la police par défaut, etc. |
Séquences d'échappement Fp
Si le ESC
est suivi d'un octet compris entre 0x30 et 0x3F, il est de ce type. A part pour les fonctions de contrôle à usage privé.
Abbr | Nom | Effet | |
---|---|---|---|
ESC 7 | DECSC | DEC Enregistrer le curseur | Enregistre la position du curseur, l'état du décalage d'encodage et les attributs de formatage. |
ESC 8 | DECRC | Curseur de restauration DEC | Restaure la position du curseur, l'état de décalage d'encodage et les attributs de formatage du DECSC précédent, le cas échéant, sinon les réinitialise tous à leurs valeurs par défaut. |
nF séquences d'échappement
Si le ESC
est suivi d'un octet compris entre 0x20 et 0x2F,
il est de ce type. Suivi d'un nombre quelconque d'octets supplémentaires dans cette plage, puis d'un octet dans la plage 0x30-0x7E . Ils sont en outre subdivisés par les quatre bits de poids faible du premier octet, par exemple « type2F
» pour les séquences où le premier octet est 0x22 ; et selon que l'octet final est dans la plage d'utilisation privée
0x30—0x3F (par exemple "type 2Fp
") ou non (par exemple "type
2Ft
"). Ils sont principalement utilisés pour les mécanismes de commutation de code ANSI/ISO tels que ceux utilisés par ISO-2022-JP , à l'exception des 3F
séquences de type
(celles où le premier octet intermédiaire est 0x23
), qui sont utilisées pour des fonctions de contrôle individuelles. Les 3Ft
séquences de types sont réservées aux fonctions de contrôle individuelles enregistrées ISO-IR supplémentaires, tandis que les 3Fp
séquences de types sont disponibles pour les fonctions de contrôle à usage privé.
Abbr | Nom | Effet | |
---|---|---|---|
ESC SP F | Défini dans ECMA-35 (ANSI X3.41 / ISO 2022). Fait que les touches de fonction envoient ESC + lettre au lieu des codes C1. | ||
ESC SP G | Défini dans ECMA-35. Fait que les touches de fonction envoient des codes C1. |
Abbr | Nom | Effet | |
---|---|---|---|
CES #3 | DECDHL | Lettres DEC à double hauteur, moitié supérieure | Rend la ligne actuelle utiliser des caractères deux fois plus grands. Ce code est pour la moitié supérieure. |
CES #4 | DECDHL | Lettres DEC à double hauteur, moitié inférieure | Rend la ligne actuelle utiliser des caractères deux fois plus grands. Ce code est pour la moitié inférieure. |
CES #5 | DECSWL | Ligne DEC simple largeur | Fait que la ligne actuelle utilise des caractères à largeur simple, selon le comportement par défaut. |
CES # 6 | DECDWL | Ligne DEC double largeur | Rend la ligne actuelle utiliser des caractères à double largeur, en supprimant tous les caractères de la seconde moitié de la ligne. |
Exemples
CSI 2 J
— Cela efface l'écran et, sur certains appareils, place le curseur sur la position y,x 1,1 (coin supérieur gauche).
CSI 32 m
— Cela rend le texte vert. Le vert peut être un vert sombre et terne, vous pouvez donc activer Gras avec la séquence CSI 1 m
qui le rendrait vert clair, ou combiné comme CSI 32 ; 1 m
. Certaines implémentations utilisent l'état Bold pour rendre le caractère Bright.
CSI 0 ; 6 8 ; "DIR" ; 13 p
— Cela réaffecte la touche F10 pour envoyer au tampon du clavier la chaîne "DIR" et ENTER, qui dans la ligne de commande DOS afficherait le contenu du répertoire courant. (MS-DOS ANSI.SYS uniquement) Ceci était parfois utilisé pour les bombes ANSI . Il s'agit d'un code à usage privé (comme indiqué par la lettre p), utilisant une extension non standard pour inclure un paramètre de valeur de chaîne. Suivre la lettre de la norme considérerait que la séquence se termine à la lettre D.
CSI s
— Ceci enregistre la position du curseur. L'utilisation de la séquence la CSI u
ramènera à la position. Disons que la position actuelle du curseur est 7(y) et 10(x). La séquence CSI s
enregistrera ces deux numéros. Vous pouvez maintenant vous déplacer vers une position différente du curseur, telle que 20(y) et 3(x), en utilisant la séquence CSI 20 ; 3 H
ou CSI 20 ; 3 f
. Maintenant, si vous utilisez la séquence CSI u, la position du curseur reviendra à 7(y) et 10(x). Certains terminaux nécessitent les séquences DEC ESC 7
/ à la ESC 8
place, qui sont plus largement prises en charge.
Dans les scripts shell
Les codes d'échappement ANSI sont souvent utilisés dans les terminaux UNIX et de type UNIX pour fournir une coloration syntaxique . Par exemple, sur les terminaux compatibles, la commande list suivante code par couleur les noms de fichiers et de répertoires par type.
ls --color
Les utilisateurs peuvent utiliser des codes d'échappement dans leurs scripts en les incluant dans le cadre d' une sortie standard ou d' une erreur standard . Par exemple, la commande GNU sed suivante embellit la sortie de la commande make en affichant des lignes contenant des mots commençant par "WARN" en vidéo inverse et des mots commençant par "ERR" en jaune vif sur un fond rouge foncé (la casse des lettres est ignorée). Les représentations des codes sont mises en évidence.
make 2>&1 | sed -e 's/.*\bWARN.*/\x1b[7m&\x1b[0m/i' -e 's/.*\bERR.*/\x1b[93;41m&\x1b[0m/i'
La fonction Bash suivante fait clignoter le terminal (en envoyant alternativement des codes de mode vidéo inverse et normal) jusqu'à ce que l'utilisateur appuie sur une touche.
flasher () { while true; do printf \\e[?5h; sleep 0.1; printf \\e[?5l; read -s -n1 -t1 && break; done; }
Cela peut être utilisé pour alerter un programmeur lorsqu'une commande longue se termine, comme avec make ; flasher
.
printf \\033c
Cela réinitialisera la console, de la même manière que la commande reset
sur les systèmes Linux modernes ; Cependant, il devrait fonctionner même sur les anciens systèmes Linux et sur d'autres variantes UNIX (non Linux).
En C
#include <stdio.h>
int main(void)
{
int i, j, n;
for (i = 0; i < 11; i++) {
for (j = 0; j < 10; j++) {
n = 10*i + j;
if (n > 108) break;
printf("\033[%dm %3d\033[m", n, n);
}
printf("\n");
}
return 0;
}
Séquences d'entrée des bornes
L'appui sur des touches spéciales du clavier, ainsi que la sortie de nombreuses séquences xterm CSI, DCS ou OSC, produisent souvent une séquence CSI, DCS ou OSC, envoyée du terminal à l'ordinateur comme si l'utilisateur l'avait tapée.
Lors de la saisie sur un terminal, les touches en dehors de la zone principale normale du clavier alphanumérique peuvent être envoyées à l'hôte sous forme de séquences ANSI. Pour les touches qui ont une fonction de sortie équivalente, telles que les touches de curseur, celles-ci reflètent souvent les séquences de sortie. Cependant, pour la plupart des touches, il n'y a pas de séquence de sortie équivalente à utiliser.
Il existe plusieurs schémas de codage et, malheureusement, la plupart des terminaux mélangent des séquences de différents schémas. Le logiciel hôte doit donc être capable de gérer les séquences d'entrée en utilisant n'importe quel schéma. Pour compliquer les choses, les terminaux VT eux-mêmes ont deux schémas d'entrée, le mode normal et le mode d'application qui peuvent être commutés par l'application.
(partie brouillon)
<char> -> char <esc> <nochar> -> esc <esc> <esc> -> esc <esc> <char> -> Alt-keypress or keycode sequence <esc> '[' <nochar> -> Alt-[ <esc> '[' (<num>) (';'<num>) '~' -> keycode sequence, <num> defaults to 1
Si le caractère de fin est « ~ », le premier nombre doit être présent et est un numéro de code clé, le deuxième nombre est une valeur de modificateur facultative. Si le caractère de fin est une lettre, la lettre est la valeur du code clé et le nombre facultatif est la valeur du modificateur.
La valeur par défaut du modificateur est 1, et après avoir soustrait 1, un bitmap des touches de modification est pressé : Meta-Ctrl-Alt-Shift. Ainsi, par exemple, <esc>[4;2~ est Shift-End, <esc>[20~ est la touche de fonction 9, <esc>[5C est Ctrl-Right.
vt sequences: <esc>[1~ - Home <esc>[16~ - <esc>[31~ - F17 <esc>[2~ - Insert <esc>[17~ - F6 <esc>[32~ - F18 <esc>[3~ - Delete <esc>[18~ - F7 <esc>[33~ - F19 <esc>[4~ - End <esc>[19~ - F8 <esc>[34~ - F20 <esc>[5~ - PgUp <esc>[20~ - F9 <esc>[35~ - <esc>[6~ - PgDn <esc>[21~ - F10 <esc>[7~ - Home <esc>[22~ - <esc>[8~ - End <esc>[23~ - F11 <esc>[9~ - <esc>[24~ - F12 <esc>[10~ - F0 <esc>[25~ - F13 <esc>[11~ - F1 <esc>[26~ - F14 <esc>[12~ - F2 <esc>[27~ - <esc>[13~ - F3 <esc>[28~ - F15 <esc>[14~ - F4 <esc>[29~ - F16 <esc>[15~ - F5 <esc>[30~ - xterm sequences: <esc>[A - Up <esc>[K - <esc>[U - <esc>[B - Down <esc>[L - <esc>[V - <esc>[C - Right <esc>[M - <esc>[W - <esc>[D - Left <esc>[N - <esc>[X - <esc>[E - <esc>[O - <esc>[Y - <esc>[F - End <esc>[1P - F1 <esc>[Z - <esc>[G - Keypad 5 <esc>[1Q - F2 <esc>[H - Home <esc>[1R - F3 <esc>[I - <esc>[1S - F4 <esc>[J - <esc>[T -
<esc>[A à <esc>[D sont les mêmes que les séquences de sortie ANSI. Le <num> est normalement omis si aucune touche de modification n'est enfoncée, mais la plupart des implémentations émettent toujours le <num> pour F1-F4. (partie brouillon)
Xterm a une page de documentation complète sur les différents schémas de séquence d'entrée de touches de fonction et de souris des terminaux VT de DEC et de divers autres terminaux qu'il émule. Thomas Dickey lui a apporté beaucoup de soutien au fil du temps ; il maintient également une liste de clés par défaut utilisées par d'autres émulateurs de terminaux à des fins de comparaison.
- Sur la console Linux, certaines touches de fonction génèrent des séquences de la forme . La séquence CSI doit se terminer sur le .
CSI [ char
[
- Les anciennes versions de Terminator sont générées lorsque F1 à F4 sont enfoncés avec des modificateurs. Le comportement défectueux a été copié à partir du terminal GNOME .
SS3 1; modifiers char
- xterm répond si on lui demande la position du curseur et si la touche F3 est enfoncée avec des modificateurs, qui entrent en collision dans le cas de la ligne == 1. Cela peut être évité en utilisant le ? modificateur privé en tant que , qui sera reflété dans la réponse en tant que .
CSI row ; column R
CSI 1 ; modifiers R
CSI ? 6 n
CSI ? row ; column R
- de nombreux terminaux précèdent
ESC
tout caractère tapé avec la touche alt enfoncée. Cela crée une ambiguïté pour les lettres majuscules et les symboles@[\]^_
, qui formeraient des codes C1. -
Konsole génère lorsque F1–F4 sont pressés avec des modificateurs.
SS3 modifiers char
Voir également
- Art ANSI
- Caractère de contrôle
- Assembleur et récréateur de terminaux d'attributs vidéo avancés (AVATAR)
- ISO/CEI JTC 1/SC 2
- Codes de contrôle C0 et C1
Remarques
Les références
Liens externes
- Norme ECMA-48, Fonctions de contrôle pour les jeux de caractères codés . ( 5e édition, juin 1991 ), European Computer Manufacturers Association, Genève 1991 (également publié par l'ISO et la CEI en tant que norme ISO/CEI 6429)
- vt100.net Documents du DEC
- "ANSI.SYS -- séquences d'échappement d'émulation de terminal ansi" . Archivé de l' original le 6 février 2006 . Récupéré le 22 février 2007 .
- Xterm / Séquences d'échappement
- AIXterm / Séquences d'échappement
- Une collection de séquences d'échappement pour les terminaux qui sont vaguement compatibles avec ECMA-48 et ses amis.
- "Séquences d'échappement ANSI" . Archivé de l'original le 25 mai 2011.
- UIT-T Rec. T.416 (03/93) Technologies de l'information – Architecture de document ouverte (ODA) et format d'échange : architectures de contenu de caractères