mcpField
I
input-handling

input-handling

github.com/josiahsiegel开发5959 次安装19 周前更新
代码仓库

关于 input-handling

面向开发终端 UI 的开发者,提供键盘、鼠标、粘贴和焦点管理方面的输入处理建议。重点说明原始模式的安全恢复、快捷键设计,以及避免粘贴内容被误当作命令执行。

主要功能

  1. 01规范交互与非交互输入
  2. 02说明原始模式的恢复要求
  3. 03提供快捷键设计建议
  4. 04定义焦点管理要点
  5. 05处理粘贴与鼠标事件安全

适用场景

  1. 01为终端 UI 设计可发现的快捷键
  2. 02确保程序退出时恢复终端状态
  3. 03让粘贴文本作为数据而非按键处理
  4. 04在调整大小后校验鼠标点击位置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill input-handling

安装后在 Claude Code 中输入/input-handling确认已加载。

附带文件references/input-protocols.mdreferences/keybinding-design.md

详细介绍

TUI 输入处理、原始模式、键盘、鼠标、粘贴和焦点

当 TUI 需要读取按键、处理快捷键、支持鼠标、编辑文本、管理焦点或确保安全粘贴行为时,使用此技能。

输入约定

  • 仅在交互式 TTY 会话中进入原始模式或 cbreak 模式。
  • 为脚本、管道和 CI 提供非交互式替代方案。
  • 将输入解码与应用操作分开。
  • 确保每项操作都能通过键盘完成。
  • 将鼠标支持视为可选的渐进增强。
  • 除非用户可以重新绑定快捷键,否则保留预期的终端快捷键。

原始模式规则

原始模式会禁用行规程并改变信号行为。应集中管理原始模式,并可靠地恢复终端状态。验证 Ctrl-C、Ctrl-Z/挂起(在支持的情况下)、EOF、调整大小、终端关闭和致命异常时的行为。密码和令牌不得回显。

快捷键设计

优秀的快捷键易于发现、保持一致,并能避免冲突。

  • 始终为常见操作提供可见帮助。
  • 仅当与工作流风险相符时,才使用 q、Esc 或 Ctrl-C 退出或取消。
  • 对破坏性操作进行确认;对不可逆操作要求更强的确认。
  • 除非可配置,否则避免占用常见的终端、Shell、编辑器和复用器快捷键。
  • 尽可能同时支持助记快捷键和导航按键。
  • 区分全局快捷键与焦点所在组件的快捷键。

焦点模型

每个交互元素都需要:

  • 稳定的标识。
  • 焦点资格规则。
  • 不单靠颜色来表示的可见焦点指示器。
  • 适用时支持 Tab/Shift-Tab 或方向键导航。
  • 明确规定禁用、隐藏、模态和嵌套控件的行为。
  • 鼠标点击时先更新焦点,再执行操作。

粘贴与鼠标安全

为 Shell、编辑器、命令面板和多行输入启用括号粘贴。解析粘贴开始/结束标记,并将粘贴文本视为数据,而非一系列命令。对于鼠标输入,应根据当前布局验证坐标,并在调整大小后忽略过期事件。

故障模式

症状可能原因修复方法
Esc 响应有延迟解析器正在等待,以区分 Alt 前缀调整超时时间或使用框架的协议支持
Ctrl-C 无法退出原始模式吞掉了信号显式映射 Ctrl-C 并恢复终端状态
粘贴会触发操作未启用括号粘贴,或将粘贴内容当作按键启用粘贴协议并将内容作为文本处理
鼠标点击了错误的行调整大小或滚动后布局已过期根据当前视口验证坐标
焦点消失移除组件后没有设置焦点回退目标计算下一个符合资格的焦点目标

参考文件

  • references/input-protocols.md - 键盘、鼠标、粘贴、焦点和调整大小事件的详细信息。
  • references/keybinding-design.md - 快捷键设计、避免冲突以及表单/编辑器相关内容。

评论

支持 Markdown