Standard ANSI X3.64-1979 definuje tzv. escape sekvence (sekvence znaků začínající znakem escape). Tyto sekvence slouží k nastavování vlastností terminálu jakými jsou barvy textu a pozadí, nebo pozice kurzoru. Bez problémů by měli fungovat ve všech konzolích v Linuxu a MacOS a také v DOSu po nahrání ANSI.SYS. Bohužel cmd.exe z nových vydání operačního systému Windows tuto funkčnost nemá (jedinou možností je použít Windows API, které pokrývá některé funkce).
Escape sekvence jsou velmi dobrou lehkou alternativou ke knihovnám slang nebo ncurses, pokud nepotřebujete rozšířenou práci s klávesnicí a pouze potřebujete jednoduché TUI rozhraní.
Použití escape sekvencí je velice jednoduché. Prostě je vypíšeme s textem a terminál místo vypsání tuto sekvenci interpretuje a provede příslušnou akci.
Atributy textu
Celkem očekávaně je možné nastavovat barvu popředí a pozadí, nicméně můžeme nastavovat i klasické atributy textu. Bohužel prezentovaný výsledek se obvykle docela liší od očekávání (například bold je obvykle prezentován pouze světlejším odstínem).
Podporované barvy jsou: Černá (0), Červená (1), Zelená (2), Žlutá (3), Modrá (4), Fialová (5), Azurová (6) a Bílá (7). Číslo 9 reprezentuje defaultní barvu.
Pokud se barva používá jako barva popředí, přičte se k ní 30, pokud jako barva pozadí, přičte se k ní 40.
Možné atributy textu jsou: Světlý (1), Tmavý (2), Podtržený (4), Blikající (5), Inverzní (7) a Skrytý (8).
Escape sekvence pro atributy textu má 1-3 parametry, které můžou být díky jednoznačnému číslování (1-8 atributy, 30-37 barvy popředí, 40-47 barvy pozadí) v různém pořadí.
Veškerý text za \033[x;x;xm bude vypsán s uvedenými parametry. Do normálního režimu se pak dostaneme pomocí \033[0m.
Na přepínaní do normálního režimu nezapomínejte, atributy textu totiž přetrvávájí dokud nejsou zrušeny.
Mazání textu
\033[2J\033[1J\033[J\033[2K\033[1K\033[KPráce s kurzorem
U všech uvedených kódu je možné vynechat počet. Pak se bude kód chovat stejně jako když bychom uvedli počet 1.
\033[y;xH\033[H\033[xA\033[xB\033[xD\033[xC\033[s\033[u\0337\0338Použití v programech
Jak už bylo zmíněno na počátku, použití je velice jednoduché. Stačí vybranou escape sekvenci vypsat pomocí printf (nebo ekvivalentního příkazu) a o ostatní by se již měl postarat terminál.
Pokud ale budete programovat aplikaci, která bude tímto způsobem obohacovat výstup, nezapomeňte přidat přepínač, kterým toto chování půjde vypnout. Při uložení výstupu například do souboru se logicky žádná interpretace nekoná a text je uložen i s escape sekvencemi.
Knihovna
Aby jste měli práci jednodušší, připravil jsem malou knihovnu pro jazyk C.
Pro C++ si můžete stáhnout implementaci používající stream manipulátory.
| Příloha | Velikost |
|---|---|
| ColorTerminal.zip | 3.2 KB |
Authentic NFL jersey Shop
Aaron Rodgers Jersey
Clay Matthews Jersey
Brett Favre Jersey
Randy Moss Jersey
Brett Favre Jersey
Randy Moss Jersey
Deion Sanders Jersey
Tom Brady Jersey
Michael Vick Jersey
Troy Polamalu Jersey
Joe Montana Jersey