快捷键冲突发生在两个或多个应用程序配置为监听同一个键盘快捷键时。两个应用都想用同一个组合键——比如说,Option-Space。当你按下它时,macOS 会把这个按键发送给当前获得焦点的应用。那个应用首先获得该按键。如果它识别了这个快捷键,就会执行,另一个应用永远看不到这个按键。
对于 Mac 上的语音输入用户来说,这特别常见,因为快捷键选择是初始设置的关键部分,与现有系统快捷键或其他应用程序的冲突可能会导致令人沮丧的配置问题。
系统如何决定哪个应用获胜
顺序是这样的:
- 获得焦点的应用。 macOS 首先将每个按键发送到活跃的应用程序。如果该应用注册了这个快捷键,就会执行。
- 全局监听器。 有些应用注册为即使未获得焦点也能监听快捷键。如果前台应用不使用该快捷键,后台监听器仍然可以拦截它。
- 系统。 如果没有应用声称该快捷键,macOS 可能对它有系统级操作(截屏、聚焦搜索等)。
这意味着冲突不是对称的。如果两个应用都在后台监听,通常先注册的应用获胜。如果一个仅在获得焦点时监听,另一个全局监听,那么全局监听器可以从获得焦点的应用手中抢走该快捷键。
分层方法对 macOS 来说是高效的,需要将数千个可能的按键组合路由到正确的地方,但当你安装另一个应用后某个应用停止响应自己的快捷键时,这对用户来说会造成意外。
实际中快捷键冲突从哪里来
快捷键冲突很常见,因为:
- 常用快捷键很受欢迎。 Option-Space、Command-Shift-D 等被多个应用重用,因为它们容易记住且符合人体工学。
- 快捷键文档分散。 安装应用时,你可能直到使用才发现它的快捷键,此时可能已经分配给其他东西了。
- 应用不会警告。 macOS 中没有系统范围的注册表告诉新应用"那个快捷键已被占用";大多数应用只是注册它们的设置中有什么,而不检查冲突。
- 许多应用附带默认快捷键。 新应用的全新安装附带一组已在其设置中的默认快捷键,如果其中一个与你现有的设置冲突,你在尝试使用它之前是不会知道的。
语音输入应用特别容易发生冲突,因为它们通常会选择一个快速、易记的键组合,比如 Option-Space 或 Control-Shift-D,这可能是其他生产力应用也想使用的。
如何诊断冲突
最明显的迹象是,安装另一个应用后,某个应用的快捷键停止工作。工作流程如下:
- 注意到按键无反应。 你按下快捷键,什么都没有发生(或错误的应用执行了)。
- 缩小范围确定哪个应用失去竞争。 在受影响的应用中单独尝试该快捷键,并在你刚安装的较新应用中测试它。Apple 语音输入用户尤其经常遇到这个问题。
- 检查两个应用的设置。 查看两个应用程序的偏好设置或设置,找到它们都使用的确切快捷键绑定。
如何修复冲突
如果快捷键停止工作:
- 确定哪些应用使用该快捷键。 检查最近添加的应用或停止响应的应用的设置。
- 更改其中一个。 在一个应用中选择不同的快捷键,或者如果你不使用它,禁用该功能。许多用户发现Apple 语音输入与其他应用的快捷键冲突,这时改变快捷键配置就很重要。
- 测试。 在两个应用中按该快捷键,确保你想保留的那个仍然工作。
设置新应用的快捷键时,要避免使用知名组合键(Command-S、Command-Z、Option-Space),或先检查其他应用的设置。预先选择一个不太常见的按键组合可以节省日后的调试时间。