ANSI escape code and OSC (terminal)
WIP. (my brain fucking hurts)
ANSI escape code
ANSI escape sequences are a standard for in-band signaling to control cursor location, color, font styling, and other options on video text terminals and terminal emulators. Certain sequences of bytes, most starting with an ASCII escape character and a bracket character, are embedded into text. The terminal interprets these sequences as commands, rather than text to display verbatim.
Caret notation
- it’s a notation for control characters in ASCII
^A
~^Z
are assigned to ascii range 1-26, it’s a typable notation for the ascii code that doesn’t exist on a keyboard.- it doesn’t mean typing
^
andX
verbatim - Often can be typed with
Ctrl + X
on keyboard
https://en.wikipedia.org/wiki/Caret_notation
C0 Control codes
(no exhaustive list)
^ C0 Abbr Name ----------------------------- ^G 0x07 BEL Bell ^H 0x08 BS Backspace ^I 0x09 HT Tab ^J 0x0A LF Line Feed ^L 0x0C FF Form Feed ^M 0x0D CR Carriage Return ^[ 0x1B ESC Escape
C1 Control Codes
ANSI escape sequence: (Fe Escape Sequence) that is, a sequence lead by ESC
If the
ESC
is followed by a byte in the range 0x40 to 0x5F, the escape sequence is of type Fe. Its interpretation is delegated to the applicable C1 control code standard.
https://en.wikipedia.org/wiki/ANSI_escape_code#Fe_Escape_sequences
Most notably the Operating System Command (OSC)
ESC [ 0x9B CSI Control Sequence Introducer ESC \ 0x9C ST String Terminitor ESC ] 0x9D OSC Operating System Command
Operating System Command (OSC) Sequence
OSC sequence is ESC ] <constrol string> ST
This is defined by the terminal (mostly xterm)