OSX:激活任务控制时监控事件

时间:2014-01-04 19:38:19

标签: macos events mouseevent mission-control

我正在尝试通过附加全局事件侦听器来侦听鼠标事件和键盘事件,如this great thread中所述。

然而,当调用Mission Control时,它似乎阻止了我的听众。我真的很感激有关如何解决这个问题的任何建议。

1 个答案:

答案 0 :(得分:0)

我能够通过使用碳Quartz Event Services Library中提供的事件点击来解决这个问题。

Objective-C示例代码(我无法在Swift中使用它):

假设您已定义C函数

CGEventRef yourCallbackFunction(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userinfo);

然后,您可以使用此代码来监听事件SomeEventHere

CFMachPortRef ref = CGEventTapCreate(kCGHIDEventTap, 
                                     kCGHeadInsertEventTap,
                                     kCGEventTapOptionListenOnly, 
                                     CGEventMaskBit(kCGEventSomeEventHere),
                                     (CGEventTapCallBack)yourCallbackFunction,
                                     userinfo);
CFRunLoopSourceRef src = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, ref, 0);
CFRunLoopAddSource(CFRunLoopGetMain(), src, kCFRunLoopDefaultMode);