在 Cocoa 应用程序中,我试图找到一种方法来捕获系统事件,例如通常使用 Cmd-Tab 或 Spotlight 启动的应用程序切换器,通常由 Cmd-Space 启动。我正在寻找一种方法来捕捉关键事件或任何其他方法来告诉我其中一个事件即将发生,最好取消它。
苹果屏幕共享远程桌面应用程序可以做到这一点,所以应该是可能的。它捕获这些事件并将它们发送到连接的远程计算机。
这是我已经尝试过的:
- 在 NSApplication 中使用 sendEvent 方法捕获事件。我看到所有事件,如 Cmd 按键、Tab 按键,但是当两者都被按下时,我什么也看不到。
- 注册一个 Carbon 热键监听器。我可以注册 Cmd+Q 之类的任何内容,但同样,当我注册 Cmd+Tab 时,它没有响应。
还有其他想法吗?