Provided by: manpages-pl_4.23.1-1_all bug

NAZWA

       console_codes - kody konsolowe Linuksa oraz sekwencje specjalne

OPIS

       Konsola  Linuksa  implementuje  duży  podzbiór  kontrolek  terminali  VT102 oraz ECMA-48 /
       ISO/IEC 6429 / ANSI X3.64, plus określone sekwencje  trybu  prywatnego,  dotyczące  zmiany
       palety kolorów, mapowania zestawu znaków itp.  W poniższych, tabelarycznych opisach, druga
       kolumna podaje dla danej funkcji mnemoniki ECMA-48  lub  DEC  (te  drugie  są  poprzedzone
       ciągiem DEC).  Sekwencje bez mnemoników nie są ani ECMA-48 ani VT102.

       Po  przetworzeniu  normalnego  wyjścia, gdy strumień znaków dojdzie do sterownika konsoli,
       która  ma  go  fizycznie  wyświetlić,  to  pierwszą  rzeczą,  która  jest  robiona,   jest
       przetłumaczenie tego strumienia z języka przetwarzania na język wyświetlania.

       Jeśli  konsola  znajduje  się  w trybie UTF-8, to nadchodzące bajty są najpierw składane w
       16-bitowe kody Unicode. W przeciwnym wypadku,  każdy  bajt  jest  przetwarzany  zgodnie  z
       bieżącym  mapowaniem  (które go tłumaczy na wartość Unicode). Dalsza dyskusja znajduje się
       poniżej, w sekcji Zestawy znaków.

       W normalnym wypadku, wartość Unicode jest konwertowana  na  indeks  czcionki,  który  jest
       przechowywany   w  pamięci  obrazu.  Efektem  użycia  tego  indeksu  jest  pojawienie  się
       odpowiadającego glifu (wizerunku znaku,  znalezionego  w  nieulotnej  pamięci  obrazu)  na
       ekranie.  Należy  zauważyć,  że  użycie  Unicode  (i  konstrukcja  sprzętu  PC) pozwala na
       jednoczesne używanie 512 różnych glifów.

       Jeśli bieżąca  wartość  Unicode  jest  znakiem  sterującym  lub  jeśli  przetwarzana  jest
       sekwencja specjalna, to wartość ta jest traktowana w sposób specjalny.  Zamiast zmieniania
       jej na indeks czcionki i interpretacji jako glif, może ona wyzwolić ruchy kursora lub inne
       funkcje  sterujące.   Dalsza  dyskusja  znajduje  się  poniżej, w sekcji Kontrolki konsoli
       systemu Linux.

       Ogólnie nie jest dobrym zwyczajem wkodowywanie do programów kodów  terminala  na  sztywno.
       Linux  obsługuje  bazę  danych  terminfo(5), która opisuje właściwości terminali.  Zamiast
       ręcznego  wyprowadzania  sekwencji  kontrolnych  konsoli,  prawie  zawsze  wygodniej  jest
       korzystać  z biblioteki obsługi terminala ncurses(3), oraz programów narzędziowych, takich
       jak tput(1) czy reset(1).

   Kontrolki konsoli systemu Linux
       Sekcja ta opisuje wszystkie znaki sterujące i sekwencje specjalne, które wywołują  funkcje
       specjalne (tj. wszystko inne niż wypisywanie glifu w pozycji kursora) konsoli Linuksa.

       Znaki sterujące

       Znak  jest  znakiem sterującym, jeśli (przed transformacją wynikającą z tablicy mapowania)
       posiada jeden z 14 kodów 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).  Można sobie ustawić
       tryb „display control  characters”  (wyświetlania  znaków  sterujących),  który  umożliwia
       wyświetlanie  07,  09,  0b,  18,  1a,  7f  jako  glifów.  Z drugiej strony, w trybie UTF-8
       wszystkie kody 00–1f są uznawane za znaki sterujące, niezależnie od trybu „display control
       characters”.

       Jeśli  mamy  znak  sterujący, to jest on natychmiast wykonywany i kasowany (nawet w środku
       sekwencji specjalnej), a sekwencja specjalna leci dalej, z następnym znakiem. (Jednak  ESC
       rozpoczyna  nową sekwencję specjalną, przypuszczalnie anulując niedokończoną poprzednią, a
       CAN i SUB przerywają dowolną sekwencję specjalną). Rozpoznawanymi znakami  sterującymi  są
       BEL,  BS,  HT,  LF, VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI. Robią one to, czego można
       oczekiwać:

       BEL (0x07, ^G)
              wydaje dźwięk;

       BS (0x08, ^H)
              przesuwa kursor o jedną spację w lewo (lecz nie poza początek wiersza);

       HT (0x09, ^I)
              przesuwa kursor do następnego tabulatora, lub  na  koniec  wiersza,  gdy  wcześniej
              tabulatora nie ma;

       LF (0x0A, ^J)
       VT (0x0B, ^K)
       FF (0x0C, ^L)
              wypisują  znak  nowego  wiersza,  a  jeśli ustawiono LF/NL (tryb nowego wiesza), to
              wypisują także znak powrotu karetki.

       CR (0x0D, ^M)
              wypisuje znak powrotu karetki;

       SO (0x0E, ^N)
              włącza zestaw znaków G1;

       SI (0x0F, ^O)
              włącza zestaw znaków G0;

       CAN (0x18, ^X)
       SUB (0x1A, ^Z)
              przerywa sekwencje specjalne;

       ESC (0x1B, ^[)
              rozpoczyna nową sekwencję specjalną;

       DEL (0x7F)
              jest ignorowane;

       CSI (0x9B)
              jest równoznaczne z ESC [.


       Sekwencje ESC- lecz nie CSI-
       ESC c     RIS      Reset.
       ESC D     IND      Przesunięcie o wiersz.
       ESC E     NEL      Nowy wiersz.
       ESC H     HTS      Ustawienie tabulatora w bieżącej kolumnie.
       ESC M     RI       Cofnięcie o wiersz.
       ESC Z     DECID    Prywatna identyfikacja DEC. Jądro zwraca napis ESC [ ? 6 c, twierdząc,
                          że jest to VT102.
       ESC 7     DECSC    Zachowanie bieżącego stanu (współrzędne kursora, atrybuty, zestawy
                          znaków wskazywane przez G0 i G1).
       ESC 8     DECRC    Odtworzenie ostatnio zachowanego przez ESC 7 stanu.
       ESC %              Rozpoczęcie sekwencji wybierania zestawu znaków
       ESC % @               Wybranie domyślnego (ISO/IEC 646 / ISO/IEC 8859-1)
       ESC % G               Wybranie UTF-8
       ESC % 8               Wybranie UTF-8 (przestarzałe)
       ESC # 8   DECALN   DEC test wyrównania ekranu - wypełnienie ekranu znakami E
       ESC (              Rozpoczęcie sekwencji, definiującej zestaw znaków G0 (po którym
                          następuje jeden znak z: B, 0, U, K, jak poniżej)
       ESC ( B            Wybranie domyślnego (mapowanie ISO/IEC 8859-1).
       ESC ( 0            Wybranie mapowania grafiki VT100.
       ESC ( U            Wybranie mapowania zerowego - wprost do ROM ze znakami.
       ESC ( K            Wybranie mapowania użytkownika - mapę załadowaną narzędziem mapscrn(8).
       ESC )              Rozpoczęcie sekwencji, definiującej zestaw znaków G1 (po której
                          następuje jeden znak z B, 0, U, K, jak wyżej).
       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 paletę.
       ESC ] P            Ustawienie palety z parametrem podanym w 7 szesnastkowych cyfrach
                          nrrggbb, następujących po ostatnim P. n jest tu  kolorem (0–15), a
                          rrggbb określa wartości czerwieni/zieleni/niebieskości (0–255).

       Sekwencje ECMA-48 CSI

       Za CSI (lub ESC [) następuje  sekwencja  parametrów,  co  najwyżej  NPAR  (16),  które  są
       liczbami  dziesiętnymi,  oddzielonymi średnikami. Pusty lub nieobecny parametr przyjmowany
       jest za zero. Sekwencja parametrów może być poprzedzona pojedynczym znakiem zapytania.

       Jednak po CSI [ (lub ESC [ [) odczytywany jest pojedynczy  znak,  a  cała  sekwencja  jest
       ignorowana (pomysł ten ma na celu ignorowanie klawisza funkcyjnego dającego echo).

       Akcja sekwencji CSI jest określona jej ostatnim znakiem.

       @   ICH       Wstawienie określonej liczby pustych znaków.
       A   CUU       Przesunięcie kursora w górę o zadaną liczbę wierszy.
       B   CUD       Przesunięcie kursora w dół o zadaną liczbę wierszy.
       C   CUF       Przesunięcie kursora w prawo o zadaną liczbę kolumn.
       D   CUB       Przesunięcie kursora w lewo o zadaną liczbę kolumn.
       E   CNL       Przesunięcie kursora w dół o zadaną liczbę wierszy do kolumny 1.
       F   CPL       Przesunięcie kursora w górę o zadaną liczbę wierszy do kolumny 1.
       G   CHA       Przesunięcie kursora do wskazanej kolumny bieżącego wiersza.
       H   CUP       Przesunięcie kursora do wskazanego wiersza i kolumny (początek w 1,1).
       J   ED        Wymazanie ekranu (domyślnie: od pozycji kursora, do końca ekranu).
                     ESC [ 1 J: czyści od początku do kursora.
                     ESC [ 2 J: czyści cały ekran.
                     ESC [ 3 J: czyści cały ekran, włączając w to bufor przewijania wstecz (od
                     Linuksa 3.0).
       K   EL        Wymazanie wiersza (domyślnie od kursora do końca wiersza).
                     ESC [ 1 K: czyści od początku wiersza do kursora.
                     ESC [ 2 K: czyści cały wiersz.
       L   IL        Wstawienie zadanej liczby pustych wierszy.
       M   DL        Skasowanie zadanej liczby wskazanych wierszy.
       P   DCH       Skasowanie zadanej liczby wskazanych znaków w bieżącym wierszu.
       X   ECH       Wymazanie zadanej liczby wskazanych znaków w bieżącym wierszu.
       a   HPR       Przesunięcie kursora w prawo o zadaną liczbę kolumn.
       c   DA        Odpowiedź: ESC [ ? 6 c: "Jestem VT102"
       d   VPA       Przesunięcie kursora do wskazanego wiersza i bieżącej kolumny.
       e   VPR       Przesunięcie kursora w dół o zadaną liczbę wierszy.
       f   HVP       Przesunięcie kursora do wskazanego wiersza i kolumny.
       g   TBC       Bez parametrów: skasowanie tabulatora w bieżącej pozycji.
                     ESC [ 3 g: skasowanie wszystkich tabulatorów.
       h   SM        Ustawienie trybu (patrz niżej).
       l   RM        Inicjacja trybu (patrz niżej).
       m   SGR       Ustawienie atrybutów (patrz niżej).
       n   DSR       Raport o stanie (patrz niżej).
       q   DECLL     Ustawienie LED-ów klawiatury.
                     ESC [ 0 q: wyłączenie wszystkich LED-ów.
                     ESC [ 1 q: włączenie diody ScrollLock
                     ESC [ 2 q: włączenie diody NumLock
                     ESC [ 3 q: włączenie diody CapsLock
       r   DECSTBM   Ustawienie obszaru przewijania; parametry to górny i dolny wiersz.
       s   ?         Zapamiętanie pozycji kursora.
       u   ?         Odtworzenie pozycji kursora.
       `   HPA       Przesunięcie kursora do wskazanej kolumny bieżącego wiersza.

       Interpretacja grafiki wyboru ECMA-48

       Sekwencja ECMA-48 SGR, czyli ESC  [  parametry  m  ustawia  atrybuty  wyświetlania.  Można
       ustawić  wiele  atrybutów  w  pojedynczej  sekwencji  specjalnej, oddzielając je od siebie
       znakami średnika. Pusty parametr (pomiędzy średnikami lub początkiem lub końcem sekwencji)
       jest interpretowany jako zero.

       param      wynik
       0          inicjacja wszystkich atrybutów do wartości domyślnych
       1          włączenie pogrubienia
       2          włączenie półrozjaśnienia (symulowane kolorem na ekranach kolorowych)
       3          włączenie kursywy (od Linuksa 2.6.22; symulowane kolorem na ekranach kolorowych)
       4          włączenie podkreślenia (underscore) (symulowane kolorem na ekranach kolorowych)
                  (kolory używane do symulacji są ustawiane za pomocą ESC ] ...)
       5          włączenie migania
       7          włączenie inwersji

       10         wyłączenie wybranego mapowania, znacznika kontroli wyświetlania i przełączenie
                  flagi "meta" (ECMA-48 nazywa to "czcionką podstawową").
       11         wybranie mapowania zerowego, ustawienie znacznika kontroli, czyści znacznik
                  przełączania meta (ECMA-48 nazywa to "pierwszą czcionką alternatywna").
       12         wybranie  mapowania  zerowego, ustawienie znacznika kontroli, ustawia znacznik
                  przełączania meta (ECMA-48 określa to "drugą czcionką alternatywną"). Znacznik
                  przełączania  meta powoduje przestawienie wysokiego bitu w bajcie przed
                  zakończeniem translacji tablicy mapowań.
       21         włączenie podkreślenia (underline); przed Linuksem 4.17 wartość ta ustawiała
                  normalną jasność (jak dzieje się na wielu innych terminalach)
       22         ustawienie normalnej jasności
       23         wyłączenie kursywy (od Linuksa 2.6.22)
       24         wyłączenie podkreślenia
       25         wyłączenie migania
       27         wyłączenie inwersji
       30         ustawienie koloru czarnego
       31         ustawienie koloru czerwonego
       32         ustawienie koloru zielonego
       33         ustawienie koloru brązowego
       34         ustawienie koloru niebieskiego
       35         ustawienie koloru fioletowego
       36         ustawienie koloru niebieskozielonego
       37         ustawienie koloru białego
       38         po którym następuje 256/24-bitowy kolor, uproszczony do 16 podstawowych kolorów
                  (przed Linuksem 3.16: włącza podkreślenie, ustawia domyślny kolor
                  pierwszoplanowy)
       39         ustawienie domyślnego koloru (przed Linuksem 3.16: wyłączenie podkreślenia,
                  ustawienie koloru domyślnego)
       40         ustawienie czarnego tła
       41         ustawienie czerwonego tła
       42         ustawienie zielonego tła
       43         ustawienie brązowego tła
       44         ustawienie niebieskiego tła
       45         ustawienie fioletowego tła
       46         ustawienie niebieskozielonego tła
       47         ustawienie białego tła
       48         po którym następuje 256/24-bitowy kolor tła, uproszczony do 8 podstawowych
                  kolorów
       49         ustawienie domyślnego koloru tła
       90..97     ustawienie kolorów na jaśniejsze wersje 30..37
       100..107   ustawienie tła, takie same jak 40..47 (pojaśnienie nieobsługiwane)

       Polecenia 38 i 48 wymagają dodatkowych argumentów:

       ;5;x       256 kolor: wartości 0..15 to  IBGR  (czarny,  czerwony,  zielony,  ...  biały),
                  16..231 to sześcian kolorów 6x6x6, 232..255 to skala szarości
       ;2;r;g;b   24-bitowy kolor, składowe r/g/b (czerw./ziel./nieb.) w zakresie 0..255

       Przełączniki trybu ECMA-48

       ESC [ 3 h
              DECCRM (domyślnie wyłączone): Wyświetlanie znaków sterujących.

       ESC [ 4 h
              DECIM (domyślnie wyłączone): Włączenie trybu wstawiania (insert).

       ESC [ 20 h
              LF/NL (domyślnie wyłączone): Automatyczne podążanie za echem LF, VT lub FF z CR.

       Polecenia zgłaszania stanu ECMA-48

       ESC [ 5 n
              Raport stanu urządzenia (DSR): Odpowiedzią jest ESC [ 0 n (Terminal OK).

       ESC [ 6 n
              Raport  pozycji kursora (CPR): Odpowiedzią jest ESC [ y ; x R, gdzie x,y to pozycja
              kursora.

       Sekwencje trybu prywatnego DEC (DECSET/DECRST)

       Nie są one opisane w ECMA-48. Opisano tu sekwencje włączania trybu;  Sekwencje  wyłączania
       trybu można uzyskać przez zamianę ostatniego „h” na „l”.

       ESC [ ? 1 h
              DECCKM  (domyślnie  wyłączone): Gdy włączone, klawisze kursora wysyłają przedrostek
              ESC O, a nie ESC [.

       ESC [ ? 3 h
              DECCOLM (domyślnie wyłączone = 80 kolumn): Przełącznik  trybu  80/132  kolumny.   W
              źródłach  sterownika  zaznaczono,  że  to  nie  wystarcza; niektóre narzędzia trybu
              użytkownika, takie  jak  resizecons(8)   muszą  zmienić  rejestry  sprzętowe  karty
              graficznej konsoli.

       ESC [ ? 5 h
              DECSCNM (domyślnie wyłączone): Włączenie trybu inwersji.

       ESC [ ? 6 h
              DECOM  (domyślnie  wyłączone): Gdy włączone, adresowanie kursora następuje względem
              górnego lewego narożnika regionu przewijania.

       ESC [ ? 7 h
              DECAWM (domyślnie włączone): Włączenie autozawijania. W tym trybie znak  graficzny,
              wyemitowany  za  80  (lub  132)  kolumną, zostanie zawinięty na początek następnego
              wiersza.

       ESC [ ? 8 h
              DECARM (domyślnie włączone): Włączenie samopowtarzania klawiatury.

       ESC [ ? 9 h
              Zgłaszanie myszy X10 (domyślnie wyłączone): Ustawienie trybu zgłaszania na  1  (lub
              wyłączenie na 0) — patrz niżej.

       ESC [ ? 25 h
              DECTECM (domyślnie włączone): Uczynienie kursora widzialnym.

       ESC [ ? 1000 h
              Zgłaszanie  myszy  X11 (domyślnie wyłączone): Ustawienie trybu zgłaszania na 2 (lub
              wyłączenie na 0) — patrz niżej.

       Prywatne sekwencje CSI konsoli Linuksa

       Następujące sekwencje nie należą ani do ECMA-48, ani do oryginalnego VT102.   Zostały  one
       wprowadzone  przez sterownik konsoli Linuksa. Kolorami w parametrach SGR są: 0 = czarny, 1
       = czerwony, 2 = zielony, 3 = brązowy, 4 = niebieski, 5 = fioletowy, 6 =  niebieskozielony,
       7 = biały, 8–15 = jaśniejsze wersje 0–7.

       ESC [ 1 ; n ]       Ustawienie koloru n jako kolor podkreślenia.
       ESC [ 2 ; n ]       Ustawienie koloru n jako kolor dim.
       ESC [ 8 ]           Uczynienie bieżącej pary kolorów atrybutem domyślnym.
       ESC [ 9 ; n ]       Ustawienie okresu wygaszania ekranu na n minut.
       ESC [ 10 ; n ]      Ustawienie częstotliwości dzwonka w Hz.
       ESC [ 11 ; n ]      Ustawienie czasu trwania dzwonka w ms.
       ESC [ 12 ; n ]      Przeniesienie podanej konsoli na wierzch.
       ESC [ 13 ]          Wyłączenie wygaszenia ekranu.
       ESC [ 14 ; n ]      Ustawienie czasu wyłączenia zasilania VESA w minutach.
       ESC [ 15 ]          Przeniesienie podanej konsoli na wierzch.  (od Linuksa 2.6.0).
       ESC [ 16 ; n ]      Interwał  pomiędzy  mignięciami  kursora  w  milisekundach (od Linuksa
                           4.2).

   Zestawy znaków
       Jądro zna 4 translacje bajtów na symbole znaków ekranu konsoli.  Tymi  czterema  tablicami
       są:  a)  Latin1  ->  PC,  b)  grafika  VT100  ->  PC,  c)  PC -> PC, d) zdefiniowane przez
       użytkownika.

       Istnieją dwa zbiory znaków, zwane G0 i G1, a jeden z nich jest  bieżącym  zestawem  znaków
       (początkowo G0). Wpisanie ^N powoduje, że bieżącym zestawem staje się G1, a ^O — że G0.

       Zmienne  G0  i  G1  wskazują na tablicę translacji i mogą być zmieniane przez użytkownika.
       Początkowo wskazują odpowiednio na tablice a) i b).  Sekwencje ESC ( B, ESC ( 0, ESC (  U,
       ESC  ( K powodują, że G0 wskazuje odpowiednio na tablice a), b), c) i d).  Sekwencje ESC )
       B, ESC ) 0,  ESC ) U, ESC ) K powodują, że G1 wskazuje odpowiednio na tablice a), b), c) i
       d).

       Sekwencja  ESC  c  powoduje  reset  terminala.  Jest  to  tym, czego potrzeba, jeśli ekran
       zostanie zaśmiecony. Często zalecane "echo ^V^O" powoduje tylko, że G0 staje się  bieżącym
       zestawem  znaków,  lecz  nie  ma  gwarancji  że  wskazuje  on na tablicę a).  W niektórych
       dystrybucjach znajduje się program reset(1), który po prostu  wysyła  "echo  ^[c".   Jeśli
       wpis  dla  konsoli  w bazie terminfo jest prawidłowy (i zawiera wpis rs1=\Ec), to zadziała
       również "tput reset".

       Zdefiniowana przez użytkownika tablica mapowań może być ustawiana  za  pomocą  mapscrn(8).
       Wynikiem  mapowania  jest  to,  że  jeśli wyświetlany jest symbol c, to do pamięci grafiki
       wysyłany jest symbol s = mapa[c]. Mapa bitowa,  odpowiadająca  s,  która  znajduje  się  w
       nieulotnej pamięci grafiki, może być zmieniona za pomocą setfont(8).

   Śledzenie myszy
       Funkcja  śledzenia myszy jest przeznaczana do zgłaszania stanu myszy, zgodnego z xterm(1).
       Ponieważ sterownik konsoli nie ma możliwości dowiedzenia się o urządzeniu  ani  o  rodzaju
       myszy,  zgłoszenia  te  zwracane  są  w  strumieniu  wejściowym  konsoli  tylko wtedy, gdy
       sterownik terminala wirtualnego otrzymuje ioctl odświeżający stan myszy. Ioctl-e te  muszą
       być  generowane przez świadomą istnienia myszy aplikację trybu użytkownika, taką jak demon
       gpm(8).

       Parametry wszystkich sekwencji specjalnych śledzenia myszy, generowanych przez xterm(1) są
       kodowane  numerycznie  w  pojedynczych  znakach,  jako wartość+040. Na przykład, „!” to 1.
       Współrzędne ekranu zaczynają się od 1.

       Tryb zgodności z X10  wysyła  sekwencje  specjalne  przy  naciskaniu  przycisków,  kodując
       położenie oraz to, który przycisk myszy został naciśnięty. Jest to włączane przez wysłanie
       ESC [ ? 9 h i wyłączane przez ESC [ ? 9 l.  Przy naciskaniu  przycisków,  xterm(8)  wysyła
       ESC  [ M bxy (6 znaków). b jest tu równe klawisz-1, a x i y są współrzędnymi x i y kursora
       myszy w momencie przyciśnięcia. Ten sam kod produkuje jądro.

       Normalny  tryb  śledzenia  (nie  zaimplementowany  w  Linuksie  2.0.24)  wysyła  sekwencję
       specjalną  zarówno po przyciśnięciu, jak i po zwolnieniu przycisku.  Wysyłana jest również
       informacja modyfikatora. Jest to włączane przez wysłanie ESC [ ? 1000 h, a wyłączane przez
       ESC  [  1000  l.  xterm(1) po naciśnięciu lub zwolnieniu przycisku wysyła ESC [ M bxy. Dwa
       niższe bity b kodują informację o przycisku: 0=naciśnięto  pierwszy,  1=naciśnięto  drugi,
       2=naciśnięto  trzeci,  3=zwolnienie. W górnych bitach zakodowane są modyfikatory wciśnięte
       podczas naciskania przycisku. Są one dodawane: 4=Shift, 8=Meta, 16=Control. Znowu, x  i  y
       to współrzędne kursora myszy podczas zdarzenia. Górny lewy narożnik to (1,1).

   Porównania z innymi terminalami
       Wiele różnych typów terminali, podobnie jak konsola Linuksa, jest opisywanych jako "zgodne
       z VT100". Poniżej omówiono różnice między konsolą Linuksa i dwoma najważniejszymi  spośród
       innych terminali: DEC VT102 i xterm(1).

       Obsługa znaków sterujących

       VT 102 rozpoznawał też następujące znaki sterujące:

       NUL (0x00)
              było ignorowane;

       ENQ (0x05)
              wywoływało komunikat odpowiadający;

       DC1 (0x11, ^Q, XON)
              wznawiało transmisję;

       DC3 (0x13, ^S, XOFF)
              powodowało, że VT100 ignorował (i przestawał transmitować) wszystkie kody poza XOFF
              i XON.

       Przetwarzanie DC1/DC3 tego rodzaju, jakie było w VT100 może być włączone  przez  sterownik
       terminala.

       Program  xterm(1) (w trybie VT100) rozpoznaje znaki sterujące BEL, BS, HT, LF, VT, FF, CR,
       SO, SI, ESC.

       Sekwencje specjalne

       Sekwencje VT100 nie implementowane przez konsolę Linuksa:

       ESC N       SS2   Pojedyncze  przesunięcie  2.   (Wybranie
                         zestawu  znaków  G2 tylko dla następnego
                         znaku).
       ESC O       SS3   Pojedyncze  przesunięcie  3.   (Wybranie
                         zestawu  znaków  G3 tylko dla następnego
                         znaku).
       ESC P       DCS   Łańcuch kontrolny urządzenia (zakończony
                         ESC \)
       ESC X       SOS   Początek łańcucha.
       ESC ^       PM    Komunikat prywatności (zakończony ESC \)
       ESC \       ST    Zakończenie łańcucha
       ESC * ...         Wyznaczenie zestawu znaków G2
       ESC + ...         Wyznaczenie zestawu znaków G3

       Program  xterm(1)  (w trybie VT100) rozpoznaje ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E,
       ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \, ESC Z (daje odpowiedź  ESC  [  ?  1  ;  2  c,
       "Jestem VT100 z rozszerzoną opcją grafiki") i ESC ^ ... ESC \ o takich samych znaczeniach,
       jak opisano powyżej.  Przyjmuje ESC (, ESC ), ESC *, ESC + , po których następuje 0, A, B,
       odpowiednio dla specjalnego zestawu znaków DEC i zbioru rysowania linii, UK oraz US-ASCII.

       Użytkownik może skonfigurować xterm(1) tak, żeby odpowiadał używając sekwencji kontrolnych
       specyficznych dla VT220. Może  identyfikować  siebie  jako  VT52,  VT100  i  większe  —  w
       zależności od tego, jak jest skonfigurowany i zainicjowany.

       Zezwala  na  ustawienie pewnych zasobów za pomocą ESC ] (OSC). Oprócz znaku końca łańcucha
       znaków (ST) z ECMA-48, xterm(1) akceptuje także BEL do zakończenia  łańcucha  znaków  OSC.
       xterm(1) rozpoznaje kilka następujących sekwencji sterujących:

       ESC ] 0 ; txt ST        Ustawienie nazwy ikony i tytułu okna na txt.
       ESC ] 1 ; txt ST        Ustawienie nazwy ikony na txt.
       ESC ] 2 ; txt ST        Ustawienie tytułu 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
                               wyłączone przez opcję kompilacji).
       ESC ] 5 0 ; fn ST       Ustawienie czcionki na fn.

       Rozpoznaje następujące, z  nieznacznie  zmienionym  znaczeniem  (zapisuje  więcej  stanów,
       zachowanie jest bliższe do VT100/VT220):

       ESC 7  DECSC   Zachowanie kursora
       ESC 8  DECRC   Odtworzenie kursora

       Podobnie, rozpoznaje również

       ESC F          Kursor  do  dolnego  lewego  narożnika  ekranu  (o ile włączone przez zasób
                      hpLowerleftBugCompat programu xterm(1)).
       ESC l          Blokowanie pamięci (dla terminali HP).
                      Blokuje pamięć ponad kursorem.
       ESC m          Odblokowanie pamięci (dla terminali HP).
       ESC n   LS2    Wywołanie zestawu znaków G2.
       ESC o   LS3    Wywołanie zestawu znaków G3.
       ESC |   LS3R   Wywołanie zestawu znaków G3 jako GR.
                      W xtermie jest to bez widocznego efektu.
       ESC }   LS2R   Wywołanie zestawu znaków G2 jako GR.
                      W xtermie jest to bez widocznego efektu.
       ESC ~   LS1R   Wywołanie zestawu znaków G1 jako GR.

       Rozpoznaje także sekwencje ESC % i dostarcza bardziej kompletnej implementacji  UTF-8  niż
       konsola  linuksowa.

       Sekwencje CSI

       Stare wersje programu xterm(1), na przykład wersja z X11R5, interpretują migający SGR jako
       pogrubiony SGR. Późniejsze wersje, w których zaimplementowano  obsługę  kolorów  ANSI,  na
       przykład  XFree86 3.1.2A z 1995r., pozwalały na wyświetlanie atrybutu migania jako koloru.
       Nowoczesne wersje xterm(1) implementują  migający  SGR  jako  migający  tekst,  ale  wciąż
       pozwalają na alternatywne wyświetlanie tego atrybutu jako kolor. Oryginalne wersje z X11R6
       nie rozpoznawały SGR-a ustawiającego kolor aż do wydania X11R6.8,  które  zawierało  xterm
       pochodzący  z XFree86. Wszystkie sekwencje ECMA-48 CSI rozpoznawane przez Linuksa są także
       rozpoznawane przez xterm,  jednakże  xterm(1)  implementuje  kilka  sekwencji  sterujących
       ECMA-48 i DEC, których Linux  nie rozpoznaje.

       Program xterm(1) rozpoznaje wszystkie opisane powyżej sekwencje trybu prywatnego DEC, lecz
       nie rozpoznaje żadnej z  prywatnych  sekwencji  Linuksa.  Omówienie  sekwencji  prywatnych
       programu  xterm(1)  znajduje  się  w  dokumencie  Xterm Control Sequences, napisanym przez
       Edwarda Moya i Stephena Gildea'a i Thomasa E. Dickeya dostępnym w dystrybucji X.  Dokument
       ten,  choć  zwięzły,  jest  o  wiele  dłuższy niż ta strona podręcznika. Po wprowadzenie w
       porządku chronologicznym, patrz

              ⟨http://invisible-island.net/xterm/xterm.log.html⟩

       szczegóły zmian w xtermie

       Program vttesthttp://invisible-island.net/vttest/⟩

       obrazuje wiele z powyższych sekwencji sterujących.  Archiwum  źródłowe  programu  xterm(1)
       także zawiera przykładowe skrypty, pokazujące również inne właściwości.

UWAGI

       ESC 8 (DECRC) nie potrafi odtworzyć zestawu znaków zmienionego przez ESC %.

USTERKI

       W Linuksie 2.0.23 CSI jest zepsute, a NUL nie jest ignorowany w sekwencjach specjalnych.

       Niektóre starsze wersje jądra (po Linuksie 2.0) interpretują 8-bitowe sekwencje sterujące.
       Te „kontrolki C1” używają kodów pomiędzy 128 i 159, zastępując nimi ESC [, ESC ] i podobne
       początki  sekwencji  sterujących. W nowoczesnych jądrach zostały tylko pozostałości po tej
       funkcjonalności (albo je przeoczono, albo popsuto, implementując zmiany związane z obsługą
       UTF-8), jednakże ich implementacja jest niekompletna i nie należy na niej polegać.

       Sekwencje „prywatnego trybu” Linuksa nie przestrzegają reguł ECMA-48 dotyczących sekwencji
       sterujących trybu prywatnego. W szczególności sekwencje kończące się znakiem ] nie używają
       standardowego   znaku   kończącego   sekwencję.  Większym  problemem  jest  sekwencja  OSC
       (ustawienie palety), ponieważ xterm(1) może  interpretować  ją  jako  sekwencję  sterującą
       wymagającą  znaku  zakończenia  łańcucha  znaków  (ST).  W  przeciwieństwie  do  sekwencji
       generowanych przez  setterm(1),  które  zostaną  zignorowane  (ponieważ  są  niepoprawne),
       sekwencja  ustawienia  palety  spowoduje, że xterm(1) będzie się zachowywał tak, jakby się
       zawiesił (naciśnięcie klawisza return go odblokuje). Aby  aplikacje, w których na  sztywno
       zaimplementowano   obsługę  linuksowych  sekwencji  sterujących,  działały  poprawnie  pod
       xterm-em, należy ustawić zasób brokenLinuxOSC programu xterm na „true”.

       Wcześniejsza wersja tego dokumentu sugerowała, że  Linux  rozpoznaje  sekwencje  kontrolne
       ECMA-48 dla niewidocznego tekstu. Są one ignorowane.

ZOBACZ TAKŻE

       ioctl_console(2), charsets(7)

TŁUMACZENIE

       Autorami   polskiego   tłumaczenia   niniejszej   strony  podręcznika  są:  Przemek  Borys
       <pborys@dione.ids.pl>,   Robert    Luberda    <robert@debian.org>    i    Michał    Kułach
       <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją. Bliższe informacje o warunkach licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   lub   nowszej.   Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.