CSI ? Ps n — 私有 DSR(扩展状态查询)
DEC 私有设备状态报告 —— 扩展光标位置(?6 DECXCPR 含页号)、打印机 / UDK / 定位器 / 宏空间 / 内存校验和等状态。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\x1b[?<Ps>n\033[?6n\e[?6nESC [ ? Ps n1b 5b 3f ... 6e说明
前缀 `?` 把标准 DSR(`\x1b[<Ps>n`)切换到 DEC 的私有 DSR 命名空间,Ps 含义随之扩展。**`?6n` DECXCPR**(扩展光标位置报告)最实用:终端回复 `\x1b[?<行>;<列>;<页>R`,额外包含当前显示页号 —— 原始 DSR-6 的回复(`\x1b[<行>;<列>R`)省略页号。其他有用查询:**`?15n`** 打印机状态 —— 回复 `\x1b[?10n`(就绪)/ `?11n`(未就绪)/ `?13n`(无打印机);**`?25n`** UDK 锁定状态 —— 回复 `\x1b[?20n`(解锁)/ `?21n`(锁定);**`?26n`** 键盘语言 —— 回复 `\x1b[?27;<Ps>;<Pm>;<Pp>n`,Ps = 语言(1 = 北美、2 = 英式等);**`?53n`** / **`?55n`** 定位器状态;**`?62n`** 宏空间 —— 回复 `\x1b[<Pn>*{`(剩余宏空间字节数);**`?63;Ps n`** 内存校验和 —— 回复 `DCS Pp ! ~ Ps ! P校验和 ST`;**`?75n`** 数据完整性;**`?85n`** 多会话状态。多数现代模拟器最多只实现 `?6n` 加一个 `?13n`(无打印机)桩,其余不回应或回应被静默忽略。模式状态查询请用 DECRQM(`\x1b[<Ps>$p`),私有 DSR 仅用于上述少数几项。
规范出处: DEC VT510 RM (private DSR) / xterm-ctlseqs
参数
| Ps | 私有 DSR 选择子。常见值:`6` 扩展光标位置(DECXCPR)、`15` 打印机、`25` UDK、`26` 键盘、`53` / `55` 定位器、`62` 宏空间、`63;n` 校验和、`75` 数据完整性、`85` 会话数。 |
示例
printf '\033[?6n' # DECXCPR — reply: \x1b[?<row>;<col>;<page>Rimport sys; sys.stdout.write('\x1b[?15n'); sys.stdout.flush() # query printer statusfmt.Print("\x1b[?26n") // query keyboard dialectprocess.stdout.write('\x1b[?62n') // macro-space available bytesprintf("\x1b[?6n"); /* DECXCPR — get cursor pos + active page */终端支持
- xterm
- 支持
- Linux console (fbcon)
- 部分
- macOS Terminal.app
- 部分
- iTerm2
- 部分
- Windows Terminal
- 部分
- cmd.exe / ConPTY
- 不支持
- kitty
- 部分
- alacritty
- 部分
- WezTerm
- 部分
- Ghostty
- 部分
- GNOME Terminal
- 部分
- Konsole
- 部分
- tmux
- 不支持
- GNU screen
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 部分 | 部分 | 部分 | 部分 | 不支持 | 部分 | 部分 | 部分 | 部分 | 部分 | 部分 | 不支持 | 不支持 |