快捷键输入
快捷键输入用于为一个命令录制一组键盘组合。它会持续展示已经提交的快捷键、明确区分录制状态,并在替换被取消或拒绝时保留原值。
激活字段后,按下一组完整组合键。
用法
导入 Tailwind、完整的 A3S 样式包和运行时:
使用可见标签,并让输入控件关联相邻说明。输入控件保留表单值,键帽只负责视觉呈现。
如需按组件加载,请依次导入 Base、Button、Field、Hotkey Input、Kbd、A3S 视觉样式、运行时和快捷键输入控制器。CDN 等其他接入方式参见安装。
参数
JavaScript API
控制器提供 getValue()、setValue(value, options)、clear(options)、start(options)、stop(options) 和 refresh()。即使界面正在显示空的替换草稿,getValue() 也始终返回已经提交的组合键。
规范值由零个或多个修饰键和恰好一个非修饰键组成,修饰键顺序固定为 Control、Alt、Shift、Meta。字面量 + 使用 Plus 表示。API 会规范化 Ctrl、Command 等常见别名,平台显示符号不会进入存储值。
使用 event.detail.reject(message) 拒绝重复、系统保留或受权限控制的组合。控制器会保留旧值、退出录制,并同时通过可见说明与 a3s:hotkey-rejected 暴露具体原因。
产品决策
只在“为一个已命名命令分配一组组合键”时使用快捷键输入。搜索快捷键应使用普通文本字段,只读提示应使用键帽,浏览多条已有分配应使用命令列表。命令注册表、重复检测、操作系统保留组合、权限、持久化和全局监听器都由宿主负责。
部分操作系统或浏览器快捷键不会到达页面 JavaScript。界面不能承诺捕获所有组合,也不能为了强制捕获而禁用平台逃生路径。
状态与变体
- 就绪且有值: 已提交组合以适配平台显示方式的键帽呈现,规范化输入值继续服务于表单和辅助技术。
- 空值: 隐藏清除操作,相邻说明解释如何创建第一条分配。
- 录制中: 聚焦输入控件或按 Enter 开始一次有边界的捕获事务。只按修饰键时继续录制,并提示补充基础键。
- 替换中: 清除操作打开一个空草稿。Escape 或窗口失焦恢复已提交值;Tab、指针离开或有效组合键会提交草稿。
- 被拒绝或无效: 保留并展示旧值,焦点留在输入控件,旁边显示具体冲突或格式原因。按 Enter 重试。
- 已禁用: 保留可读值,使用原生
disabled阻止捕获,并在相邻位置解释策略或权限限制。
尚未设置快捷键。激活字段后即可录制。
已分配给浏览器历史。按 Enter 选择其他组合。
此快捷键由工作区策略统一管理。
无障碍
- 优先使用可见
label。占位内容只说明捕获动作,不能替代控件名称。 - 输入控件是唯一的默认 Tab 停靠点。Delete 或 Backspace 开始一个空的替换草稿,Enter 在提交或拒绝后重新开始,Tab 离开整个控件,Escape 取消当前录制但不让输入控件失焦。
- 仅修饰键、取消、清除、拒绝和已提交值通过有边界的礼貌状态区域播报。没有接收到实时播报的用户仍能看到持续说明。
- 键帽使用
aria-hidden,因为只读输入已经暴露规范组合。组件有意不使用aria-keyshortcuts,因为保存的组合用于激活宿主命令,而不是录制器本身。 KeyboardEvent.key让捕获结果跟随当前键盘布局。死键、输入法组合过程和无法识别的键不会提交半成品;字面量加号编码为Plus。- 窗口失焦或文档被隐藏时取消当前录制,避免切换浏览器上下文时静默覆盖分配。正常 Tab 或指针离开会提交用户主动创建的空替换草稿。
- 不可用输入必须使用原生
disabled。保留可读的已提交值和相邻原因,不能只依赖透明度或颜色表达限制。
