跳到主要内容
ansicode

DECRQM — 模式状态查询(CSI ? Ps $ p)

询问终端某个 DEC 私有模式是否已启用 —— 运行时特性检测的标准方式。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b[?Ps$p
\\033[\033[?Ps$p
\\e[\e[?Ps$p
ESC [ESC [ ? Ps $ p
hex1b 5b 3f <Ps> 24 70

说明

Request Mode(DEC 私有变体)。中间字节 `$`(0x24)+ 末字节 `p`(0x70)使其成为针对 DEC 私有模式 `Ps` 的 DECRQM 帧。回复:`\x1b[?Ps;Pm$y`,其中 `Pm` 取值:0(不识别该模式)、1(已置位/启用)、2(已复位/关闭)、3(永久置位)、4(永久复位)。这是程序在运行时查询某特性是否可用的标准做法 —— `\x1b[?2026$p` 查同步输出、`\x1b[?1004$p` 查焦点事件、`\x1b[?2004$p` 查括号粘贴、`\x1b[?1006$p` 查 SGR 鼠标编码。无 DECRQM 时,程序只能乐观发送然后听天由命。注意:ANSI 模式变体(不带 `?`)`\x1b[Ps$p` 查询 KAM、IRM、SRM 等非 DEC 模式。

规范出处: xterm-ctlseqs (DECRQM, CSI ? Ps $ p)

示例

bash
printf '\033[?2026$p'   # is synchronized-update mode available?
python
import sys; sys.stdout.write('\x1b[?2026$p')
go
fmt.Print("\x1b[?2026$p")
javascript
process.stdout.write('\x1b[?2026$p')
c
printf("\x1b[?2026$p");

终端支持

xterm
支持
Linux console (fbcon)
部分
macOS Terminal.app
部分
iTerm2
支持
Windows Terminal
支持
cmd.exe / ConPTY
不支持
kitty
支持
alacritty
支持
WezTerm
支持
Ghostty
支持
GNOME Terminal
支持
Konsole
支持
tmux
不支持
GNU screen
不支持

相关序列

在家族食谱中

CSI 食谱 · 4. 查询 —— DA、DA2、DSR、DECRQM