ANSI escape code

ANSI X3.64 (ISO/IEC 6429)
Htop.png
Ausgabe des Systemmonitors htop, eine NCURSSE-Anwendung (die verwendet SGR und andere ANSI/ISO -Kontrollsequenzen).
Standard
Einstufung ISO/IEC 2022 basierend Kontrollcode und Kontrollsequenzsatz
Andere verwandte Kodierungen (en) Andere Kontrollfunktionsstandards: ITU T.101, Jis x 0207, ISO 6630, DIN 31626, ETS 300 706

ANSI Escape -Sequenzen sind ein Standard für In-Band-Signalübertragung So steuern Sie den Cursorort, Farbe, Schriftstyling und andere Optionen auf Video Text Terminals und Terminalemulatoren. Bestimmte Sequenzen von Bytes, die meisten beginnen mit einem ASCII entkommen Charakter und a Klammer Charakter, sind in Text eingebettet. Die Terminal interpretiert diese Sequenzen eher als Befehle als Text, um wörtlich anzuzeigen.

ANSI-Sequenzen wurden in den 1970er Jahren eingeführt, um die näherspezifischen Sequenzen zu ersetzen, und wurden Anfang der 1980er Jahre auf dem Markt für Computerausrüstung weit verbreitet. Sie werden in der Entwicklung, in wissenschaftlichen, kommerziellen textbasierten Anwendungen sowie in den Bereichen Bulletin -Board -Systeme standardisierte Funktionen anzubieten.

Obwohl Hardware -Textterminals im 21. Jahrhundert immer seltener geworden sind, bleibt die Relevanz des ANSI -Standards bestehen, da eine große Mehrheit der Terminal -Emulatoren und -Konsolen mindestens einen Teil des ANSI -Standards interpretiert.

Geschichte

Fast alle Hersteller von Video-Terminals fügten anhand von Lieferanten-spezifische Fluchtsequenzen hinzu, um Operationen auszuführen, wie z. B. die Platzierung des Cursors an willkürlichen Positionen auf dem Bildschirm. Ein Beispiel ist das VT52 Terminal, das es dem Cursor ermöglichte, an einem x, y -Standort auf dem Bildschirm zu platzieren, indem der Senden des ESC Charakter, a Y Charakter und dann zwei Zeichen, die mit numerischen Werten entsprechen, die dem x, y Ort plus 32 entsprechen (somit am ASCII -Raumzeichen und die Vermeidung der Steuerzeichen). Das Hazeltine 1500 hatte ein ähnliches Merkmal, das mit Verwendung aufgerufen wurde ~, DC1 und dann die X- und Y -Positionen mit einem Komma getrennt. Während die beiden Terminals in dieser Hinsicht eine identische Funktionalität hatten, mussten verschiedene Kontrollsequenzen verwendet werden, um sie aufzurufen.

Da diese Sequenzen für verschiedene Terminals unterschiedlich waren, waren ausführliche Bibliotheken wie Termcap ("Terminalfähigkeiten") und Versorgungsunternehmen wie tput musste erstellt werden, damit Programme dasselbe verwenden konnten API mit jedem Terminal arbeiten. Darüber hinaus mussten viele dieser Terminals als Binärwerte der Zeichen Zahlen (z. B. Zeile und Spalte) senden; Für einige Programmiersprachen und für Systeme, die ASCII nicht intern verwendeten, war es oft schwierig, eine Zahl in den richtigen Charakter zu verwandeln.

Der ANSI -Standard versuchte, diese Probleme zu beheben, indem ein Befehlssatz erstellt wurde, den alle Terminals verwenden würden, und alle numerischen Informationen müssen als ASCII -Nummern übertragen werden. Der erste Standard in der Serie war ECMA-48, der 1976 übernommen wurde.[1] Es war eine Fortsetzung einer Reihe von Charakter -Codierungsstandards, das erste Wesen ECMA-6 ab 1965 ein 7-Bit-Standard ISO 646 Ursprung. Der Name "Ansi Escape Sequenz" stammt aus dem Jahr 1979, als Ansi adoptiert ansi x3.64. Das ANSI X3L2 -Komitee hat mit dem zusammengearbeitet ECMA Komitee TC 1, um nahezu identische Standards zu erstellen. Diese beiden Standards wurden zu einem internationalen Standard, ISO 6429, zusammengefasst.[1] 1994 zog ANSI seinen Standard zugunsten des internationalen Standards zurück.

DEC VT100 terminal
Das Dec VT100 Video Display Terminal.

Das erste beliebte Video -Terminal zur Unterstützung dieser Sequenzen war die Digital VT100, eingeführt 1978.[2] Dieses Modell war sehr erfolgreich auf dem Markt, das eine Vielzahl von VT100 -Klonen ausgelöst hatte, zu den frühesten und beliebtesten, von denen das viel erschwinglicher war Zenith Z-19 1979.[3] Andere umfassten die Qume Qvt-108, Televideo TVI-970, Wyse WY-99GT sowie optionale "VT100" oder "VT103" oder "ANSI" -Modi mit unterschiedlichem Grad an Kompatibilität bei vielen anderen Marken. Die Popularität von diesen führte nach und nach zu immer mehr Software (insbesondere zu mehr Software Bulletin -Board -Systeme und andere online Dienste) Unter der Annahme, dass die Escape -Sequenzen funktionierten, was zu fast allen neuen Terminals und Emulatorprogrammen führte, die sie unterstützen.

1981 wurde ANSI X3.64 zur Verwendung in der US -Regierung von verabschiedet FIPS Veröffentlichung 86. Später stoppte die US -Regierung die Duplizierende Branchenstandards, also FIPS Pub. 86 wurde zurückgezogen.[4]

ECMA-48 wurde mehrmals aktualisiert und befindet sich derzeit in der 5. Ausgabe von 1991. Es wird auch von übernommen von ISO und IEC als Standard ISO/IEC 6429.[5] Eine Version wird als übernommen als Japanischer Industriestandard, wie Jis x 0211.

Verwandte Standards umfassen Itu t.61, das Teletex Standard und die ISO/IEC 8613, das Offene Dokumentarchitektur Standard (hauptsächlich ISO/IEC 8613-6 oder ITU T.416). Die beiden Systeme teilen viele Fluchtcodes mit dem ANSI -System mit Erweiterungen, die für Computerterminals nicht unbedingt von Bedeutung sind. Beide Systeme fielen schnell nicht aus, aber ECMA-48 markiert die in ihnen verwendeten Erweiterungen als reserviert.

Plattformunterstützung

Unix-ähnliche Systeme

Xterm terminal emulator
Der Xterm Terminal Emulator.

Auf diesen Systemen identifiziert sich der Terminal (oder Emulator) selbst die Verwendung der $ Term Umgebungsvariable. Eine Datenbankbibliothek wie z. Termcap oder terminfo würde eine Suche durchführen, um die Fähigkeiten der Terminal- und spezifischen Escape -Sequenzen abzuleiten, um die Funktionen zu nutzen, die in frühen Tagen von ANSI abweichen können.

Obwohl solche Bibliotheken in und für Unix in erster Linie entwickelt wurden Unix-artig Betriebssysteme konnten fast immer annehmen, dass sie einen Terminal oder einen Emulator verwenden, der ANSI -Sequenzen unterstützte. Dies führte zu einer weit verbreiteten Verwendung von ANSI durch Programme, die auf diesen Plattformen ausgeführt werden. Zum Beispiel schreiben viele Spiele und Shell -Skripte sowie Dienstprogramme wie Farbverzeichnis -Listen direkt die ANSI -Sequenzen und können daher nicht an einem Terminal verwendet werden, das sie nicht interpretiert. Viele Programme, einschließlich Textredakteure wie zum Beispiel vi und GNU EMACSVerwenden Sie Termcap oder Terminfo oder verwenden Sie Bibliotheken wie z. Flüche Diese Verwendung von Termcap oder Terminfo und damit theoretisch nicht Ansi-Terminals, aber dies wird heutzutage so selten getestet, dass sie es sind Es ist unwahrscheinlich, dass er funktioniert mit diesen Terminals.

Terminalemulatoren Für die Kommunikation mit lokalen Programmen sowie Remote -Maschinen und den Text Systemkonsole Fast immer unterstützen Sie ANSI -Fluchtcodes. Dies schließt terminale Emulatoren ein, wie z. Xterm, rxvt, Gnom -Terminal, und Konsole auf Systemen mit X11-basis oder Wayland-basierte Fenstersysteme und Terminal.app und Terminalemulatoren von Drittanbietern wie z. ITERM2 an Mac OS.

CP/m

Ein Kaypro II der 1980er Jahre, ein CP/M-80 PC. Es emulierte adM-3a nativ und unterstützte auch einen Terminalmodus (der demonstriert wurde).

CP/m Maschinen variierten und es gab mehrere konkurrierende Terminals wie für Drucker, die jeweils ihre eigenen Kontrollsequenzen haben. Einige frühe Systeme waren kopflos (benötigt ein externes Terminal) und PCs mit einem nativen Bildschirm, der typischerweise ein Terminal emuliert hat. Anwendungsentwickler mussten verschiedene beliebte Terminals unterstützen und ein Installationsprogramm zur Konfiguration bereitstellen. Trotz der CP/M -Hardware -Abstraktionsschicht (BIOS) Selbst für denselben Mikroprozessor stellten die Anbieter plattformspezifische Versionen aufgrund der konkurrierenden Scheibenformate zur Verfügung, die auch für das native Terminal vorkonfiguriert werden (z. WordStar Anpassungen wurden veröffentlicht).

Die kopflosen Altair 8800 wurde normalerweise mit a verbunden Teletyp so wie die Modell 33 ASR oder zu einem externen Terminal wie dem Televideo 920cmüssen ihre jeweiligen Sequenzen ausgeben.[6] Das Osborne 1 und Kaypro II Computer emulierte nativ eine Untergruppe des Televideo 920c und Adm-3a Kontrollcodes.[7][8] Das TRS-80 Modell 4 und die Xerox 820 emulierte auch den Lear Siegler adm-3a.[9][10] Das Zenith Z-89, Heathkit H8 und Amstrad PCW CP/M-80-Computer implementierten die Zenith Z19-Terminalcodes (Heathkit H19) VT52Das Z-89-Handbuch beschreibt es auch als unterstützende ANSI.[11][12]

Das Microsoft Z-80 Softcard für die Apple II emuliert eine begrenzte Untergruppe der Siehe Videoterm, entsprechend den DataMedia 1520-Sequenzen, die die UCSD-basierten Apple Pascal unterstützt. Sein CP/M hatte den Befehl configio, externe Terminals anzupassen oder lokale Anwendungen auszuführen, in denen andere Steuercodes ausgegeben wurden. Unterstützte externe Terminals waren der SOROC IQ 120/140 und Hazeltine 1500/1510.[13][14]

DOS, OS/2 und Windows

MS-DOS 1.x unterstützte weder die ANSI noch andere Escape-Sequenzen. Nur wenige Steuerzeichen (Bel, Cr, Lf, BS) wurden vom zugrunde liegenden BIOS interpretiert, was es fast machte[a] Es ist unmöglich, irgendeine Art von Vollbildanwendung zu führen. Alle Display -Effekte mussten mit BIOS -Anrufen durchgeführt werden, die notorisch langsam waren, oder durch direkte Manipulation der IBM -PC -Hardware.

DOS 2.0 führte die Fähigkeit ein, a hinzuzufügen Gerätetreiber Für die ANSI -Fluchtsequenzen - die de facto Standardwesen Ansi.sys, aber andere mögen Ansi.com,[15] Nansi.sys[16] und Ansiplus.exe werden auch verwendet (diese sind erheblich schneller, wenn sie das BIOS umgehen). Langsamkeit und die Tatsache, dass es standardmäßig nicht installiert wurde, nutzte sie selten aus der Software; Stattdessen manipulierten Anwendungen die Hardware weiter, um das benötigte Textanzeigen zu erhalten. Ansi.sys und ähnliche Treiber arbeiteten weiterhin in Windows 9x bis zu Fenster michund in von NT abgeleiteten Systemen für 16-Bit-Legacy-Programme, die unter dem ausführt Ntvdm.

Viele DOS -Klone konnten die Sequenzen interpretieren und benötigen keinen separaten ANSI -Treiber. PTS-DOS[17][18] ebenso gut wie Gleichzeitige dos, Multiuser dos[19] und Real/32 haben integrierte Unterstützung (plus eine Reihe von Erweiterungen). OS/2 hat ein Ansi Befehl, der die Sequenzen aktiviert hat.

Das Windows -Konsole unterstützte keine ANSI -Escape -Sequenzen, noch hat Microsoft eine Methode zur Verfügung gestellt, um sie zu aktivieren. Einige Ersetzungen oder Ergänzungen für das Konsolenfenster wie die JP -Software Tcc (ehemals 4NT), Michael J. Meffords Ansi.com, Jason Hoods Ansicon[20] und Maximus5 Conemu Interpretierte ANSI -Escape -Sequenzen, die von Programmen gedruckt wurden. Ein Python -Paket namens Colorama [21] Innen interpretiert ANSI -Escape -Sequenzen im gedruckten Text und übersetzen sie in Win32 -Aufrufe, um den Status des Terminals zu ändern, um den Python -Code mithilfe von ANSI an Windows zu vereinfachen. Cygwin führt eine ähnliche Übersetzung für alle Ausgaben aus, die mithilfe von Cygwin -Dateideskriptoren an die Konsole geschrieben wurden. Die Filterung erfolgt durch die Ausgabefunktionen von cygwin1.dll, um das Portieren von POSIX C -Code auf Windows zu ermöglichen.

Im Jahr 2016 veröffentlichte Microsoft die Windows 10 Version 1511 Update, das über zwei Jahrzehnte nach dem Debüt von Windows NT unerwartet die Unterstützung für ANSI -Escape -Sequenzen implementierte.[22] Dies wurde neben Windows -Subsystem für Linux, erlauben Unix-artig Terminalbasierte Software zur Verwendung der Sequenzen in Windows Console. Dies ist standardmäßig ausgeschaltet, aber Windows PowerShell 5.1 hat es aktiviert. PowerShell 6 machte es möglich, den notwendigen ESC -Charakter in eine Schnur mit einzubetten `e.[23] Windows -Terminal, eingeführt im Jahr 2019, unterstützt standardmäßig die Sequenzen, und Microsoft beabsichtigt, die Windows -Konsole durch Windows Terminal zu ersetzen.[24]

Atari St/TT/Falcon Series

Atari Tos verwendete das von der angepasste Befehlssystem VT52 mit einigen Erweiterungen für die Farbunterstützung,[25] anstatt Ansi -Fluchtcodes zu unterstützen.

Amigaos

Amigaos Interpretiert nicht nur ANSI -Codesequenzen für die Textausgabe auf den Bildschirm, die Amigaos Drucker Der Treiber interpretiert sie auch (mit Erweiterungen, die für Amigaos proprietär) und übersetzt sie in die für den jeweils angehängten jeweils angehängten Codes.[26]

Amiga CLI (Shell) Fensterstil -Steuersequenzen im Fensterstil
Wirkung
ESC [ n u Legt die maximale Länge der Zeilen im Fenster nach n fest.
ESC [ n t Legt die maximale Anzahl von Zeilen im Fenster auf n fest.
ESC [ n x Startet Text n Pixel von der linken Kante des Fensters.
ESC [ n y Startet Text n Pixel von der Oberkante des Fensters.

VMS / OpenVMS

VMs wurde entwickelt, um mithilfe der textbasierten Videoterminals von Digital kontrolliert zu werden, wie beispielsweise die oben genannten VT100; So schreibt Software die ANSI-Escape-Sequenzen direkt (und funktioniert nicht an Nicht-Ansi-Terminals).[27][Fehlgeschlagene Überprüfung]

Beschreibung

C0 -Steuercodes

Fast alle Benutzer übernehmen einige Funktionen einiger Single-Byte-Zeichen. Der Standard-C0-Steuercodessatz ist zunächst als Teil von ASCII definiert in ISO 6429 (ECMA-48), so ISO 2022 Ermöglicht den ISO 6429 C0 -Satz ohne den ISO 6429 C1 -Set und und und umgekehrt, vorausgesetzt, 0x1b ist immer ESC). Dies wird verwendet, um die Menge der übertragenen Daten zu verkürzen oder einige Funktionen auszuführen, die aus Escape -Sequenzen nicht verfügbar sind:

Beliebte C0 -Kontrollcodes (keine umfassende Liste)
^ C0 Abbr Name Wirkung
^G 7 Bel Glocke Macht ein hörbares Geräusch.
^H 8 BS Rücktaste Bewegt den Cursor nach links (kann aber "rückwärts wickeln", wenn der Cursor zu Beginn der Linie ist).
^I 9 Ht Tab Bewegt den Cursor rechts auf das nächste Mal von 8.
^J 0x0a Lf Zeilenvorschub Wenn Sie zur nächsten Zeile bewegt werden, scrollen Sie die Anzeige am unteren Bildschirmrand. Bewegen Sie sich normalerweise nicht horizontal, obwohl sich Programme nicht darauf verlassen sollten.
^L 0x0c Ff Formfutter Bewegen Sie einen Drucker auf die nächste Seite. Bewegen Sie sich normalerweise nicht horizontal, obwohl sich Programme nicht darauf verlassen sollten. Die Auswirkung auf Video -Terminals variiert.
^M 0x0d Cr Kutschenrückkehr Verschiebt den Cursor in Spalte Null.
^[ 0x1b ESC Flucht Startet alle Fluchtsequenzen

Escape -Sequenzen variieren in der Länge. Das allgemeine Format für eine ANSI-konforme Fluchtsequenz wird durch definiert ANSI X3.41 (Äquivalent zu ECMA-35 oder ISO/IEC 2022).[28]: 13.1 Die Escape -Sequenzen bestehen nur aus Bytes im Bereich 0x20—0x7f (Alle nicht kontrollierenden ASCII-Zeichen) und können analysiert werden, ohne nach vorne zu schauen. Das Verhalten, wenn ein Kontrollcharakter, ein Byte mit dem hohen Bit -Set oder ein Byte, das nicht Teil einer gültigen Sequenz ist, auftritt, bevor das Ende undefiniert ist.

Fe Escape -Sequenzen

Wenn die ESC folgt von einem Byte im Bereich 0x40 bis 0x5f, die Fluchtsequenz ist vom Typ Fe. Seine Interpretation wird an die anwendbaren Delegation delegiert C1 -Kontrollcode Standard.[28]: 13.2.1 Dementsprechend folgen alle Fluchtsequenzen, die C1-Steuercodes aus ANSI X3.64 / ECMA-48 entsprechen, diesem Format.[5]: 5.3.a

Der Standard besagt, dass die Steuerungsfunktionen in 8-Bit-Umgebungen dem Typ entsprechen Fe Escape -Sequenzen (die aus dem Satz von C1 -Kontrollcodes) kann im Bereich 0x80–0x9f als einzelne Bytes dargestellt werden.[5]: 5.3.b Dies ist in Charaktercodierungen möglich, die den Bestimmungen für einen 8-Bit-Code in ISO 2022 entsprechen, wie die ISO 8859 Serie. In Charaktercodierungen, die auf modernen Geräten wie verwendet wurden, wie z. UTF-8 oder CP-1252Diese Codes werden häufig für andere Zwecke verwendet, sodass normalerweise nur die 2-Byte-Sequenz verwendet wird. Im Fall von UTF-8, der einen C1-Kontrollcode über die darstellt C1-Kontrollen und Latein-1-Supplement Block führt zu einem anderen Zwei-Byte-Code (z. 0xc2,0x8e zum U+008E), aber auf diese Weise wird kein Platz gerettet.

Ein Typ Fe (C1 -Setelement) ANSI Escape -Sequenzen (keine erschöpfende Liste)
Code C1 Abbr Name Wirkung
Esc n 0x8e SS2 Einzelschicht zwei Wählen Sie ein einzelnes Zeichen aus einem der der alternative Zeichensätze. SS2 wählt den G2 -Zeichensatz aus und SS3 wählt den G3 -Zeichensatz aus.[29] In einer 7-Bit-Umgebung folgt ein oder mehrere GL-Bytes (0x20–0x7f), die ein Zeichen aus diesem Satz angeben.[28]: 9.4 In einer 8-Bit-Umgebung können diese stattdessen GR-Bytes (0xa0–0xff) sein.[28]: 8.4
Esc o 0x8f SS3 Einzelschicht drei
Esc p 0x90 DCS Gerätesteuerzeichenfolge Beendet von st.[5]: 5.6 Die Verwendung dieser Sequenz von Xterm umfasst das Definieren benutzerdefinierter Schlüssel und das Anfordern oder Einstellen von TermCap/Terminfo-Daten.[29]
ESC [ 0x9b CSI Kontrollsequenz -Einführung Startet die meisten nützlichen Sequenzen, die von einem Byte im Bereich 0x40 bis 0x7e beendet sind.[5]: 5.4
ESC \ 0x9c St String -Terminator Beendet Strings in anderen Kontrollen.[5]: 8.3.143
ESC ] 0x9d OSC Betriebssystembefehl Startet eine Steuerzeichenfolge für das Betriebssystem, das von ST beendet wird.[5]: 8.3.89
Esc x 0x98 SOS Start der String Nimmt ein Argument einer Textfolge, die von ST beendet wurde.[5]: 5.6 Die Verwendungen für diese String -Steuersequenzen werden von der Anwendung definiert[5]: 8.3.2, 8.3.128 oder Datenschutzdisziplin.[5]: 8.3.94 Diese Funktionen werden selten implementiert und die Argumente von Xterm ignoriert.[29] Etwas Kermit Clients erlauben dem Server, Kermit -Befehle automatisch im Client auszuführen, indem sie in APC -Sequenzen eingebettet werden. Dies ist ein potenzielles Sicherheitsrisiko, wenn der Server nicht vertrauenswürdig ist.[30]
Esc ^ 0x9e PM Datenschutznachricht
ESC _ 0x9f APC Anwendungsprogrammbefehl

CSI -Sequenzen (Kontrollsequenz -Einführungssequenzen)

Für die Kontrollsequenz -Einführung oder CSI, Befehle, die ESC [ folgt von einer beliebigen Zahl (einschließlich keiner) von "Parameter -Bytes" im Bereich 0x30–0x3f (ASCII 0–9:; <=>?), dann nach einer beliebigen Anzahl von "Zwischenbytes" im Bereich 0x20–0x2f (ASCII -Raum und !"#$%&'()*+,-./), dann schließlich durch ein einzelnes "Final -Byte" im Bereich 0x40–0x7e (ASCII @A - Z [\]^_ `a - Z {|} ~).[5]: 5.4

Alle gemeinsamen Sequenzen verwenden nur die Parameter als eine Reihe von mit Semikolon getrennten Zahlen wie z. 1;2;3. Fehlende Zahlen werden als behandelt 0 (1;;3 Handlungen wie die mittlere Zahl ist 0und überhaupt keine Parameter in ESC[m wirkt wie a 0 Code zurücksetzen). Einige Sequenzen (wie CUU) behandeln 0 wie 1 Um fehlende Parameter nützlich zu machen.[5]: F.4.2

Eine Untergruppe von Arrangements wurde als "privat" erklärt, sodass Terminalhersteller ihre eigenen Sequenzen einfügen konnten, ohne mit dem Standard zu widerstehen. Sequenzen, die die Parameter -Bytes enthalten <=>? oder die endgültigen Bytes 0x70–0x7e (p - z {|} ~) sind privat.

Das Verhalten des Terminals ist undefiniert in dem Fall, in dem eine CSI -Sequenz ein Zeichen außerhalb des Bereichs 0x20–0x7e enthält. Diese illegalen Zeichen sind entweder C0 -Steuerzeichen (der Bereich 0–0x1f), Del (0x7f) oder Bytes mit dem hohen Bit -Set. Mögliche Antworten müssen das Byte ignorieren, sofort verarbeiten und außerdem mit der CSI -Sequenz fortgesetzt werden, es sofort abbrechen oder den Rest ignorieren.

Einige ANSI -Steuersequenzen (keine erschöpfende Liste)
Code Abbr Name Wirkung
CSI n EIN Cuu Cursor auf Bewegt den Cursor n (Ursprünglich 1) Zellen in die gegebene Richtung. Wenn sich der Cursor bereits am Rande des Bildschirms befindet, hat dies keinen Einfluss.
CSI n B CUD Cursor nach unten
CSI n C CUF Cursor vorwärts
CSI n D Jungtier Cursor zurück
CSI n E CNL Cursor nächste Linie Bewegt Cursor zum Beginn der Linie n (Ursprünglich 1) Linien nach unten. (nicht Ansi.sys))
CSI n F Cpl Cursor vorherige Zeile Bewegt Cursor zum Beginn der Linie n (Ursprünglich 1) aufreihen. (nicht Ansi.sys))
CSI n G Cha Cursor Horizontal Absolut Verschiebt den Cursor in die Spalte n (Ursprünglich 1). (nicht Ansi.sys))
CSIn;mH TASSE Cursorposition Bewegt den Cursor in die Reihe n, Säule m. Die Werte sind 1 basiert und standardmäßig an 1 (obere linke Ecke) Wenn weggelassen. Eine Sequenz wie z. CSI ;5H ist ein Synonym für CSI 1;5H ebenso gut wie CSI 17;H ist das gleiche wie CSI 17H und CSI 17;1H
CSI n J Ed In der Anzeige löschen Löscht einen Teil des Bildschirms. Wenn n ist 0 (oder fehlt), löschen Sie vom Cursor bis zum Ende des Bildschirms. Wenn n ist 1, von Cursor zum Beginn des Bildschirms klären. Wenn n ist 2, den gesamten Bildschirm löschen (und bewegt den Cursor nach links auf DOS Ansi.sys). Wenn n ist 3Löschen Sie den gesamten Bildschirm und löschen Sie alle im Scrollback -Puffer gespeicherten Zeilen (diese Funktion wurde für hinzugefügt für Xterm und wird von anderen terminalen Anwendungen unterstützt).
CSI n K El In der Linie löschen Löscht einen Teil der Linie. Wenn n ist 0 (oder fehlt), vom Cursor bis zum Ende der Linie klären. Wenn n ist 1, klar vom Cursor bis zum Beginn der Linie. Wenn n ist 2, Löschen Sie die ganze Linie. Die Cursorposition ändert sich nicht.
CSI n S Su Hochscrollen Scrollen Sie die ganze Seite nach n (Ursprünglich 1) Linien. Neue Zeilen werden unten hinzugefügt. (nicht Ansi.sys))
CSI n T SD Runterscrollen Scrollen Sie die ganze Seite nach unten nach n (Ursprünglich 1) Linien. Neue Zeilen werden oben hinzugefügt. (nicht Ansi.sys))
CSI n; m f HVP Horizontale vertikale Position Gleich wie Cup, aber als Format -Effektorfunktion zählt (wie wie Cr oder Lf) und nicht eine Editorfunktion (wie CUD oder CNL). Dies kann in bestimmten Terminalmodi zu unterschiedlichem Umgang führen.[5]: Anhang A
CSI n m SGR Wählen Sie die Grafikrendition Legt Farben und Stil der Zeichen fest, folgt diesem Code
CSI 5i AUX -Port Ein auf Aktivieren Sie den aux -seriellen Anschluss normalerweise für den lokalen seriellen Drucker
CSI 4i Aux -Port aus Deaktivieren

CSI 6n DSR Gerätestatusbericht Meldet die Cursorposition (CPR) durch Senden ESC[n;mR, wo n ist die Reihe und m ist die Säule.
Einige beliebte private Sequenzen
Code Abbr Name Wirkung
Csi s SCP, SCOSC Sparen Sie die aktuelle Cursorposition Speichert die Cursorposition/den SCO -Konsolenmodus.[31] Im vertikalen Split -Bildschirmmodus, stattdessen zum Setzen (als Csi n; n s) oder linke und rechte Ränder zurücksetzen.[32]
Csi u RCP, Scorc Wiederherstellen der gespeicherten Cursorposition Stellt die Cursorposition/den SCO -Konsolenmodus wieder her.[33]
CSI? 25 h Dectcem Zeigt den Cursor aus dem VT220.
CSI? 25 l Dectcem Versteckt den Cursor.
CSI? 1049 h Aktivieren Sie den alternativen Bildschirmpuffer von Xterm
CSI? 1049 l Deaktivieren Sie den alternativen Bildschirmpuffer von Xterm
CSI? 2004 h Schalten Sie den Paste -Modus ein.[34] Im Klammermodus wird der in das Terminal eingefügte Text von umgeben ESC [200~ und ESC [201~; Programme, die im Terminal laufenVimZum Beispiel behandelt sie nicht als Befehle).[35] Von xterm[36]
CSI? 2004 l Schalten Sie den Paste -Modus aus.

SGR -Parameter (Grafikwiedergabe auswählen)

Die Kontrollsequenz Csi n m, mit dem Namen SELECT Graphic Rendition (SGR), legt Anzeigeattribute fest. Mehrere Attribute können in derselben Sequenz eingestellt werden, die durch Semikolonen getrennt sind.[37] Jedes Anzeigenattribut bleibt wirksam, bis ein nachfolgendes Auftreten von SGR es zurücksetzt.[5] Wenn keine Codes angegeben sind, CSI m wird als behandelt CSI 0 m (Zurücksetzen / Normal).

n Name Notiz
0 Zurücksetzen oder normal Alle Attribute aus
1 Fett oder erhöhte Intensität Wie bei Ohnmacht ist die Farbänderung ein PC (SCO / CGA) Erfindung.[38]
2 Schwache, verringerte Intensität, oder schwach Kann als Licht implementiert werden Schriftgewicht wie mutig.[39]
3 Kursiv Nicht weit verbreitet. Manchmal als inverse oder blinzelnd behandelt.[38]
4 Unterstreichen Es gibt Stilverlängerungen für Kitty, VTE, Minty und ITERM2.[40][41]
5 Langsam blinzeln Sets blinken auf weniger als 150 Mal pro Minute
6 Schnelles Blinken Ms-dos ansi.sys, 150+ pro Minute; nicht weit verbreitet
7 Umgekehrter Video oder umkehren Vordergrund- und Hintergrundfarben austauschen; Inkonsistente Emulation[42]
8 Verheimlichen oder ausblenden Nicht weit verbreitet.
9 Durchgestrichen, oder schlagen Charaktere lesbar, aber wie für das Löschen markiert. Nicht in terminal.app unterstützt
10 Primäre (Standard-) Schriftart
11–19 Alternative Schriftart Wählen Sie alternative Schriftart n - 10
20 Fraktur (Gotisch) Selten unterstützt
21 Doppelt unterstrichen; oder: nicht mutig Double-Underline pro ECMA-48,[5]: 8.3.117 deaktiviert aber stattdessen die mutige Intensität an mehreren Terminals, auch in der Linux Kernel's Konsole vor Version 4.17.[43]
22 Normale Intensität Weder mutig noch ohnmächtig; Farbänderungen, bei denen die Intensität als solche implementiert wird.
23 Weder kursiv noch Blackletter
24 Nicht unterstrichen Weder einzeln noch doppelt unterstrichen
25 Nicht blinzeln Blinzeln ab
26 Proportionalabstand Itu t.61 und T.416, das nicht bekannt ist, dass sie an Terminals verwendet werden
27 Nicht umgekehrt
28 Aufdecken Nicht versteckt
29 Nicht gekreuzt
30–37 Vordergrund setzen Farbe
38 Vordergrund setzen Farbe Die nächsten Argumente sind 5;n oder 2;r;g;b
39 Standard -Vordergrundfarbe Implementierung definiert (gemäß Standard)
40–47 Hintergrund einstellen Farbe
48 Hintergrund einstellen Farbe Die nächsten Argumente sind 5;n oder 2;r;g;b
49 Standard -Hintergrundfarbe Implementierung definiert (gemäß Standard)
50 Deaktivieren Sie den proportionalen Abstand T.61 und T.416
51 Gerahmt Implementiert als "Emoji -Variationswahl"In Mintty.[44]
52 Eingekreist
53 Überlebt Nicht in terminal.app unterstützt
54 Weder gerahmt noch umkreist
55 Nicht überlebt
58 Unterstreichen Farbe Nicht im Standard; Implementiert in Kitty, VTE, Mintty und ITM22.[40][41] Die nächsten Argumente sind 5;n oder 2;r;g;b.
59 Standard -Unterstreichung Farbe Nicht im Standard; Implementiert in Kitty, VTE, Mintty und ITM22.[40][41]
60 Ideogramm unterstreicht oder rechte Seitenlinie Selten unterstützt
61 Ideogramm doppelt unterstreichen, oder Doppelzeile auf der rechten Seite
62 Ideogrammüberlinie oder linke Seitenlinie
63 Ideogramm -Doppelüberlinie, oder Doppelzeile auf der linken Seite
64 Ideogrammspannungsmarkierung
65 Keine Ideogrammattribute Setzen Sie die Auswirkungen aller zurück 6064
73 Superscript Nur in mintty implementiert[44]
74 Index
75 Weder Superscript noch Index
90–97 Setzen Sie helle Vordergrundfarbe Nicht im Standard; ursprünglich von Aixterm implementiert[29]
100–107 Setzen Sie helle Hintergrundfarbe

Farben

3-Bit und 4-Bit

Die ursprüngliche Spezifikation hatte nur 8 Farben und gab ihnen nur Namen. Die SGR -Parameter 30–37 wählten die Vordergrundfarbe aus, während 40–47 den Hintergrund ausgewählt haben. Nicht wenige Terminals implementierten "fett" (SGR -Code 1) eher als hellere Farbe als eine andere Schriftart, wodurch 8 zusätzliche Vordergrundfarben bereitgestellt werden. Normalerweise konnten Sie diese nicht als Hintergrundfarben bekommen, obwohl manchmal inverse Videos (SGR -Code 7) dies zulassen. Beispiele: Um schwarze Buchstaben auf weißem Hintergrund zu erhalten ESC[30;47m, um rot zu nutzen ESC[31m, um leuchtend rot zu nutzen ESC[1;31m. Um Farben auf ihre Standardeinstellungen zurückzusetzen, verwenden Sie ESC[39;49m (nicht an einigen Terminals unterstützt) oder alle Attribute mit zurücksetzen ESC[0m. Spätere Terminals fügten die Möglichkeit hinzu, die "hellen" Farben mit 90–97 und 100–107 direkt anzugeben.

Als die Hardware mit 8-Bit begann Digital-analog-Konverter (DACS) Mehrere Software-Teile haben diesen Namen 24-Bit-Farbnummern zugewiesen. Das folgende Diagramm zeigt die Standardwerte, die für eine gemeinsame Hardware und Software an den DAC gesendet wurden. In den meisten Fällen sind sie konfigurierbar.

Fg BG Name VGA[b] Windows XP
Konsole
[c]
Fenster
Power Shell
[d]
Visual Studio -Code[e] Windows 10
Konsole
[f]
Terminal.app Kitt Mirc Xterm Ubuntu[g] Eclipse Terminal
30 40 Schwarz 0,0,0 12,12,12 0,0,0 1,1,1 0,0,0
31 41 Rot 170,0,0 128,0,0 205, 49, 49 197,15,31 194,54,33 187,0,0 127,0,0 205,0,0 222,56,43 205,0,0
32 42 Grün 0,170,0 0,128,0 13, 188, 121 19.161,14 37.188,36 0,187,0 0,147,0 0,205,0 57.181,74 0,205,0
33 43 Gelb 170,85,0[h] 128,128,0 238.237.240 229, 229, 16 193,156,0 173,173,39 187,187,0 252,127,0 205,205,0 255,199,6 205,205,0
34 44 Blau 0,0,170 0,0,128 36, 114, 200 0,55,218 73,46,225 0,0,187 0,0,127 0,0,238[45] 0,111,184 0,0,238
35 45 Magenta 170,0,170 128,0,128 1,36,86 188, 63, 188 136,23,152 211,56,211 187,0,187 156,0,156 205,0,205 118,38,113 205,0,205
36 46 Cyan 0,170,170 0,128,128 17, 168, 205 58,150,221 51.187.200 0,187,187 0,147,147 0,205,205 44.181.233 205,0,205
37 47 Weiß 170,170,170 192,192,192 229, 229, 229 204,204,204 203,204,205 187,187,187 210,210,210 229,229,229 204,204,204 229,229,229
90 100 Helles Schwarz (grau) 85,85,85 128,128,128 102, 102, 102 118,118,118 129.131.131 85,85,85 127,127,127 127,127,127 128,128,128 0,0,0
91 101 Hellrot 255,85,85 255,0,0 241, 76, 76 231,72,86 252,57,31 255,85,85 255,0,0
92 102 Hellgrün 85.255,85 0,255,0 35, 209, 139 22,198,12 49.231,34 85.255,85 0,252,0 0,255,0
93 103 Helles Gelb 255,255,85 255,255,0 245, 245, 67 249,241,165 234,236,35 255,255,85 255,255,0
94 104 Hellblau 85,85,255 0,0,255 59, 142, 234 59,120.255 88,51,255 85,85,255 0,0,252 92,92,255[46] 0,0,255 92,92,255
95 105 Helles Magenta 255,85,255 255,0,255 214, 112, 214 180,0,158 249,53,248 255,85,255 255,0,255
96 106 Heller Cyan 85.255.255 0,255,255 41, 184, 219 97,214,214 20.240.240 85.255.255 0,255,255
97 107 Reines Weiß 255.255.255 229, 229, 229 242,242,242 233,235.235 255.255.255
8 Bit

Wie 256-Farben Suchtabellen wurden auf Grafikkarten üblich, Escape-Sequenzen wurden hinzugefügt, um aus einem vordefinierten Satz von 256 Farben auszuwählen:

ESC [38; 5; ⟨n⟩m Wählen Sie die Vordergrundfarbe, wobei n eine Zahl aus der Tabelle unten ist [48; 5; ⟨n⟩m Wählen Sie Hintergrundfarbe 0- ) 8-15: Farben mit hoher Intensität (wie in ESC [90–97 m) 16-231: 6 × 6 × 6 Würfel (216 Farben): 16 + 36 × R + 6 × G + B (0 ≤ R, G. , B ≤ 5) 232-255: Graustufen von Schwarz bis Weiß in 24 Schritten

Das Itu's T.416 Informationstechnologie - Open Document Architecture (ODA) und Austauschformat: Charakterinhaltsarchitekturen[47] verwendet ':' als Trennzeichen stattdessen:

ESC [38: 5: ⟨n⟩m Wählen Sie die Vordergrundfarbe, wobei n eine Zahl aus der Tabelle unten ist. [48: 5: ⟨n⟩m Wählen Sie Hintergrundfarbe aus
256-Farben-Modus-Vordergrund: ESC [38; 5; #M Hintergrund: ESC [48; 5; #M
Standardfarben Hochintensive Farben
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
216 Farben
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
Graustufenfarben
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

Es gab auch eine ähnliche, aber inkompatible 88-Farben-Codierung mit derselben Fluchtsequenz, die in gesehen wurde rxvt und xterm-88color. Über das Schema neben den Farbcodes ist nicht viel bekannt. Es verwendet einen 4 × 4 × 4 -Farbwürfel.

24-Bit

Als "echte Farbkarten" Grafikkarten mit 16 bis 24 Bit Farbgebiet gemeinsam wurden, begannen die Anwendungen, 24-Bit-Farben zu unterstützen. Terminal-Emulatoren, die den 24-Bit-Vordergrund und Hintergrundfarben mit Fluchtsequenzen unterstützen, umfassen Xterm.[29] Kdes Konsole,[48][49] und iterm sowie alle libvte -basierten Terminals,[50] einschließlich Gnom -Terminal.

ESC [38; 2; ⟨r⟩; ⟨g⟩;

Die Syntax basiert wahrscheinlich auf der ItuT.416 Offene Dokumentarchitektur (ODA) und Austauschformat: Charakterinhaltsarchitekturen,[47] Dies wurde als ISO/IEC 8613-6 übernommen, wurde aber als kommerzieller Misserfolg. Die ODA -Version ist ausführlicher und daher unvereinbar:

  • Die Parameter nach dem '2', d. H. Selbst die r, g, b sind optional.
  • Semikolons werden wie oben durch Kolons ersetzt.
  • Es gibt eine führende "Colorspace -ID".[29] Die Definition der ColorSpace -ID ist in diesem Dokument nicht enthalten, sodass es leer ist, den nicht spezifizierten Standard darzustellen.
  • Zusätzlich zum Wert '2' nach 48, um ein rotgrünes Blauformat (und das oben '5' für eine 0-255 indizierte Farbe anzugeben), gibt es Alternativen von '0' für die Implementierung definiert und '1' für '1' für transparent - keine von beiden haben weitere Parameter; '3' legt Farben mit einem Cyan-Magenta-Gelb-Schema und '4' für eine Cyan-Magenta-Gelb-Schwarze an, wobei letztere die Position unter Verwendung der als "nicht verwendeten" für die schwarze Komponente verwendeten:[47]
ESC [38: 2: ⟨Color-Space-id⟩: ⟨r⟩: ⟨g⟩: ⟨b⟩: ⟨unused⟩: ⟨CS -Toleranz⟩: ⟨Color-Raum assoziiert mit Toleranz: 0 für "Cieluv"; 1 Für "Cielab"⟩ m Wählen mit Toleranz verbunden: 0 für "Cieluv"; 1 Für "Cielab"⟩ M Wählen Sie die RGB -Hintergrundfarbe aus

Die ITU-RGB-Variation wird von Xterm unterstützt, wobei die Farbspace-ID und die Toleranzparameter ignoriert werden. Das einfachere Schema mit Semikolonen findet sich ursprünglich in Konsole.[29]: Kann ich eine Farbe nach seiner Nummer festlegen?

Unix -Umgebungsvariablen in Bezug auf die Farbunterstützung

Bevor TermCap und Terminfo die Unterstützung für Farben angeben, wurde die S-Lang-Bibliothek verwendet $COLORTERM Um anzugeben, ob ein Terminalemulator überhaupt Farben verwenden kann (später als 256-Farben neu interpretiert)[51] und ob es 24-Bit-Farbe unterstützt.[52][53] Obwohl dieses System schlecht dokumentiert ist, wurde es für Fedora und RHEL weit verbreitet genug, um es als einfacheren und universelleren Erkennungsmechanismus zu betrachten als die jetzt aktualisierte Bibliotheken.[54] Gnom-terminal 3.14 ließ diese Variable jedoch fallen, da ihre Autoren sie für falsch und nicht mehr notwendig hielten.[51]

Einige terminale Emulatoren (urxvt, Konsole) setzen $COLORFGBG Um das Farbschema des Terminals zu melden (hauptsächlich hell und dunkler Hintergrund). Dieses Verhalten stammt aus S-Lang[53] und wird von Vim verwendet. Auch hier weigert sich Gnom-terminal, dieses Verhalten hinzuzufügen, da die "richtigeren" Xterm OSC 4/10/11 bereits existieren.[55]

OSC (Betriebssystembefehlsbefehlssequenzen)

Die meisten Befehlssequenzen des Betriebssystems wurden von Xterm definiert, aber viele werden auch von anderen terminalen Emulatoren unterstützt. Aus historischen Gründen kann Xterm den Befehl mit beenden BEL sowie der Standard ST.[29] Zum Beispiel ermöglicht Xterm, dass der Fenstertitel von festgelegt wird ESC ]0;this is the window title BEL.

Eine Nicht-Temperaturverlängerung ist der Hyperlink, ESC ]8;;link ST Ab 2017, verwendet von VTE,[56][diskutieren] ITERM2,[56] und Mintty.[57]

Die Linux -Konsole verwendet ESC ] P n rr gg bb Um die Palette zu wechseln, die, wenn sie fest in eine Anwendung festgelegt wird, andere Terminals hängen kann.[58] Allerdings anhängen ST wird von Linux ignoriert und bildet eine ordnungsgemäße, ignorlose Sequenz für andere Terminals.

FS Escape -Sequenzen

Wenn die ESC folgt von einem Byte im Bereich 0x60—0x7eDie Fluchtsequenz ist vom Typ Fs. Dieser Typ wird für Kontrollfunktionen verwendet, die individuell mit dem registriert sind ISO-IR Registrierung[59] und folglich auch in Kontexten verfügbar, in denen ein anderer C1 -Steuercodesatz verwendet wird. Insbesondere entsprechen sie einzelne Kontrollfunktionen, die von genehmigt wurden, ISO/IEC JTC 1/SC 2 und standardisiert durch ISO oder einen ISO-anerkannten Körper.[28]: 6.5.1 Einige davon sind in ECMA-35 (ISO 2022 / ANSI X3.41), andere in ECMA-48 (ISO 6429 / ANSI X3.64) angegeben.[28]: 6.5.4 ECMA-48 bezeichnet diese als "unabhängige Kontrollfunktionen".[5]: 5.5

Ein Typ Fs (Unabhängige Funktion) ANSI Escape -Sequenzen, die von Terminals erkannt wurden (keine erschöpfende Liste)
Abbr Name Wirkung
Esc c c Ris Auf den Anfangszustand zurücksetzen Löst einen vollständigen Zurücksetzen des Terminals in seinen ursprünglichen Zustand aus.[29] Dies kann (falls zutreffend) gehören: Grafikwiedergabe zurücksetzen, die Tabellierung der Tabulierung durch Löschen, zurücksetzen auf die Standardschrift und mehr.[60]

FP Escape -Sequenzen

Wenn die ESC folgt von einem Byte im Bereich 0x30—0x3fDie Fluchtsequenz ist vom Typ Fp, die für bis zu sechzehn private Verwendungsfunktionen auseinandergesetzt wird.[28]: 6.5.3

Ein Typ FP (private Nutzung) Escape-Sequenzen, die von der anerkannt wurden VT100, seine Nachfolger und/oder Terminal -Emulatoren wie z. Xterm
Abbr Name Wirkung
Esc 7 Decsc Dec Cursor retten Speichert die Cursorposition, den Codierungsschaltzustand und formatierende Attribute.[61][29]
Esc 8 Decrc Dec Cursor wiederherstellen Stellt die Cursorposition wieder her, codieren Sie den Schaltzustand und formatieren Attribute aus dem vorherigen DecSC, falls vorhanden, andernfalls werden diese alle auf ihre Standardeinstellungen zurückgesetzt.[61][29]

NF Escape -Sequenzen

Wenn die ESC folgt von einem Byte im Bereich 0x20—0x2fDie Fluchtsequenz ist vom Typ nF. Das Byte wird von einer beliebigen Anzahl zusätzlicher Bytes in diesem Bereich gefolgt, und dann ein Byte im Bereich 0x30-0x7e. Diese Escape -Sequenzen werden durch die niedrigen vier Bits des ersten Byte weiter unterkategorisiert, z. "Typ 2F"Für Sequenzen, in denen das erste Byte ist 0x22; und darüber, ob sich das letzte Byte im Bereich befindet 0x30—0x3f private Verwendung angeben (z. B. "Typ 2Fp") oder nicht (z. B." Typ 2Ft").[28]: 13.2.1

Escape-Sequenzen dieses Typs werden hauptsächlich für ANSI/ISO-Code-Switching-Mechanismen verwendet, wie z. B. die von verwendeten von ISO-2022-JPaußer für Typ 3F Sequenzen (diejenigen, bei denen das erste Zwischen Byte ist 0x23), die für individuelle Kontrollfunktionen verwendet werden. Typ 3Ft Sequenzen sind für zusätzliche ISO-IR-registrierte individuelle Kontrollfunktionen reserviert.[28]: 6.5.2 während Typ 3Fp Sequenzen sind für Privatnutzungssteuerungsfunktionen verfügbar.[28]: 6.5.3 Im Gegensatz zu Typ Fs Sequenzen, kein Typ 3Ft Sequenzen sind derzeit registriert.[59]

Ein Typ 0ft (Ankündigung) ANSI Escape -Sequenzen, die von Terminals anerkannt wurden
Abbr Name Wirkung
Esc sp f
  • ACS6
  • S7C1T
  • Code Struktur 6 ankündigen
  • Senden Sie 7-Bit-C1-Steuercharakter an den Host
Definiert in ECMA-35 (ANSI X3.41 / ISO 2022).[28]: 15.2 Dabei sendet die Funktionstasten ESC + Buchstaben anstelle von 8-Bit-C1-Codes.[29]
Esc sp g
  • ACS7
  • S8C1T
  • Code Struktur ankündigen 7
  • Senden Sie das 8-Bit-C1-Steuercharakter an den Host
Definiert in ECMA-35.[28]: 15.2 Damit die Funktionstasten 8-Bit-C1-Codes senden.[29]
Ein Typ 3FP (private Nutzung) Escape-Sequenzen, die von der anerkannt wurden VT100, seine Nachfolger und/oder Terminal -Emulatoren wie z. Xterm
Abbr Name Wirkung
Esc # 3 Decdhl Dez. Doppelhöhe, obere Hälfte Bringt die aktuelle Zeile doppelt so hoch. Dieser Code ist für die obere Hälfte.[62]
Esc # 4 Decdhl Dez. Doppelhöhe, untere Hälfte Bringt die aktuelle Zeile doppelt so hoch. Dieser Code ist für die untere Hälfte.[62]
Esc # 5 Decswl Dec Einbreitenlinie Dabei wird die aktuelle Zeile gemäß dem Standardverhalten einzelne Breitenzeichen verwendet.[63][29]
Esc # 6 Decdwl Dez. Doppelbreite Linie Dabei wird die aktuelle Zeile doppelte Breitenzeichen verwendet, wodurch alle Zeichen in der zweiten Hälfte der Zeile verworfen werden.[64][29]

Beispiele

CSI 2 J - Dies löscht den Bildschirm und findet auf einigen Geräten den Cursor in Y, x Position 1,1 (obere linke Ecke).

CSI 32 m - Das macht Text grün. Das Grün kann ein dunkles, stumpfes Grün sein, sodass Sie möglicherweise mutig mit der Sequenz ermöglichen möchten CSI 1 m das würde es hellgrün machen oder kombiniert als CSI 32 ; 1 m. Einige Implementierungen verwenden den kühnen Zustand, um den Charakter hell zu machen.

CSI 0 ; 6 8 ; "DIR" ; 13 p - Dadurch wird der Taste F10 neu zugänglich gemacht, um an den Tastaturpuffer "Dire" zu senden und einzugeben, die in der Befehlszeile der DOS den Inhalt des aktuellen Verzeichnisses anzeigen würden. (Nur ms-dos ansi.sys) Dies wurde manchmal verwendet Ansi Bomben. Dies ist ein privater Nutzungscode (wie im Buchstaben P) eine nicht standardmäßige Erweiterung verwendet, um einen von String bewerteten Parameter einzuschließen. Nach dem Buchstaben des Standards würde die Sequenz in der Buchstabe D enden.

CSI s - Dies spart die Cursorposition. Unter Verwendung der Sequenz CSI u wird es in die Position wiederherstellen. Angenommen, die aktuelle Cursorposition ist 7 (y) und 10 (x). Die Sequenz CSI s speichert diese beiden Zahlen. Jetzt können Sie in eine andere Cursorposition wie 20 (y) und 3 (x) unter Verwendung der Sequenz übergehen CSI 20 ; 3 H oder CSI 20 ; 3 f. Wenn Sie nun die Sequenz CSI U verwenden, kehrt die Cursorposition zu 7 (y) und 10 (x) zurück. Einige Terminals erfordern die DEC -Sequenzen ESC 7 / ESC 8 Stattdessen wird häufiger unterstützt.

In Shell Scripting

ANSI -Fluchtcodes werden häufig in verwendet Unix und Unix-ähnlich Terminals bereitstellen Satzstellung markieren. Zum Beispiel in kompatiblen Terminals wie folgt die folgenden aufführen Befehl Farbcodes-Datei- und Verzeichnisnamen nach Typ.

ls --farbe

Benutzer können Fluchtcodes in ihren Skripten einsetzen, indem sie sie als Teil von einbeziehen Standardausgabe oder Standart Fehler. Zum Beispiel das folgende GNU sed Befehl verschönert die Ausgabe der machen Befehl, indem Zeilen angezeigt werden, die Wörter enthalten, die mit "Warn" in der Innen gehen Umgekehrter Video und Wörter, die mit "Err" in leuchtendem Gelb auf einem dunkelroten Hintergrund beginnen (Brieffall wird ignoriert). Die Darstellungen der Codes werden hervorgehoben.[65]

Machen Sie 2> & 1 | sed -e 's /.* \ bwarn.*/\ x1b [7m&\ x1b [0m/i '-e' s /.* \ berr.*/\ x1b [93; 41m&\ x1b [0m/ich' 

Folgende Verprügeln Funktion blinkt das Terminal (indem der Benutzer abwechselnd umgekehrte und normale Videododuscodes gesendet wird), bis der Benutzer eine Taste drückt.[66]

flasher () { while true; do printf \\ e [? 5H; sleep 0.1; printf \\ e [? 5l; read -s -n1 -t1 && break; done; } 

Dies kann verwendet werden, um einen Programmierer zu alarmieren, wenn ein langwieriger Befehl endet, wie mit make ; flasher.[67]

printf \\033c

Dadurch wird die Konsole zurückgesetzt, ähnlich dem Befehl reset auf modernen Linux -Systemen; Es sollte jedoch auch auf älteren Linux-Systemen und auf anderen Unix-Varianten (Nicht-Linux) funktionieren.

In c

Output of example program on Gnome Terminal
#enthalten   int hauptsächlich(Leere) {   int i, j, n;    zum (i = 0; i < 11; i++) {   zum (j = 0; j < 10; j++) {   n = 10 * i + j;   wenn (n > 108) Unterbrechung;   printf("\033[ %DM %3D\033[m", n, n);   }   printf("\n");   }   Rückkehr 0; } 

Endeingangssequenzen

Wenn Sie spezielle Tasten auf der Tastatur drücken und viele Xterm -CSI-, DCS- oder OSC -Sequenzen ausgeben, werden häufig eine CSI-, DCS- oder OSC -Sequenz erzeugt, die vom Terminal an den Computer gesendet wird, als ob der Benutzer sie tippt.

Beim Eingeben von Eingaben auf einem Terminal -Tastaturen außerhalb des normalen alphanumerischen Tastaturbereichs können Sie als ANSI -Sequenzen an den Host gesendet werden. Für Schlüssel mit einer äquivalenten Ausgangsfunktion wie den Cursorschlüssel spiegeln diese häufig die Ausgangssequenzen wider. Bei den meisten Tastaturen gibt es jedoch keine äquivalente Ausgangssequenz zu verwenden.

Es gibt mehrere Codierungsschemata, und leider mischen die meisten Terminals Sequenzen aus verschiedenen Schemata, sodass die Host -Software mithilfe eines beliebigen Schemas mit Eingabesequenzen umgehen kann. Um die Angelegenheit zu erschweren, haben die VT -Terminals selbst zwei Eingabenschemata, normaler Modus und Anwendungsmodus Das kann von der Anwendung umgeschaltet werden.

(Entwurfsabschnitt)

                                         -> char                                   -> esc                                      -> esc                                     -> Alt-keypress or keycode sequence  '['                              -> Alt-[  '[' ()                   -> keycode sequence,  is a decimal number and defaults to 1 (xterm)  '[' () (';') '~'      -> keycode sequence,  and  are decimal numbers and default to 1 (vt) 

Wenn das terminierende Zeichen '~' ist, muss die erste Zahl vorhanden sein und eine Schlüsselcode -Nummer ist, die zweite Zahl ist ein optionaler Modifikatorwert. Wenn es sich bei dem Kündigungszeichen um einen Buchstaben handelt, ist der Buchstabe der Schlüsselcode -Wert und die optionale Nummer der Modifikatorwert.

Der Modifikator-Wert standardmäßig 1 und nach dem Subtrahieren von 1 ist eine Bitmap der gedrückten Modifikator-Tasten: Meta-Ctrg-Alt-Shift. So ist beispielsweise <SEC> [4; 2 ~ SHIFT-END, <ECN> [20 ~ ist Funktionstaste 9, <SEC> [5c ist Strg-Rechts.

Mit anderen Worten, der Modifikator ist die Summe der folgenden Zahlen:

Taste gedrückt Nummer Kommentar
1 Immer hinzugefügt, der Rest ist optional
Wechsel 1
(Links) Alt 2
Kontrolle 4
Meta 8
VT -Sequenzen: <SEC> [1 ~ - Home <Clw> [16 ~ - <Clw> [31 ~ - F17 <Clw> [2 ~ - Einfügen <SEC> [17 ~ - F6 <SEC> [32 ~ - F18 <SEC> [3 ~ - Löschen <esc> [18 ~ - F7 <Clw> [33 ~ - F19 <Ct> [4 ~ - Ende <SEC> [19 ~ - F8 <Ct> [34 ~ - F20 <Esc > [5 ~ - pgup <sc> [20 ~ - f9 <sc> [35 ~ - <c> [6 ~ - pgdn <sc> [21 ~ - f10 <sc> [7 ~ - Home <Ct> [22 ~ - <sc> [8 ~ - Ende <SC> [23 ~ - F11 <Ct> [9 ~ - <Clw> [24 ~ - F12 <Ct> [10 ~ - F0 <Ct> [25 ~ - F13 < ESC> [11 ~ - F1 <SC> [26 ~ - F14 <Ct> [12 ~ - F2 <Clw> [27 ~ - <SC> [13 ~ - F3 <SC> [28 ~ - F15 <SC> [ 14 ~ - f4 <c> [29 ~ - F16 <Ct> [15 ~ - F5 <Clw> [30 ~ - Xterm Sequenzen: <SEC> [a - up <SC> [k - <sc> [u - <u - < ESC> [B - Down <SC> [l - - <SEC> [v - <Ct - [c - rechts <sc> [m - <sc> [w - <sc> [d - links <sc> [n - <sc> [x - <sc> [e - - - - <SEC> [O - <SC> [y - <Ctc> [f - Ende <SEC> [1p - F1 <SC> [Z - <SICH> [G - Tastatur 5 <SEC> [1Q - F2 <SCN> [H - Home <SC> [1R - F3 <sc> [i - <sc> [1S - F4 <SC> [j - <sc> [t -

[A to [D are the same as the ANSI output sequences. The is normally omitted if no modifier keys are pressed, but most implementations always emit the for F1-F4. (draft section)

Xterm verfügt über eine umfassende Dokumentationsseite zu den verschiedenen Funktionen für funktionierende und Maus-Eingänge aus den VT-Terminals von DEC und verschiedenen anderen Terminals, die sie emuliert.[29] Thomas Dickey hat im Laufe der Zeit viel Unterstützung hinzugefügt.[68] Er unterhält auch eine Liste der Standardschlüssel, die von anderen Terminal -Emulatoren zum Vergleich verwendet werden.[69]

  • Auf der Linux -Konsole erzeugen bestimmte Funktionstasten Sequenzen des Formulars CSI [Char. Die CSI -Sequenz sollte auf dem enden [.
  • Alte Versionen von Terminator generieren SS3 1; Modifikatoren Char Wenn F1 - F4 mit Modifikatoren gedrückt wird. Das fehlerhafte Verhalten wurde kopiert Gnom -Terminal.
  • Xterm Antworten CSI -Reihe; Spalte r wenn nach Cursorposition gefragt und CSI 1; Modifikatoren r Wenn die F3 -Taste mit Modifikatoren gedrückt wird, die im Fall von kollidieren die Zeile == 1. Dies kann durch die Verwendung der verwendet werden ? Privatmodifikator als CSI? 6 n, was sich in der Antwort als reflektiert wird CSI? die Zeile ; Spalte r.
  • Viele Terminals bereiten sich vor ESC zu jedem Charakter, der mit dem Alt -Taste getippt wird. Dies schafft Unklarheit für Großbuchstaben und Symbole @[\]^_, was C1 -Codes bilden würde.[Klarstellung erforderlich]
  • Konsole erzeugt SS3 -Modifikatoren Char Wenn F1 - F4 mit Modifikatoren gedrückt wird.[Klarstellung erforderlich]

Siehe auch

Anmerkungen

  1. ^ Die Bildschirmanzeige kann ersetzt werden, indem der gesamte Inhalt des neuen Bildschirms unten gezeichnet wird und den vorherigen Bildschirm ausreichend nach oben scrollt, um den gesamten alten Text zu löschen. Der Benutzer würde das Scrollen und die Hardware sehen Mauszeiger würde ganz unten bleiben. Einige früh Stapeldateien Erreichte rudimentäre "Vollbild" zeigt auf diese Weise an.
  2. ^ Typische Farben, die beim Booten von PCs verwendet werden und sie im Textmodus lassen, in dem eine 16-Eingang-Farbtabelle verwendet wurde. Die Farben unterscheiden sich in den EGA/VGA -Grafikmodi.
  3. ^ In Windows XP über Windows 8.1 gesehen
  4. ^ Bis Powershell 6
  5. ^ Debug -Konsole, "Dark+" -Thema
  6. ^ Campbell -Thema, verwendet als Windows 10 Version 1709. Auch von Powershell 6.
  7. ^ Für virtuelle Terminals von /etc /vtrgb.
  8. ^ Auf Terminals basierend auf CGA Kompatible Hardware wie ANSI.Sys, die auf DOS ausgeführt werden, wird diese normale Intensitätsfarbe als orange gerendert. CGA RGBI Monitore enthielten Hardware, um die dunkelgelbe Farbe in eine orange/braune Farbe zu modifizieren, indem die grüne Komponente reduziert wurde. Sieh dir das an Ansi Art Archiviert 25. Juli 2011 bei der Wayback -Maschine als Beispiel.

Verweise

  1. ^ a b "Standard ECMA-48: Kontrollfunktionen für E/A-Geräte für Zeichen imbetreten" (PDF) (Zweite Ausgabe). ECMA International. August 1979. Kurze Geschichte.
  2. ^ Williams, Paul (2006). "Digital -Video -Terminals". Vt100.net. Abgerufen 17. August 2011.
  3. ^ Heathkit Company (1979). "Heathkit Catalog 1979". Heathkit Company. Archiviert von das Original am 13. Januar 2012. Abgerufen 4. November 2011.
  4. ^ "Abgezogene FIPs, die von der Nummer aufgeführt sind" (PDF). Nationales Institut für Standards und Technologie. 15. Dezember 2016. Abgerufen 2. Januar 2022.
  5. ^ a b c d e f g h i j k l m n o p "Standard ECMA-48: Kontrollfunktionen für codierte Zeichensätze" (PDF) (Fünfter Aufl.). ECMA International. Juni 1991.
  6. ^ Mits (August 1975). "Das kostengünstigste grundlegende Sprachsystem der Welt". Beliebte Elektronik. Vol. 8, nein. 2. Ziff Davis. p. 1.
  7. ^ Hogan, Thom; Iannamico, Mike (1981). Osborne 1 Benutzerhandbuch. Osborne Computer Corporation. p. 350.
  8. ^ Der KayPro -Benutzerhandbuch. Kaypro Corporation. 1984. p. 56.
  9. ^ Systemprogrammierhandbuch für das TRS-80 Modell 4/4p unter Verwendung von Montezuma Micro CP/M 2.2 (PDF). Montezuma Micro. 1985. p. 11.
  10. ^ "CP/M 2.2 Handbuch". Xerox 820 Informationsprozessor. Xerox. 1981. p. 7.
  11. ^ Gilmour, Jean (1985). Die Benutzerhandbuch für PCW8256 und PCW8512. Amsoft. S. 56, 139.
  12. ^ "Anhang - Ansi Escape -Sequenzen". Z-89 Computersystem Betriebshandbücher. Zenith -Datensysteme. 1981. p. 112.
  13. ^ Softcard. Vol. 1. Microsoft. 1980. S. 18, 31, 32, 42.
  14. ^ Softcard - Software und Hardwaredetails (PDF). Microsoft. 1980. p. fünfzehn.
  15. ^ Mefford, Michael (7. Februar 1989). "Ansi.com: Laden Sie es hier herunter". PC Magazine. Archiviert von das Original am 14. Oktober 2010. Abgerufen 10. August 2011.
  16. ^ Kegel, Dan; Auer, Eric (28. Februar 1999). "Nansi und Nnansi-ANSI-Treiber für MS-DOS". Dan Kegels Web Hostel. Abgerufen 10. August 2011.
  17. ^ "PTS-DOS 2000 Probenutzerhandbuch" (PDF). Buggingen, Deutschland: Paragon Technology GmbH. 1999. Archiviert (PDF) vom Original am 12. Mai 2018. Abgerufen 12. Mai 2018.
  18. ^ Günther, Jens; Ernst, Tobias (25. April 2004) [1996]. Ellsässer, Wolfgang (Hrsg.). "Inoffizielle Deutschsprachige PTS-DOS-FAQ (PTS/FAQD)" [Inoffizielle deutsche PTS-DOS-FAQ] (auf Deutsch). Abgerufen 2. Oktober 2018.
  19. ^ CCI Multiuser DOS 7.22 Gold Online -Dokumentation. Concurrent Controls, Inc. (CCI). 10. Februar 1997. Help.HLP.
  20. ^ Hood, Jason (2005). "Verarbeiten Sie ANSI Escape -Sequenzen für Windows Console -Programme". Jason Hoods Startseite. Abgerufen 9. Mai 2013.
  21. ^ "Colorama · pypi". Python -Paketindex. Abgerufen 27. Februar 2022.
  22. ^ bitstrasiert. "Virtuelle Terminalsequenzen der Konsole - Windows -Konsole". docs.microsoft.com. Abgerufen 30. Mai 2018.
  23. ^ "Powershell Hilfe: über Sonderfiguren".
  24. ^ "Windows Console und Terminal -Ökosystem -Roadmap". Microsoft. 2018. Abgerufen 13. März 2021. Dies beinhaltet die Pensionierung der Benutzeroberfläche der klassischen Konsolen -Host -Benutzer von ihrer Standardposition zugunsten von Windows Terminal-, Conpty- und Virtual Terminal Sequenzen.
  25. ^ "Drucker- und Terminal -Fluchtcodes". Prägnanter Atari St 68000 Programmierhandbuch. Archiviert Aus dem Original am 20. September 2016. Abgerufen 22. Juni 2020.
  26. ^ "Amiga -Drucker -Befehlsdefinitionen". Kommodore. Abgerufen 10. Juli 2013.
  27. ^ "Escape Sequenz - OpenVMS Wiki".
  28. ^ a b c d e f g h i j k l "Standard ECMA-35: Charaktercode-Struktur und Erweiterungstechniken" (PDF) (Sechstes Ausgabe). ECMA International. 1994.
  29. ^ a b c d e f g h i j k l m n o p Moy, Edward; Gildea, Stephen; Dickey, Thomas (2019). "Xterm Control Sequenzen (CTLSEQs)". Unsichtbare Insel.
  30. ^ Frank da Cruz; Christine Gianone (1997). Verwenden von C-Kermit. Digitale Presse. p. 278. ISBN 978-1-55558-164-0.
  31. ^ "SCOSC - Save -Strom -Cursorposition". VT510 Video Terminal Programmer Information. Dez.
  32. ^ "Decslrm - linke und rechte Ränder einsetzen". VT510 Video Terminal Programmer Information. Dez.
  33. ^ "Scorc - Restore Saved Cursor Position". VT510 Video Terminal Programmer Information. Dez.
  34. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Xterm -Kontrollsequenzen". Funktionen mit CSI, geordnet von den endgültigen Zeichen (en). Abgerufen 4. Februar 2022.
  35. ^ Conrad Irwin (April 2013). "Klammermodus". Cirw.in.
  36. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "Xterm -Kontrollsequenzen". Klammermodus. Abgerufen 4. Februar 2022.
  37. ^ "console_codes (4) - Linux -Handbuch" Seite ". Man7.org. Abgerufen 23. März 2018.
  38. ^ a b "Bildschirm (HW)". SCO OpenServer Release 5.0.7 Handbuch. 11. Februar 2003.
  39. ^ "Bug 791596 - Gedanken über Ohnmacht (SGR 2)". bugzilla.gnome.org.
  40. ^ a b c "Curly und farbige Untersteine ​​(#6382) · Ausgaben · George Nachman / ITERM2". Gitlab.
  41. ^ a b c "Erweiterungen zum Xterm -Protokoll". Kitty -Dokumentation. Abgerufen 1. Juli 2020.
  42. ^ "Konsole-Termio-Realizer". jdebp.uk.
  43. ^ "console_codes (4)". Handbuch des Linux -Programmierers. 5.10. Linux Mannseiten Projekt.
  44. ^ a b "Mintty/Mintty: Textattribute und Rendering". GitHub.
  45. ^ Geändert von 0,0,205 im Juli 2004 "Patch #192 - 2004/7/12 - xfree86 4.4.99.9".
  46. ^ Geändert von 0,0,255 im Juli 2004 "Patch #192 - 2004/7/12 - xfree86 4.4.99.9".
  47. ^ a b c "T.416 Informationstechnologie - Open Document Architecture (ODA) und Interchange Format: Charakterinhaltearchitekturen".
  48. ^ "Color-Spaces.pl (eine Kopie von 256Colors2.PL von Xterm datiert 1999-07-11)". Kde. 6. Dezember 2006.[Permanent Dead Link]
  49. ^ "Readme.MoreColors". Kde. 22. April 2010.
  50. ^ "Libvte's Fehlerbericht und Patches: Unterstützung für 16 Millionen Farben". Gnome Bugzilla. 4. April 2014. Abgerufen 5. Juni 2016.
  51. ^ a b "Bug #1429584" Gnome-terminal setzt $ colorterm von 3.14 nicht auf ... ": Bugs: Gnome-terminales Paket: Ubuntu". Launchpad. $ Colorterm sollte nie notwendig sein. [...] Die Semantik von Colorterm hat nichts mit 256 Farbunterstützung an sich zu tun. Es war ein Zufall, dass alle Terminals, die diese Variable festlegten, auch 256 Farben unterstützten.
  52. ^ "Midnight Commander: lib/tty/color-Slang.c". Fossies.
  53. ^ a b Dickey, Thomas E. (2017). "Ncurses-Kommentare zu S-Lang". unsichtbar-island.net.
  54. ^ "Funktionen/256 Farbterminals - Fedora -Projekt Wiki". Fedora -Projekt. Archiviert Aus dem Original am 4. Oktober 2012.
  55. ^ "Bug 733423 - Bitte setzen Sie die Variable der ColorFGBG -Umgebungsvariable für die automatische Farberkennung". bugzilla.gnome.org.
  56. ^ a b Koklinger, Egmont. "Hyperlinks (a.k.a. html-ähnliche Anker) in terminalen Emulatoren". Github GISTs.
  57. ^ "Mintty/Mintty: Kontrollsequenzen". GitHub.
  58. ^ "console_codes - Linux Console Escape- und Steuersequenzen". Handbuch des Linux -Programmierers.
  59. ^ a b ISO-IR: ISO/IEC Internationales Register codierter Zeichensätze, die mit Escape-Sequenzen verwendet werden sollen (PDF). Itcj/Ipsj.
  60. ^ ISO/TC 97/SC 2 (30. Dezember 1976). Auf den Anfangszustand zurücksetzen (RIS) (PDF). Itcj/Ipsj. ISO-IR-35.
  61. ^ a b Digital. "Decsc - Save Cursor". VT510 Video Terminal Programmer Information.
  62. ^ a b ANSI Escape Sequenzen - VT100 / VT52, archiviert von das Original am 27. Februar 2009, abgerufen 21. August 2020
  63. ^ Digital. "Decswl-Single-Width, Single-Hirly-Linie". VT510 Video Terminal Programmer Information.
  64. ^ Digital. "Decdwl-Double-Width, Single-Height-Linie". VT510 Video Terminal Programmer Information.
  65. ^ "Kapitel 9. Systemtipps". Debian.org.
  66. ^ "VT100.net: Digital VT100 Benutzerhandbuch". Abgerufen 19. Januar 2015.
  67. ^ "Bash - wie man eine Benachrichtigung bekommt, wenn meine Befehle erledigt sind - fragen Sie anders". Abgerufen 19. Januar 2015.
  68. ^ Dickey, Thomas. "Xterm FAQ: Vergleich von Versionen durch Zählen von Kontrollen". Unsichtbare Insel. Abgerufen 25. Januar 2020.
  69. ^ Dickey, Thomas (2016). "Tabelle der Funktionskeys für Xterm und andere terminale Emulatoren". Unsichtbare Insel. Abgerufen 25. Januar 2020.

Externe Links