DECSET ?1000 / ?1006 — 鼠标跟踪
以转义序列形式接收鼠标点击 / 拖拽 / 滚轮事件。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[?1000h (click only) \x1b[?1002h (cell drag) \x1b[?1003h (any motion) \x1b[?1006h (SGR encoding)\\033[
\033[?1000h …\\e[
\e[?1000h …ESC [
ESC [ ? <N> h / lhex
1b 5b 3f ... 68 / 6c说明
鼠标上报通过多个可叠加的 DEC 私有模式控制。`?1000` 报告按下与释放;`?1002` 在按键保持期间额外报告拖拽;`?1003` 报告所有移动。编码子模式:`?1005`(UTF-8,已弃用)、`?1015`(urxvt)、`?1006`(SGR —— 推荐,无 223 列限制,ASCII 安全)。可移植做法是同时启用 `?1006` 和 `?1000`/`?1002`。退出时务必发送 `?1000l ?1002l ?1003l ?1006l` 关闭全部 —— 漏关会让 shell 收到大量 `^[[<…` 字符串。
规范出处: xterm-ctlseqs (Mouse Tracking)
示例
printf '\033[?1000h\033[?1006h' # enable click+SGR\nprintf '\033[?1000l\033[?1006l' # disableimport sys; sys.stdout.write('\x1b[?1000h\x1b[?1006h')fmt.Print("\x1b[?1000h\x1b[?1006h")process.stdout.write('\x1b[?1000h\x1b[?1006h')printf("\x1b[?1000h\x1b[?1006h");终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 部分 | 支持 | 支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |