TCC prend en charge la norme ANSI X3.64, ce qui vous permet de manipuler le curseur, la couleur de l'écran et d'autres attributs de l'affichage grâce à des séquences de caractères spéciaux intégrés dans le texte envoyé à l'écran. Ces séquences sont appelées "commandes ANSI" (pour une description générale de cette fonctionnalité, voir Prise en charge ANSI) , TCC ne peut pas fournir la prise en charge ANSI X3.64 aux applications externes. (Si vous utilisez Windows 10 Creators Update ou une version ultérieure, TCC activera la prise en charge ANSI de la console intégrée).
TCC prend en charge la plupart des commandes d'écran ANSI X3.64 courantes, mais ne fournit pas l'ensemble complet des options prises en charge par les pilotes ANSI X3.64 de certains systèmes d'exploitation (par exemple, TCC n 'inclut pas les substitutions de touches ANSI X3.64 ; cette fonctionnalité est déjà fournie avec les alias de touches) . Cette section est une référence rapide aux commandes ANSI X3.64 prises en charge par TCC.
La prise en charge de l'ANSI X3.64 au sein de TCC peut être activé ou désactivé à l'aide de l' option de configuration ANSI Colors ou de la commande SETDOS /A. Vous pouvez vérifier si le support ANSI X3.64 est activé avec la variable interne _ANSI.
Une chaîne de commande ANSI X3.64 se compose de trois parties :
| <ESC>[ | Le caractère ASCII ESC, suivi d'un crochet gauche. Ces deux caractères doivent être présents dans toutes les chaînes ANSI X3.64. |
| parameters | Paramètres facultatifs pour la commande, généralement numériques. S'il y a plusieurs paramètres, ils sont séparés par des points-virgules. |
| command | Commande à une lettre. (Sensible à la casse !) |
Par exemple, pour positionner le curseur à la ligne 7, colonne 12, la commande ANSI X3.64 est la suivante :
<ESC>[7;12H
La partie paramètres de cette commande est "7;12" et la partiecommande est "H".
Pour transmettre les commandes ANSI X3.64 à l'écran, vous pouvez utiliser la commande ECHO. Le caractère ESC peut être généré en l'insérant directement dans la chaîne (si vous placez la chaîne dans un fichier batch et que votre éditeur insère un tel caractère), ou en utilisant le caractère interne "escape" (par défaut : caret, [^]) suivi d'un "e" minuscule.
Par exemple, la séquence illustrée ci-dessus peut être transmise à partir d'un fichier batch à l'aide de l'une ou l'autre de ces commandes (la première utilise directement le caractère ESC, représenté ci-dessous par "<ESC>" ; la seconde utilise ^e) :
echo <ESC>[7;12H
echo ^e[7;12H
Vous pouvez également inclure des commandes ANSI X3.64 dans votre invite, en utilisant $e pour envoyer le caractère <ESC>.
Commandes
L'interprète interne TCC ANSI X3.64 prend en charge le sous-ensemble de commandes X3.64 ci-dessous. Les paramètres variables sont indiqués en italique minuscule, par exemple #. row et attr, et doivent être remplacés par la valeur numérique décimale appropriée lors de l'utilisation des commandes. La valeur par défaut derow, rows, col et cols est 1.
<ESC>[rowsA |
Curseur vers le haut par lignes (par défaut 1) |
<ESC>[rowsB |
Curseur versle bas par rangées (1 par défaut) |
<ESC>[b |
Répéter le caractère précédent |
<ESC>[#b |
Répéter le caractère précédent # fois |
<ESC>[colsC |
Curseurà droite par colonnes (1 par défaut) |
<ESC>[colsD |
Curseur àgauche par cols (1 par défaut) |
<ESC>[d |
Déplacer le curseur sur la première ligne |
<ESC>[rowd |
Déplacer le curseursur la ligne |
<ESC>[E |
Curseur vers le bas d'une ligne et vers la première colonne |
<ESC>[rowsE |
Curseur vers lebas d'uneligne et vers la première colonne |
<ESC>[F |
Curseur vers le haut d'une ligne et vers la première colonne |
<ESC>[rowsF |
Curseur vers lehaut par lignes et vers la première colonne |
<ESC>[row;colf |
Définir la position du curseur, comme pour la commande "H |
<ESC>[G |
Déplacer le curseur vers la colonne 1 |
<ESC>[colG |
Déplacer le curseur vers la colonne |
<ESC>[H |
Positionner le curseur en haut à gauche |
<ESC>[row;H |
Déplacer le curseur sur la ligne, la colonne 1 |
<ESC>[row;colH |
Définir la position du curseur (en haut à gauche est la ligne 1, colonne 1) |
<ESC>[4h |
Mode insertion |
<ESC>[?25h |
Afficher le curseur |
<ESC>[J |
Effacement du curseur jusqu'à la fin de l'affichage |
<ESC>[0J |
Effacement du curseur à la fin de l'affichage |
<ESC>[1J |
Effacement du début de l'affichage jusqu'au curseur |
<ESC>[2J |
Effacer tout l'écran |
<ESC>[K |
Effacer du curseur à la fin de la ligne |
<ESC>[1K |
Effacement du début de la ligne au curseur (inclus) |
<ESC>[2K |
Effacer la ligne |
<ESC>[L |
Insérer une ligne vierge |
<ESC>[#L |
Insérer # lignes vides |
<ESC>[l |
Avancer le curseur d'une tabulation |
<ESC>[#l |
Avancer le curseur de # tabulations |
<ESC>[4l |
Mode de surimpression |
<ESC>[?25l |
Cacher le curseur |
<ESC>[M |
Supprimer une ligne |
<ESC>[#M |
Effacer un nombre de lignes |
<ESC>[attr1;attr2;...m |
Définir les attributs d'affichage ; voir le tableau des valeurs d'attributs ci-dessous |
<ESC>[L |
Effacer un caractère |
<ESC>[#L |
Effacerle nombre de caractères |
<ESC>[s |
Sauvegarder la position du curseur (ne peut être imbriqué) |
<ESC>[#S |
Faire défiler vers le haut |
<ESC>[#T |
Faire défiler vers le bas |
<ESC>[u |
Restaurer la position sauvegardée du curseur (ou en haut à gauche si rien n'est sauvegardé) |
<ESC>[?5W |
Tabulation toutes les 8 colonnes |
<ESC>[?5;#W |
Tabulation toutes les # colonnes |
<ESC>[X |
Effacer un caractère |
<ESC>[#X |
Effacer # caractères |
<ESC>[Z |
Recule le curseur d'une tabulation |
<ESC>[#Z |
Recule le curseur de # tabulations |
<ESC>[?7h |
Retourner les lignes au bord de l'écran |
<ESC>[?7l |
Ne pas enrouler les lignes au bord de l'écran |
<ESC>[21t |
Envoyer "^e]lTitle^e\" (le titre de la fenêtre de la console) à l'entrée de la console |
<ESC>]0;TitleBEL |
Mettre le titre de la console à "Title". BEL est le caractère ASCII 7 |
<ESC>]4;...BEL |
Changer de couleur(s) |
<ESC>]104;...BEL |
Réinitialiser la (les) couleur(s) |
<ESC>[@ |
Insérer un caractère blanc |
<ESC>[#@ |
Insérer # caractères vides |
<ESC>8 |
Restaurer le curseur |
<ESC>7 |
Sauvegarder le curseur |
<ESC>[#;#;#...,~ |
Jouer le son |
<ESC>c |
Réinitialiser |
<ESC>D |
Index |
<ESC>E |
Ligne suivante |
<ESC>H |
Tabulation horizontale |
<ESC>M |
Inverser l'index |
Attributs d'affichage
Les séquences d'échappementm définissent les attributs d'affichage. Lesvaleurs d'attributs utilisées pour la commandem sont les suivantes :
| 0 | Rétablissement de tous les attributs par défaut |
| 1 | Couleur d'avant-plan brillante(haute intensité) |
| 2 | Couleur d'avant-plan d'intensité normale |
| 4 | Arrière-plan lumineux(haute intensité) |
| 5 | Arrière-plan lumineux (hauteintensité) |
| 7 | Inversion de la vidéo |
| 8 | Masqué (l'avant-plan devient l'arrière-plan) |
| 22 | Grasdésactivé (l'avant-plan n'est pas intense) |
| 24 | L'arrière-plan n'est pas intense |
| 25 | L'arrière-plan n'est pas intense |
| 27 | Vidéo normale |
| 28 | Invisible désactivé |
| 30..37 | Couleur d'avant-plan |
| 40..47 | Couleur d'arrière-plan |
| 90..97 | Couleur d'avant-plan brillante |
| 100..107 | Couleur d'arrière-plan brillante |
Foreground Code |
Background Code |
Color |
30 |
40 |
Black |
31 |
41 |
Red |
32 |
42 |
Green |
33 |
43 |
Yellow |
34 |
44 |
Blue |
35 |
45 |
Magenta |
36 |
46 |
Cyan |
37 |
47 |
White |
90 |
100 |
Gray |
91 |
101 |
Bright red |
92 |
102 |
Bright green |
93 |
103 |
Bright yellow |
94 |
104 |
Bright blue |
95 |
105 |
Bright magenta |
96 |
106 |
Bright cyan |
97 |
107 |
Bright white |
Si vous définissez plusieurs attributs, combinez-les en une seule commande (en utilisant l 'opérateur de concaténation ; ). Les paramètres des attributs sont cumulatifs et indépendants de l'ordre (à l'exception du code 0, qui est remis par défaut) .
Exemples
Définir un premier plan rouge vif sans modifier l'arrière-plan :
echo ^e[31;1m
Réglez l'affichage sur cyan clair sur bleu et effacez l'écran :
echo ^e[44;36;1m^e[2J
Créez une invite qui enregistre la position du curseur, affiche la date et l'heure sur la ligne supérieure en blanc vif sur fond magenta, puis rétablit la position du curseur et définit la couleur en cyan vif sur fond bleu, et affiche l'invite standard :
prompt $e[s$e[1;1f$e[45;37;1m$e[K$d $t$e[u$e[44;36;1m$p$g