Appearance
modifyOtherKeys
modifyOtherKeys (CSI > 4 ; Pv m) enables extended key reporting that distinguishes modified key combinations that would otherwise be ambiguous. At level 2, keys like Ctrl+I are reported distinctly from Tab, and Ctrl+M from Enter.
modifyOtherKeys is xterm's opt-in path for less ambiguous keyboard reporting. It predates the Kitty keyboard protocol and is still relevant because many applications learned to parse it first. The tradeoff is compatibility: once enabled, key sequences change shape, so applications must enable it deliberately and restore terminal state on exit.
How this is testedautomated
Check if the terminal supports xterm modifyOtherKeys mode for enhanced key reporting.
Check if the terminal supports xterm modifyOtherKeys mode for enhanced key reporting.
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-05-17
Supported by 10 of 12 terminals (83%). Not supported by: vt100.js, xterm.js. Part of the Modern TUI baseline. Notes: vt100.js: Not implemented — pure TypeScript emulator; xterm.js: modifyOtherKeys not implemented in xterm.js.
Supported by 10 of 14 backends (71%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | |
| Ghostty | 1.3.1 | ✓ yes | |
| VS Code | ✓ yes | ||
| Warp | ✓ yes | ||
| Kitty | 0.46.2 | ✓ yes | modifyOtherKeys not exposed via Python batch bridge |
| Cursor | ✓ yes | ||
| Terminal.app | ✓ yes |
Headless Backends
Parser correctness only — a ✓ means the parser accepts the sequence.
| Backend | Version | Support | Notes |
|---|---|---|---|
| vterm.js | 0.2.0 | ✓ yes | |
| Alacritty | 0.26.0 | ~ partial | modifyOtherKeys not exposed via alacritty_terminal API |
| WezTerm | 0.1.0-fork.5 | ~ partial | modifyOtherKeys not exposed via wezterm-term API |
| vt100.js | 0.2.1 | ✗ no | Not implemented — pure TypeScript emulator |
| xterm.js | 5.5.0 | ✗ no | modifyOtherKeys not implemented in xterm.js |