ANSI-pakosekvenssit

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 22. joulukuuta 2015 tarkistetusta versiosta . tarkastukset vaativat 20 muokkausta .

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.

Historia

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ä.

Tuki

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ä.

Windows ja DOS

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.

Sekvenssielementit

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.

CSI-koodit

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ä.

Jotkut ANSI-pakojaksot (osittainen luettelo)
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.
SGR (Select Graphic Rendition) -parametrit
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)

Värit

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

Värikartta [6]
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

Katso myös

Muistiinpanot

  1. NIST -luettelo peruutetuista standardeista
  2. Paul Williams. Digitalin videopäätteet (linkki ei käytettävissä) . VT100.net (2006). Haettu 17. elokuuta 2011. Arkistoitu alkuperäisestä 23. heinäkuuta 2012. 
  3. Heathkit Company. Heathkit Catalog 1979 (linkki ei saatavilla) . Heathkit Company (1979). Haettu 4. marraskuuta 2011. Arkistoitu alkuperäisestä 13. tammikuuta 2012. 
  4. Michael Mefford. ANSI.com: Lataa se täältä . PC Magazine (7. helmikuuta 1989). Haettu 10. elokuuta 2011. Arkistoitu alkuperäisestä 18. joulukuuta 2012.
  5. Dan Kegel, Eric Auer. Nansi- ja NNansi-ANSI-ajurit MS-DOS:lle . Dan Kegelin Web Hostel (28. helmikuuta 1999). Haettu 10. elokuuta 2011. Arkistoitu alkuperäisestä 18. joulukuuta 2012.
  6. Nimet ovat vakiomuotoisia, mutta värien tarkkoja merkityksiä ei ole standardoitu ja ne riippuvat laitteesta, joka näyttää ne.

Linkit