CSI ? Ps n — 私有 DSR(扩展状态查询)
DEC 私有设备状态报告 —— 扩展光标位置(?6 DECXCPR 含页号)、打印机 / UDK / 定位器 / 宏空间 / 内存校验和等状态。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[?<Ps>n\\033[
\033[?6n\\e[
\e[?6nESC [
ESC [ ? Ps nhex
1b 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 部分 | 部分 | 部分 | 部分 | 不支持 | 部分 | 部分 | 部分 | 部分 | 部分 | 部分 | 支持 | 支持 |