Color is set using \e[<c>m where <c> are numbers separated by semicolons
		(and \e is ESC, code 27). The actual color representation depends on a color theme which
		can be selected in Terminal Settings.
To make the text bold, use the "bold" attribute (eg. \e[31;40;1m for
		bold red on black).
The colors are reset to default using \e[0m. For more info, see the tables below.
All the user types on their keyboard is sent as-is to the UART, including ESC, ANSI sequences for arrow keys and CR-LF for Enter.
The buttons under the screen send ASCII codes 1, 2, 3, 4, 5. This choice was made to make their parsing as simple as possible.
		Mouse input (click/tap) is sent as \e[<y>;<x>M. You can use this for virtual on-screen buttons.
	
Sequences are started by ASCII code 27 (ESC, \e, \x1b, \033)
Instead of \a (BELL, ASCII 7) in the commands, you can use `\e\` (ESC + backslash). It's the Text Separator code.
		All text attributes are set using \e[...m where the dots are numbers separated by semicolons.
		You can combine up to 3 attributes in a single command.
	
| Attribute | Meaning | 
|---|---|
| 0 | Reset text attributes to default | 
| 1 | Bold | 
| 21 or 22 | Bold off | 
| 7 | Inverse (fg/bg swap when printing) | 
| 27 | Inverse OFF | 
| 30-37, 90-97 | Foreground color, normal and bright | 
| 40-47, 100-107 | Background color, normal and bright | 
Movement commands scroll the screen if needed. The coordinates are 1-based, origin top left.
| Code | Params | Meaning | 
|---|---|---|
| \e[<n>A | [count] | Move cursor up | 
| \e[<n>B | [count] | Move cursor down | 
| \e[<n>C | [count] | Move cursor forward (right) | 
| \e[<n>D | [count] | Move cursor backward (left) | 
| \e[<n>E | [count] | Go N lines down, start of line | 
| \e[<n>F | [count] | Go N lines up, start of line | 
| \e[<n>G | column | Go to column | 
| \e[<y>;<x>G | [row=1];[col=1] | Go to row and column | 
| \e[6n | -- | Query cursor position. Position is sent back as \e[?;?R with row;column. | 
		
| \e[s | -- | Store position | 
| \e[u | -- | Restore position | 
| \e7 | -- | Store position & attributes | 
| \e8 | -- | Restore position & attributes | 
| \e[?25l | -- | Hide cursor | 
| \e[?25h | -- | Show cursor | 
| \e[?7l | -- | Disable cursor auto-wrap & auto-scroll at end of screen | 
| \e[?7h | -- | Enable cursor auto-wrap & auto-scroll at end of screen | 
| Code | Params | Meaning | 
|---|---|---|
| \e[<m>J | [mode=0] | Clear screen. Mode: 0 - from cursor, 1 - to cursor, 2 - all | 
| \e[<m>K | [mode=0] | Erase line. Mode: 0 - from cursor, 1 - to cursor, 2 - all | 
| \e[<n>S | [lines] | Scroll screen content up, add empty line at the bottom | 
| \e[<n>T | [lines] | Scroll screen content down, add empty line at the top | 
| \e]W<r>;<c>\a | rows;cols | Set screen size (max ~ 80x30). This also clears the screen. This is a custom ESPTerm OSC command. | 
| Code | Params | Meaning | 
|---|---|---|
| \ec | -- | "Device Reset" - clear screen, reset attributes, show cursor & move it to 1,1. The screen size and WiFi settings stay unchanged. | 
| \e[5n | -- | Query device status, replies with \e[0n "device is OK". Can be used to check if the UART works. | 
		
| \e]TITLE=…\a | Title text | Set terminal title. This is a custom ESPTerm OSC command. | 
| \e]BTNn=…\a | 1-5, label | Set button label. This is a custom ESPTerm OSC command. | 
| ASCII 24 (18h) | This symbol is sent by ESPTerm when it becomes ready to receive commands. It can be used to wait before it becomes ready on power-up, or to detect a spontaneous ESPTerm restart - that could happen due to RAM exhaustion due to a memory leak, or perhaps a power outage. |