【发布时间】:2013-10-25 18:21:56
【问题描述】:
对于 Mac 应用程序,Objective-C 中是否存在全局拦截和更改/忽略给定快捷方式的方法?
BetterTouchTool 就是一个例子,它可以覆盖您提供的任何快捷方式。
我想要做的是在特定应用程序打开时阻止“退出”快捷方式(即 CMD+q)(因为在这种情况下,快捷方式是无意的某些人不希望按下并关闭应用程序)。
简而言之,我可以侦听任何全局键事件,然后在事件将其传递到预期的应用程序之前更改它吗?
【问题讨论】:
-
作为一个完全非编程的解决方案,您可以在系统偏好设置>键盘>键盘快捷方式>应用程序快捷方式>[特定应用程序]中更改该应用程序的等效键(我认为这已经移动在 Mavericks 中,但它仍应在某处的系统偏好设置中。)例如,我将浏览器的退出菜单项设置为 ^⌥⌘Q。编码方面,您正在寻找 CGEventTaps。
-
这不起作用,因为应用程序是使用 bash 脚本启动的,而不是 *.app 应用程序。我会研究一下 CGEventTaps,你有任何即时资源吗?
-
明白了。 Quartz Event Services reference 是官方文档。
标签: objective-c macos