Zum Hauptinhalt springen

8. Encoding of Terminal Modes (Kodierung von Terminal-Modi)

8. Encoding of Terminal Modes (Kodierung von Terminal-Modi)

Alle encoded terminal modes (wie in einer pty-Anfrage übergeben) werden in einen Byte-Stream kodiert. Es ist beabsichtigt, dass die Kodierung über verschiedene Umgebungen hinweg portabel ist. Der Stream besteht aus Opcode-Argument-Paaren, wobei der Opcode ein Byte-Wert ist. Opcodes 1 bis 159 haben ein einzelnes uint32-Argument. Opcodes 160 bis 255 sind noch nicht definiert und veranlassen das Parsing zu stoppen (sie sollten nur nach allen anderen Daten verwendet werden). Der Stream wird durch den Opcode TTY_OP_END (0x00) beendet.

Der Client SOLLTE alle Modi, die er kennt, in den Stream einfügen, und der Server DARF alle Modi ignorieren, die er nicht kennt. Dies ermöglicht ein gewisses Maß an Maschinenunabhängigkeit, zumindest zwischen Systemen, die eine POSIX-ähnliche tty-Schnittstelle verwenden. Das Protokoll kann auch andere Systeme unterstützen, aber der Client muss möglicherweise vernünftige Werte für eine Reihe von Parametern ausfüllen, damit das Server-pty in einen vernünftigen Modus versetzt wird (der Server lässt alle nicht spezifizierten Modebits in ihren Standardwerten, und nur einige Kombinationen ergeben Sinn).

Die Benennung der Opcode-Werte folgt größtenteils den POSIX-Terminal-Mode-Flags. Die folgenden Opcode-Werte wurden definiert. Beachten Sie, dass die unten angegebenen Werte zur besseren Lesbarkeit im Dezimalformat angegeben sind, es sich jedoch tatsächlich um Byte-Werte handelt.

opcodemnemonicdescription
0TTY_OP_ENDZeigt das Ende der Optionen an.
1VINTRInterrupt-Zeichen; 255 wenn keins. Ähnlich für die anderen Zeichen. Nicht alle diese Zeichen werden auf allen Systemen unterstützt.
2VQUITDas Quit-Zeichen (sendet SIGQUIT-Signal auf POSIX-Systemen).
3VERASELöscht das Zeichen links vom Cursor.
4VKILLTötet die aktuelle Eingabezeile.
5VEOFEnd-of-file-Zeichen (sendet EOF vom Terminal).
6VEOLEnd-of-line-Zeichen zusätzlich zu Carriage Return und/oder Linefeed.
7VEOL2Zusätzliches End-of-line-Zeichen.
8VSTARTSetzt pausierte Ausgabe fort (normalerweise Control-Q).
9VSTOPPausiert Ausgabe (normalerweise Control-S).
10VSUSPSuspendiert das aktuelle Programm.
11VDSUSPEin weiteres Suspend-Zeichen.
12VREPRINTDruckt die aktuelle Eingabezeile neu.
13VWERASELöscht ein Wort links vom Cursor.
14VLNEXTGibt das nächste eingegebene Zeichen wörtlich ein, auch wenn es ein Sonderzeichen ist
15VFLUSHZeichen zum Leeren der Ausgabe.
16VSWTCHWechselt zu einer anderen Shell-Ebene.
17VSTATUSDruckt Systemstatuszeile (Last, Befehl, PID usw.).
18VDISCARDSchaltet das Leeren der Terminalausgabe um.
30IGNPARDas Ignore-Parity-Flag. Der Parameter SOLLTE 0 sein, wenn dieses Flag FALSE ist, und 1, wenn es TRUE ist.
31PARMRKMarkiert Paritäts- und Framing-Fehler.
32INPCKAktiviert Überprüfung von Paritätsfehlern.
33ISTRIPEntfernt das 8. Bit von Zeichen.
34INLCRBildet NL auf CR bei Eingabe ab.
35IGNCRIgnoriert CR bei Eingabe.
36ICRNLBildet CR auf NL bei Eingabe ab.
37IUCLCÜbersetzt Großbuchstaben in Kleinbuchstaben.
38IXONAktiviert Ausgabeflusskontrolle.
39IXANYJedes Zeichen startet nach Stopp neu.
40IXOFFAktiviert Eingabeflusskontrolle.
41IMAXBELLäutet Glocke bei voller Eingabewarteschlange.
50ISIGAktiviert Signale INTR, QUIT, [D]SUSP.
51ICANONKanonisiert Eingabezeilen.
52XCASEAktiviert Eingabe und Ausgabe von Großbuchstaben durch Voranstellen ihrer Kleinbuchstaben-Äquivalente mit "\".
53ECHOAktiviert Echo.
54ECHOELöscht Zeichen visuell.
55ECHOKKill-Zeichen verwirft aktuelle Zeile.
56ECHONLGibt NL auch aus, wenn ECHO aus ist.
57NOFLSHNicht nach Interrupt leeren.
58TOSTOPStoppt Hintergrundjobs von Ausgabe.
59IEXTENAktiviert Erweiterungen.
60ECHOCTLGibt Steuerzeichen als ^(Char) aus.
61ECHOKEVisuelles Löschen für Zeilen-Kill.
62PENDINGibt ausstehende Eingabe neu ein.
70OPOSTAktiviert Ausgabeverarbeitung.
71OLCUCKonvertiert Kleinbuchstaben in Großbuchstaben.
72ONLCRBildet NL auf CR-NL ab.
73OCRNLÜbersetzt Carriage Return in Newline (Ausgabe).
74ONOCRÜbersetzt Newline in Carriage Return-Newline (Ausgabe).
75ONLRETNewline führt Carriage Return aus (Ausgabe).
90CS77-Bit-Modus.
91CS88-Bit-Modus.
92PARENBParität aktivieren.
93PARODDUngerade Parität, sonst gerade.
128TTY_OP_ISPEEDGibt die Eingabe-Baudrate in Bits pro Sekunde an.
129TTY_OP_OSPEEDGibt die Ausgabe-Baudrate in Bits pro Sekunde an.