^[control-codes
live in libghostty-vt

ANSI modes

BDSM Bi-directional Support Mode

View as Markdown

Whether the terminal or the host handles bidirectional text.

CSI 8 h/l
ECMA-48
§7.2.1 BDSM – Bi-directional Support Mode, p. 21

Mode 8 is one of the two modes the fifth edition of ECMA-48 added for bidirectional text. Reset, control functions act on the presentation or the data according to DCSM; set, they act on the data, and the device handles the bidirectional aspects of the text itself.

StateECMA-48 calls itMeaning
Reset, CSI 8 lEXPLICITcontrol functions act where DCSM says
Set, CSI 8 hIMPLICITcontrol functions act on the data, and the device handles bidirectional text itself

Neither xterm nor libghostty-vt implements it. Both ignore CSI 8 h and CSI 8 l, and both answer DECRQM with 0, not recognized: the mode is not among the ones xterm’s do_ansi_rqm answers for.

Support

TerminalVersionSupportNotes
VT220manual, 2nd ed., 1984Nonot in the manual, whose table of ANSI modes has only KAM, IRM, SRM and LNM
VT510manual, 1st ed., 1993Nonot in the manual
xtermpatch 412, xterm-411aNoignored; DECRQM answers 0
libghostty-vt0f171f6Noignored; DECRQM answers 0
ConEmubuild 230724, its documentationNonot in its ANSI escape codes

Validation

BDSM-1: Not recognized

\e[8$p
|_____|
reply \e[8;0$y

BDSM-2: Not recognized after it is set, either

\e[8h
\e[8$p
|_____|
reply \e[8;0$y
Every example on these pages runs in your browser, in libghostty-vt compiled to WebAssembly.