Codici di escape ANSI
I codici o sequenze di escape ANSI sono uno standard di segnalazione per controllare la posizione del cursore, il colore, lo stile dei caratteri e altre opzioni sui terminali di testo video e sugli emulatori di terminale. Alcune sequenze di byte, la maggior parte delle quali iniziano con un carattere di escape ASCII e un carattere parentesi, sono incorporate nel testo. Il terminale interpreta queste sequenze come comandi, anziché come testo da visualizzare alla lettera.
Le sequenze ANSI sono state introdotte negli anni 70 per sostituire le sequenze specifiche del fornitore e si sono diffuse nel mercato delle apparecchiature informatiche all'inizio degli anni 80. Sono utilizzati in applicazioni di sviluppo, scientifiche e commerciali basate su testo, nonché in sistemi di bulletin board system per offrire funzionalità standardizzate.
Sebbene i terminali hardware siano diventati sempre più rari nel 21º secolo, l'importanza dello standard ANSI persiste perché la grande maggioranza degli emulatori di terminale e delle console di comando interpreta almeno una parte dello standard ANSI.
Questa codifica di escape è standardizzata come ECMA-48, ISO/IEC 6429, FIPS 86, ANSI X3.64 e JIS X 0211.
Descrizione
Codici di controllo
Sebbene non facciano tecnicamente parte dello standard, quasi tutti gli utenti assumono alcune funzioni di alcuni caratteri a byte singolo. Viene utilizzato per ridurre la quantità di dati trasmessi o per eseguire alcune funzioni che non sono disponibili dalle sequenze di escape:
^ | C0 | Abbr | Nome | Effetto |
---|---|---|---|---|
^G | 7 | BEL | Bell | Genera un segnale acustico |
^H | 8 | BS | Backspace | Muove il cursore a sinistra (ma può "avvolgere all'indietro" se il cursore si trova all'inizio della riga). |
^I | 9 | HT | Tab | Muove il cursore a destra sul multiplo successivo di 8. |
^J | 0x0A | LF | Line Feed | Passa alla riga successiva, scorre il display verso l'alto se si trova nella parte inferiore dello schermo. Di solito non si sposta orizzontalmente, anche se i programmi non dovrebbero fare affidamento su questo. |
^L | 0x0C | FF | Form Feed | Sposta una stampante all'inizio della pagina successiva. Di solito non si sposta orizzontalmente, anche se i programmi non dovrebbero fare affidamento su questo. L'effetto sui terminali video è variabile. |
^M | 0x0D | CR | Carriage Return | Muove il cursore alla colonna zero |
^[ | 0x1B | ESC | Escape | Inizia tutte le sequenze di escape |
Parametri SGR (Select Graphic Rendition)
I Select Graphic Rendition (SGR) imposta gli attributi di visualizzazione. È possibile impostare più attributi nella stessa sequenza, separati da punto e virgola.[1] Ciascun attributo di visualizzazione rimane attivo fino a quando una successiva occorrenza di SGR non lo ripristina.[2] Se nessun codice viene usato, CSI m
è considerato come CSI 0 m
(reset / normale).
n | Nome | Note |
---|---|---|
0 | Reset o normale | Tutti gli attributi sono disattivi |
1 | Grassetto o maggiore intensità | |
2 | Debole, intensità ridotta, o attenuato | Può essere implementato come un carattere fine.[3] |
3 | Corsivo | Non ampiamente supportato. A volte trattato come inverso o lampeggiante. |
4 | Sottolineato | Esistono estensioni per questo stile per Kitty, VTE, mintty e iTerm2.[4][5] |
5 | Lampeggiamento lento | Imposta il lampeggiamento a meno di 150 volte al minuto |
6 | Lampeggiamento veloce | MS-DOS ANSI.SYS, 150+ al minuto. Non ampiamente supportato. |
7 | Invertito | Scambia i colori di primo piano e di sfondo; emulazione incoerente[6] |
8 | Occulta o nascondi | Non ampiamente supportato. |
9 | Barrato | Caratteri leggibili ma contrassegnati come per la cancellazione. Non supportato in Terminal.app |
10 | Font (predefinito) primario | |
11–19 | Font alternativo | Imposta un font alternativo |
20 | Fraktur (Gothic) | Raramente supportato |
21 | Doppiamente sottolineato; oppure: non in grassetto | Doppiamente sottolineato per ECMA-48,[7] mentre disabilita l'intensità in grassetto su diversi terminali, come nella console del kernal Linux prima della versione 4.17.[8] |
22 | Intensità normale | Né grassetto né tenue; il colore cambia dove l'intensità è implementata come tale. |
23 | Né corsivo, né stile gotico | |
24 | Non sottolineato | Né singolarmente né doppiamente sottolineato |
25 | Non lampeggiante | Disattiva il lampeggiamento |
26 | Spaziatura proporzionale | ITU T.61 e T.416, non noto per essere utilizzato sui terminali |
27 | Non invertito | |
28 | Rivela | Non nascosto |
29 | Non barrato | |
30–37 | Imposta il colore di primo piano | |
38 | Imposta il colore di primo piano a 8 bit | Gli argomenti successivi sono 5;n o 2;r;g;b |
39 | Colore di primo piano predefinito | Implementazione definita (secondo standard) |
40–47 | Imposta il colore di sfondo | |
48 | Imposta il colore di sfondo a 8 bit | Gli argomenti successivi sono 5;n o 2;r;g;b |
49 | Colore di sfondo predefinito | Implementazione definita (secondo standard) |
50 | Disabilita la spaziatura proporzionale | T.61 e T.416 |
51 | Incorniciato | Implementato come selettore di variazione delle emoji in mintty.[9] |
52 | Circondato | |
53 | Sovralineato | Non supportato da Terminal.app |
54 | Né incorniciato o circondato | |
55 | Non sovralineato | |
90–97 | Imposta il colore di primo piano più chiaro | Non standard; originariamente implementato da aixterm[10] |
100–107 | Imposta un colore di sfondo più chiaro |
Colori
La specifica originale aveva solo 8 colori e dava loro solo dei nomi. I parametri SGR 30–37 selezionavano il colore di primo piano, mentre 40–47 selezionavano lo sfondo. Molti terminali hanno implementato il "grassetto" (codice SGR 1) come un colore più luminoso piuttosto che un carattere diverso, fornendo così 8 colori di primo piano aggiuntivi. Di solito non è possibile ottenerli come colori di sfondo, anche se a volte il video inverso (codice SGR 7) lo consente. Esempi: per ottenere lettere nere su sfondo bianco utilizzare ESC[30;47m
, per ottenere il rosso utilizzare ESC[31m
, per ottenere un rosso brillante utilizzare ESC[1;31m
. Per ripristinare i colori ai valori predefiniti, utilizzare ESC[39;49m
(non supportato su alcuni terminali) o ripristinare tutti gli attributi con ESC[0m
. I terminali più moderno hanno aggiunto la possibilità di specificare direttamente i colori "brillanti" con 90–97 e 100–107.
Quando l'hardware ha iniziato a utilizzare convertitori digitale-analogico (DAC) a 8 bit, diversi software hanno assegnato numeri di colore a 24 bit a questi nomi. La tabella seguente mostra i valori predefiniti inviati al DAC per alcuni hardware e software comuni
FG | BG | Nome | VGA[N 1] | Windows XP Console[N 2] | Windows PowerShell[N 3] | Visual Studio Code[N 4] | Windows 10 Console[N 5] | Terminal.app | PuTTY | mIRC | xterm | Ubuntu[N 6] | Terminale di Eclipse |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
30 | 40 | Nero | 0, 0, 0 | 12, 12, 12 | 0, 0, 0 | 1, 1, 1 | 0, 0, 0 | ||||||
31 | 41 | Rosso | 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 | Verde | 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 | Giallo | 170, 85, 0[N 7] | 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 | Blu | 0, 0, 170 | 0, 0, 128 | 36, 114, 200 | 0, 55, 218 | 73, 46, 225 | 0, 0, 187 | 0, 0, 127 | 0, 0, 238[11] | 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 | Ciano | 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 | Bianco | 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 | Nero chiaro (grigio) | 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 | Rosso chiaro | 255, 85, 85 | 255, 0, 0 | 241, 76, 76 | 231, 72, 86 | 252, 57, 31 | 255, 85, 85 | 255, 0, 0 | ||||
92 | 102 | Verde chiaro | 85, 255, 85 | 0, 255, 0 | 35, 209, 139 | 22, 198, 12 | 49, 231, 34 | 85, 255, 85 | 0, 252, 0 | 0, 255, 0 | |||
93 | 103 | Giallo chiaro | 255, 255, 85 | 255, 255, 0 | 245, 245, 67 | 249, 241, 165 | 234, 236, 35 | 255, 255, 85 | 255, 255, 0 | ||||
94 | 104 | Blu chiaro | 85, 85, 255 | 0, 0, 255 | 59, 142, 234 | 59, 120, 255 | 88, 51, 255 | 85, 85, 255 | 0, 0, 252 | 92, 92, 255[11] | 0, 0, 255 | 92, 92, 255 | |
95 | 105 | Magenta chiaro | 255, 85, 255 | 255, 0, 255 | 214, 112, 214 | 180, 0, 158 | 249, 53, 248 | 255, 85, 255 | 255, 0, 255 | ||||
96 | 106 | Ciano chiaro | 85, 255, 255 | 0, 255, 255 | 41, 184, 219 | 97, 214, 214 | 20, 240, 240 | 85, 255, 255 | 0, 255, 255 | ||||
97 | 107 | Bianco chiaro | 255, 255, 255 | 229, 229, 229 | 242, 242, 242 | 233, 235, 235 | 255, 255, 255 |
- Note
- ^ Colori tipici utilizzati all'avvio dei PC e lasciati in modalità testo, che utilizzava una tabella di colori a 16 voci. I colori sono diversi nelle modalità grafiche EGA/VGA.
- ^ Presente da Windows XP a Windows 8.1
- ^ Fino a PowerShell 6
- ^ Console di debug, tema "Dark+"
- ^ Tema Campbell, utilizzato a partire da Windows 10 versione 1709. Utilizzato anche da PowerShell 6.
- ^ Per terminali virtuali, da /etc/vtrgb.
- ^ Nei terminali basati su hardware compatibilie con CGA, come anche ANSI.SYS su DOS, questo colore di primo piano di intensità normale viene visualizzato come arancione. I monitor CGA RGBI contengono dei circuiti per modificare il colore giallo scuro in un colore arancione/marrone riducendo la componente verde. Vedi (EN) ansi art, su sixteencolors.net (archiviato dall'url originale il 25 luglio 2011). come esempio.
Note
- ^ (EN) console_codes(4) - Linux manual page, su man7.org. URL consultato il 23 marzo 2018.
- ^ ECMA-48.
- ^ Bug 791596 – Thoughts about faint (SGR 2), su bugzilla.gnome.org.
- ^ (EN) Curly and colored underlines (#6382) · Issues · George Nachman / iterm2, su GitLab.
- ^ (EN) Extensions to the xterm protocol, su kitty documentation. URL consultato il 1º luglio 2020.
- ^ (EN) console-termio-realizer (XML), su jdebp.uk.
- ^ ECMA-48, 8.3.117.
- ^ (EN) console_codes(4), in Linux Programmer's Manual 5.10, Linux man-pages project.
- ^ (EN) mintty/mintty: Text attributes and rendering, su GitHub.
- ^ (EN) Edward Moy, StephenGildea e Thomas Dickey, XTerm Control Sequences (ctlseqs), su Invisible Island, 2019.
- ^ a b Cambiato da 0, 0, 205 a giugno 2004 (EN) Patch #192 – 2004/7/12 – XFree86 4.4.99.9, su invisible-island.net.
Bibliografia
- ECMA International, Standard ECMA-48: Control Functions for Coded Character Sets (PDF), Fifth, giugno 1991.
Collegamenti esterni
- (EN) screen(HW), in SCO OpenServer Release 5.0.7. URL consultato il 7 febbraio 2022.
V · D · M | |
---|---|
Liste: Lista di standard ISO · Lista di latinizzazioni ISO · Lista di standard IEC Categorie: Standard ISO · Protocolli OSI | |
1-9999 | 1 · 2 · 3 · 4 · 5 · 9 · 16 · 31 · 128 · 140 (-5 · -7) · 216 · 217 · 226 · 228 · 233 · 259 · 269 · 302 · 306 · 428 · 639 (-1, -2, -3, -5, -6) · 646 · 690 · 717 · 732 · 746 · 843 · 1000 · 1007 · 1073-1 · 1413 · 1745 · 2014 · 2015 · 2022 · 2108 · 2145 · 2281 · 2709 · 2711 · 2788 · 3029 · 3103 · 3166 (-1, -2, -3) · 3297 · 3307 · 3534 (-1, -2) · 3602 · 3864 · 3901 · 3977 · 4031 · 4157 · 4217 · 5218 · 5775 · 5776 · 5964 · 6166 · 6344 · 6346 · 6425 · 6429 · 6438 · 6523 · 6709 · 7001 · 7002 · 7010 · 7098 · 7185 · 7498 · 7736 · 7810 · 7811 · 7812 · 7813 · 7816 · 8000 · 8217 · 8571 · 8583 · 8601 · 8632 · 8652 · 8807 · 8820-5 · 8859 (-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16) · 9000 · 9075 · 9126 · 9241 · 9362 · 9407 · 9506 · 9529 · 9594 · 9660 · 9897 · 9899 (:1999) · 9945 · 9984 · 9985 · 9995 |
10000-19999 | 10005 · 10006 · 10007 · 10012 · 10118-3 · 10160 · 10161 · 10165 · 10179 · 10206 · 10303 (-11, -21, -22, -238, -28) · 10383 · 10487 · 10585 · 10589 · 10646 · 10664 · 10668 · 10746 · 10861 · 10957 · 10962 · 10967 · 11073 · 11170 · 11179 · 11404 · 11544 · 11783 · 11784 · 11785 · 11801 · 11898 · 11940 · 11941 · 11941 · 11992 · 12006 · 12052 · 12182:1998 · 12207 · 12234-2 · 13239 · 12354-3 · 13211-1 · 13216 · 13250 · 13346 · 13399 · 13406-2 · 13407 · 13450 · 13485 · 13490 · 13567 · 13568 · 13584 · 13616 · 14000 · 14001 · 14031 · 14396 · 14443 · 14496 (-10, -14) · 14644 · 14649 · 14651 · 14698 · 14698-2 · 14750 · 14882 · 14908 · 14971 · 15022 · 15189 · 15288 · 15291 · 15292 · 15408 · 15444 · 15445 · 15438 · 15504 · 15511 · 15686 · 15693 · 15706 (-2) · 15707 · 15836 · 15897 · 15919 · 15924 · 15926 · 15926 WIP · 15930 · 15948 · 16023 · 16262 · 16684 · 16750 · 16949 · 17024 · 17025 · 17369 · 17799 · 18000 · 18004 · 18014 · 18092 · 18181 · 18245 · 18629 · 18916 · 19005 · 19011 · 19092 (-1, -2) · 19101 · 19105 · 19106 · 19107 · 19108 · 19109 · 19111 · 19112 · 19113 · 19114 · 19115 · 19116 · 19117 · 19118 · 19119 · 19123 · 19125 (-1, -2) · 19128 · 19131 · 19133 · 19135 · 19137 · 19439 · 19501:2005 · 19752 · 19757 · 19770 · 19775-1 |
20000+ | 20000 · 20022 · 20700 · 20922 · 21000 · 21047 · 21500 · 21827:2002 · 22000 · 22301 · 23008 (-2, -12) · 23270 · 23271 · 23360 · 23950 · 24014 · 24613 · 25178 · 26000 · 26300 · 26324 · 27000 series · 27000 · 27001 (:2013) · 27002 · 27003 · 27004 · 27005 · 27006 · 27007 · 27032 · 27729 · 27799 · 29500 · 31000 · 32000 · 37001 · 38500 · 39001 · 42010 · 44001 · 45001 · 50001 · 80000 |
Vedi anche: voci che iniziano per "ISO" |
V · D · M | |
---|---|
IEC standard | IEC 60027 · IEC 60034 · IEC 60038 · IEC 60062 · IEC 60063 · IEC 60068 · IEC 60112 · IEC 60228 · IEC 60269 · IEC 60297 · IEC 60309 · IEC 60320 · IEC 60364 · IEC 60446 · IEC 60559 · IEC 60601 · IEC 60870 (IEC 60870-5 · IEC 60870-6) · IEC 60906-1 · IEC 60908 · IEC 60929 · IEC 60958 (AES3 · S/PDIF) · IEC 61030 · IEC 61131 (IEC 61131-3 · IEC 61131-9) · IEC 61158 · IEC 61162 · IEC 61334 · IEC 61346 · IEC 61355 · IEC 61360 · IEC 61400 · IEC 61499 · IEC 61508 · IEC 61511 · IEC 61784 · IEC 61850 · IEC 61851 · IEC 61883 · IEC 61960 · IEC 61968 · IEC 61970 · IEC 62014-4 · IEC 62026 · IEC 62056 · IEC 62061 · IEC 62196 · IEC 62262 · IEC 62264 · IEC 62304 · IEC 62325 · IEC 62351 · IEC 62365 · IEC 62366 · IEC 62379 · IEC 62386 · IEC 62455 · IEC 62680 · IEC 62682 · IEC 62700 · IEC 63110 · IEC 63119 |
ISO/IEC standard | ISO/IEC 646 · ISO/IEC 2022 · ISO/IEC 4909 · ISO/IEC 5218 · ISO/IEC 6429 · ISO/IEC 6523 · ISO/IEC 7810 · ISO/IEC 7811 · ISO/IEC 7812 · ISO/IEC 7813 · ISO/IEC 7816 · ISO/IEC 7942 · ISO/IEC 8613 · ISO/IEC 8632 · ISO/IEC 8652 · ISO/IEC 8859 · ISO/IEC 9126 · ISO/IEC 9293 · ISO/IEC 9592 · ISO/IEC 9593 · ISO/IEC 9899 · ISO/IEC 9945 · ISO/IEC 9995 · ISO/IEC 10021 · ISO/IEC 10116 · ISO/IEC 10165 · ISO/IEC 10179 · ISO/IEC 10646 · ISO/IEC 10967 · ISO/IEC 11172 · ISO/IEC 11179 · ISO/IEC 11404 · ISO/IEC 11544 · ISO/IEC 11801 · ISO/IEC 12207 · ISO/IEC 13250 · ISO/IEC 13346 · ISO/IEC 13522-5 · ISO/IEC 13568 · ISO/IEC 13818 · ISO/IEC 14443 · ISO/IEC 14496 · ISO/IEC 14882 · ISO/IEC 15288 · ISO/IEC 15291 · ISO/IEC 15408 · ISO/IEC 15444 · ISO/IEC 15445 · ISO/IEC 15504 · ISO/IEC 15511 · ISO/IEC 15693 · ISO/IEC 15897 · ISO/IEC 15938 · ISO/IEC 16262 · ISO/IEC 17024 · ISO/IEC 17025 · ISO/IEC 18000 · ISO/IEC 18004 · ISO/IEC 18014 · ISO/IEC 19752 · ISO/IEC 19757 · ISO/IEC 19770 · ISO/IEC 19788 · ISO/IEC 20000 · ISO/IEC 21000 · ISO/IEC 21827 · ISO/IEC 23000 · ISO/IEC 23003 · ISO/IEC 23008 · ISO/IEC 23270 · ISO/IEC 23360 · ISO/IEC 24707 · ISO/IEC 24727 · ISO/IEC 24744 · ISO/IEC 24752 · ISO/IEC 26300 · ISO/IEC 27000 · ISO/IEC 27001 · ISO/IEC 27002 · ISO/IEC 27040 · ISO/IEC 27032 · ISO/IEC 29119 · ISO/IEC 33001 · ISO/IEC 38500 · ISO/IEC 42010 · ISO/IEC80000 |