CONSOLE_CODES(4)

BEZEICHNUNG
console_codes - Steuer- und Escape-(Maskier-)Sequenzen für die Linux-Konsole

BESCHREIBUNG
Die Linux-Konsole implementiert eine große Teilmenge der Steuersequenzen des VT102 und nach ECMA-48/ISO 6429/ANSI X3.64 sowie bestimmte interne (private-mode) Sequenzen für die Änderung der Farbpalette, die Abbildung/Zuordnung von Zeichensätzen usw. In den folgenden tabellarischen Beschreibungen enthält die zweite Spalte ECMA-48- oder DEC-Kürzel (letztere sind ggfs. mit dem Präfix DEC versehen) für die angegebene Funktion. Sequenzen ohne ein Kürzel gehören weder zu ECMA-48 noch VT102.

Nachdem die gesamte normale Bearbeitung der Ausgabe abgeschlossen ist und ein Zeichenstrom den für die Druckausgabe zuständigen Konsolentreiber erreicht, ist der erste Bearbeitungsschritt die Umcodierung der Zeichen in den für die Druckausgabe verwendeten Zeichensatz.

Wenn sich die Konsole im UTF-8-Modus befindet, werden die eingehenden Bytes zunächst in 16-Bit-Unicode-Codes umgewandelt. Ansonsten wird jedes Byte gemäß der aktuellen Zuordnungstabelle (die die Bytes in Unicode-Werte übersetzt) transformiert. Das wird im folgenden Abschnitt Zeichensätze diskutiert.

Im Normalfall wird der Unicode-Wert in eine Schrift-Index umgewandelt und dieser im Video-Speicher abgelegt, so dass der entsprechende Glyph (wie er im Video-ROM enthalten ist) auf dem Bildschirm erscheint. Beachten Sie, dass die Verwendung von Unicode (und die Gestaltung der PC-Hardware) die gleichzeitige Nutzung von 512 verschiedenen Glyphen ermöglicht.

Wenn der aktuelle Unicode-Wert ein Steuerzeichen ist oder gerade eine Escape-Sequenz verarbeitet wird, wird der Wert speziell behandelt. Anstatt in einen Schrift-Index umgewandelt und als Glyph angezeigt zu werden, kann er Cursor-Bewegungen oder andere Steuerfunktionen auslösen. Das wird im Abschnitt Steuersequenzen für die Linux-Konsole diskutiert.

Grundsätzlich ist es nicht ratsam, Terminal-Steuersequenzen in Programmen fest zu kodieren. Linux unterstützt eine terminfo(5)-Datenbank von Terminal-Fähigkeiten. Anstatt manuell Escape-Sequenzen für die Konsole einzugeben, werden Sie fast immer eine Bildschirmbibliothek oder ein Dienstprogramm einsetzen wollen, welche die terminfo(5)-Datenbank auswerten können. Beispiele sind ncurses(3), tput(1) oder reset(1).

  Steuersequenzen für die Linux-Konsole
Dieser Abschnitt beschreibt alle Steuerzeichen und Escape-Sequenzen, die spezielle Funktionen (also etwas anderes als das Schreiben eines Glyphen an der aktuellen Cursor-Position) auf der Linux-Konsole aufrufen.

Steuerzeichen

Ein Steuerzeichen trägt (vor der Umwandlung gemäß der Zuordnungstabelle) einen der 14 Codes 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). Sie können einen »Steuerzeichen-anzeigen«-Modus festlegen (siehe unten) und 07, 09, 0b, 18, 1a, 7f als Zeichen anzeigen lassen. Trotzdem werden im UTF-8-Modus, unabhängig vom »Steuerzeichen-anzeigen«-Modus, alle Codes zwischen 00 und 1f als Steuerzeichen betrachtet.

Auf ein Steuerzeichen wird unverzüglich (auch in der Mitte eine Escape-Sequenz) reagiert, es anschließend verworfen und die Escape-Sequenz am nächsten Zeichen weiter bearbeitet. (Allerdings beginnt mit ESC eine neue Escape-Sequenz, die möglicherweise eine frühere unvollendete abbricht. CAN und SUB brechen jede Escape-Sequenz ab.) Die anerkannten Steuerzeichen sind BEL, BS, HT, LF, VT, FF, CR, SO, SI, CAN, SUB, ESC, DEL, CSI. Sie tun, was man erwarten würde:

BEL (0x07, ^G) gibt einen Signalton.

BS (0x08, ^H) setzt den Cursor um ein Zeichen (eine Spalte) zurück (bleibt aber auf der gleichen Zeile).

HT (0x09, ^I) geht zum nächsten Tabulator oder zum Ende der Zeile, wenn es davor keinen Tabulator mehr gibt.

LF (0x0A, ^J), VT (0x0B, ^K) und FF (0x0C, ^L) bewirken allesamt einen Zeilenvorschub. Ist der LF/NL-Modus (new-line) gesetzt, wird außerdem ein Wagenrücklauf ausgelöst.

CR (0x0D, ^M) bewirkt einen Wagenrücklauf.

SO (0x0E, ^N) aktiviert den G1-Zeichensatz.

SI (0x0F, ^O) aktiviert den G0-Zeichensatz.

CAN (0x18, ^X) und SUB (0x1A, ^Z) unterbrechen Escape-Sequenzen.

ESC (0x1B, ^[) leitet eine Escape-Sequenz ein.

DEL (0x7F) wird ignoriert.

CSI (0x9B) ist äquivalent zu ESC [.

Escape-Sequenzen, die keine Steuersequenzen einleiten
ESC c | RIS | Reset.
ESC D | IND | Zeilenvorschub
ESC E | NEL | Zeilenumbruch
ESC H | HTS | Tabulatorstop auf die aktuelle Spalte setzen
ESC M | RI | Zeilenvorschub rückgängig machen
ESC Z | DECID | DEC-private Identifizierung. Der Kernel liefert die Zeichenkette ESC [ ? 6 c zurück, die behauptet, dass es ein VT102 sei.
ESC 7 | DECSC | Aktuellen Zustand speichern (Cursor-Koordinaten, Attribute und die Zeichensätze, auf die G0 und G1 weisen).
ESC 8 | DECRC | Stellt den zuletzt mittels ESC 7 gespeicherten Zustand wieder her.
ESC [ | CSI | Einleitung einer Steuersequenz
ESC % |  | Startsequenz zur Auswahl eines Zeichensatzes
ESC % @ |  | Wählt den Standard (ISO 646 / ISO 8859-1)
ESC % G |  | Wählt UTF-8
ESC % 8 |  | Wählt UTF-8 (obsolet)
ESC # 8 | DECALN | DEC-Bildschirmausrichtungs-Prüfung - füllt den Bildschirm mit Es.
ESC ( |  | Startsequenz, die den G0-Zeichensatz definiert
ESC ( B |  | Standard auswählen (ISO-8859-1-Zuordnung)
ESC ( 0 |  | VT100-Graphik-Zuordnung auswählen
ESC ( U |  | Leere Zuordnung auswählen - direkt zum Zeichen-ROM
ESC ( K |  | Benutzerdefinierte Zuordnung auswählen - die Zuordnung, die durch das
 |  | Hilfswerkzeug mapscrn(8) geladen wird.
ESC ) |  | Startsequenz, die G1 definiert
 |  | (gefolgt von einen aus B, 0, U, K, wie oben).
ESC > | DECPNM | Numerischen Tastenfeldmodus setzen
ESC = | DECPAM | Anwendungstastenfeldmodus setzen
ESC ] | OSC | (Sollte ein Betriebssystembefehl sein) ESC ] P nrrggbb: Setzt die Palette, wobei die Parameter in 7 hexadezimalen Ziffern nach dem abschließenden P angegeben werden :-(. Hier ist n die Farbe (0-15) und rrggbb zeigt die Rot-/Grün-/Blauwerte (0-255) an. ESC ] R: Palette zurücksetzen

ECMA-48-CSI-Sequenzen

CSI (or ESC [) wird von einer Folge (höchstens NPAR (16)) von Parametern gefolgt, die durch Semikola getrennte Dezimalzahlen sind. Ein leerer oder nicht vorhandener Parameter wird als 0 angenommen. Der Folge von Parametern kann ein Fragezeichen vorangestellt werden.

Allerdings wird nach CSI [ (oder ESC [ [) ein einzelnes Zeichen gelesen und die gesamte Sequenz ignoriert. (Die Idee ist, eine wiedergegebene Funktionstaste zu ignorieren.)

Die Aktion einer CSI-Sequenz wird über ihr abschließendes Zeichen bestimmt.
@ | ICH | Die angegebene Anzahl von Leerzeichen einfügen.
A | CUU | Cursor die angegebene Anzahl an Zeilen nach oben bewegen.
B | CUD | Cursor die angegebene Anzahl an Zeilen nach unten bewegen.
C | CUF | Cursor die angegebene Anzahl an Spalten nach rechts bewegen.
D | CUB | Cursor die angegebene Anzahl an Spalten nach links bewegen.
E | CNL | Cursor die angegebene Anzahl an Zeilen nach unten bewegen, in Spalte 1.
F | CPL | Cursor die angegebene Anzahl an Zeilen nach oben bewegen, in Spalte 1.
G | CHA | Cursor an die angegebene Spalte in der aktuellen Zeile bewegen.
H | CUP | Cursor an die angegebene Zeile und Spalte bewegen (Ursprung bei 1,1).
J | ED | Anzeige löschen (Vorgabe: vom Cursor bis zum Ende der Anzeige).
 |  | ESC [ 1 J: Vom Beginn bis zum Cursor löschen.
 |  | ESC [ 2 J: Ganze Anzeige löschen.
 |  | ESC [ 3 J: ganzen Bildschirm löschen, auch Rückrollpuffer
 |  | (seit Linux 3.0).
K | EL | Zeile löschen (Vorgabe: vom Cursor bis zum Zeilenende).
 |  | ESC [ 1 K: Vom Beginn der Zeile bis zum Cursor löschen.
 |  | ESC [ 2 K: Ganze Zeile löschen.
L | IL | Die angegebene Anzahl an Leerzeilen einfügen.
M | DL | Die angegebene Anzahl an Zeilen löschen.
P | DCH | Die angegebene Anzahl an Zeichen auf der aktuellen Zeile löschen.
X | ECH | Die angegebene Anzahl von Zeichen auf der aktuellen Zeile löschen.
a | HPR | Cursor die angegebene Anzahl an Spalten nach rechts bewegen.
c | DA | ESC [ ? 6 c: »I am a VT102« antworten.
d | VPA | Cursor zu der angegebene Zeile, aktuelle Spalte, bewegen
e | VPR | Cursor die angegebene Anzahl an Zeilen nach unten bewegen.
f | HVP | Cursor zu der angegebenen Zeile,Spalte bewegen.
g | TBC | Ohne Parameter: Tabulator an der aktuellen Position löschen.
 |  | ESC [ 3 g: alle Tabulatoren löschen.
h | SM | Modus setzen (siehe unten).
l | RM | Modus zurücksetzen (siehe unten).
m | SGR | Attribute setzen (siehe unten).
n | DSR | Statusbericht (siehe unten).
q | DECLL | Tastatur-LEDs setzen.
 |  | ESC [ 0 q: Alle LEDs löschen.
 |  | ESC [ 1 q: Rollen-LED setzen
 |  | ESC [ 2 q: Num-LED setzen
 |  | ESC [ 3 q: Feststelltasten-LED setzen
r | DECSTBM | Region zum Rollen setzen; Parameter sind obere und untere Zeile.
s | ? | Cursor-Position speichern.
u | ? | Cursor-Position wiederherstellen.
` | HPA | Cursor an die angegebene Spalte in der aktuellen Zeile bewegen.

ECMA-48 Setzt Graphikwiedergabe

Die ECMA-48-SGR-Sequenz ESC [ Parameter m setzt die Anzeigeattribute. Es können mehrere durch Semikola getrennte Attribute in der gleichen Sequenz gesetzt werden. Ein leerer Parameter (zwischen Semikola oder Zeichenketteneinleitungs- und -beendigungszeichen) wird als Null interpretiert.
Param | Ergebnis
0 | Alle Attribute auf ihre Standardwerte zurücksetzen
1 | Fett setzen
2 | Halb-hell setzen (auf einer Farbanzeige mit Farben simuliert)
4 | unterstreichen setzen (auf einer Farbanzeige mit Farben simuliert) (die zur Simulation der Abdunklung oder des Unterstreichens verwandten Farben werden mittels ESC ] … gesetzt)
5 | Blinken setzen
7 | inverse Anzeige setzen
10 | ausgewählte Zuordnung zurücksetzen, Bildschirmsteuerschalter anzeigen und Metaschalter umschalten (ECMA-48 sagt »primary font« (Hauptschrift)).
11 | Null-Zuordnung auswählen, Bildschirmsteuerschalter setzen, Metaschalter-Umschalter zurücksetzen (ECMA-48 sagt »first alternate font« (erste alternative Schrift)).
12 | Null-Zuordnung auswählen, Bildschirmsteuerschalter setzen, Metaschalter-Umschalter setzen (ECMA-48 sagt »second alternate font« (zweite alternative Schrift)). Der Metaschalter-Umschalter führt dazu, dass das hohe Bit eines Bytes umgeschaltet wird, bevor die Übersetzung der Zuordnungstabelle durchgeführt wird.
21 | Setzt normale Intensität (ECMA-48 sagt »doppelt unterstrichen«)
22 | Setzt normale Intensität
24 | Unterstreichen aus
25 | Blinken aus
27 | inverse Anzeige aus
30 | Schwarzen Vordergrund setzen
31 | Roten Vordergrund setzen
32 | Grünen Vordergrund setzen
33 | Braunen Vordergrund setzen
34 | Blauen Vordergrund setzen
35 | Violetten Vordergrund setzen
36 | zyanen Vordergrund setzen
37 | Weißen Vordergrund setzen
38 | Unterstreichen einschalten, Standard-Vordergrundfarbe setzen
39 | Unterstreichen ausschalten, Standard-Vordergrundfarbe setzen
40 | Schwarzen Hintergrund setzen
41 | Roten Hintergrund setzen
42 | Grünen Hintergrund setzen
43 | Braunen Hintergrund setzen
44 | Blauen Hintergrund setzen
45 | Violetten Hintergrund setzen
46 | zyanen Hintergrund setzen
47 | Weißen Hintergrund setzen
49 | Standardhintergrundfarbe setzen

ECMA-48-Modus-Schalter

ESC [ 3 h
    DECCRM (Standardmäßig aus): Steuerzeichen anzeigen.

ESC [ 4 h
    DECIM (Standardmäßig aus): Einfügemodus setzen.

ESC [ 20 h
    LF/NL (standardmäßig aus): Automatisch Ausgabe von LF, VT oder FF mit CR folgen.

ECMA-48-Statusberichtsbefehle

ESC [ 5 n
    Gerät-Statusbericht (DS): Antwort ist ESC [ 0 n (Terminal i.O.).

ESC [ 6 n
    Cursor-Positionsbericht (CPR): Antwort ist ESC [ y ; x R, wobei x,y die Cursor-Position ist.

Sequenzen des DEC-Private-Mode (DECSET/DECRST)

Diese werden nicht in ECMA-48 beschrieben. Es werden die Modus-Setz-Sequenzen aufgeführt, die Modus-Zurücksetz-Sequenzen können ermittelt werden, indem das abschließende »h« durch ein »l« ersetzt wird.

ESC [ ? 1 h
    DECCKM (standardmäßig aus): Wenn gesetzt, senden die Cursor-Tasten statt ESC [ die Vorsequenz ESC O.

ESC [ ? 3 h
    DECCOLM (standardmäßig aus = 80 Spalten): 80/132-Spalten-Modus-Umschaltung. Die Treiberquellen merken an, dass dies alleine nicht reicht, Hilfsprogramme wie resizecons(8) haben die Hardware-Register auf der Konsole der Video-Karte zu ändern.

ESC [ ? 5 h
    DECSCNM (standardmäßig aus): Inversen Videomodus setzen.

ESC [ ? 6 h
    DECOM (standardmäßig aus): Wenn gesetzt, erfolgt die Adressierung des Cursors relativ zur oberen linken Ecke der Rollen-Region.

ESC [ ? 7 h
    DECAWM (standardmäßig ein): Schaltet automatischen Zeilenumbruch ein. In diesem Modus wird ein Graphikzeichen, das nach Spalte 80 ausgegeben wird (oder Spalte 132, falls DECCOLM an ist) zuerst einen Umbruch auf den Anfang der folgenden Zeile erzwingen.

ESC [ ? 8 h
    DECARM (standardmäßig ein): Schaltet Tastatur-Autowiederholung ein.

ESC [ ? 9 h
    X10-Mausberichtserstattung (standardmäßig aus): Berichtsmodus auf 1 setzen (oder auf 0 zurücksetzen) – siehe unten.

ESC [ ? 25 h
    DECTECM (standardmäßig ein): Macht Cursor sichtbar.

ESC [ ? 1000 h
    X11-Mausberichtserstattung (standardmäßig aus): Berichtsmodus auf 2 setzen (oder auf 0 zurücksetzen) – siehe unten.

Private CSI-Sequenzen der Linux-Konsole

Die folgenden Sequenzen sind weder ECMA-48 noch native VT102. Sie sind für den Linux-Konsolentreiber nativ. Farben sind in SGR-Parametern: 0 = schwarz, 1 = rot, 2 = grün, 3 = braun, 4 = blau, 5 = magenta, 6 = zyan, 7 = weiss; 8-15 = helle Versionen von 0-7.
ESC [ 1 ; n ] | Farbe n als Unterstreichfarbe setzen.
ESC [ 2 ; n ] | Farbe n als Abdunklungsfarbe setzen
ESC [ 8 ] | Das aktuelle Farbpaar als Standardattribute setzen.
ESC [ 9 ; n ] | Bildabschaltzeitüberschreitung auf n Minuten setzen.
ESC [ 10 ; n ] | Glockentonfrequenz in Hz setzen.
ESC [ 11 ; n ] | Glockendauer in ms setzen.
ESC [ 12 ; n ] | Bringt die angegebene Konsole nach vorne.
ESC [ 13 ] | Bildabschaltung aufheben.
ESC [ 14 ; n ] | Setzt das VESA-Energiesparzeitinterval in Minuten.
ESC [ 15 ] | Bringt die vorhergehende Konsole nach vorne. (Seit Linux 2.6.0).
ESC [ 16 ; n ] | Setzt das Cursor-Blinkintervall in Millisekunden (seit Linux 4.2).

  Zeichensätze
Der Kernel kennt 4 Übersetzungen von Bytes in Konsolen-Bildschirmsymbole. Die vier Tabellen sind: a) Latin1 -> PC, b) VT100-Graphik -> PC, c) PC -> PC, d) benutzerdefiniert.

Es gibt zwei Zeichensätze, genannt G0 und G1, und einer der beiden ist der aktuelle Zeichensatz (am Anfang G0). Durch Eingabe von ^N wird G1 der aktuelle, durch ^O wird G0 der aktuelle.

Diese Variablen G0 und G1 zeigen auf eine Übersetzungstabelle und können durch den Benutzer geändert werden. Ursprünglich zeigen Sie auf die Tabellen a) und b). Die Sequenz ESC ( B und ESC ( 0 und ESC ( U und ESC ( K führen dazu, dass G0 auf die Übersetzungstabelle a), b), c) respektive d) zeigt. Die Sequenz ESC ) B u ESC ) 0 und ESC ) U und ESC ) K führen dazu, dass G1 auf die Übersetzungstabelle a), b), c) respektive d) zeigt.

Die Sequenz ESC c führt dazu, dass das Terminal zurückgesetzt wird. Dies möchten Sie, falls der Bildschirm verstümmelt ist. Der häufige Vorschlag »echo ^V^O« macht nur G0 aktuell, es gibt aber keine Garantie, dass G0 auf Tabelle a) zeigt. Manche Distributionen enthalten ein Programm reset(1), das nur »echo ^[c« ausführt. Falls Ihr Terminfo-Eintrag für die Konsole korrekt ist (und einen Eintrag rs1=\Ec hat), dann wird auch »tput reset« funktionieren.

Die benutzerdefinierte Zuordnungstabelle kann mittels mapscrn(8) gesetzt werden. Das Ergebnis der Zuordnung ist, dass das Symbol s = Zuord[c] an den Videospeicher gesandt wird, wenn das Symbol c ausgegeben wird. Das Bitmap, das dem s entspricht, wird im Zeichensatz-ROM gefunden und kann mittels setfont(8) geändert werden.

  Maus-Nachverfolgung
Die Maus-Nachverfolgungseinrichtung ist dazu gedacht, xterm(1)-kompatible Maus-Statusberichte zurückzuliefern. Da der Konsolentreiber keine Möglichkeit hat, das Gerät oder die Art der Maus zu kennen, werden diese Berichte nur im Konsoleneingabe-Stream zurückgeliefert, wenn der virtuelle Terminaltreiber ein Maus-Aktualisierungs-Ioctl empfängt. Diese Ioctls müssen durch eine Maus-bewusste Benutzeranwendung wie der Daemon gpm(8) erzeugt werden.

Die durch xterm(1) erstellten Maus-Nachverfolgungs-Escape-Sequenzen kodieren numerische Parameter in einem einzelnen Zeichen als Wert+040. Beispielsweise ist »!« 1. Das Bildschirmkoordinatensystem ist 1-basiert.

Der X10-Kompatibilitätsmodus sendet Escape-Sequenzen beim Knopfdruck und kodiert den Ort und den gedrückten Mausknopf. Er wird durch Senden von ESC [ ? 9 h aktiviert und durch ESC [ ? 9 l deaktiviert. Beim Knopfdruck sendet xterm(1) ESC [ M bxy (6 Zeichen). Hier ist b Knopf-1 und x und y sind die X- und Y-Koordinaten der Maus, als der Knopf gedrückt wurde. Dies ist der gleiche Code, wie ihn auch der Kernel erstellt.

Normaler Nachverfolgungsmodus (nicht in Linux 2.0.24 implementiert) sendet eine Escape-Sequenz sowohl beim Druck als auch beim Loslassen des Knopfes. Informationen über Änderungstasten werden auch gesandt. Er wird durch Senden von ESC [ ? 1000 h aktiviert und durch ESC [ ? 1000 l deaktiviert. Beim Drücken oder Loslassen eines Knopfes sendet xterm(1) ESC [ M bxy. Die niedrigen zwei Bits von b kodieren die Knopfinformationen: 0=Mk1 gedrückt, 1=Mk2 gedrückt, 2=Mk3 gedrückt, 3=losgelassen. Die oberen Bits kodieren, welche Änderungstasten unten waren, als der Knopf gedrückt wurde und werden aufaddiert: 4=Umschalt, 8=Meta, 16=Strg. Wieder sind x und y die X- und Y-Koordinate des Mausereignisses. Die obere linke Ecke ist (1,1).

  Vergleich mit anderen Terminals
Viele verschiedene Terminaltypen wie die Linux-Konsole werden als »VT100-kompatibel« beschrieben. Hier werden die Unterschiede zwischen der Linux-Konsole und den zwei anderen wichtigsten, der DEC VT102 and xterm(1), beschrieben.

Umgang mit Steuerzeichen

Das VT102 erkennt auch die folgenden Steuerzeichen:

NUL (0x00) wurde ignoriert;

ENQ (0x05) löste eine Rückantwortnachricht aus;

DC1 (0x11, ^Q, XON) Übertragung fortfahren;

DC3 (0x13, ^S, XOFF) führt dazu, dass VT100 alle Codes außer XOFF und XON ignoriert (und deren Übertragung beendet).

VT100-artige DC1/DC3-Verarbeitung kann durch den Terminal-Treiber aktiviert sein.

Das Programm xterm(1) erkennt (im VT100-Modus) die Steuerzeichen BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC.

Escape-Sequenzen

VT100-Konsolesequenzen sind in der Linux-Konsole nicht implementiert:
ESC N | SS2 | Einfache Umschaltung 2. (Wählt den G2-Zeichensatz nur für das
 |  | nächste Zeichen.)
ESC O | SS3 | Einfache Umschaltung 3. (Wählt den G3-Zeichensatz nur für das
 |  | nächste Zeichen.)
ESC P | DCS | Gerätesteuerzeichenkette (wird durch ESC \ beendet)
ESC X | SOS | Beginn der Zeichenkette
ESC ^ | PM | Vertraulichkeitsnachricht (mit ESC \ beendet)
ESC \ | ST | Zeichenkettenendzeichen
ESC * … |  | Bestimmt den G2-Zeichensatz
ESC + … |  | Bestimmt den G3-Zeichensatz

Das Programm xterm(1) erkennt (im VT100-Modus) ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P … ESC \, ESC Z (es beantwortet ESC [ ? 1 ; 2 c mit »I am a VT100 with advanced video option«) und ESC ^ … ESC \ mit den gleichen Bedeutungen wie oben angezeigt. Es akzeptiert ESC (, ESC ), ESC *, ESC + gefolgt von 0, A, B für die DEC-Spezialzeichen und der Linienzeichenmenge, UK- und US-ASCII, respektive.

Der Benutzer kann xterm(1) konfigurieren, auf VT220-spezifische Steuersequenzen zu reagieren und es wird sich selbst als VT52, VT100 und höher identifizieren, abhängig von der Art der Konfiguration und Initialisierung.

Es akzeptiert ESC ] (OSC) für das Setzen bestimmter Ressourcen. Zusätzlich zu dem ECMA-48-Zeichenkettenabschlusszeichen (ST) akzeptiert xterm(1) ein BEL, um eine OSC-Zeichenkette abzuschließen. Es gibt einige weitere OSC-Steuersequenzen, die von xterm(1) erkannt werden:
ESC ] 0 ; txt ST | Icon-Name und Fenstertitel auf txt setzen.
ESC ] 1 ; txt ST | Icon-Name auf txt setzen.
ESC ] 2 ; txt ST | Fenstertitel auf txt setzen.
ESC ] 4 ; num; txt ST | ANSI-Farbe num auf txt setzen.
ESC ] 10 ; txt ST | Dynamische Textfarbe auf txt setzen.
ESC ] 4 6 ; name ST | Ändert Protokollierdatei auf name (normnalerweise
 | durch eine Kompilieroption deaktiviert)
ESC ] 5 0 ; fn ST | Schrift auf fn setzen.

Es erkennt die folgenden mit leicht veränderter Bedeutung (mehr Zustand wird gesichert, Verhalten näher an VT100/VT220):
ESC 7 DECSC | Cursor speichern
ESC 8 DECRC | Cursor wiederherstellen

Sie erkennt auch
ESC F |  | Cursor auf untere linke Ecke des Bildschirms (falls durch
 |  | xterm(1)s hpLowerleftBugCompat-Ressource aktiviert)
ESC l |  | Speicher-Sperre (für HP-Terminals).
 |  | Sperrt Speicher oberhalb des Cursors.
ESC m |  | Speicher entsperren (für HP-Terminals).
ESC n | LS2 | Aktiviert den Zeichensatz G2.
ESC o | LS3 | Aktiviert den Zeichensatz G3.
ESC | | LS3R | Aktiviert den Zeichensatz G3 als GR.
ESC } | LS2R | Aktiviert den Zeichensatz G2 als GR.
ESC ~ | LS1R | Aktiviert den Zeichensatz G1 als GR.

Es erkennt auch ESC % und stellt eine komplettere UTF-8-Implementierung auf der Linux-Konsole bereit.

CSI-Sequenzen

Alte Versionen von xterm(1), beispielsweise aus X11R5, interpretierten das Blinken-SGR als fettes SGR. Neuere Versionen, die ANSI-Farben implementierten, beispielsweise 1995 XFree86 3.1.2A, verbesserten dies, indem sie es erlaubten, das Blink-Attribut als Farbe darzustellen. Moderne Versionen von Xterm implementieren Blinken-SGR als blinkender Text und erlauben weiterhin die Darstellung von farbigem Text als alternative Darstellung von SGRs. Unveränderte X11R5-Versionen erkannten die Farbeinstellungs-SGR bis zur Veröffentlichung X11R6.8, das das Xterm aus XFree86 aufnahm, nicht. Alle durch Linux erkannten ECMA-48-CSI-Sequenzen werden auch von xterm erkannt, allerdings implementiert xterm(1) eine Reihe von ECMA-48- und DEC-Steuersequenzen, die von Linux nicht erkannt werden.

Das Programm xterm(1) erkennt sämtliche der oben aufgeführten Privaten-Modus-DEC-Sequenzen, aber keine der Privaten-Modus-Linux-Sequenzen. Für eine Diskussion der xterm(1) eigenen Privaten-Modus-Sequenzen lesen Sie das Dokument Xterm Control Sequences von Edward Moy, Stephen Gildea und Thomas E. Dickey, verfügbar mit der X-Distribution. Dieses Dokument, obwohl sehr knapp, ist viel länger als diese Handbuchseite. Für einen chronologischen Überblick, gibt

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

Änderungen an Xterm im Detail.

Das Programm vttest

    http://invisible-island.net/vttest/

zeigt viele dieser Steuersequenzen. Die Quelldistribution von xterm(1) enthält auch Beispielskripte, die andere Funktionalitäten ausführen.

ANMERKUNGEN
ESC 8 (DECRC) ist nicht in der Lage, den mit ESC % geänderten Zeichensatz wiederherzustellen.

FEHLER
In 2.0.23 ist CSI defekt und NUL wird innerhalb von Escape-Sequenzen nicht ignoriert.

Einige ältere Kernelversionen (nach 2.0) interpretieren 8-Bit-Steuersequenzen. Dieses »C1-Steuerungen« verwenden Codes zwischen 128 und 159, um ESC [, ESC ] und ähnliche Zweibyte-Steuersequenzstarter zu ersetzen. Davon gibt es in modernen Kerneln noch Fragmente (entweder übersehene oder durch Anpassung an UTF-8 defekte), aber die Implementierung ist unvollständig und sollte als unzuverlässig betrachtet werden.

Die »Privaten-Modus«-Sequenzen von Linux folgen nicht den Regel von ECMA-48 für Privaten-Modus-Steuersequenzen. Insbesondere verwenden die in ] endenden kein Standard-Zeichenkettenendzeichen. Die OSC- (Palettensetz-)Sequenz ist ein größeres Problem, da xterm(1) diese als Steuersequenz interpretieren könnte, die ein Zeichenkettenendzeichen (ST) benötigt. Anders als setterm(1)-Sequenzen, die ignoriert werden (da sie ungültige Steuersequenzen sind), scheinen die Paletten-Sequenzen xterm(1) zum Aufhängen zu bringen (allerdings wird dies durch Drücken der Eingabetaste korrigiert). Um Anwendungen zu berücksichtigen, die die Verwendung von Linux-Steuersequenzen hart einkodiert haben, setzen Sie die Ressource brokenLinuxOSC von xterm(1) auf »true«.

Eine ältere Version dieses Dokuments implizierte, dass Linux die ECMA-48-Steuersequenz für unsichtbaren Text erkannte. Sie wird ignoriert.

SIEHE AUCH
ioctl_console(2), charsets(7)

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 5.03 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.