Skip to content

Kitty keyboard: REPORT_ALL_KEYS (flag 8)

Category: extensions · Baseline: rich · Tags: Kitty Extensions · Specification ↗

Flag 8 makes ALL keypresses generate escape sequences, including unmodified printable characters that would normally be sent as plain text. This gives applications complete, unambiguous key identification but changes fundamental terminal behavior — plain typing no longer produces direct output. Applications must explicitly handle every key. Known gotcha: enabling this flag can break mouse hover/tracking in some implementations if not handled carefully.
How this is testedautomated
Push keyboard mode with flags 1+8 (CSI > 9 u), query flags, verify bit 8 is set.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Analysis2026-04-06

Supported by 7 of 12 terminals (58%). Not supported by: Kitty, Terminal.app, Cursor, vt100.js, xterm.js. Part of the Rich TUI baseline. Notes: vt100.js: Not implemented — pure TypeScript emulator; xterm.js: Kitty keyboard protocol not implemented in xterm.js.

Supported by 8 of 14 backends (57%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Cursor✗ no
Terminal.app✗ no

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
Kitty0.40.0✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
vt100.js0.2.1✗ noNot implemented — pure TypeScript emulator
xterm.js5.5.0✗ noKitty keyboard protocol not implemented in xterm.js