跳到主要内容
ansicode

CSI ? Ps n — 私有 DSR(扩展状态查询)

DEC 私有设备状态报告 —— 扩展光标位置(?6 DECXCPR 含页号)、打印机 / UDK / 定位器 / 宏空间 / 内存校验和等状态。

字节形式

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

\\x1b[\x1b[?<Ps>n
\\033[\033[?6n
\\e[\e[?6n
ESC [ESC [ ? Ps n
hex1b 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 会话数。

示例

bash
printf '\033[?6n'   # DECXCPR — reply: \x1b[?<row>;<col>;<page>R
python
import sys; sys.stdout.write('\x1b[?15n'); sys.stdout.flush()   # query printer status
go
fmt.Print("\x1b[?26n")   // query keyboard dialect
javascript
process.stdout.write('\x1b[?62n')   // macro-space available bytes
c
printf("\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
支持

相关序列