Skip to content

X10 Mouse Tracking (9)

Category: input · Baseline: modern · Tags: DEC Private Modes · Specification ↗

X10 compatibility mouse tracking (mode 9) reports only button press events, not releases or motion. This is the oldest mouse tracking mode, limited to coordinates up to 223 and press-only events. X10 mode is the ancestor of terminal mouse reporting. It came from xterm and reports only button presses using compact byte-encoded coordinates, which creates the classic 223-column limit. Modern applications should prefer SGR mouse, but X10 remains useful for understanding the compatibility stack that later mouse modes extended.
How this is testedautomated
Enable X10 mouse mode (CSI ? 9 h), check getMode("mouseTracking") returns true.

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 9 of 12 terminals (75%). Not supported by: vt100.js, Alacritty, WezTerm. Part of the Modern TUI baseline. Notes: vt100.js: X10 mouse mode (?9) not implemented; Alacritty: X10 mouse mode (?9) not implemented; WezTerm: X10 mouse mode (?9) not implemented.

Supported by 11 of 14 backends (79%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Kitty0.46.2✓ yesX10 mouse mode (?9) not implemented in kitty
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

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

BackendVersionSupportNotes
vterm.js0.2.0✓ yes
xterm.js5.5.0✓ yes
Alacritty0.26.0✗ noX10 mouse mode (?9) not implemented
vt100.js0.2.1✗ noX10 mouse mode (?9) not implemented
WezTerm0.1.0-fork.5✗ noX10 mouse mode (?9) not implemented