Únikový kód ANSI - ANSI escape code
![]() | tento článek potřebuje další citace pro ověření.Ledna 2017) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
![]() | |
Standard |
|
---|---|
Klasifikace | ISO / IEC 2022 na základě kontrolní kód a kontrolní sekvence nastavena |
Další související kódování | Další standardy funkce ovládání: ITU T.101, JIS X 0207, ISO 6630, DIN 31626, ETS 300 706 |
Únikové sekvence ANSI jsou standardem pro vnitropásmová signalizace ovládat umístění kurzoru, barvu, styl písma a další možnosti ve videu textové terminály a emulátory terminálu. Určité sekvence bajtů, většina začíná na Útěk ASCII a Závorka znak následovaný parametry jsou vloženy do textu. Terminál interpretuje tyto sekvence jako příkazy, nikoli jako text k doslovnému zobrazení.
Sekvence ANSI byly zavedeny v 70. letech, aby nahradily sekvence specifické pro dodavatele, a začátkem 80. let se rozšířily na trhu počítačového vybavení. Používají se ve vývojových, vědeckých, komerčních textových aplikacích a také systémy BBS nabízet standardizované funkce.
Ačkoli se v 21. století hardwarové textové terminály stávají vzácnějšími, relevance standardu ANSI přetrvává, protože velká většina terminálových emulátorů a příkazových konzolí interpretuje alespoň část standardu ANSI.
Dějiny
Téměř všichni výrobci video terminálů přidali únikové sekvence specifické pro dodavatele k provádění operací, jako je umístění kurzoru na libovolné pozice na obrazovce. Jedním z příkladů je VT52 terminál, který umožňoval umístění kurzoru na místo x, y na obrazovce odesláním ESC
postava, a Y
znak a poté dva znaky představující s číselnými hodnotami rovnými umístění x, y plus 32 (tedy začínající znakem mezery ASCII a vyhýbající se řídicím znakům). The Hazeltin 1500 měl podobnou funkci vyvolanou pomocí ~
, DC1
a poté se pozice X a Y oddělily čárkou. Zatímco dva terminály měly v tomto ohledu identickou funkčnost, musely být k jejich vyvolání použity různé řídicí sekvence.
Jelikož se tyto sekvence pro různé terminály lišily, vytvořte komplikované knihovny jako např termcap ("možnosti terminálu") a nástroje jako tput muselo být vytvořeno, aby programy mohly používat totéž API pracovat s jakýmkoli terminálem. Mnoho z těchto terminálů navíc vyžadovalo odesílání čísel (například řádků a sloupců) jako binárních hodnot znaků; pro některé programovací jazyky a pro systémy, které interně nepoužívají ASCII, bylo často obtížné změnit číslo na správný znak.
Standard ANSI se pokusil tyto problémy vyřešit vytvořením sady příkazů, kterou by používaly všechny terminály, a vyžadováním přenosu všech číselných informací jako čísel ASCII. První standard v řadě byl ECMA-48, přijatý v roce 1976.[1] Jednalo se o pokračování řady standardů kódování znaků, z nichž první byla ECMA-6 z roku 1965, což je 7bitový standard ISO 646 pochází. Název „ANSI escape sequence“ pochází z roku 1979, kdy ANSI přijato ANSI X3.64. Výbor ANSI X3L2 spolupracoval s ECMA výbor TC 1 k výrobě téměř identických standardů. Tyto dvě normy byly sloučeny do mezinárodní normy ISO 6429.[1] V roce 1994 ANSI stáhla svůj standard ve prospěch mezinárodního standardu.
První populární video terminál na podporu těchto sekvencí byl Digitální VT100, představený v roce 1978.[2] Tento model byl na trhu velmi úspěšný, což vyvolalo řadu klonů VT100, z nichž nejstarší a nejoblíbenější byl mnohem dostupnější Zenith Z-19 v roce 1979.[3] Jiní zahrnovali Qume QVT-108, Televideo TVI-970, Wyse WY-99GT a také volitelné režimy „VT100“ nebo „VT103“ nebo „ANSI“ s různým stupněm kompatibility u mnoha jiných značek. Popularita těchto postupně vedla k více a více softwaru (zejména systémy BBS a další online služby ) za předpokladu, že únikové sekvence fungovaly, což vedlo k tomu, že je podporovaly téměř všechny nové terminály a emulační programy.
V roce 1981 byl pro použití ve vládě USA přijat ANSI X3.64 FIPS publikace 86. Později vláda USA přestala duplikovat průmyslové standardy, takže FIPS pub. 86 byl stažen.[4]
ECMA-48 byl několikrát aktualizován a je aktuálně na 5. vydání, od roku 1991. Také jej přijal ISO a IEC jako standard ISO / IEC 6429.[5] Verze je přijata jako Japonský průmyslový standard, tak jako JIS X 0211.
Mezi související standardy patří ITU T.61, Teletex standard a ISO / IEC 8613, Otevřená architektura dokumentů standard (hlavně ISO / IEC 8613-6 nebo ITU T.416). Tyto dva systémy sdílejí mnoho únikových kódů se systémem ANSI, s rozšířeními, které nemusí mít pro počítačové terminály nutně smysl. Oba systémy rychle skončily, ale ECMA-48 označí rozšíření použitá v nich jako vyhrazená.
Podpora platformy
Unixové systémy
Ačkoli termcap /terminfo Knihovny ve stylu byly primárně vyvinuty pro Unix a pro unixové programy od poloviny 80. let Unixový operační systémy mohly téměř vždy předpokládat, že používají terminál nebo emulátor, který podporuje sekvence ANSI;[Citace je zapotřebí ] to vedlo k širokému využívání ANSI programy běžícími na těchto platformách. Například mnoho her a skriptů prostředí (příklady barevných výzev viz níže) a nástroje, jako jsou výpisy barevných adresářů, přímo zapisují sekvence ANSI, a proto je nelze použít na terminálu, který je neinterpretuje. Mnoho programů, včetně textové editory jako vi a GNU Emacs, používejte termcap nebo terminfo nebo používejte knihovny jako kletby které používají termcap nebo terminfo, a tak teoreticky podporují terminály jiné než ANSI, ale to je dnes tak zřídka testováno, že jsou pravděpodobně nebude fungovat s těmi terminály.[Citace je zapotřebí ]
Emulátory terminálu pro komunikaci s místními programy i se vzdálenými stroji a textem konzole systému téměř vždy podporují únikové kódy ANSI. Patří sem terminálové emulátory, jako jsou xterm, rxvt, Terminál GNOME, a Konsole na systémech s X11 - na základě nebo Wayland - okenní systémy na bázi a Terminal.app a běžné terminály třetích stran, například iTerm2 na Operační Systém Mac.
DOS, OS / 2 a Windows
MS-DOS 1.x nepodporoval ANSI ani jiné únikové sekvence. Jen pár kontrolní znaky (BEL, ČR, LF, BS ) byly interpretovány základním BIOSem, což je téměř[pozn. 1] nemožné provést jakýkoli druh aplikace na celou obrazovku. Jakékoli efekty zobrazení musely být provedeny pomocí volání systému BIOS, která byla notoricky pomalá, nebo přímou manipulací s hardwarem IBM PC.
DOS 2.0 představil možnost přidat a ovladač zařízení pro únikové sekvence ANSI - de facto standardní bytost ANSI.SYS, ale ostatní mají rádi ANSI.COM,[6] NANSI.SYS[7] a ANSIPLUS.EXE jsou také používány (jsou podstatně rychlejší, protože obcházejí BIOS). Pomalost a skutečnost, že nebyl nainstalován ve výchozím nastavení, software zřídka využívá jeho výhody; místo toho aplikace nadále přímo manipulovaly s hardwarem, aby získaly potřebné zobrazení textu.[Citace je zapotřebí ] ANSI.SYS a podobné ovladače pokračovaly v práci Windows 9x až do Windows Me a v systémech odvozených z NT pro 16bitové starší programy prováděné pod NTVDM.
Mnoho klonů systému DOS dokázalo interpretovat sekvence a nevyžaduje načtení samostatného ovladače ANSI. PTS-DOS[8][9] stejně jako Souběžný DOS, Multiuser DOS[10] a SKUTEČNÉ / 32 mají vestavěnou podporu (plus řadu rozšíření). OS / 2 měl ANSI příkaz, který povolil sekvence.
The Windows Console nepodporoval únikové sekvence ANSI ani Microsoft neposkytl žádnou metodu, která by je umožnila. Některá nahrazení nebo doplňky pro okno konzoly, například JP Software TCC (dříve 4NT), Michael J. Mefford's ANSI.COM, Jason Hood's ANSICON[11]a Maximus5's ConEmu interpretované únikové sekvence ANSI vytištěné programy. Balíček Pythonu[12] interně interpretované únikové sekvence ANSI v tištěném textu a jejich překlad do volání za účelem manipulace s barvou a pozicí kurzoru, což usnadňuje přenos kódu Pythonu pomocí ANSI do Windows. Cygwin provádí podobný překlad na všechny výstupy zapsané do konzoly pomocí deskriptorů souborů Cygwin, filtrování se provádí pomocí výstupních funkcí cygwin1.dll, umožňující přenos kódu POSIX C do Windows.
V roce 2016 společnost Microsoft vydala Windows 10 Verze 1511 aktualizace, která neočekávaně implementovala podporu únikových sekvencí ANSI, více než dvě desetiletí po debutu Windows NT.[13] Tato změna byla navržena tak, aby doplňovala Subsystém Windows pro Linux, přidání do Hostitel konzoly Windows používá příkazový řádek Podpora pro únikové kódy znaků používané terminálovým softwarem pro Unixový systémy. Toto není výchozí chování a musí být programově povoleno pomocí rozhraní Win32 API prostřednictvím SetConsoleMode (popisovač, ENABLE_VIRTUAL_TERMINAL_PROCESSING)
.[14] To bylo povoleno programem CMD.EXE, ale zpočátku nikoli PowerShell;[15] Windows PowerShell 5.1 to však nyní ve výchozím nastavení povoluje. Možnost vytvořit řetězcovou konstantu obsahující ESC byla přidána v PowerShellu 6 pomocí (například) „„ [32 m “
;[16] pro PowerShell 5 jste museli použít [char] 0x1B + „[32 m“
.
Terminál Windows, představený v roce 2019, podporuje sekvence ve výchozím nastavení a zdá se, že Microsoft má v úmyslu sloučit nebo nahradit konzolu Windows.[Citace je zapotřebí ]
Atari ST
The Atari ST použil příkazový systém upravený z VT52 s některými rozšířeními pro podporu barev,[17] spíše než podporovat únikové kódy ANSI.
AmigaOS
AmigaOS nejen interpretuje sekvence kódu ANSI pro textový výstup na obrazovku, AmigaOS tiskárna ovladač je také interpretuje (s rozšířeními proprietárními pro AmigaOS) a převádí je do kódů požadovaných pro konkrétní připojenou tiskárnu.[18]
VMS / OpenVMS
VMS byl navržen tak, aby byl interaktivně spravován pomocí textových video terminálů Digital, jako jsou výše uvedené VT100; později s grafickými emulátory terminálu, jako jsou VWS Terminal, DECTerm a xterm.[19]
Únikové sekvence
Únikové sekvence mají různou délku. Obecný formát únikové sekvence kompatibilní s ANSI je definován ANSI X3.41 (ekvivalent ECMA-35 nebo ISO / IEC 2022). The ESC
(27 / hex 0x1B / okt 033) následuje nula nebo více meziproduktů "Já"bajty mezi hex 0x20 a 0x2F včetně, následované finální"F"bajt mezi 0x30 a 0x7E včetně.[20]:13.1
Některé řídicí funkce navíc přijímají další data parametrů po samotné sekvenci ESC, tj. Po F bajt sekvence ESC. Konkrétně sekvence ESC pro CSI (0x1B 0x5B
nebo ESC [
) sám o sobě následuje posloupnost parametrů a mezibajtů, za nimiž následuje finální bajt mezi 0x40 a 0x7E; celá sekvence včetně sekvence ESC pro CSI a následné bajty parametrů a identifikátorů se podle ECMA-48 (ANSI X3.64 / ISO 6429) nazývá „kontrolní sekvence“.[5]:5.4 Navíc, ESC sekvence pro DCS, SOS, OSC, ODPOLEDNE a APC následuje sekvence parametrů s proměnnou délkou ukončená SVATÝ; toto je známé jako "kontrolní řetězec".[5]:5.6
ANSI X3.41 / ECMA-35 rozděluje únikové sekvence do několika širokých kategorií:[20]:13.2
- Únikové sekvence bez č Já bajty a a F bajt mezi 0x40 a 0x5F včetně, jsou kategorizovány jako „typ
Fe
"sekvence a delegovány na příslušné Řídicí kód C1 Standard.[20]:13.2.1 Všechny únikové sekvence odpovídající řídicím kódům C1 z ANSI X3.64 / ECMA-48 se tedy řídí tímto formátem.[5]:5.3.a - Únikové sekvence bez č Já bajty a a F bajt mezi 0x60 a 0x7E včetně, jsou kategorizovány jako „typ
Fs
"sekvence a používá se pro řídicí funkce jednotlivě registrované u ISO-IR registru a následně k dispozici i v kontextech, kde se používá odlišná sada řídicích kódů C1. Konkrétně odpovídají jednotlivým řídicím funkcím schváleným ISO / IEC JTC 1 / SC 2 a standardizováno ISO nebo subjektem uznaným ISO.[20]:6.5.1 Některé z nich jsou uvedeny v ECMA-35 (ISO 2022 / ANSI X3.41), jiné v ECMA-48 (ISO 6429 / ANSI X3.64).[20]:6.5.4 ECMA-48 je označuje jako „nezávislé řídicí funkce“.[5]:5.5 - Únikové sekvence bez č Já bajty a a F byte mezi 0x30 a 0x3F včetně, jsou kategorizovány jako „typ
Fp
"sekvence a oddělené pro kontrolní funkce pro soukromé použití.[20]:6.5.3 - Únikové sekvence s jedním nebo více Já bajty jsou kategorizovány jako „typ
nF
"sekvence. Jsou dále podkategorizovány nízkými čtyřmi bity prvního Já byte, např. "typ2F
"pro sekvence, kde první Já byte je0x22
, a tím, zda F byte je v rozsahu soukromého použití od 0x30 do 0x3F včetně (např. "typ2Fp
„) nebo ne (např.„ typ “2 Ft
").[20]:13.2.1 Většinou se používají pro mechanismy přepínání kódu ANSI / ISO, jako jsou ty, které používá ISO-2022-JP, kromě typu3F
sekvence (ty, kde je první mezibajt0x23
), které se používají pro jednotlivé ovládací funkce. Typ3 Ft
sekvence jsou vyhrazeny pro další jednotlivé řídicí funkce registrované podle ISO-IR,[20]:6.5.2 zatímco typ3Fp
sekvence jsou k dispozici pro kontrolní funkce pro soukromé použití.[20]:6.5.3
Standard říká, že v 8bitových prostředích řídicí funkce odpovídají typu Fe
únikové sekvence (ty ze sady Řídicí kódy C1 ) mohou být reprezentovány jako jednotlivé bajty v rozsahu 0x80–0x9F.[5]:5.3.b Na moderních zařízeních se však tyto kódy často používají pro jiné účely, například pro součásti UTF-8 nebo pro CP-1252 znaků, takže se obvykle používá pouze dvoubajtová sekvence. (V případě kódování UTF-8 a dalších kódování Unicode lze C1 kódovat jako jejich kódové body Unicode [např. xC2 x8E
pro U + 008E
], ale tímto způsobem není uloženo žádné místo.)
Jiné kódy C0 kromě ESC - obvykle BEL, BS, CR, LF, FF, TAB, VT, SO a SI - produkují podobné nebo stejné efekty jako některé řídicí sekvence při výstupu.
Sekvence | C1 | Krátký | název | Účinek |
---|---|---|---|---|
ESC N | 0x8E | SS2 | Single Shift Two | Vyberte jeden znak z jednoho z alternativní znakové sady. SS2 vybere znakovou sadu G2 a SS3 vybere znakovou sadu G3.[21] V 7bitovém prostředí následuje jeden nebo více GL bajtů (0x20–0x7F) specifikujících znak z této sady.[20]:9.4 V 8bitovém prostředí to mohou být GR bajty (0xA0–0xFF).[20]:8.4 |
ESC O | 0x8F | SS3 | Single Shift tři | |
ESC P | 0x90 | DCS | Řetězec ovládání zařízení | Ukončeno ST. Použití této sekvence společností Xterm zahrnuje definování uživatelem definovaných klíčů a vyžádání nebo nastavení dat Termcap / Terminfo.[21] |
ESC [ | 0x9B | CSI | Zavaděč kontrolní sekvence | Většina užitečných sekvencí, viz další část. |
ESC | 0x9C | SVATÝ | Řetězcový terminátor | Ukončí řetězce v jiných ovládacích prvcích.[5]:8.3.143 |
ESC] | 0x9D | OSC | Příkaz operačního systému | Spustí řídicí řetězec pro operační systém, který se má použít, ukončený ST.[5]:8.3.89 V xterm mohou být také ukončeny BEL.[21] Například xterm umožňuje nastavit název okna x1b] 0; toto je název okna x07 .Non-xterm extension is a hyperlink, OSC 8 from 2017, used by VTE and iTerm2.[22][23][diskutovat] |
ESC X | 0x98 | SOS | Začátek řetězce | Přijme argument řetězce textu ukončeného ST. Použití těchto řetězcových kontrolních sekvencí je definováno aplikací[5]:8.3.2,8.3.128 nebo kázeň na ochranu soukromí.[5]:8.3.94 Tyto funkce jsou implementovány jen zřídka a argumenty jsou pomocí xterm ignorovány.[21] |
ESC ^ | 0x9E | ODPOLEDNE | Zpráva o ochraně osobních údajů | |
ESC _ | 0x9F | APC | Příkaz aplikačního programu |
Sekvence | Krátký | název | Účinek |
---|---|---|---|
ESC c | RIS | Obnovit výchozí stav | Spustí úplné resetování terminálu do původního stavu.[21] To může zahrnovat (je-li to relevantní): resetování grafického ztvárnění, vymazání zarážek tabulky, resetování výchozího písma a další.[24] |
Sekvence | Krátký | název | Účinek |
---|---|---|---|
ESC SP F | ACS6 S7C1T | Oznámte strukturu kódu 6 Odešlete 7bitový řídicí znak C1 hostiteli | Definováno v ECMA-35 (ANSI X3.41 / ISO 2022).[20]:15.2 Nastaví, aby funkční klávesy odesílaly místo kódů C1 písmeno ESC +.[21] |
ESC SP G | ACS7 S8C1T | Oznámte strukturu kódu 7 Zašlete hostiteli 8bitový řídicí znak C1 | Definováno v ECMA-35.[20]:15.2 Nastaví funkční klávesy na odesílání kódů C1.[21] |
Sekvence | Krátký | název | Účinek |
---|---|---|---|
ESC 7 | DECSC | DEC Uložit kurzor | Uloží pozici kurzoru, kódování stavu posunu a atributy formátování.[25][21] |
ESC 8 | DECRC | DEC Obnovit kurzor | Obnoví pozici kurzoru, kóduje stav posunu a formátuje atributy z předchozího DECSC, pokud existují, jinak resetuje všechny na výchozí hodnoty.[26][21] |
ESC # 3 | DECDHL | DEC dopisy s dvojnásobnou výškou, horní polovina | Nastaví, aby aktuální řádek používal znaky dvakrát tak vysoké. Tento kód je pro horní polovinu.[27] |
ESC # 4 | DECDHL | DEC písmena s dvojitou výškou, spodní polovina | Nastaví, aby aktuální řádek používal znaky dvakrát tak vysoké. Tento kód je pro spodní polovinu.[28] |
ESC # 5 | DECSWL | DEC Single-Width Line | Nastaví, aby aktuální řádek používal znaky o jedné šířce podle výchozího chování.[29][21] |
ESC # 6 | DECDWL | DEC Double-Width Line | Nastaví, aby aktuální řádek používal znaky s dvojnásobnou šířkou, zahodí všechny znaky ve druhé polovině řádku.[30][21] |
Stisknutím speciálních kláves na klávesnici a také výstupem mnoha xterm CSI, DCS nebo OSC sekvencí se často vytvoří sekvence CSI, DCS nebo OSC odeslané z terminálu do počítače, jako by to uživatel zadal.
CSI sekvence
U příkazů CSI nebo "Control Sequence Introducer" se používá ESC [
následuje libovolný počet (včetně žádného) „bajtů parametrů“ v rozsahu 0x30–0x3F (ASCII 0–9:;<=>?
), pak libovolným počtem „mezibajtů“ v rozsahu 0x20–0x2F (ASCII prostor a !"#$%&'()*+,-./
), pak nakonec o jediný „finální bajt“ v rozsahu 0x40–0x7E (ASCII @ A – Z [] ^ _ `a – z {|} ~
).[5]:5.4
Všechny běžné sekvence pouze používají parametry jako řadu čísel oddělených středníkem, například 1;2;3
. S chybějícími čísly se zachází jako s 0
(1;;3
působí jako prostřední číslo 0
a vůbec žádné parametry v ESC [m
chová se jako 0
resetovat kód). Některé sekvence (například CUU) zacházejí 0
tak jako 1
aby byly chybějící parametry užitečné.[5]:F.4.2
Podskupina ujednání byla prohlášena za „soukromou“, aby výrobci terminálů mohli vkládat své vlastní sekvence bez konfliktu s normou. Sekvence obsahující bajty parametrů <=>?
nebo konečné bajty 0x70–0x7E (p – z {|} ~
) jsou soukromé.
Chování terminálu není definováno v případě, že sekvence CSI obsahuje jakýkoli znak mimo rozsah 0x20–0x7E. Tyto nelegální znaky jsou buď řídicí znaky C0 (rozsah 0–0x1F), DEL (0x7F), nebo bajty se sadou vysokých bitů. Možnými odpověďmi jsou ignorování bajtu, jeho okamžité zpracování a dále to, zda má pokračovat v sekvenci CSI, okamžitě jej přerušit nebo zbytek ignorovat.[Citace je zapotřebí ]
Sekvence výstupů terminálu
Kód | Krátký | název | Účinek |
---|---|---|---|
CSI n A | CUU | Kurzor nahoru | Přesune kurzor n (výchozí 1 ) buňky v daném směru. Pokud je kurzor již na okraji obrazovky, nemá to žádný účinek. |
CSI n B | CUD | Kurzor dolů | |
CSI n C | CUF | Kurzor vpřed | |
CSI n D | MLÁDĚ | Kurzor Zpět | |
CSI n E | CNL | Další řádek kurzoru | Přesune kurzor na začátek řádku n (výchozí 1 ) řádky dolů. (ne ANSI.SYS ) |
CSI n F | CPL | Kurzor Předchozí řádek | Přesune kurzor na začátek řádku n (výchozí 1 ) seřadí. (ne ANSI.SYS ) |
CSI n G | CHA | Horizontální absolutní kurzor | Přesune kurzor na sloupec n (výchozí 1 ). (ne ANSI.SYS ) |
CSIn ; m H | POHÁR | Pozice kurzoru | Přesune kurzor na řádek nsloupec m. Hodnoty jsou založeny na 1 a jsou výchozí 1 (levý horní roh), pokud je vynechán. Sekvence jako např CSI; 5H je synonymem pro CSI 1; 5H stejně jako CSI 17; H je stejné jako CSI 17H a CSI 17; 1H |
CSI n J | ED | Vymazat na displeji | Vymaže část obrazovky. Li n je 0 (nebo chybí), vymažte od kurzoru po konec obrazovky. Li n je 1 , vymažte od kurzoru po začátek obrazovky. Li n je 2 , vymaže celou obrazovku (a v systému DOS přesune kurzor vlevo nahoře ANSI.SYS ). Li n je 3 , vymazat celou obrazovku a odstranit všechny řádky uložené ve vyrovnávací paměti pro posouvání (tato funkce byla přidána pro xterm a je podporován jinými aplikacemi terminálu). |
CSI n K. | EL | Vymazat v řadě | Vymaže část řádku. Li n je 0 (nebo chybí), vymažte od kurzoru na konec řádku. Li n je 1 , zrušte kurzor na začátek řádku. Li n je 2 , vyčistit celý řádek. Pozice kurzoru se nemění. |
CSI n S | SU | Posunout nahoru | Posunout celou stránku nahoru o n (výchozí 1 ) řádky. Dole jsou přidány nové řádky. (ne ANSI.SYS ) |
CSI n T | SD | Posunout dolů | Rolovat celou stránku dolů o n (výchozí 1 ) řádky. V horní části jsou přidány nové řádky. (ne ANSI.SYS ) |
CSI n ; m F | HVP | Horizontální vertikální poloha | Stejné jako CUP, ale počítá se jako funkce efektoru formátu (jako ČR nebo LF ) spíše než funkce editoru (jako CUD nebo CNL). To může vést k odlišnému zacházení v určitých režimech terminálu.[5]:Příloha A |
CSI n m | SGR | Vyberte Graphic Rendition | Nastaví vzhled následujících znaků, viz Parametry SGR níže. |
CSI 5i | AUX port zapnutý | Povolte sériový port aux obvykle pro místní sériovou tiskárnu | |
CSI 4i | Port AUX vypnutý | Deaktivujte sériový port aux obvykle pro místní sériovou tiskárnu | |
CSI 6n | DSR | Zpráva o stavu zařízení | Ohlásí pozici kurzoru (CPR) aplikaci jako (jako by byla napsána na klávesnici) ESC [n; mR , kde n je řádek a m je sloupec.) |
Kód | Účinek |
---|---|
CSI s | SCP / SCOSC: Uložení aktuální pozice kurzoru. Uloží pozici / stav kurzoru v režimu konzoly SCO.[31] Ve vertikálním režimu rozdělené obrazovky se místo toho používá k nastavení (jako CSI n ; n s ) nebo resetujte levý a pravý okraj.[32] |
CSI u | RCP / SCORC: Obnovení uložené pozice kurzoru. Obnoví pozici / stav kurzoru v režimu konzoly SCO.[33] |
CSI? 25 h | DECTCEM Zobrazí kurzor z VT320. |
CSI? 25 l | DECTCEM Skryje kurzor. |
CSI? 1049 h | Povolit alternativní vyrovnávací paměť obrazovky |
CSI? 1049 l | Zakázat alternativní vyrovnávací paměť obrazovky |
CSI? 2004 h | Zapněte režim vkládání závorek. Text vložený do terminálu bude obklopen ESC [200 ~ a ESC [201 ~ , a znaky v něm by neměly být považovány za příkazy (například ve Vim).[34] Z terminálových emulátorů Unixu. |
CSI? 2004 l | Vypněte režim vkládání závorek. |
Parametry SGR
SGR (Select Graphic Rendition) nastavuje atributy zobrazení. Lze nastavit několik atributů ve stejné posloupnosti oddělených středníky.[35] Každý atribut zobrazení zůstává v platnosti, dokud jej nevynuluje následující výskyt SGR.[5] Pokud nejsou uvedeny žádné kódy, CSI m
je považováno za CSI 0 m
(reset / normální).
V ECMA-48 se SGR nazývá „Select Graphic Rendition“.[5]:8.3.117 Na manuálových stránkách Linuxu je použit termín „Set Graphics Rendition“.[35]
Kód | Účinek | Poznámka |
---|---|---|
0 | Reset / Normální | Všechny atributy vypnuty |
1 | Tučné nebo zvýšené intenzity | Stejně jako u slabých je změna barvy PC (SCO / CGA ) vynález.[36][je zapotřebí lepší zdroj ] |
2 | Slabá nebo snížená intenzita | aka Dim (s nasycenou barvou). Může být implementováno jako světlo váha písma jako tučné.[37] |
3 | Kurzíva | Není široce podporováno. Někdy se považuje za inverzní nebo blikající.[36] |
4 | Zdůraznit | Rozšíření stylu existují pro Kitty, VTE, mintty a iTerm2.[38][39] |
5 | Pomalé blikání | méně než 150 za minutu |
6 | Rychlé blikání | MS-DOS ANSI.SYS, 150+ za minutu; není široce podporován |
7 | Zpětné video | zaměnit barvy popředí a pozadí, aka invert; nekonzistentní emulace[40] |
8 | Skrývat | aka Skrýt, není široce podporován. |
9 | Přeškrtnutý | aka Strike, znaky čitelné, ale označené jako ke smazání. |
10 | Primární (výchozí) písmo | |
11–19 | Alternativní písmo | Vyberte alternativní písmo n − 10 |
20 | Fraktur | Zřídka podporováno |
21 | Zdvojnásobeno nebo Odvážně | Dvojité podtržení podle ECMA-48.[5]:8.3.117 Vidět diskuse |
22 | Normální barva nebo intenzita | Ani odvážný, ani slabý |
23 | Ne kurzíva, ne fraktur | |
24 | Podtrženo vypnuto | Není jednotlivě ani dvojnásobně podtrženo |
25 | Mrknutí vypnuto | |
26 | Proporcionální rozteč | ITU T.61 a T.416, o nichž není známo, že se používají na terminálech |
27 | Zpětný chod / zpětný chod vypnutý | |
28 | Odhalit | skrýt |
29 | Není přeškrtnuto | |
30–37 | Nastavit barvu popředí | Viz tabulka barev níže |
38 | Nastavit barvu popředí | Další argumenty jsou 5; n nebo 2; r; g; b , viz. níže |
39 | Výchozí barva popředí | implementace definována (podle standardu) |
40–47 | Nastavit barvu pozadí | Viz tabulka barev níže |
48 | Nastavit barvu pozadí | Další argumenty jsou 5; n nebo 2; r; g; b , viz. níže |
49 | Výchozí barva pozadí | implementace definována (podle standardu) |
50 | Zakázat proporcionální mezery | T.61 a T.416 |
51 | Zarámovaný | Implementováno jako „selektor variace emodži "v mincovně.[41] |
52 | Obklopen | |
53 | Podtrženo | |
54 | Není zarámovaný ani obklopený | |
55 | Není podtrženo | |
58 | Nastavit barvu podtržení | Kitty, VTE, mintty a iTerm2. (není standardně)[38][39] Další argumenty jsou 5; n nebo 2; r; g; b , viz. níže |
59 | Výchozí barva podtržení | Kitty, VTE, mintty a iTerm2. (není standardně)[38][39] |
60 | ideogram podtržení nebo pravá boční čára | Zřídka podporováno |
61 | ideogram dvojité podtržení nebo dvojitá čára na pravé straně | |
62 | nadpis ideogramu nebo levý postranní řádek | |
63 | ideogram double overline nebo dvojitá čára na levé straně | |
64 | ideogramové značení stresu | |
65 | atributy ideogramu vypnuty | resetovat účinky všech 60 –64 |
73 | horní index | mincovna (není ve standardu)[41] |
74 | dolní index | |
90–97 | Nastavit jasnou barvu popředí | aixterm (není standardem) |
100–107 | Nastavit barvu světlého pozadí |
Barvy
3bitové a 4bitové
Původní specifikace měla pouze 8 barev a pouze jim dala jména. Parametry SGR 30–37 vybraly barvu popředí, zatímco 40–47 vybralo pozadí. Poměrně málo terminálů implementovalo "tučné" (kód SGR 1) jako jasnější barvu než jiné písmo, což poskytuje 8 dalších barev popředí. Obvykle jste je nemohli získat jako barvy pozadí, i když to někdy umožňovalo inverzní video (kód SGR 7). Příklady: použití černých písmen na bílém pozadí použijte ESC [30; 47 m
, abyste mohli používat červeně ESC [31 m
, abyste získali jasně červenou barvu ESC [1; 31 m
. Chcete-li obnovit výchozí hodnoty barev, použijte ESC [39; 49 m
(není podporováno na některých terminálech), nebo resetujte všechny atributy pomocí ESC [0 m
. Pozdější terminály přidaly možnost přímo specifikovat „světlé“ barvy s 90–97 a 100–107.
Když hardware začal používat 8-bit digitálně-analogové převaděče (DAC) několik kusů softwaru přiřadilo těmto jménům 24bitová barevná čísla. Níže uvedená tabulka ukazuje hodnoty odeslané do DAC pro některý běžný hardware a software.[Citace je zapotřebí ]
název | FG kód | BG kód | VGA[pozn. 2] | Windows Console[pozn. 3] | Windows PowerShell[pozn. 4] | Kód sady Visual Studio Debug Console (Výchozí tmavý + motiv) | Windows 10 Console[pozn. 5] PowerShell 6 | Terminal.app | Tmel | mIRC | xterm | Ubuntu[pozn. 6] |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Černá | 30 | 40 | 0,0,0 | 12,12,12 | 0,0,0 | 1,1,1 | ||||||
Červené | 31 | 41 | 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 | |
Zelená | 32 | 42 | 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 | |
Žlutá | 33 | 43 | 170,85,0[pozn. 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 |
Modrý | 34 | 44 | 0,0,170 | 0,0,128 | 36, 114, 200 | 0,55,218 | 73,46,225 | 0,0,187 | 0,0,127 | 0,0,238[42] | 0,111,184 | |
Purpurová | 35 | 45 | 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 |
Tyrkysová | 36 | 46 | 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 | |
Bílý | 37 | 47 | 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 | |
Zářivě černá (šedá) | 90 | 100 | 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 | |
Jasně červená | 91 | 101 | 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 | |
Světle zelená | 92 | 102 | 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 | |
Světle žlutá | 93 | 103 | 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 | |
Zářivě modrá | 94 | 104 | 85,85,255 | 0,0,255 | 59, 142, 234 | 59,120,255 | 88,51,255 | 85,85,255 | 0,0,252 | 92,92,255[43] | 0,0,255 | |
Jasně purpurová | 95 | 105 | 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 | |
Jasně azurová | 96 | 106 | 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 | |
Zářivě bíla | 97 | 107 | 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 |
8-bit
Tak jako 256 barev vyhledávací tabulky se staly běžnými na grafických kartách, byly přidány řídicí sekvence pro výběr z předdefinované sady 256 barev:[Citace je zapotřebí ]
ESC [38; 5; ⟨n⟩ m Vyberte barvu popředíESC [48; 5; ⟨n⟩ m Vyberte barvu pozadí 0-7: standardní barvy (jako v ESC [30–37 m) 8-15: barvy s vysokou intenzitou (jako v ESC [90–97 m) 16–231: kostka 6 × 6 × 6 (216 barev): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5) 232–255: stupně šedi od černé po bílou ve 24 krocích
The ITU Informační technologie T.416 - Open Document Architecture (ODA) a formát výměny: Architektury obsahu znaků[44] místo nich používá ':' jako oddělovací znaky:
ESC [38: 5: ⟩n⟩ m Vyberte barvu popředí ES [48: 5: ⟨n⟩ m Vyberte barvu pozadí
256barevný režim - popředí: ESC [38; 5; #m pozadí: ESC [48; 5; #m | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Standardní barvy | Vysoce intenzivní barvy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
216 barev | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | ||||||||||||||||||||||||
Barvy ve stupních šedi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
24-bit
Jelikož se běžné grafické karty „se skutečnými barvami“ se 16 až 24 bitovými barvami staly běžnými, Xterm,[21] KDE Konsole,[45] iTerm, stejně jako všechny terminály založené na libvte[46] (počítaje v to Terminál GNOME ) podporuje 24bitové nastavení barvy popředí a pozadí.[je zapotřebí lepší zdroj ][47]
ESC [38; 2; ⟨r⟩; ⟨g⟩; ⟨b⟩ m Vyberte barvu popředí RGBESC [48; 2; ⟨r⟩; ⟨g⟩; ⟨b⟩ m Vyberte barvu pozadí RGB
The ITU Informační technologie T.416 - Open Document Architecture (ODA) a formát výměny: Architektury obsahu znaků[44] který byl přijat jako mezinárodní norma ISO / IEC 8613-6, poskytuje alternativní verzi, která se zdá být méně podporována.[pochybný ] Parametry za '2', tj. Dokonce i r, g, b jsou volitelné. Všimněte si, že se nejedná pouze o výše uvedenou sekvenci se středníkem nahrazeným dvojtečkou, je zde i přední „ID barevného prostoru“ (tato skutečnost chyběla mnoha terminálovým emulátorům, zdá se, že toto vynechání pochází od KDE Konsole).[21] Definice ID barevného prostoru není v tomto dokumentu zahrnuta, takže může být prázdné, aby představovalo nespecifikovanou výchozí hodnotu. Kromě hodnoty „2“ k určení červeno-zeleno-modrého formátu (a výše uvedené „5“ pro indexovanou barvu 0-255) existují alternativy „0“ pro definovanou implementaci a „1“ pro transparentní - ani jaké mají další parametry; '3' specifikuje barvy pomocí schématu Cyan-Magenta-Yellow a '4' pro Cyan-Magenta-Yellow-Black, kde druhá používá pozici označenou jako "unused" pro Black komponentu:[Citace je zapotřebí ]
ESC [38: 2: ⟨Color-Space-ID⟩: ⟨r⟩: ⟨g⟩: ⟨b⟩: ⟨unused⟩: ⟨Tolerance CS ⟩: ⟨Barevný prostor spojený s tolerancí: 0 pro „CIELUV“; 1 pro „CIELAB“⟩; m Vyberte barvu popředí RGBESC [48: 2: ⟨Color-Space-ID⟩: ⟨r⟩: ⟨g⟩: ⟨b⟩: ⟨unused⟩: ⟨CS tolerance⟩: ⟨Color-Space associated with tolerance: 0 for “ CIELUV "; 1 pro „CIELAB“⟩; m Vyberte barvu pozadí RGB
Příklady
CSI 2 J
- Toto vymaže obrazovku a na některých zařízeních najde kurzor na pozici y, x 1,1 (levý horní roh).
CSI 32 m
- Tím je text zelený. Zelená může být tmavá, matně zelená, takže můžete chtít povolit tučné se sekvencí CSI 1 m
díky čemuž by byl jasně zelený nebo kombinovaný jako CSI 32; 1 m
. Některé implementace používají stav Bold k tomu, aby byla postava Bright.
CSI 0; 6 8; „DIR“; 13 str
- Tím se znovu přiřadí klávesa F10, která odešle do vyrovnávací paměti klávesnice řetězec „DIR“ a ENTER, které by v příkazovém řádku systému DOS zobrazovaly obsah aktuálního adresáře. (Pouze MS-DOS ANSI.SYS) Toto bylo někdy používáno pro ANSI bomby. Toto je kód pro soukromé použití (jak je označeno písmenem p), který používá nestandardní rozšíření k zahrnutí parametru s hodnotou řetězce. Dodržování písmene normy by mělo za to, že sekvence končí písmenem D.
CSI s
- Tím se uloží pozice kurzoru. Použití sekvence CSI u
obnoví ji do polohy. Řekněme, že aktuální pozice kurzoru je 7 (y) a 10 (x). Sekvence CSI s
uloží tato dvě čísla. Nyní můžete pomocí sekvence přejít na jinou pozici kurzoru, například 20 (y) a 3 (x) CSI 20; 3 H
nebo CSI 20; 3 f
. Nyní, pokud použijete sekvenci CSI u, pozice kurzoru se vrátí na 7 (y) a 10 (x). Některé terminály vyžadují sekvence DEC ESC 7
/ ESC 8
místo toho je více podporována.
Příklad použití ve skriptování prostředí
Únikové kódy ANSI se často používají v UNIX a podobné UNIXu terminály poskytnout zvýraznění syntaxe. Například na kompatibilních terminálech následující seznam příkaz barevných kódů názvy souborů a adresářů podle typu.
ls - barva
Uživatelé mohou ve svých skriptech použít únikové kódy tak, že je zahrnou jako součást standardní výstup nebo standardní chyba. Například následující GNU sed příkaz zkrášluje výstup souboru udělat příkaz zobrazením řádků obsahujících slova začínající na "VAROVAT" ve Windows zpětné video a slova začínající na „ERR“ v jasně žluté barvě na tmavě červeném pozadí (velká a malá písmena je ignorován). Reprezentace kódů jsou zvýrazněny.[48]
udělat 2> & 1 | sed -e je /.* bVAROVAT. * / x1b [7 m& x1b [0 m/ i-e / / * bERR. * / x1b [93; 41 mil& x1b [0 m/ já
Následující Bash funkce bliká na terminálu (střídavým odesíláním kódů režimu zpětného a normálního videa), dokud uživatel nestiskne klávesu.[49]
flasher () {while true; tisknout e [? 5h; spát 0,1; printf e [? 5l; read -s -n1 -t1 && break; Hotovo; }
To lze použít k upozornění programátora na ukončení dlouhého příkazu, například s udělat ; blikač
.[50]
printf 033c
Tím se konzole resetuje podobně jako příkaz resetovat
na moderních systémech Linux; měl by však fungovat i na starších systémech Linux a na jiných (ne-Linuxových) variantách UNIX.
Příklad použití v C.

1#zahrnout <stdio.h> 2 3int hlavní(prázdnota) 4{ 5 int i, j, n; 6 7 pro (i = 0; i < 11; i++) { 8 pro (j = 0; j < 10; j++) { 9 n = 10*i + j;10 -li (n > 108) přestávka;11 printf("\033[% dm% 3d\033[m ", n, n);12 }13 printf(" n");14 }15 vrátit se (0);16}
Sekvence vstupu terminálu
Při zadávání vstupu na terminálu lze klávesnici stisknout mimo normální hlavní alfanumerickou oblast klávesnice jako sekvence ANSI. U kláves, které mají ekvivalentní výstupní funkci, jako jsou například kurzorové klávesy, tyto často zrcadlí výstupní sekvence. Pro většinu stisknutí kláves však neexistuje ekvivalentní výstupní sekvence, která by se měla použít.
Existuje několik schémat kódování a bohužel většina terminálů kombinuje sekvence z různých schémat, takže hostitelský software musí být schopen vypořádat se vstupními sekvencemi pomocí libovolného schématu. Aby to bylo ještě komplikovanější, samotné terminály VT mají dvě schémata vstupu, normální mód a aplikační režim které lze přepnout aplikací.
(část konceptu)
-> char -> esc -> esc -> Alt-keypress nebo keycode sekvence '[' -> Alt - [ '[' ( ) (';' ) '~' -> sekvence keycode, výchozí 1
Pokud je koncový znak '~', musí být první číslo přítomno a je to číslo akeycode, druhé číslo je volitelná hodnota modifikátoru. Pokud je ukončujícím znakem písmeno, je písmeno hodnotou keycode a volitelným číslem je hodnota modifikátoru.
Výchozí hodnota modifikátoru je 1 a po odečtení 1 je bitmapa stisknutých modifikačních kláves: Meta-Ctrl-Alt-Shift. Například například
VT sekvence:[1 ~ - Domů [16 ~ - [31 ~ - F17 [2 ~ - Vložit [17 ~ - F6 [32 ~ - F18 [3 ~ - Smazat [18 ~ - F7 [33 ~ - F19 [4 ~ - Konec [19 ~ - F8 [34 ~ - F20 [5 ~ - PgUp [20 ~ - F9 [35 ~ - [6 ~ - PgDn [21 ~ - F10 [7 ~ - Domů [22 ~ - [8 ~ - Konec [23 ~ - F11 [9 ~ - [24 ~ - F12 [10 ~ - F0 [25 ~ - F13 < esc> [11 ~ - F1 [26 ~ - F14 [12 ~ - F2 [27 ~ - [13 ~ - F3 [28 ~ - F15 [ 14 ~ - F4 [29 ~ - F16 [15 ~ - F5 [30 ~ - dlouhodobé sekvence: [A - nahoru [K - [U - < esc> [B - dolů [L - [V - [C - vpravo [M - [W - [D - vlevo [N - [X - [E - [O - [Y - [F - konec [1P - F1 [Z - [G - klávesnice 5 [1Q - F2 [H - Domů [1R - F3 [I - [1S - F4 [J - [T -
Xterm has a comprehensive documentation page on the various function-key and mouse input sequence schemes from DEC's VT terminals and various other terminals it emulates.[21] Thomas Dickey has added a lot of support to it over time;[51] he also maintains a list of default keys used by other terminal emulators for comparison.[52]
Invalid and ambiguous sequences in use
- The Linux console uses
OSC P n rr gg bb
to change the palette, which, if hard-coded into an application, may hang other terminals.[53] However, appendingSVATÝ
will be ignored by Linux and form a proper, ignorable sequence for other terminals.[Citace je zapotřebí ] - On the Linux console, certain function keys generate sequences of the form
CSI [ char
. The CSI sequence should terminate on the[
. - Old versions of Terminátor generovat
SS3 1; modifikátory char
when F1–F4 are pressed with modifiers. The faulty behavior was copied from Terminál GNOME.[Citace je zapotřebí ] - xterm replies
CSI řádek ; sloupec R
if asked for cursor position andCSI 1 ; modifikátory R
if the F3 key is pressed with modifiers, which collide in the case of řádek == 1. This can be avoided by using the ? private modifier asCSI ? 6 n
, which will be reflected in the response asCSI ? řádek ; sloupec R
. - many terminals prepend
ESC
to any character that is typed with the alt key down. This creates ambiguity for uppercase letters and symbols@[\]^_
, which would form C1 codes.[je zapotřebí objasnění ] - Konsole generuje
SS3 modifikátory char
when F1–F4 are pressed with modifiers.[je zapotřebí objasnění ]
Viz také
- ANSI umění
- Kontrolní znak
- Advanced Video Attribute Terminal Assembler and Recreator (AVATAR)
- ISO / IEC JTC 1 / SC 2
- Řídicí kódy C0 a C1
Poznámky
- ^ The screen display could be replaced by drawing the entire new screen's contents at the bottom, scrolling the previous screen up sufficiently to erase all the old text. The user would see the scrolling, and the hardware kurzor would be left at the very bottom. Někteří brzy dávkové soubory achieved rudimentary "full screen" displays in this way.
- ^ Typical colors that are used when booting PCs and leaving them in text mode, which used a 16-entry color table. The colors are different in the EGA/VGA graphic modes.
- ^ As of Windows XP
- ^ Until PowerShell 6
- ^ Campbell theme.
Used as of Windows 10 1709 - ^ For virtual terminals, from /etc/vtrgb.
- ^ On terminals based on CGA compatible hardware, such as ANSI.SYS running on DOS, this normal intensity foreground color is rendered as Orange. CGA RGBI monitors contained hardware to modify the dark yellow color to an orange/brown color by reducing the green component. Viz ansi umění Archivováno 25. července 2011 v Wayback Machine jako příklad.
Reference
- ^ A b "Standard ECMA-48: Control Functions for Character-Imaging I/O Devices" (PDF) (Druhé vydání.). Ecma International. August 1979. Brief History.
- ^ Williams, Paul (2006). "Digital's Video Terminals". VT100.net. Citováno 17. srpna 2011.
- ^ Heathkit Company (1979). "Heathkit Catalog 1979". Heathkit Company. Archivovány od originál dne 13. ledna 2012. Citováno 4. listopadu 2011.
- ^ „Stažené FIPS seřazené podle čísla“ (PDF). Národní institut pro standardy a technologie. 15. prosince 2016.
- ^ A b C d E F G h i j k l m n Ó p "Standard ECMA-48: Control Functions for Coded Character Sets" (PDF) (Páté vydání.). Ecma International. Červen 1991.
- ^ Mefford, Michael (7 February 1989). "ANSI.com: Download It Here". PC Magazine. Citováno 10. srpna 2011.
- ^ Kegel, Dan; Auer, Eric (28 February 1999). "Nansi and NNansi – ANSI Drivers for MS-DOS". Dan Kegel's Web Hostel. Citováno 10. srpna 2011.
- ^ „Uživatelská příručka k systému PTS-DOS 2000 Pro“ (PDF). Buggingen, Německo: Paragon Technology GmbH. 1999. Archivováno (PDF) z původního dne 12. května 2018. Citováno 12. května 2018.
- ^ Günther, Jens; Ernst, Tobias (25 April 2004) [1996]. Ellsässer, Wolfgang (ed.). "Inoffizielle deutschsprachige PTS-DOS-FAQ (PTS/FAQD)" [Inofficial German PTS-DOS FAQ] (in German). Citováno 2. října 2018.
- ^ Online dokumentace CCI Multiuser DOS 7.22 GOLD. Concurrent Controls, Inc. (CCI). 10 February 1997. HELP.HLP.
- ^ Hood, Jason (2005). "Process ANSI escape sequences for Windows console programs". Jason Hood's Home page. Citováno 9. května 2013.
- ^ "colorama 0.2.5". Index balíčků Pythonu. Citováno 17. srpna 2013.
- ^ bitcrazed. "Console Virtual Terminal Sequences - Windows Console". docs.microsoft.com. Citováno 30. května 2018.
- ^ "Windows 10 Creators Update: What's new in Bash/WSL & Windows Console". Comment by ulrichb and reply by Rick Turner.
- ^ Grehan, Oisin (4 February 2016). "Windows 10 TH2 (v1511) Console Host Enhancements". Archivovány od originál dne 9. února 2016. Citováno 10. února 2016.
- ^ "PowerShell Help: About Special Characters".
- ^ "Printer and terminal escape codes". Concise Atari ST 68000 Programming Guide. Archivováno z původního dne 20. září 2016. Citováno 22. června 2020.
- ^ "Amiga Printer Command Definitions". Komodor. Citováno 10. července 2013.
- ^ "Escape Sequence - OpenVMS Wiki".
- ^ A b C d E F G h i j k l m "Standard ECMA-35: Character Code Structure and Extension Techniques" (PDF) (Šesté vydání). Ecma International. 1994.
- ^ A b C d E F G h i j k l m n Moy, Edward; Gildea, Stephen; Dickey, Thomas (2019). "Xterm Control Sequences (ctlseqs)". Invisible Island.
- ^ "mintty/mintty: Control Sequences". GitHub.
- ^ Koblinger, Egmont. "Hyperlinks (a.k.a. HTML-like anchors) in terminal emulators". Seznamy GitHub.
- ^ ISO / TC 97 / SC 2 (30. prosince 1976). Reset to Initial State (RIS) (PDF). ITSCJ /IPSJ. ISO-IR -35.
- ^ Digitální. "DECSC—Save Cursor". VT510 Video Terminal Programmer Information.
- ^ Digitální. "DECSC—Save Cursor". VT510 Video Terminal Programmer Information.
- ^ ANSI Escape sequences - VT100 / VT52
- ^ ANSI Escape sequences - VT100 / VT52
- ^ Digitální. "DECSWL—Single-Width, Single-Height Line". VT510 Video Terminal Programmer Information.
- ^ Digitální. "DECDWL—Double-Width, Single-Height Line". VT510 Video Terminal Programmer Information.
- ^ "SCOSC—Save Current Cursor Position". VT510 Video Terminal Programmer Information. DEC.
- ^ "DECSLRM—Set Left and Right Margins". VT510 Video Terminal Programmer Information. DEC.
- ^ "SCORC—Restore Saved Cursor Position". VT510 Video Terminal Programmer Information. DEC.
- ^ Conrad Irwin (April 2013). "bracketed paste mode". cirw.in.
- ^ A b "console_codes(4) - Linux manual page". man7.org. Citováno 23. března 2018.
- ^ A b "screen(HW)". SCO OpenServer Release 5.0.7 Manual. 11. února 2003.
- ^ "Bug 791596 – Thoughts about faint (SGR 2)". bugzilla.gnome.org.
- ^ A b C "Curly and colored underlines (#6382) · Issues · George Nachman / iterm2". GitLab.
- ^ A b C "Extensions to the xterm protocol". kitty documentation. Citováno 1. července 2020.
- ^ "console-termio-realizer". jdebp.uk.
- ^ A b "mintty/mintty: Text attributes and rendering". GitHub.
- ^ Changed from 0,0,205 in July 2004 "Patch #192 – 2004/7/12 – XFree86 4.4.99.9".
- ^ Changed from 0,0,255 in July 2004 "Patch #192 – 2004/7/12 – XFree86 4.4.99.9".
- ^ A b "T.416 Information technology - Open Document Architecture (ODA) and interchange format: Character content architectures".
- ^ "color-spaces.pl (a copy of 256colors2.pl from xterm dated 1999-07-11)". KDE. 6. prosince 2006.[trvalý mrtvý odkaz ]
- ^ "libvte's bug report and patches: Support for 16 million colors". GNOME Bugzilla. 4. dubna 2014. Citováno 5. června 2016.
- ^ "README.moreColors". KDE. 22.dubna 2010.[trvalý mrtvý odkaz ]
- ^ "Chapter 9. System tips". debian.org.
- ^ "VT100.net: Digital VT100 User Guide". Citováno 19. ledna 2015.
- ^ "bash – How to get a notification when my commands are done – Ask Different". Citováno 19. ledna 2015.
- ^ Dickey, Thomas. "Xterm FAQ: Comparing versions, by counting controls". Invisible Island. Citováno 25. ledna 2020.
- ^ Dickey, Thomas (2016). "Table of function-keys for XTerm and other Terminal Emulators". Invisible Island. Citováno 25. ledna 2020.
- ^ "console_codes — Linux console escape and control sequences". Linux Programmer’s Manual.
externí odkazy
- Standard ECMA-48, Control Functions For Coded Character Sets. (5th edition, June 1991), European Computer Manufacturers Association, Geneva 1991 (also published by ISO and IEC as standard ISO/IEC 6429)
- vt100.net DEC Documents
- "ANSI.SYS -- ansi terminal emulation escape sequences". Archivovány od originál dne 6. února 2006. Citováno 22. února 2007.
- Xterm / Escape Sequences
- AIXterm / Escape Sequences
- A collection of escape sequences for terminals that are vaguely compliant with ECMA-48 and friends.
- ANSI Escape Sequences
- ITU-T Rec. T.416 (03/93) Information technology – Open Document Architecture (ODA) and interchange format: Character content architectures