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[>cESC [
ESC [ c / ESC [ > chex
1b 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
示例
# 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"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)fmt.Print("\x1b[c") // request; read reply via os.Stdin in raw modeprocess.stdout.write('\x1b[c') // reply arrives on process.stdinprintf("\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
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |