SC 2.1.4 级别 A WCAG 2.1
字符键快捷键
仅由单个字母、数字或符号组成的键盘快捷键,必须支持关闭、重新映射,或仅在相关组件获得焦点时生效。此条准则旨在保护语音控制和听写用户,防止意外触发操作。
要求内容
若页面实现了仅使用字母、数字、标点或符号键——而不配合 Ctrl、Alt 或 Shift 等修饰键——的键盘快捷键,则以下条件至少须满足其一:
- 该快捷键可在设置菜单中关闭;
- 该快捷键可重新映射,改为使用一个或多个非打印键(Ctrl、Alt、Shift、功能键);
- 该快捷键仅在相关组件获得焦点时生效。
本准则的设立主要是为了保护语音输入用户。Dragon NaturallySpeaking 和 Voice Control 均会将语音转录为字符按键——句中一个多余的”k”可能触发 Gmail、Slack 或任何使用单字母快捷键的应用中的破坏性操作。
如何满足
- 审计代码库中所有单键处理程序:即检查
event.key是否匹配可打印字符但未同时检查修饰键的keydown/keypress监听器。 - 添加”键盘快捷键”设置面板,允许用户完全禁用快捷键。Gmail 和 Slack 在这方面均有良好实践。
- 或:将快捷键作用域限定为仅在焦点位于相关区域时触发(例如,
j/k仅在焦点位于邮件列表内时用于导航,而非在用户于回复框中输入时也生效)。 - 优先使用基于修饰键的快捷键(Ctrl+/、Alt+N)作为默认配置;将单键快捷键保留为面向高级用户的可选模式。
常见失败
- Gmail 风格的
j/k/r/a快捷键可在文档任意位置触发,包括在特定框架配置下的文本框内。 - 自定义数据表格中
Delete键无需确认即可删除行——对键盘用户尚可接受,但对语音用户而言极具风险,因为说出”delete that comma(删除那个逗号)“可能触发删除操作。 - 视频播放器中空格键全局切换播放/暂停,而非仅在播放器获得焦点时生效。
- 文档网站中
/键触发搜索焦点,即使焦点当前位于代码编辑器嵌入区域中也不例外。
axe-core 无法检测此问题——需要进行源码审查,或使用 Deque 更广泛测试套件中的特定自动化规则。多数生产环境中的失败仅在语音控制用户提交投诉后才被发现。
为何重要
本成功准则于 WCAG 2.1 中新增,原因在于 2017 年后语音输入的使用迅速增长。对于依赖听写的用户而言,一个不符合 2.1.4 的网站可能完全无法使用:每个段落都会触发不同的操作。对于偶尔误触按键的运动障碍键盘用户,能够禁用单字符快捷键同样大有裨益。