DOKK / manpages / debian 12 / foot / foot-ctlseqs.7.en
foot-ctlseqs(7) Miscellaneous Information Manual foot-ctlseqs(7)

foot-ctlseqs - terminal control sequences supported by foot

This document describes all the control sequences supported by foot.

•Control characters
•Sequences beginning with ESC
•CSI - Control Sequence Introducer
- SGR
- Indexed and RGB colors (256-color palette and 24-bit colors)
- Private modes
- Window manipulation
- Other
•OSC - Operating System Command
•DCS - Device Control String

Sequence Name Description
\a BEL Depends on what bell in foot.ini(5) is set to.
\b BS Backspace; move the cursor left one step. Wrap if bw is enabled.
\t HT Horizontal tab; move the cursor to the next tab stop.
\n LF Line feed; move the cursor down one step, or scroll content up if at the bottom line.
\v VT Vertical tab; identical to LF.
\f FF Form feed; identical to LF.
\r CR Carriage ret; move the cursor to the leftmost column.
\x0E SO Shift out; select the G1 character set.
\x0F SI Shift in; select the G0 character set.

Note: this table excludes sequences where ESC is part of a 7-bit equivalent to 8-bit C1 controls.

Sequence Name Origin Description
\E 7 DECSC VT100 Save cursor position.
\E 8 DECRC VT100 Restore cursor position.
\E c RIS VT100 Reset terminal to initial state.
\E D IND VT100 Line feed; move the cursor down one step, or scroll content up if at the bottom margin.
\E E NEL VT100 Next line; move the cursor down one step, and to the first column. Content is scrolled up if at the bottom line.
\E H HTS VT100 Set one horizontal tab stop at the current position.
\E M RI VT100 Reverse index; move the cursor up one step, or scroll content down if at the top margin.
\E N SS2 VT220 Single shift select of G2 character set (affects next character only).
\E O SS3 VT220 Single shift select of G3 character set (affects next character only).
\E = DECKPAM VT100 Switch keypad to application mode.
\E > DECKPNM VT100 Switch keypad to numeric mode.
\E ( C SCS VT100 Designate G0 character set. Supported values for C are: 0 (DEC Special Character and Line Drawing Set), and B (USASCII).
\E ) C SCS VT100 Designate G1 character set. Same supported values for C as in G0.
\E * C SCS VT220 Designate G2 character set. Same supported values for C as in G0.
\E + C SCS VT220 Designate G3 character set. Same supported values for C as in G0.

All sequences begin with \E[, sometimes abbreviated "CSI". Spaces are used in the sequence strings to make them easier to read, but are not actually part of the string (i.e. \E[ 1 m is really \E[1m).

All SGR sequences are in the form \E[ N m, where N is a decimal number - the parameter. Multiple parameters can be combined in a single CSI sequence by separating them with semicolons: \E[ 1;2;3 m.

Parameter Description
0 Reset all attributes
1 Bold
2 Dim
3 Italic
4 Underline
5 Blink
7 Reverse video; swap foreground and background colors
8 Conceal; text is not visible, but is copiable
9 Crossed-out/strike
22 Disable bold and dim
23 Disable italic
24 Disable underline
25 Disable blink
27 Disable reverse video
28 Disable conceal
29 Disable crossed-out
30-37 Select foreground color (using regularN in foot.ini(5))
38 See "indexed and RGB colors" below
39 Use the default foreground color (foreground in foot.ini(5))
40-47 Select background color (using regularN in foot.ini(5))
48 See "indexed and RGB colors" below
49 Use the default background color (background in foot.ini(5))
90-97 Select foreground color (using brightN in foot.ini(5))
100-107 Select background color (using brightN in foot.ini(5))

Foot supports both the new sub-parameter based variants, and the older parameter based variants for setting foreground and background colors.

Indexed colors:

\E[ 38 : 5 : idx m
\E[ 38 ; 5 ; idx m

RGB colors:

\E[ 38 : 2 : cs : r : g : b m
\E[ 38 : 2 : r : g : b m
\E[ 38 ; 2 ; r ; g ; b m

The first variant is the "correct" one (and foot also recognizes, but ignores, the optional tolerance parameters).

The second one is allowed since many programs "forget" the color space ID, cs.

The sub-parameter based variants are preferred, and are what foot's terminfo(5) entry uses.

There are several Boolean-like "modes" that affect certain aspects of the terminal's behavior. These modes can be manipulated with the following 4 escape sequences:

Sequence Name Description
\E[ ? Pm h DECSET Enable private mode
\E[ ? Pm l DECRST Disable private mode
\E[ ? Pm s XTSAVE Save private mode
\E[ ? Pm r XTRESTORE Restore private mode

The Pm parameter in the above sequences denotes a numerical ID that corresponds to one of the following modes:

Parameter Origin Description
1 VT100 Cursor keys mode (DECCKM)
5 VT100 Reverse video (DECSCNM)
6 VT100 Origin mode (DECOM)
7 VT100 Auto-wrap mode (DECAWM)
12 AT&T 610 Cursor blink
25 VT220 Cursor visibility (DECTCEM)
45 xterm Reverse-wraparound mode
47 xterm Same as 1047 (see below)
66 VT320 Numeric keypad mode (DECNKM); same as DECKPAM/DECKPNM when enabled/disabled
1000 xterm Send mouse x/y on button press/release
1001 xterm Use hilite mouse tracking
1002 xterm Use cell motion mouse tracking
1003 xterm Use all motion mouse tracking
1004 xterm Send FocusIn/FocusOut events
1006 xterm SGR mouse mode
1007 xterm Alternate scroll mode
1015 urxvt urxvt mouse mode
1016 xterm SGR-Pixels mouse mode
1034 xterm 8-bit Meta mode
1035 xterm Num Lock modifier (see xterm numLock option)
1036 xterm Send ESC when Meta modifies a key (see xterm metaSendsEscape option)
1042 xterm Perform action for BEL character (see bell in foot.ini(5))
1047 xterm Use alternate screen buffer
1048 xterm Save/restore cursor (DECSET=save, DECRST=restore)
1049 xterm Equivalent to 1048 and 1047 combined
1070 xterm Use private color registers for each sixel
2004 xterm Wrap pasted text with start/end delimiters (bracketed paste mode)
2026 terminal-wg Application synchronized updates mode
8452 xterm Position cursor to the right of sixels, instead of on the next line
737769 foot Input Method Editor (IME) mode

Foot implements a sub-set of XTerm's (originally dtterm's) window manipulation sequences. The generic format is:

\E[ Ps ; Ps ; Ps t

Parameter 1 Parameter 2 Description
11 - Report if window is iconified. Foot always reports 1 - not iconified.
13 - Report window position. Foot always reports (0,0), due to Wayland limitations.
13 2 Report text area position. Foot always reports (0,0) due to Wayland limitations.
14 - Report text area size, in pixels. Foot reports the grid size, excluding the margins.
14 2 Report window size, in pixels. Foot reports the grid size plus the margins.
15 - Report the screen size, in pixels.
16 - Report the cell size, in pixels.
18 - Report text area size, in characters.
19 - Report screen size, in characters.
22 - Push window title+icon. Foot does not support pushing the icon.
22 2 Push window title.
23 - Pop window title+icon. Foot does not support popping the icon.
23 2 Pop window title.

Parameter Name Origin Description
\E[ Ps c DA VT100 Send primary device attributes. Foot responds with "I'm a VT220 with sixel and ANSI color support".
\E[ Ps A CUU VT100 Cursor up - move cursor up Ps times.
\E[ Ps B CUD VT100 Cursor down - move cursor down Ps times.
\E[ Ps C CUF VT100 Cursor forward - move cursor to the right Ps times.
\E[ Ps D CUB VT100 Cursor backward - move cursor to the left Ps times.
\E[ Ps g TBC VT100 Tab clear. Ps=0 -> clear current column. Ps=3 -> clear all.
\E[ Ps ; Ps f HVP VT100 Horizontal and vertical position - move cursor to row ; column.
\E[ Ps ; Ps H CUP VT100 Cursor position - move cursor to row ; column.
\E[ Ps J ED VT100 Erase in display. Ps=0 -> below cursor. Ps=1 -> above
\E[ Ps K EL VT100 Erase in line. Ps=0 -> right of cursor. Ps=1 -> left of cursor. Ps=2 -> all.
\E[ Pm h SM VT100 Set mode. Pm=4 -> enable IRM (insert mode). All other values of Pm are unsupported.
\E[ Pm l RM VT100 Reset mode. Pm=4 -> disable IRM (insert mode). All other values of Pm are unsupported.
\E[ Ps n DSR VT100 Device status report. Ps=5 -> device status. Ps=6 -> cursor position.
\E[ Ps L IL VT220 Insert Ps lines.
\E[ Ps M DL VT220 Delete Ps lines.
\E[ Ps P DCH VT220 Delete Ps characters.
\E[ Ps @ ICH VT220 Insert Ps blank characters.
\E[ Ps X ECH VT220 Erase Ps characters.
\E[ > c DA2 VT220 Send secondary device attributes. Foot responds with "I'm a VT220 and here's my version number".
\E[ ! p DECSTR VT220 Soft terminal reset.
\E[ ? Ps $ p DECRQM VT320 Request DEC private mode.
\E[ Ps T SD VT420 Scroll down Ps lines.
\E[ s SCOSC SCO, VT510 Save cursor position.
\E[ u SCORC SCO, VT510 Restore cursor position.
\E[ Ps SP q DECSCUSR VT510 Set cursor style. In foot, Ps=0 means "use style from foot.ini".
\E[ = Ps c DA3 VT510 send tertiary device attributes. Foot responds with "FOOT", in hexadecimal.
\E[ Pm d VPA ECMA-48 Line position absolute - move cursor to line Pm.
\E[ Pm e VPR ECMA-48 Line position relative - move cursor down Pm lines.
\E[ Pm a HPR ECMA-48 Character position relative - move cursor to the right Pm times.
\E[ Ps E CNL ECMA-48 Cursor next line - move the cursor down Ps times.
\E[ Ps F CPL ECMA-48 Cursor preceding line - move the cursor up Ps times.
\E[ Pm ` HPA ECMA-48 Character position absolute - move cursor to column Pm.
\E[ Ps G CHA ECMA-48 Cursor character absolute - move cursor to column Ps. cursor. Ps=2 -> all. Ps=3 -> saved lines.
\E[ Ps S SU ECMA-48 Scroll up Ps lines.
\E[ Ps I CHT ECMA-48 Cursor forward tabulation Ps tab stops.
\E[ Ps Z CBT ECMA-48 Cursor backward tabulation Ps tab stops.
\E[ Ps b REP ECMA-48 Repeat the preceding printable character Ps times.
\E[ ? Pi ; Pa ; Pv S XTSMGRAPHICS xterm Set or request sixel attributes.
\E[ > Ps q XTVERSION xterm Ps=0 -> report terminal name and version, in the form \EP>|foot(version)\E\.
\E[ > 4 ; Pv m XTMODKEYS xterm Set level of the modifyOtherKeys property to Pv. Note that foot only supports level 1 and 2, where level 1 is the default setting.
\E[ > 4 n <unnamed> xterm Resets the modifyOtherKeys property to level 1. Note that in foot, this sequence does not completely disable modifyOtherKeys, since foot only supports level 1 and level 2 (and not level 0).
\E[ ? u <unnamed> kitty Query current values of the Kitty keyboard flags.
\E[ > flags u <unnamed> kitty Push a new entry, flags, to the Kitty keyboard stack.
\E[ < number u <unnamed> kitty Pop number of entries from the Kitty keyboard stack.
\E[ = flags ; mode u <unnamed> kitty Update current Kitty keyboard flags, according to mode.

All OSC sequences begin with \E], sometimes abbreviated OSC.

Sequence Origin Description
\E] 0 ; Pt \E\ xterm Set window icon and title to Pt (foot does not support setting the icon)
\E] 2 ; Pt \E\ xterm Set window title to Pt
\E] 4 ; c ; spec \E\ xterm Change color number c to spec, where spec is a color in XParseColor format. foot only supports RGB colors; either rgb:<red>/<green>/<blue>, or the legacy format (#rgb).
\E] 7 ; Uri \E\ iTerm2 Update the terminal's current working directory. Newly spawned terminals will launch in this directory. Uri must be in the format file://<hostname>/<path>. hostname must refer to your local host.
\E] 8 ; id=ID ; Uri \E\ VTE+iTerm2 Hyperlink (a.k.a HTML-like anchors). id=ID is optional; if assigned, all URIs with the same ID will be treated as a single hyperlink. An empty URI closes the hyperlink.
\E] 9 ; msg \E\ iTerm2 Desktop notification, uses notify in foot.ini(5).
\E] 10 ; spec \E\ xterm Change the default foreground color to spec, a color in XParseColor format.
\E] 11 ; spec \E\ xterm Change the default background color to spec, a color in XParseColor format. Foot implements URxvt's transparency extension; e.g. spec=[75]#ff00ff or spec=rgba:ff/00/ff/bf (pink with 75% alpha).
\E] 12 ; spec \E\ xterm Change cursor color to spec, a color in XParseColor format.
\E] 17 ; spec \E\ xterm Change selection background color to spec, a color in XParseColor format.
\E] 19 ; spec \E\ xterm Change selection foreground color to spec, a color in XParseColor format.
\E] 22 ; xcursor-pointer-name \E\ xterm Sets the xcursor pointer. An empty name, or an invalid name resets it.
\E] 52 ; Pc ; ? \E\ xterm Send clipboard data. Pc can be either c, s or p. c uses the clipboard as source, and s and p uses the primary selection. The response is \E] 52 ; Pc ; <base64-encoded data> E\, where Pc denotes the source used.
\E] 52 ; Pc ; Pd \E\ xterm Copy Pd (base64 encoded text) to the clipboard. Pc denotes the target: c targets the clipboard and s and p the primary selection.
\E] 104 ; c \E\ xterm Reset color number c (multiple semicolon separated c values may be provided), or all colors (excluding the default foreground/background colors) if c is omitted.
\E] 110 \E\ xterm Reset default foreground color
\E] 111 \E\ xterm Reset default background color
\E] 112 \E\ xterm Reset cursor color
\E] 117 \E\ xterm Reset selection background color
\E] 119 \E\ xterm Reset selection foreground color
\E] 133 ; A \E\ FinalTerm Mark start of shell prompt
\E] 555 \E\ foot Flash the entire terminal (foot extension)
\E] 777;notify;title;msg \E\ urxvt Desktop notification, uses notify in foot.ini(5).

All DCS sequences begin with \EP (sometimes abbreviated DCS), and are terminated by \E\ (ST).

Sequence Description
\EP q <sixel data> \E\ Emit a sixel image at the current cursor position
\P $ q <query> \E\ Request selection or setting (DECRQSS). Implemented queries: DECSTBM, SGR and DECSCUSR.
\EP = C s \E\ Begin (C=1) or end (C=2) application synchronized updates. This sequence is supported for compatibility reasons, but it's recommended to use private mode 2026 (see above) instead.
\EP + q <hex encoded capability name> \E\ Query builtin terminfo database (XTGETTCAP)

Foot does not support 8-bit control characters ("C1").

2023-09-25