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.
| opcode | mnemonic | description |
|---|---|---|
| 0 | TTY_OP_END | Zeigt das Ende der Optionen an. |
| 1 | VINTR | Interrupt-Zeichen; 255 wenn keins. Ähnlich für die anderen Zeichen. Nicht alle diese Zeichen werden auf allen Systemen unterstützt. |
| 2 | VQUIT | Das Quit-Zeichen (sendet SIGQUIT-Signal auf POSIX-Systemen). |
| 3 | VERASE | Löscht das Zeichen links vom Cursor. |
| 4 | VKILL | Tötet die aktuelle Eingabezeile. |
| 5 | VEOF | End-of-file-Zeichen (sendet EOF vom Terminal). |
| 6 | VEOL | End-of-line-Zeichen zusätzlich zu Carriage Return und/oder Linefeed. |
| 7 | VEOL2 | Zusätzliches End-of-line-Zeichen. |
| 8 | VSTART | Setzt pausierte Ausgabe fort (normalerweise Control-Q). |
| 9 | VSTOP | Pausiert Ausgabe (normalerweise Control-S). |
| 10 | VSUSP | Suspendiert das aktuelle Programm. |
| 11 | VDSUSP | Ein weiteres Suspend-Zeichen. |
| 12 | VREPRINT | Druckt die aktuelle Eingabezeile neu. |
| 13 | VWERASE | Löscht ein Wort links vom Cursor. |
| 14 | VLNEXT | Gibt das nächste eingegebene Zeichen wörtlich ein, auch wenn es ein Sonderzeichen ist |
| 15 | VFLUSH | Zeichen zum Leeren der Ausgabe. |
| 16 | VSWTCH | Wechselt zu einer anderen Shell-Ebene. |
| 17 | VSTATUS | Druckt Systemstatuszeile (Last, Befehl, PID usw.). |
| 18 | VDISCARD | Schaltet das Leeren der Terminalausgabe um. |
| 30 | IGNPAR | Das Ignore-Parity-Flag. Der Parameter SOLLTE 0 sein, wenn dieses Flag FALSE ist, und 1, wenn es TRUE ist. |
| 31 | PARMRK | Markiert Paritäts- und Framing-Fehler. |
| 32 | INPCK | Aktiviert Überprüfung von Paritätsfehlern. |
| 33 | ISTRIP | Entfernt das 8. Bit von Zeichen. |
| 34 | INLCR | Bildet NL auf CR bei Eingabe ab. |
| 35 | IGNCR | Ignoriert CR bei Eingabe. |
| 36 | ICRNL | Bildet CR auf NL bei Eingabe ab. |
| 37 | IUCLC | Übersetzt Großbuchstaben in Kleinbuchstaben. |
| 38 | IXON | Aktiviert Ausgabeflusskontrolle. |
| 39 | IXANY | Jedes Zeichen startet nach Stopp neu. |
| 40 | IXOFF | Aktiviert Eingabeflusskontrolle. |
| 41 | IMAXBEL | Läutet Glocke bei voller Eingabewarteschlange. |
| 50 | ISIG | Aktiviert Signale INTR, QUIT, [D]SUSP. |
| 51 | ICANON | Kanonisiert Eingabezeilen. |
| 52 | XCASE | Aktiviert Eingabe und Ausgabe von Großbuchstaben durch Voranstellen ihrer Kleinbuchstaben-Äquivalente mit "\". |
| 53 | ECHO | Aktiviert Echo. |
| 54 | ECHOE | Löscht Zeichen visuell. |
| 55 | ECHOK | Kill-Zeichen verwirft aktuelle Zeile. |
| 56 | ECHONL | Gibt NL auch aus, wenn ECHO aus ist. |
| 57 | NOFLSH | Nicht nach Interrupt leeren. |
| 58 | TOSTOP | Stoppt Hintergrundjobs von Ausgabe. |
| 59 | IEXTEN | Aktiviert Erweiterungen. |
| 60 | ECHOCTL | Gibt Steuerzeichen als ^(Char) aus. |
| 61 | ECHOKE | Visuelles Löschen für Zeilen-Kill. |
| 62 | PENDIN | Gibt ausstehende Eingabe neu ein. |
| 70 | OPOST | Aktiviert Ausgabeverarbeitung. |
| 71 | OLCUC | Konvertiert Kleinbuchstaben in Großbuchstaben. |
| 72 | ONLCR | Bildet NL auf CR-NL ab. |
| 73 | OCRNL | Übersetzt Carriage Return in Newline (Ausgabe). |
| 74 | ONOCR | Übersetzt Newline in Carriage Return-Newline (Ausgabe). |
| 75 | ONLRET | Newline führt Carriage Return aus (Ausgabe). |
| 90 | CS7 | 7-Bit-Modus. |
| 91 | CS8 | 8-Bit-Modus. |
| 92 | PARENB | Parität aktivieren. |
| 93 | PARODD | Ungerade Parität, sonst gerade. |
| 128 | TTY_OP_ISPEED | Gibt die Eingabe-Baudrate in Bits pro Sekunde an. |
| 129 | TTY_OP_OSPEED | Gibt die Ausgabe-Baudrate in Bits pro Sekunde an. |