console_codes(4) Device Drivers Manual console_codes(4) NAZWA console_codes - kody konsolowe Linuksa oraz sekwencje specjalne OPIS Konsola Linuksa implementuje duzy podzbior kontrolek terminali VT102 oraz ECMA-48 / ISO/IEC 6429 / ANSI X3.64, plus okreslone sekwencje trybu prywatnego, dotyczace zmiany palety kolorow, mapowania zestawu znakow itp. W ponizszych, tabelarycznych opisach, druga kolumna podaje dla danej funkcji mnemoniki ECMA-48 lub DEC (te drugie sa poprzedzone ciagiem DEC). Sekwencje bez mnemonikow nie sa ani ECMA-48 ani VT102. Po przetworzeniu normalnego wyjscia, gdy strumien znakow dojdzie do sterownika konsoli, ktora ma go fizycznie wyswietlic, to pierwsza rzecza, ktora jest robiona, jest przetlumaczenie tego strumienia z jezyka przetwarzania na jezyk wyswietlania. Jesli konsola znajduje sie w trybie UTF-8, to nadchodzace bajty sa najpierw skladane w 16-bitowe kody Unicode. W przeciwnym wypadku, kazdy bajt jest przetwarzany zgodnie z biezacym mapowaniem (ktore go tlumaczy na wartosc Unicode). Dalsza dyskusja znajduje sie ponizej, w sekcji Zestawy znakow. W normalnym wypadku, wartosc Unicode jest konwertowana na indeks czcionki, ktory jest przechowywany w pamieci obrazu. Efektem uzycia tego indeksu jest pojawienie sie odpowiadajacego glifu (wizerunku znaku, znalezionego w nieulotnej pamieci obrazu) na ekranie. Nalezy zauwazyc, ze uzycie Unicode (i konstrukcja sprzetu PC) pozwala na jednoczesne uzywanie 512 roznych glifow. Jesli biezaca wartosc Unicode jest znakiem sterujacym lub jesli przetwarzana jest sekwencja specjalna, to wartosc ta jest traktowana w sposob specjalny. Zamiast zmieniania jej na indeks czcionki i interpretacji jako glif, moze ona wyzwolic ruchy kursora lub inne funkcje sterujace. Dalsza dyskusja znajduje sie ponizej, w sekcji Kontrolki konsoli systemu Linux. Ogolnie nie jest dobrym zwyczajem wkodowywanie do programow kodow terminala na sztywno. Linux obsluguje baze danych terminfo(5), ktora opisuje wlasciwosci terminali. Zamiast recznego wyprowadzania sekwencji kontrolnych konsoli, prawie zawsze wygodniej jest korzystac z biblioteki obslugi terminala ncurses(3), oraz programow narzedziowych, takich jak tput(1) czy reset(1). Kontrolki konsoli systemu Linux Sekcja ta opisuje wszystkie znaki sterujace i sekwencje specjalne, ktore wywoluja funkcje specjalne (tj. wszystko inne niz wypisywanie glifu w pozycji kursora) konsoli Linuksa. Znaki sterujace Znak jest znakiem sterujacym, jesli (przed transformacja wynikajaca z tablicy mapowania) posiada jeden z 14 kodow 00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0a (LF), 0b (VT), 0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a (SUB), 1b (ESC), 7f (DEL). Mozna sobie ustawic tryb ,,display control characters" (wyswietlania znakow sterujacych), ktory umozliwia wyswietlanie 07, 09, 0b, 18, 1a, 7f jako glifow. Z drugiej strony, w trybie UTF-8 wszystkie kody 00-1f sa uznawane za znaki sterujace, niezaleznie od trybu ,,display control characters". Jesli mamy znak sterujacy, to jest on natychmiast wykonywany i kasowany (nawet w srodku sekwencji specjalnej), a sekwencja specjalna leci dalej, z nastepnym znakiem. (Jednak ESC rozpoczyna nowa sekwencje specjalna, przypuszczalnie anulujac niedokonczona poprzednia, a CAN i SUB przerywaja dowolna sekwencje specjalna). Rozpoznawanymi znakami sterujacymi sa BEL, BS, HT, LF, VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI. Robia one to, czego mozna oczekiwac: BEL (0x07, ^G) wydaje dzwiek; BS (0x08, ^H) przesuwa kursor o jedna spacje w lewo (lecz nie poza poczatek wiersza); HT (0x09, ^I) przesuwa kursor do nastepnego tabulatora, lub na koniec wiersza, gdy wczesniej tabulatora nie ma; LF (0x0A, ^J) VT (0x0B, ^K) FF (0x0C, ^L) wypisuja znak nowego wiersza, a jesli ustawiono LF/NL (tryb nowego wiesza), to wypisuja takze znak powrotu karetki. CR (0x0D, ^M) wypisuje znak powrotu karetki; SO (0x0E, ^N) wlacza zestaw znakow G1; SI (0x0F, ^O) wlacza zestaw znakow G0; CAN (0x18, ^X) SUB (0x1A, ^Z) przerywa sekwencje specjalne; ESC (0x1B, ^[) rozpoczyna nowa sekwencje specjalna; DEL (0x7F) jest ignorowane; CSI (0x9B) jest rownoznaczne z ESC [. Sekwencje ESC- lecz nie CSI- ESC c RIS Reset. ESC D IND Przesuniecie o wiersz. ESC E NEL Nowy wiersz. ESC H HTS Ustawienie tabulatora w biezacej kolumnie. ESC M RI Cofniecie o wiersz. ESC Z DECID Prywatna identyfikacja DEC. Jadro zwraca napis ESC [ ? 6 c, twierdzac, ze jest to VT102. ESC 7 DECSC Zachowanie biezacego stanu (wspolrzedne kursora, atrybuty, zestawy znakow wskazywane przez G0 i G1). ESC 8 DECRC Odtworzenie ostatnio zachowanego przez ESC 7 stanu. ESC % Rozpoczecie sekwencji wybierania zestawu znakow ESC % @ Wybranie domyslnego (ISO/IEC 646 / ISO/IEC 8859-1) ESC % G Wybranie UTF-8 ESC % 8 Wybranie UTF-8 (przestarzale) ESC # 8 DECALN DEC test wyrownania ekranu - wypelnienie ekranu znakami E ESC ( Rozpoczecie sekwencji, definiujacej zestaw znakow G0 (po ktorym nastepuje jeden znak z: B, 0, U, K, jak ponizej) ESC ( B Wybranie domyslnego (mapowanie ISO/IEC 8859-1). ESC ( 0 Wybranie mapowania grafiki VT100. ESC ( U Wybranie mapowania zerowego - wprost do ROM ze znakami. ESC ( K Select user mapping - the map that is loaded by the utility mapscrn(8). ESC ) Rozpoczecie sekwencji, definiujacej zestaw znakow G1 (po ktorej nastepuje jeden znak z B, 0, U, K, jak wyzej). ESC > DECPNM Ustawienie dla bloku klawiszy trybu numerycznego. ESC = DECPAM Ustawienie dla bloku klawiszy trybu aplikacyjnego. ESC ] OSC Przedrostek polecenia systemu operacyjnego (Operating System Command) ESC ] R Resetuje palete. ESC ] P Ustawienie palety z parametrem podanym w 7 szesnastkowych cyfrach nrrggbb, nastepujacych po ostatnim P. n jest tu kolorem (0-15), a rrggbb okresla wartosci czerwieni/zieleni/niebieskosci (0-255). Sekwencje ECMA-48 CSI Za CSI (lub ESC [) nastepuje sekwencja parametrow, co najwyzej NPAR (16), ktore sa liczbami dziesietnymi, oddzielonymi srednikami. Pusty lub nieobecny parametr przyjmowany jest za zero. Sekwencja parametrow moze byc poprzedzona pojedynczym znakiem zapytania. Jednak po CSI [ (lub ESC [ [) odczytywany jest pojedynczy znak, a cala sekwencja jest ignorowana (pomysl ten ma na celu ignorowanie klawisza funkcyjnego dajacego echo). Akcja sekwencji CSI jest okreslona jej ostatnim znakiem. @ ICH Wstawienie okreslonej liczby pustych znakow. A CUU Przesuniecie kursora w gore o zadana liczbe wierszy. B CUD Przesuniecie kursora w dol o zadana liczbe wierszy. C CUF Przesuniecie kursora w prawo o zadana liczbe kolumn. D CUB Przesuniecie kursora w lewo o zadana liczbe kolumn. E CNL Przesuniecie kursora w dol o zadana liczbe wierszy do kolumny 1. F CPL Przesuniecie kursora w gore o zadana liczbe wierszy do kolumny 1. G CHA Przesuniecie kursora do wskazanej kolumny biezacego wiersza. H CUP Przesuniecie kursora do wskazanego wiersza i kolumny (poczatek w 1,1). J ED Wymazanie ekranu (domyslnie: od pozycji kursora, do konca ekranu). ESC [ 1 J: czysci od poczatku do kursora. ESC [ 2 J: czysci caly ekran. ESC [ 3 J: czysci caly ekran, wlaczajac w to bufor przewijania wstecz (od Linuksa 3.0). K EL Wymazanie wiersza (domyslnie od kursora do konca wiersza). ESC [ 1 K: czysci od poczatku wiersza do kursora. ESC [ 2 K: czysci caly wiersz. L IL Wstawienie zadanej liczby pustych wierszy. M DL Skasowanie zadanej liczby wskazanych wierszy. P DCH Skasowanie zadanej liczby wskazanych znakow w biezacym wierszu. X ECH Wymazanie zadanej liczby wskazanych znakow w biezacym wierszu. a HPR Przesuniecie kursora w prawo o zadana liczbe kolumn. c DA Odpowiedz: ESC [ ? 6 c: "Jestem VT102" d VPA Przesuniecie kursora do wskazanego wiersza i biezacej kolumny. e VPR Przesuniecie kursora w dol o zadana liczbe wierszy. f HVP Przesuniecie kursora do wskazanego wiersza i kolumny. g TBC Bez parametrow: skasowanie tabulatora w biezacej pozycji. ESC [ 3 g: skasowanie wszystkich tabulatorow. h SM Ustawienie trybu (patrz nizej). l RM Inicjacja trybu (patrz nizej). m SGR Ustawienie atrybutow (patrz nizej). n DSR Raport o stanie (patrz nizej). q DECLL Ustawienie LED-ow klawiatury. ESC [ 0 q: wylaczenie wszystkich LED-ow. ESC [ 1 q: wlaczenie diody ScrollLock ESC [ 2 q: wlaczenie diody NumLock ESC [ 3 q: wlaczenie diody CapsLock r DECSTBM Ustawienie obszaru przewijania; parametry to gorny i dolny wiersz. s ? Zapamietanie pozycji kursora. u ? Odtworzenie pozycji kursora. ` HPA Przesuniecie kursora do wskazanej kolumny biezacego wiersza. Interpretacja grafiki wyboru ECMA-48 Sekwencja ECMA-48 SGR, czyli ESC [ parametry m ustawia atrybuty wyswietlania. Mozna ustawic wiele atrybutow w pojedynczej sekwencji specjalnej, oddzielajac je od siebie znakami srednika. Pusty parametr (pomiedzy srednikami lub poczatkiem lub koncem sekwencji) jest interpretowany jako zero. param wynik 0 inicjacja wszystkich atrybutow do wartosci domyslnych 1 wlaczenie pogrubienia 2 wlaczenie polrozjasnienia (symulowane kolorem na ekranach kolorowych) 3 wlaczenie kursywy (od Linuksa 2.6.22; symulowane kolorem na ekranach kolorowych) 4 wlaczenie podkreslenia (underscore) (symulowane kolorem na ekranach kolorowych) (kolory uzywane do symulacji sa ustawiane za pomoca ESC ] ...) 5 wlaczenie migania 7 wlaczenie inwersji 10 wylaczenie wybranego mapowania, znacznika kontroli wyswietlania i przelaczenie flagi "meta" (ECMA-48 nazywa to "czcionka podstawowa"). 11 wybranie mapowania zerowego, ustawienie znacznika kontroli, czysci znacznik przelaczania meta (ECMA-48 nazywa to "pierwsza czcionka alternatywna"). 12 wybranie mapowania zerowego, ustawienie znacznika kontroli, ustawia znacznik przelaczania meta (ECMA-48 okresla to "druga czcionka alternatywna"). Znacznik przelaczania meta powoduje przestawienie wysokiego bitu w bajcie przed zakonczeniem translacji tablicy mapowan. 21 wlaczenie podkreslenia (underline); przed Linuksem 4.17 wartosc ta ustawiala normalna jasnosc (jak dzieje sie na wielu innych terminalach) 22 ustawienie normalnej jasnosci 23 wylaczenie kursywy (od Linuksa 2.6.22) 24 wylaczenie podkreslenia 25 wylaczenie migania 27 wylaczenie inwersji 30 ustawienie koloru czarnego 31 ustawienie koloru czerwonego 32 ustawienie koloru zielonego 33 ustawienie koloru brazowego 34 ustawienie koloru niebieskiego 35 ustawienie koloru fioletowego 36 ustawienie koloru niebieskozielonego 37 ustawienie koloru bialego 38 po ktorym nastepuje 256/24-bitowy kolor, uproszczony do 16 podstawowych kolorow (przed Linuksem 3.16: wlacza podkreslenie, ustawia domyslny kolor pierwszoplanowy) 39 ustawienie domyslnego koloru (przed Linuksem 3.16: wylaczenie podkreslenia, ustawienie koloru domyslnego) 40 ustawienie czarnego tla 41 ustawienie czerwonego tla 42 ustawienie zielonego tla 43 ustawienie brazowego tla 44 ustawienie niebieskiego tla 45 ustawienie fioletowego tla 46 ustawienie niebieskozielonego tla 47 ustawienie bialego tla 48 po ktorym nastepuje 256/24-bitowy kolor tla, uproszczony do 8 podstawowych kolorow 49 ustawienie domyslnego koloru tla 90..97 ustawienie kolorow na jasniejsze wersje 30..37 100..107 ustawienie tla, takie same jak 40..47 (pojasnienie nieobslugiwane) Polecenia 38 i 48 wymagaja dodatkowych argumentow: ;5;x 256 kolor: wartosci 0..15 to IBGR (czarny, czerwony, zielony, ... bialy), 16..231 to szescian kolorow 6x6x6, 232..255 to skala szarosci ;2;r;g;b 24-bitowy kolor, skladowe r/g/b (czerw./ziel./nieb.) w zakresie 0..255 Przelaczniki trybu ECMA-48 ESC [ 3 h DECCRM (domyslnie wylaczone): Wyswietlanie znakow sterujacych. ESC [ 4 h DECIM (domyslnie wylaczone): Wlaczenie trybu wstawiania (insert). ESC [ 20 h LF/NL (domyslnie wylaczone): Automatyczne podazanie za echem LF, VT lub FF z CR. Polecenia zglaszania stanu ECMA-48 ESC [ 5 n Raport stanu urzadzenia (DSR): Odpowiedzia jest ESC [ 0 n (Terminal OK). ESC [ 6 n Raport pozycji kursora (CPR): Odpowiedzia jest ESC [ y ; x R, gdzie x,y to pozycja kursora. Sekwencje trybu prywatnego DEC (DECSET/DECRST) Nie sa one opisane w ECMA-48. Opisano tu sekwencje wlaczania trybu; Sekwencje wylaczania trybu mozna uzyskac przez zamiane ostatniego ,,h" na ,,l". ESC [ ? 1 h DECCKM (domyslnie wylaczone): Gdy wlaczone, klawisze kursora wysylaja przedrostek ESC O, a nie ESC [. ESC [ ? 3 h DECCOLM (domyslnie wylaczone = 80 kolumn): Przelacznik trybu 80/132 kolumny. W zrodlach sterownika zaznaczono, ze to nie wystarcza; niektore narzedzia trybu uzytkownika, takie jak resizecons(8) musza zmienic rejestry sprzetowe karty graficznej konsoli. ESC [ ? 5 h DECSCNM (domyslnie wylaczone): Wlaczenie trybu inwersji. ESC [ ? 6 h DECOM (domyslnie wylaczone): Gdy wlaczone, adresowanie kursora nastepuje wzgledem gornego lewego naroznika regionu przewijania. ESC [ ? 7 h DECAWM (domyslnie wlaczone): Wlaczenie autozawijania. W tym trybie znak graficzny, wyemitowany za 80 (lub 132) kolumna, zostanie zawiniety na poczatek nastepnego wiersza. ESC [ ? 8 h DECARM (domyslnie wlaczone): Wlaczenie samopowtarzania klawiatury. ESC [ ? 9 h Zglaszanie myszy X10 (domyslnie wylaczone): Ustawienie trybu zglaszania na 1 (lub wylaczenie na 0) -- patrz nizej. ESC [ ? 25 h DECTECM (domyslnie wlaczone): Uczynienie kursora widzialnym. ESC [ ? 1000 h Zglaszanie myszy X11 (domyslnie wylaczone): Ustawienie trybu zglaszania na 2 (lub wylaczenie na 0) -- patrz nizej. Prywatne sekwencje CSI konsoli Linuksa Nastepujace sekwencje nie naleza ani do ECMA-48, ani do oryginalnego VT102. Zostaly one wprowadzone przez sterownik konsoli Linuksa. Kolorami w parametrach SGR sa: 0 = czarny, 1 = czerwony, 2 = zielony, 3 = brazowy, 4 = niebieski, 5 = fioletowy, 6 = niebieskozielony, 7 = bialy, 8-15 = jasniejsze wersje 0-7. ESC [ 1 ; n ] Ustawienie koloru n jako kolor podkreslenia. ESC [ 2 ; n ] Ustawienie koloru n jako kolor dim. ESC [ 8 ] Uczynienie biezacej pary kolorow atrybutem domyslnym. ESC [ 9 ; n ] Ustawienie okresu wygaszania ekranu na n minut. ESC [ 10 ; n ] Ustawienie czestotliwosci dzwonka w Hz. ESC [ 11 ; n ] Ustawienie czasu trwania dzwonka w ms. ESC [ 12 ; n ] Przeniesienie podanej konsoli na wierzch. ESC [ 13 ] Wylaczenie wygaszenia ekranu. ESC [ 14 ; n ] Ustawienie czasu wylaczenia zasilania VESA w minutach. ESC [ 15 ] Przeniesienie podanej konsoli na wierzch. (od Linuksa 2.6.0). ESC [ 16 ; n ] Interwal pomiedzy mignieciami kursora w milisekundach (od Linuksa 4.2). Zestawy znakow Jadro zna 4 translacje bajtow na symbole znakow ekranu konsoli. Tymi czterema tablicami sa: a) Latin1 -> PC, b) grafika VT100 -> PC, c) PC -> PC, d) zdefiniowane przez uzytkownika. Istnieja dwa zbiory znakow, zwane G0 i G1, a jeden z nich jest biezacym zestawem znakow (poczatkowo G0). Wpisanie ^N powoduje, ze biezacym zestawem staje sie G1, a ^O -- ze G0. Zmienne G0 i G1 wskazuja na tablice translacji i moga byc zmieniane przez uzytkownika. Poczatkowo wskazuja odpowiednio na tablice a) i b). Sekwencje ESC ( B, ESC ( 0, ESC ( U, ESC ( K powoduja, ze G0 wskazuje odpowiednio na tablice a), b), c) i d). Sekwencje ESC ) B, ESC ) 0, ESC ) U, ESC ) K powoduja, ze G1 wskazuje odpowiednio na tablice a), b), c) i d). The sequence ESC c causes a terminal reset, which is what you want if the screen is all garbled. The oft-advised "echo ^V^O" will make only G0 current, but there is no guarantee that G0 points at table a). In some distributions there is a program reset(1) that just does "echo ^[c". If your terminfo entry for the console is correct (and has an entry rs1=\Ec), then "tput reset" will also work. Zdefiniowana przez uzytkownika tablica mapowan moze byc ustawiana za pomoca mapscrn(8). Wynikiem mapowania jest to, ze jesli wyswietlany jest symbol c, to do pamieci grafiki wysylany jest symbol s = mapa[c]. Mapa bitowa, odpowiadajaca s, ktora znajduje sie w nieulotnej pamieci grafiki, moze byc zmieniona za pomoca setfont(8). Sledzenie myszy Funkcja sledzenia myszy jest przeznaczana do zglaszania stanu myszy, zgodnego z xterm(1). Poniewaz sterownik konsoli nie ma mozliwosci dowiedzenia sie o urzadzeniu ani o rodzaju myszy, zgloszenia te zwracane sa w strumieniu wejsciowym konsoli tylko wtedy, gdy sterownik terminala wirtualnego otrzymuje ioctl odswiezajacy stan myszy. Ioctl-e te musza byc generowane przez swiadoma istnienia myszy aplikacje trybu uzytkownika, taka jak demon gpm(8). Parametry wszystkich sekwencji specjalnych sledzenia myszy, generowanych przez xterm(1) sa kodowane numerycznie w pojedynczych znakach, jako wartosc+040. Na przyklad, ,,!" to 1. Wspolrzedne ekranu zaczynaja sie od 1. Tryb zgodnosci z X10 wysyla sekwencje specjalne przy naciskaniu przyciskow, kodujac polozenie oraz to, ktory przycisk myszy zostal nacisniety. Jest to wlaczane przez wyslanie ESC [ ? 9 h i wylaczane przez ESC [ ? 9 l. Przy naciskaniu przyciskow, xterm(8) wysyla ESC [ M bxy (6 znakow). b jest tu rowne klawisz-1, a x i y sa wspolrzednymi x i y kursora myszy w momencie przycisniecia. Ten sam kod produkuje jadro. Normalny tryb sledzenia (nie zaimplementowany w Linuksie 2.0.24) wysyla sekwencje specjalna zarowno po przycisnieciu, jak i po zwolnieniu przycisku. Wysylana jest rowniez informacja modyfikatora. Jest to wlaczane przez wyslanie ESC [ ? 1000 h, a wylaczane przez ESC [ 1000 l. xterm(1) po nacisnieciu lub zwolnieniu przycisku wysyla ESC [ M bxy. Dwa nizsze bity b koduja informacje o przycisku: 0=nacisnieto pierwszy, 1=nacisnieto drugi, 2=nacisnieto trzeci, 3=zwolnienie. W gornych bitach zakodowane sa modyfikatory wcisniete podczas naciskania przycisku. Sa one dodawane: 4=Shift, 8=Meta, 16=Control. Znowu, x i y to wspolrzedne kursora myszy podczas zdarzenia. Gorny lewy naroznik to (1,1). Porownania z innymi terminalami Wiele roznych typow terminali, podobnie jak konsola Linuksa, jest opisywanych jako "zgodne z VT100". Ponizej omowiono roznice miedzy konsola Linuksa i dwoma najwazniejszymi sposrod innych terminali: DEC VT102 i xterm(1). Obsluga znakow sterujacych VT 102 rozpoznawal tez nastepujace znaki sterujace: NUL (0x00) bylo ignorowane; ENQ (0x05) wywolywalo komunikat odpowiadajacy; DC1 (0x11, ^Q, XON) wznawialo transmisje; DC3 (0x13, ^S, XOFF) powodowalo, ze VT100 ignorowal (i przestawal transmitowac) wszystkie kody poza XOFF i XON. Przetwarzanie DC1/DC3 tego rodzaju, jakie bylo w VT100 moze byc wlaczone przez sterownik terminala. Program xterm(1) (w trybie VT100) rozpoznaje znaki sterujace BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC. Sekwencje specjalne Sekwencje VT100 nie implementowane przez konsole Linuksa: ESC N SS2 Pojedyncze przesuniecie 2. (Wybranie zestawu znakow G2 tylko dla nastepnego znaku). ESC O SS3 Pojedyncze przesuniecie 3. (Wybranie zestawu znakow G3 tylko dla nastepnego znaku). ESC P DCS Device control string (ended by ESC \) ESC X SOS Poczatek lancucha. ESC ^ PM Privacy message (ended by ESC \) ESC \ ST Zakonczenie lancucha ESC * ... Wyznaczenie zestawu znakow G2 ESC + ... Wyznaczenie zestawu znakow G3 The program xterm(1) (in VT100 mode) recognizes ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \, ESC Z (it answers ESC [ ? 1 ; 2 c, "I am a VT100 with advanced video option") and ESC ^ ... ESC \ with the same meanings as indicated above. It accepts ESC (, ESC ), ESC *, ESC + followed by 0, A, B for the DEC special character and line drawing set, UK, and US-ASCII, respectively. Uzytkownik moze skonfigurowac xterm(1) tak, zeby odpowiadal uzywajac sekwencji kontrolnych specyficznych dla VT220. Moze identyfikowac siebie jako VT52, VT100 i wieksze -- w zaleznosci od tego, jak jest skonfigurowany i zainicjowany. Zezwala na ustawienie pewnych zasobow za pomoca ESC ] (OSC). Oprocz znaku konca lancucha znakow (ST) z ECMA-48, xterm(1) akceptuje takze BEL do zakonczenia lancucha znakow OSC. xterm(1) rozpoznaje kilka nastepujacych sekwencji sterujacych: ESC ] 0 ; txt ST Ustawienie nazwy ikony i tytulu okna na txt. ESC ] 1 ; txt ST Ustawienie nazwy ikony na txt. ESC ] 2 ; txt ST Ustawienie tytulu okna na txt. ESC ] 4 ; num; txt ST Ustawienie koloru ANSI num na txt. ESC ] 10 ; txt ST Ustawienie dynamicznego koloru tekstu na txt. ESC ] 4 6 ; nazwaST Zmiana pliku logu na nazwa (normalnie wylaczone przez opcje kompilacji). ESC ] 5 0 ; fn ST Ustawienie czcionki na fn. Rozpoznaje nastepujace, z nieznacznie zmienionym znaczeniem (zapisuje wiecej stanow, zachowanie jest blizsze do VT100/VT220): ESC 7 DECSC Zachowanie kursora ESC 8 DECRC Odtworzenie kursora Podobnie, rozpoznaje rowniez ESC F Cursor to lower left corner of screen (if enabled by xterm(1)'s hpLowerleftBugCompat resource). ESC l Blokowanie pamieci (dla terminali HP). Blokuje pamiec ponad kursorem. ESC m Odblokowanie pamieci (dla terminali HP). ESC n LS2 Wywolanie zestawu znakow G2. ESC o LS3 Wywolanie zestawu znakow G3. ESC | LS3R Wywolanie zestawu znakow G3 jako GR. ESC } LS2R Wywolanie zestawu znakow G2 jako GR. ESC ~ LS1R Wywolanie zestawu znakow G1 jako GR. Rozpoznaje takze sekwencje ESC % i dostarcza bardziej kompletnej implementacji UTF-8 niz konsola linuksowa. Sekwencje CSI Stare wersje programu xterm(1), na przyklad wersja z X11R5, interpretuja migajacy SGR jako pogrubiony SGR. Pozniejsze wersje, w ktorych zaimplementowano obsluge kolorow ANSI, na przyklad XFree86 3.1.2A z 1995r., pozwalaly na wyswietlanie atrybutu migania jako koloru. Nowoczesne wersje xterm(1) implementuja migajacy SGR jako migajacy tekst, ale wciaz pozwalaja na alternatywne wyswietlanie tego atrybutu jako kolor. Oryginalne wersje z X11R6 nie rozpoznawaly SGR-a ustawiajacego kolor az do wydania X11R6.8, ktore zawieralo xterm pochodzacy z XFree86. Wszystkie sekwencje ECMA-48 CSI rozpoznawane przez Linuksa sa takze rozpoznawane przez xterm, jednakze xterm(1) implementuje kilka sekwencji sterujacych ECMA-48 i DEC, ktorych Linux nie rozpoznaje. Program xterm(1) rozpoznaje wszystkie opisane powyzej sekwencje trybu prywatnego DEC, lecz nie rozpoznaje zadnej z prywatnych sekwencji Linuksa. Omowienie sekwencji prywatnych programu xterm(1) znajduje sie w dokumencie Xterm Control Sequences, napisanym przez Edwarda Moya i Stephena Gildea'a i Thomasa E. Dickeya dostepnym w dystrybucji X. Dokument ten, choc zwiezly, jest o wiele dluzszy niz ta strona podrecznika. Po wprowadzenie w porzadku chronologicznym, patrz szczegoly zmian w xtermie Program vttest obrazuje wiele z powyzszych sekwencji sterujacych. Archiwum zrodlowe programu xterm(1) takze zawiera przykladowe skrypty, pokazujace rowniez inne wlasciwosci. UWAGI ESC 8 (DECRC) nie potrafi odtworzyc zestawu znakow zmienionego przez ESC %. USTERKI W Linuksie 2.0.23 CSI jest zepsute, a NUL nie jest ignorowany w sekwencjach specjalnych. Niektore starsze wersje jadra (po Linuksie 2.0) interpretuja 8-bitowe sekwencje sterujace. Te ,,kontrolki C1" uzywaja kodow pomiedzy 128 i 159, zastepujac nimi ESC [, ESC ] i podobne poczatki sekwencji sterujacych. W nowoczesnych jadrach zostaly tylko pozostalosci po tej funkcjonalnosci (albo je przeoczono, albo popsuto, implementujac zmiany zwiazane z obsluga UTF-8), jednakze ich implementacja jest niekompletna i nie nalezy na niej polegac. Sekwencje ,,prywatnego trybu" Linuksa nie przestrzegaja regul ECMA-48 dotyczacych sekwencji sterujacych trybu prywatnego. W szczegolnosci sekwencje konczace sie znakiem ] nie uzywaja standardowego znaku konczacego sekwencje. Wiekszym problemem jest sekwencja OSC (ustawienie palety), poniewaz xterm(1) moze interpretowac ja jako sekwencje sterujaca wymagajaca znaku zakonczenia lancucha znakow (ST). W przeciwienstwie do sekwencji generowanych przez setterm(1), ktore zostana zignorowane (poniewaz sa niepoprawne), sekwencja ustawienia palety spowoduje, ze xterm(1) bedzie sie zachowywal tak, jakby sie zawiesil (nacisniecie klawisza return go odblokuje). Aby aplikacje, w ktorych na sztywno zaimplementowano obsluge linuksowych sekwencji sterujacych, dzialaly poprawnie pod xterm-em, nalezy ustawic zasob brokenLinuxOSC programu xterm na ,,true". Wczesniejsza wersja tego dokumentu sugerowala, ze Linux rozpoznaje sekwencje kontrolne ECMA-48 dla niewidocznego tekstu. Sa one ignorowane. ZOBACZ TAKZE ioctl_console(2), charsets(7) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.12 1 wrzesnia 2024 r. console_codes(4)