ANSI-ohjausmerkit ( ANSI-pakokoodi ) ovat tekstiin upotettuja merkkejä, joilla ohjataan muotoa, väriä ja muita tekstipäätteen tulostusasetuksia . Melkein kaikki pääteemulaattorit , jotka on suunniteltu näyttämään etätietokoneesta tulevaa tekstiä ja (paitsi Microsoft Windows ) näyttämään tekstin paikallisesta ohjelmistosta, pystyvät tulkitsemaan ainakin joitain ANSI-pakojaksoja.
Melkein kaikki tekstipäätteiden kehittäjät loivat omia, muiden pääteversioiden kanssa yhteensopimattomia ohjausjaksoja, jotka suorittavat mahdollisia muunnoksia päätelaitteen sisällölle; esimerkiksi siirtämällä kohdistinta mielivaltaiseen kohtaan näytöllä. Kehittyneitä kirjastoja, kuten termcap , luotiin, jotta ohjelmat voivat käyttää yhtä API :ta riippumatta tekstipäätteen toteutuksesta. Lisäksi useimmat päätteet vaativat numeroiden (kuten rivin ja sarakkeen) lähettämisen binäärimerkkiarvoina; Joillekin ohjelmointikielille ja käyttöjärjestelmille, joissa ei ole sisäistä ASCII -tukea , oikean merkin yhdistäminen numeroon oli usein vaikeaa tai mahdotonta.
Ensimmäinen ANSI-ohjausmerkkistandardi oli ECMA - 48 , joka otettiin käyttöön vuonna 1976. Se oli jatkoa sarjalle koodausstandardeja, joista ensimmäinen oli vuoden 1961 ECMA-6, 7-bittinen standardi, josta ASCII on johdettu. ECMA-48 on päivitetty useita kertoja, nykyinen versio on viides, 1991. ISO ja IEC ovat myös hyväksyneet sen ISO /IEC 6429 -standardiksi . Nimi " ANSI - pakosekvenssi" ilmestyi vuonna 1981, kun ANSI hyväksyi ECMA-48:n ANSI X3.64 -standardiksi (poistettiin myöhemmin vuonna 1997 [1] ).
Ensimmäinen suosittu pääte, joka tukee näitä sekvenssejä, oli VT100 , joka esiteltiin vuonna 1978 [2] . VT100:n lukuisista "klooneista" vuonna 1979 julkaistusta edullisimmasta Zenith Z-19 :stä 3] tuli varhaisin ja suosituin . Niiden suosio johti vähitellen suuren määrän ohjelmistojen (erityisesti BBS ) syntymiseen, jotka tukevat pakojaksoja, ja tämä puolestaan johti siihen, että melkein kaikki uudet päätteet ja pääteemulaattorit tukivat niitä.
Useimmat UNIX-tyyppisten käyttöjärjestelmien pääteemulaattorit (kuten xterm tai OS X Terminal ) tulkitsevat ANSI-pakojaksoja. Linux-konsoli (näkyy, kun X Window System ei ole käynnissä) myös tulkitsee ne. Microsoft Windows -pääteemulaattorit , jotka on suunniteltu tekstin tuottamiseen ulkoisista lähteistä (sarjaportti, modeemi tai liitäntä) myös tulkitsevat niitä. Vaihtoehtoiset komentoprosessorit , kuten JP Softwaren Take Command Console (entinen 4NT) , Michael J. Meffordin ANSI.COM, Jason Hoodin ansicon, tarjoavat jonkin verran tukea paikallisten ohjelmien tekstitulostukselle Windowsissa .
Monet Unix- konsolisovellukset (esim . ls , grep , Vim , Emacs ) voivat luoda niitä. Jotkut apuohjelmat ( tput ), matalan tason ( termcap , terminfo ) ja korkean tason ( curses ) kirjastot tuottavat ne.
IBM:n OS/2-käyttöjärjestelmässä, versiossa 3.0 ja uudemmissa, mukaan lukien EC:t, ANSI-tuki koko näytön ja ikkunoidussa konsolitilassa on oletusarvoisesti käytössä.
MS-DOS 1.0 ei tukenut ANSI:ta tai muita erotussekvenssejä. Vain muutama ohjausmerkki ( CR , LF , BS ) tulkittiin, mikä teki mahdottomaksi luoda koko näytön sovelluksia. Näyttötehosteet voidaan saavuttaa vain BIOS -kutsuilla (tai yleisemmin IBM PC -laitteiston suoralla manipuloinnilla ).
MS-DOS 2.0 tarjosi mahdollisuuden asentaa ajurit tukemaan ANSI-pakojaksoja - ANSI.SYS oli tosiasiallinen standardi , mutta muita käytettiin (ANSI.COM [4] , NANSI.SYS [5] ). Hitaus ja se, että ohjainta ei asennettu oletusarvoisesti, tarkoittivat, että niitä ei juuri käytetty; ohjelmisto jatkoi suoraan laitteiston käsittelyä tuottaakseen halutut tehosteet tekstipäätteessä. ANSI.SYS:n ja vastaavien ohjaimien käyttöä jatkettiin Windows 98:ssa ja jopa Windows ME:ssä alkuperäisessä DOS-tilassa (koko näytön tekstitila). ANSI.SYS toimii myös Windows NT -perhejärjestelmissä 16-bittisessä tilassa vanhoille NTVDM :ää käyttäville ohjelmille .
- konsoli ei tukenut ANSI-pakojaksoja ollenkaan ennen kuin Windows 10 "Threshold 2". Ohjelmisto voi ohjata konsolia ioctl -tyyppisten konsolin API -järjestelmäkutsujen kautta, jotka on lomitettu tekstitulosteen kanssa. Jotkut ohjelmat tulkitsevat sisäisesti ANSI-pakojaksoja tekstinsyötöstä ja kääntävät ne sopiviksi järjestelmäkutsuiksi.
Escape-sekvenssit alkavat ESC -merkillä ( ASCII : 27 / 0x 1B / 0 33). Kaksimerkkisissä sarjoissa toinen merkki voi olla ASCII-merkki välillä 64 - 95 ( @ - _ ). Useimmat sekvenssit ovat kuitenkin yli kaksi merkkiä pitkiä ja alkavat ESC :llä ja [ . Merkkien ESC ja [ yhdistelmää kutsutaan CSI :ksi tai Control Sequence Introduceriksi (myös Control Sequence Intiatoriksi). Tämän sekvenssin viimeinen merkki voi olla ASCII-merkki välillä 64 - 126 ( @ - ~ ).
Siellä on myös yksimerkkinen CSI ( ASCII : 155 / 0x 9B / 0 233). CSI -muotoa ESC + [ käytetään useammin kuin yksimerkkistä vaihtoehtoa (katso myös C0- ja C1-ohjauskoodit ). Vain ESC + [ tunnistavat laitteet, jotka tukevat vain ASCII:ta (7-bittistä tavua) tai laitteet, jotka tukevat 8-bittisiä tavuja, mutta käyttävät 0x80-0x9F-alueen ohjausmerkkejä muihin tarkoituksiin. UTF-8- koodausta käyttävissä päätteissä molemmat muodot ottavat 2 tavua ( CSI UTF-8:ssa: 0x C2, 0x 9B), mutta ESC + [ näyttää luettavammalta.
Vaikka jotkin koodaukset käyttävät useita tavuja yhden merkin koodaamiseen, tämän artikkelin loppuosassa tarkastellaan vain ASCII-merkkejä, joita edustaa yksi tavu.
Useimpien ANSI-pakosekvenssien rakenne on seuraava:
CSI [символ(-ы) режима] n1 ; n2... [замыкающий(-ие) символ(-ы)] буква
Viimeinen tavu ( буква), muokattu символами режимаja замыкающими символами, määrittää komennon. Numerot n1, n2, … ovat valinnaisia parametreja. Jos niiden arvoja ei ole määritetty, oletusarvo on yleensä 0 tai 1, riippuen toiminnasta. Jos seuraavia numeroita ei ole määritetty, puolipisteet voidaan myös jättää pois.
Viimeinen tavu voi muodollisesti olla mikä tahansa merkki väliltä 64 - 126 ( 0x 40 - 0x 7e, ASCII: @ - ~ ), sitä voidaan muuttaa edeltävillä välitavuilla välillä 32 - 47 ( 0x 20 - 0x 2f).
Kaksoispiste ( 0x 3a) ei voi sisältyä sarjaan. Se on jätetty tulevaa standardointia varten, joten kaikki kaksoispisteen sisältävät sekvenssit jätetään huomiotta.
Vaikka useat tilamerkit ja useat loppumerkit ovat sallittuja, tätä ei käytetä.
Koodi | Nimi | Vaikutus |
---|---|---|
CSI n A | CUU-kohdistin ylös | Siirtää kohdistinta n (oletus 1) paikkaa määritettyyn suuntaan. Jos kursori on jo pääteikkunan reunalla, mitään ei tapahdu. |
CSI n B | CUD-kohdistin alas | |
CSI n C | CUF - Kursori eteenpäin | |
CSI n D | CUB – Kohdistin takaisin | |
CSI n E | CNL-kohdistimen seuraava rivi | Siirtää kohdistimen n :nnen (oletusarvoisen 1.) rivin alkuun nykyisen rivin alapuolella. |
CSI n F | CPL - Kohdistimen edellinen rivi | Siirtää kohdistimen n :nnen (oletusarvoisen 1.) rivin alkuun nykyisen rivin yläpuolella. |
CSI n G | CHA-Cursor Horizontal Absolute | Siirtää kohdistimen sarakkeeseen n . |
CSI n ; m H | CUP - Kohdistimen sijainti | Siirtää kohdistimen riville n , sarakkeelle m . Oletusarvot n ja m ovat 1 (vasen yläkulma), jos vain yksi argumentti annetaan ilman puolipistettä, sen oletetaan olevan n . Esimerkiksi sekvenssi CSI;5H on synonyymi CSI1;5H :lle , CSI17;H on synonyymi CSI17H :lle ja CSI17;1H: lle . |
CSI n J | ED-Poista tiedot | Tyhjentää osan pääteikkunasta. Jos n on nolla (tai puuttuu), tyhjentää kaiken kursorista pääteikkunan loppuun. Jos n on yhtä kuin yksi, tyhjentää kaiken kursorista pääteikkunan alkuun. Jos n on kaksi, tyhjentää koko pääteikkunan (ja siirtää kohdistimen vasempaan yläkulmaan MS-DOS ANSI.SYS:ssä). Jos n on 2, tyhjentämisen sijaan voi tapahtua vain uusien rivien luominen niin, että päätelaitteen edellinen sisältö työntyy ylöspäin. |
CSI n K | EL-Poista rivissä | Poistaa osan merkkijonosta. Jos n on nolla (tai puuttuu), tyhjentää kaiken kohdistimesta rivin loppuun. Jos n on yhtä kuin yksi, tyhjentää kaiken kursorista rivin alkuun. Jos n on kaksi, tyhjentää koko merkkijonon. Kohdistimen sijainti ei muutu. |
CSI n S | S-Scroll Up | Vierittää nykyistä päätesivua ylöspäin n (oletusarvo 1) rivillä. Uudet rivit lisätään alaosaan, nykyisen sivun yläreunassa olevat rivit korvataan. (ei ANSI.SYS) |
CSI n T | SD - Vieritä alas | Vierittää nykyistä päätesivua alaspäin n (oletusarvo 1) riviä. Uudet rivit lisätään yläreunaan, rivit nykyisen sivun alalaidasta poistetaan. (ei ANSI.SYS) |
CSI n ; m f | HVP — Vaaka- ja pystysijainti | Siirtää kohdistimen riville n , sarakkeelle m . Molempien parametrien oletusarvo on 1. Sama vaikutus kuin CUP:lla. |
CSIn [ ; k ] m | SGR - Valitse Graphic Rendition | Aseta SGR-parametrit , jotka määrittävät tekstin ja taustan värit. CSI:n jälkeen voi olla nolla tai useampi parametri puolipisteillä erotettuina. Jos parametreja ei ole määritetty, CSI m käyttäytyy kuten CSI 0 m (nollaus / normaali). |
CSI 6n | DSR - Laitteen tilaraportti | Ilmoittaa kursorin nykyisen sijainnin muodossa ESC[ n ; m R , jossa n on rivi, m on sarake. (Ei ehkä toimi MS-DOS:ssa) |
CSI:t | SCP-Tallenna kohdistimen sijainti | Tallentaa kohdistimen sijainnin. |
CSI u | RCP - Palauta kohdistimen sijainti | Palauttaa kohdistimen sijainnin. |
CSI?25l | DECTCEM | Piilottaa kohdistimen. |
CSI?25h | DECTCEM | Tekee kursorin näkyväksi. |
Koodi | Vaikutus | Merkintä |
---|---|---|
0 | Nollaa / Normaali | poista kaikki attribuutit käytöstä |
yksi | Lihavoitu tai lisää kirkkautta | |
2 | Haalistunut (vähennä kirkkautta) | Ei tueta kaikkialla |
3 | Kursiivi: päällä | Ei tueta kaikkialla. Joskus sitä käsitellään inversiona. |
neljä | Alleviivattu: kerran | |
5 | Vilkkuu: Hidasta | alle 150 kertaa minuutissa |
6 | Vilkkuu: Usein | MS-DOS ANSI.SYS; 150+ minuutissa; ei tueta kaikkialla |
7 | Näyttö: negatiivinen | kääntää tai kääntää; muuttaa taustan ja tekstin värejä |
kahdeksan | Piilotettu | Ei tueta kaikkialla. |
9 | Yliviivattu | Merkit ovat luettavissa, mutta merkitty poistetuiksi. Ei tueta kaikkialla. |
kymmenen | Ensisijainen (oletus) fontti | |
11-19 | - vaihtoehtoinen fontti | Valitsee vaihtoehtoisen fontin (14:stä on 4. vaihtoehtoinen fontti, 19:een on 9. vaihtoehtoinen fontti). |
kaksikymmentä | Murtuma | tuskin tuettu |
21 | Lihavoitu: Pois tai Alaviiva: Double | lihavointia ei aina tueta; kaksoisalaviivaa tuskin tuetaan. |
22 | Normaali väri tai kirkkaus | Ei lihava eikä haalistunut |
23 | Ei kursiivinen, ei murtoluku | |
24 | Alaviiva: Ei | Älä alaviivaa kerta- eikä tuplaviivaa |
25 | Vilkkuu: pois päältä | |
26 | Varattu | |
27 | Näyttö: normaali | ei negatiivinen |
28 | Näytetään | sammuta piilottaminen |
29 | ei yliviivattu | |
30–37 | Aseta tekstin väri (etualalla) | 30+ , missä alla olevasta väritaulukosta |
38 | Varattu lisäväreille | seuraavat argumentit ovat yleensä tuettuja: 5;nmissä on väriindeksi ( ) tai missä ovat värin punainen, vihreä ja sininen kanavat ( sisällä ) 0..2552;r;g;b255 |
39 | Tekstin oletusväri (etualalla) | toteutuksesta riippuvainen (standardin mukaan) |
40–47 | Aseta taustaväri | 40+ , missä alla olevasta väritaulukosta |
48 | Varattu laajennetun taustavärin asettamiseen | tukee yleensä seuraavia argumentteja 5;nmissä on väriindeksi ( ) tai missä ovat punaiset, vihreät ja siniset värikanavat ( sisällä ) 0..2552;r;g;b255 |
49 | Taustan oletusväri | toteutuksesta riippuvainen (standardin mukaan) |
viisikymmentä | varattu | |
51 | Kehystetty | |
52 | Ympäröimä | |
53 | yliviivattu | |
54 | Ei kehystetty eikä ympäröity | |
55 | ei yliviivattu | |
56–59 | varattu | |
60 | ideogrammin alleviivaus tai oikea sivuviiva | tuskin tuettu |
61 | ideogrammin kaksoisalleviivaus tai kaksoisviiva oikealla puolella | tuskin tuettu |
62 | ideogrammin yliviiva tai vasen sivuviiva | tuskin tuettu |
63 | ideogrammin kaksoisyliviiva tai kaksoisviiva vasemmalla puolella | tuskin tuettu |
64 | ideogrammin stressimerkintä | tuskin tuettu |
65 | ideogrammin attribuutit pois päältä | tuskin tuettu, peruuttaa koodien vaikutukset 60-64 |
90–97 | Aseta etualan tekstin väri, korkea intensiteetti | aixterm (ei vakio) |
100-107 | Aseta taustaväri, korkea intensiteetti | aixterm (ei vakio) |
Tekstin värejä (ja SGR-parametreja yleensä) ohjataan sarjoilla , joissa jokainen , , ... on SGR-parametri, kuten yllä on esitetty. Siten käytät koodeja esimerkiksi tekstin värin asettamiseen, taustavärin asettamiseen, missä on värinumero alla olevasta taulukosta. Seuraavia esimerkkejä voidaan käyttää apuohjelmassa, jossa tai toteuttaa CSI: Muuttaaksesi tekstin värin mustaksi, käytä ; punaiseksi ; asetus lihavoitu harmaa ; aseta lihavoitu punainen . Aseta oletusvärit käyttämällä (jotkin päätteet eivät tue) (tai nollaa kaikki attribuutit ). CSI n1 [;n2 [; ...]] mn1n230+i40+iiprintf\x1b[\e[\x1b[30m\x1b[31m\x1b[30;1m\x1b[31;1m\x1b[39;49m\x1b[0m
Intensiteetti | 0 | yksi | 2 | 3 | neljä | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Normaali | Musta | Punainen | Vihreä | Keltainen | Sininen | Magenta | syaani | Valkoinen |
Kirkas | Musta | Punainen | Vihreä | Keltainen | Sininen | Magenta | syaani | Valkoinen |
Merkkien koodaukset | |
---|---|
Historialliset koodaukset | lisäkomp. semafori (Makarov) morsia Bodo MTK-2 comp. 6-bittinen SCP RADIX-50 EBCDIC KOI-7 ISO 646 |
moderni 8-bittinen esitys | symboleja ASCII ei-ASCII 8-bittiset koodisivut Kyrillinen KOI-8 Peruskoodaus MacCyrillic ISO 8859 1 (lat.) 2 3 neljä 5 (kir.) 6 7 kahdeksan 9 kymmenen yksitoista 12 13 neljätoista 15 (€) 16 Windows 1250 1251 (kir.) 1252 1253 1254 1255 1256 1257 1258 WGL4 IBM ja DOS 437 850 852 855 866 "vaihtoehto" MIC |
Monitavu | perinteinen DBCS GB2312 HTML unicode UTF-32 UTF-16 UTF-8 merkkiluettelo Kyrillinen |
käyttöliittymä näppäimistöasettelu alue rivin käännös fontti translitterointi mukautettuja fontteja apuohjelmia iconv ennätys |
ISO- standardit | |
---|---|
| |
1-9999 _ _ |
|
10 000 - 19999 |
|
20 000+ | |
Katso myös: Luettelo artikkeleista, joiden otsikot alkavat sanalla "ISO" |
Ecma kansainväliset standardit | |
---|---|