已开启
TUI 应能解析 CSI-u 键报(vs code 1.140.0, atomcode 5.2) #1618
rdsz创建于 1 天前
1 天前 添加了label:bug
atomgit-bot
1 天前 评论:
1 天前 评论:
你好,谢谢反馈。我们已收到这条 Issue,会由维护者继续处理。代码相关结论需要读仓库核实后再说;若方便可补充版本号与最小复现。


1 天前 将 duxin 设为负责人
你好,谢谢反馈。我们已收到这条 Issue,会由维护者继续处理。代码相关结论需要读仓库核实后再说;若方便可补充版本号与最小复现。


[27u 是 Esc 键的 Kitty 键盘协议上报残片
:完整序列是 ESC [ 27 u,27 是 Esc 的码点,u
是该协议格式的结束符。结合你之前的 [99;5u
(查证后它其实是 普通 Ctrl+C 的 VS Code Kitty
编码,不是
Ctrl+Shift+C——我上轮猜错了),两个片段对应关系:
┌────────────────┬──────────┬───────────────┐
│ 输入框里的残片 │ 实际按键 │ 完整序列 │
├────────────────┼──────────┼───────────────┤
│ [27u │ Esc │ ESC [ 27 u │
├────────────────┼──────────┼───────────────┤
│ [99;5u │ Ctrl+C │ ESC [ 99 ; 5 │
│ │ │ u │
└────────────────┴──────────┴───────────────┘
为什么没中断、为什么打成字
我探测了当前环境:TERM_PROGRAM=vscode、
VSCODE_INJECTION=1,你的 AtomCode 跑在 VS Code
集成终端里,本机版本 1.140.0。VS Code 从 1.109.5
起默认启用 Kitty 键盘协议(设置项
terminal.integrated.enableKittyKeyboardProtocol
,默认 true),于是 Esc、Ctrl+C
这类键不再以传统控制字符发出,而是编码成上面的
CSI-u 序列。AtomCode 的 TUI
目前不解析这种编码(它自己的文档也标注 Kitty
协议相关功能"Windows 上不可用"),于是一律
吞掉开头 ESC、把剩余字符当普通输入打进输入框
——Esc「清空输入/打断输出」、Ctrl+C「取消当前操作」
就都失效了,落成了你看到的文本。