Skip to content

DECSACE — select attribute-change extent

Category: editing · Baseline: legacy · Tags: VT510 · Specification ↗

CSI Ps * x
DECSACE (CSI Ps * x) selects how DECCARA and DECRARA interpret their coordinates. Ps=1 (the default) treats the corners as endpoints of a stream of cells in scan order, so the operation affects the partial rows at the top and bottom plus every cell on the rows between. Ps=2 treats the coordinates as a true rectangle, affecting only the cells inside the box. Modern users almost always want the rectangle interpretation; the stream default is a relic of how DEC originally specified the operations.
How this is testedpartial
Send \x1b[2*x (select rectangle extent), verify the sequence is consumed.

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 all 9 tested terminals — universal adoption. Part of the Unicode baseline.

Supported by 11 of 14 backends (79%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yessequence consumed
Ghostty1.3.1✓ yessequence consumed
Terminal.app2.15✓ yessequence consumed
Kitty0.46.2✓ yessequence consumed
VS Code1.113.0? unknown
Warp0.2026.03.18.08.24.03? unknown
Cursor2.6.21? unknown

Headless Backends

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

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
vt100.js0.2.1✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes