C6.03.4Shortcut conflict with the system设计研究

与系统级快捷键的冲突优先级

别名: 系统快捷键冲突 · 保留和弦 · 快捷键抢占

概念解释

同一记和弦在操作系统、窗口管理器、浏览器外壳和应用里可能都有定义。实际触发谁,取决于事件沿着焦点链向上传时谁先把它吃掉。系统级快捷键通常享有更高优先级:应用绑了也到不了处理函数,或反过来应用在错误的层把系统和弦截走。冲突不是“两个功能碰巧同名”,而是一条按键流只能交付一次。

机制

按键事件从焦点控件开始冒泡,中途任一监听者可以消费它。操作系统把切换应用、锁定屏幕、截屏、输入法切换等和弦注册在更外层,应用进程根本收不到。浏览器把标签关闭、查找、刷新放在外壳层,网页再绑同一串就会静默失败。应用若在全局热键 API 里注册,又可能在自己不在前台时抢走本该给别的程序的键。用户看到的症状是:菜单上写着这记快捷键,按下却跑了别的功能,或什么都不发生。优先级一旦没说清,专家路径变成不可靠路径——同样的手型在不同宿主里语义翻转。

怎么研究

冲突可以在真实宿主里做按键追踪:在系统、浏览器、应用三层分别绑定同一和弦,记录哪一层的处理函数被调用,以及用户预期与结果是否一致。自变量包括焦点在哪、应用是否前台、是否使用全局热键;因变量包括实际接收层、失败是静默还是误触发。只在无浏览器的测试窗里验收快捷键,会漏掉外壳层已经占用的那一批。

边界

用户自定义的系统快捷键会改写厂商默认的保留表,应用按“官方文档里的保留键”来避让仍可能撞上。嵌入式 WebView、远程桌面和虚拟机有各自的事件边界,优先级在这些边界上会再翻一层。辅助技术(屏幕阅读器的修饰键)相当于又一个外层消费者。全屏独占输入的游戏常把几乎所有键留给自己,这时系统和弦反而可能到不了。

怎么落地

  • 列出目标操作系统与浏览器的保留和弦,应用绑定先避让;若必须占用,在快捷键设置里标明“可能被系统截获”。
  • 禁止默认启用全局热键去抢前台不属于自己的和弦;需要全局监听时做成显式选项。
  • 在真实宿主(系统桌面 + 浏览器 + 应用)里按每一记公开快捷键,核对菜单标注、实际触发对象和失败时是否有说明,而不是只在独立窗口里测通。

延伸

  • 同组C6.03.1 快捷键是专家路径,不能是唯一路径 · C6.03.2 助记式与位置式分配的取舍 · C6.03.3 快捷键必须在对应菜单项旁展示以支持学习
  • 相邻C6.04 修饰键 · C6.25 输入法状态与切换
  • 站内检索shortcut conflict · reserved chord · global hotkey

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C6.03.4