启用 Kitty 键盘协议后 Enter、Tab、Backspace 触发两次:终端版本对照与升级
【免费下载链接】herdrthe runtime your coding agents live on项目地址: https://gitcode.com/GitHub_Trending/her/herdr
在 Herdr 里,当窗格中的应用启用了 Kitty keyboard event reporting 后,如果外层终端版本过旧,终端会把 Enter、Tab、Backspace 的释放事件发送为与按下事件相同的字节。按键一次却产生两次完全相同的事件,表现为回车跳两行、Tab 跳两格、Backspace 删两字符。这个问题只能在外层终端侧解决:重复字节是终端发出的,Herdr 收到后无法区分。本文给出 Herdr 文档中的终端最低修复版本对照与升级路径,适用终端为 kitty、foot 和 Alacritty,在长期支持版(LTS)Linux 发行版自带的旧版终端包上尤其常见。
先确认现象并记录环境
按 troubleshooting 文档 的开头要求,先从版本和会话状态入手:
herdr -V herdr status同时记录以下信息。这些内容在后续反馈问题时也是文档要求的必备项:
- 操作系统;
- 外层终端的名称和版本;
- 会话是本地还是远程;
- 是否涉及 tmux。
判断依据就是文档描述的现象本身:应用启用 Kitty keyboard event reporting 之后,Enter、Tab、Backspace 的释放被终端以与按下相同的字节发出,Herdr 无法区分这些重复字节,于是每次物理按键被解释为两次输入。
终端最低修复版本对照
升级目标是让外层终端包含上游修复。文档给出的版本对照如下:
| 终端 | 最低修复版本 |
|---|---|
| kitty | 0.33.0 |
| foot | 1.20.0 |
| Alacritty | 0.15.0 |
如果你当前安装的终端版本低于表中对应行,问题大概率出自终端本身,直接按下一节升级。注意该问题在 LTS 发行版附带的旧终端包上特别常见,用系统包管理器查到的版本号往往就是低于表中值的版本。
升级外层终端
文档给出的解决路径是 “Update the outer terminal to a version that contains its upstream fix”,即把外层终端更新到包含上游修复的版本。文档没有为这几个终端提供统一的升级命令,因此按你当初安装该终端的渠道(官方安装方式或系统包管理器)升级,使版本达到上表最低修复版本或以上。
升级只作用于外层终端程序本身,不会改动 Herdr 的安装或既有会话。升级完成后重新打开终端,再运行herdr进入验证。
验证与仍然复现时的下一步
在 Herdr 的窗格内分别按下一次 Enter、Tab、Backspace,确认不再出现一次按键触发两次的现象。
如果外层终端已经处于当前版本而问题仍然存在,文档要求的动作是:报告确切的终端版本,并说明该现象在 Herdr 之外是否同样发生。文档同时指向了确认边界捕获的讨论,即 Herdr issue #1116。
相关边界:Windows 上的 Kitty 键盘协议问题
Windows 支持文档中记载的是一个不同的症状:旧版 Windows 10 的系统 ConPTY 会丢弃Kimi、Pi 等 agent 使用的 Kitty keyboard protocol 序列(按键失效,而不是重复触发)。为此 Windows 安装包附带了 Microsoft 当前的 app-local ConPTY 运行时。只有在诊断这个捆绑运行时的兼容性问题时,才在启动 Herdr 前设置HERDR_WINDOWS_CONPTY=system。它和本文的重复触发不是同一个问题,排查时不要混淆。
【免费下载链接】herdrthe runtime your coding agents live on项目地址: https://gitcode.com/GitHub_Trending/her/herdr
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考