跳到主要内容
ansicode

DA — 设备属性查询(CSI c / CSI > c)

询问终端的 VT 类型 —— 主查询(CSI c)返回支持特性,副查询(CSI > c)返回型号与固件。

字节形式

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

\\x1b[\x1b[c (primary DA) \x1b[>c (secondary DA)
\\033[\033[c / \033[>c
\\e[\e[c / \e[>c
ESC [ESC [ c / ESC [ > c
hex1b 5b 63 / 1b 5b 3e 63

说明

Device Attributes —— 程序发送的请求/回复对,终端通过输入流应答。**主 DA**(`\x1b[c`,亦可写 `\x1b[0c`)—— 终端回复 `\x1b[?64;...c`,列出 VT 等级和可选特性(132 列模式、sixel、ReGIS、用户定义键等)。**副 DA**(`\x1b[>c`,亦可写 `\x1b[>0c`)—— 终端回复 `\x1b[>Pp;Pv;Pcc`,Pp 为型号(`0`=VT100,`1`=VT220,`41`=VT420,`61`=xterm 风格,`65`=VT525 等),Pv 为固件版本,Pcc 为 ROM 序列号(通常 0)。程序常在启动时通过 DA 做特性探测 —— neovim 的 `t_Co` 自动检测、tmux 的标题能力探测、mintty 的 xterm 兼容性检查均依赖它。

规范出处: ECMA-48 §8.3.24 (DA) / xterm-ctlseqs

示例

bash
# Send primary DA and read the reply (raw mode):\nstty -echo raw min 0 time 5\nprintf '\033[c'; IFS= read -r -t 1 -d c REPLY; stty sane\necho "DA reply: $REPLY c"
python
import sys, termios, tty, select\nfd = sys.stdin.fileno(); old = termios.tcgetattr(fd); tty.setraw(fd)\ntry:\n    sys.stdout.write('\x1b[c'); sys.stdout.flush()\n    r, _, _ = select.select([fd], [], [], 1.0)\n    print(repr(sys.stdin.read(64)) if r else 'no reply')\nfinally:\n    termios.tcsetattr(fd, termios.TCSADRAIN, old)
go
fmt.Print("\x1b[c")   // request; read reply via os.Stdin in raw mode
javascript
process.stdout.write('\x1b[c')   // reply arrives on process.stdin
c
printf("\x1b[c"); fflush(stdout); /* read reply from stdin */

终端支持

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