console_codes - Steuer- und Escape-(Maskier-)Sequenzen für die
Linux-Konsole
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).
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) 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)
- erzeugt einen Wagenrücklauf.
- SO (0x0E, ^N)
- aktiviert den G1-Zeichensatz.
- SI (0x0F, ^O)
- aktiviert den G0-Zeichensatz.
- CAN (0x18, ^X)
- SUB (0x1A, ^Z) bricht Escape-Sequenzen ab.
- ESC (0x1B, ^[)
- leitet eine Escape-Sequenz ein.
- DEL (0x7F)
- wird ignoriert.
- CSI (0x9B)
- ist gleichbedeutend mit 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 % |
|
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 (gefolgt von B, 0, U oder
K, wie unten) |
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 Dienstprogramm mapscrn(8) geladen wird. |
ESC ) |
|
Startsequenz,die G1 definiert (gefolgt von B, 0, U oder K, wie
oben). |
ESC > |
DECPNM |
Numerischen Tastenfeldmodus setzen |
ESC = |
DECPAM |
Anwendungstastenfeldmodus setzen |
ESC ] |
OSC |
Betriebssystembefehl-Präfix |
ESC ] R |
|
setzt die Palette zurück. |
ESC ] P |
|
Setzt die Palette, wobei die Parameter in 7 hexadezimalen Ziffern
nrrggbb 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. |
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 Wählt 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) |
3 |
setzt kursiv (seit Linux 2.6.22; 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 |
Unterstreichen setzen; vor Linux 4.17 setzte dieser Wert normale
Intensität (wie dies auf vielen anderen Terminals erfolgt) |
22 |
Setzt normale Intensität |
23 |
schaltet kursiv aus (seit Linux 2.6.22). |
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 |
256/24-Bit-Vordergrundfarben folgen, gequetscht in 16 Grundlagenfarben
(vor Linux 3.16: schaltet Unterstreichen ein, setzt
Vorgabevordergrundfarbe) |
39 |
Vordergrundfarbe setzen (vor Linux 3.16: schaltet Unterstreichen aus,
setzt Vorgabevordergrundfarbe) |
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 |
48 |
256/24-Bit-Hintergrundfarben folgen, gequetscht in 8
Grundlagenfarben |
49 |
Standardhintergrundfarbe setzen |
90..97 |
Vordergrundfarben zu hellen Versionen von 30..37 setzen |
100..107 |
Hintergrund setzen, identisch zu 40..47 (hell nicht
unterstützt) |
Befehle 38 und 48 benötigen weitere Argumente:
;5;x |
256 Farben: Werte 0..15 sind IBGR (schwarz, rot, grün, …
weiß), 16..231 ist ein 6x6x6-Farbwürfel, 232..255 eine
Graustrufenrampe |
;2;r;g;b |
24-Bit-Farbe, r/g/b-Komponenten sind im Bereich 0..255 |
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). |
. |
|
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.
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).
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)
- fährt mit der Übertragung fort.
- 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 (normalerweise 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 die
hpLowerleftBugCompat-Ressource von xterm(1) 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. |
|
|
Hat im Xterm keinen sichtbaren Effekt. |
ESC } |
LS2R |
Aktiviert den Zeichensatz G2 als GR. |
|
|
Hat im Xterm keinen sichtbaren Effekt. |
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
Änderungen an Xterm im Detail.
Das Programm
vttest
zeigt viele dieser Steuersequenzen. Die Quelldistribution von
xterm(1)
enthält auch Beispielskripte, die andere Funktionalitäten
ausführen.
ESC 8 (DECRC) ist nicht in der Lage, den mit ESC % geänderten Zeichensatz
wiederherzustellen.
In Linux 2.0.23 ist CSI defekt und NUL wird innerhalb von Escape-Sequenzen nicht
ignoriert.
Einige ältere Kernelversionen (nach Linux 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.
ioctl_console(2),
charsets(7)
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard
Schauer <
[email protected]>, Helge Kreutzmann
<
[email protected]> und Mario Blättermann
<
[email protected]> 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 die
Mailingliste
der Übersetzer