^[control-codes live in libghostty-vt

ANSI modes

BDSM Bi-directional Support Mode

Whether the terminal or the host handles bidirectional text.

CSI 8 h
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.

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.