我正在尝试通过附加全局事件侦听器来侦听鼠标事件和键盘事件,如这个伟大的线程中所述。
但是,当调用任务控制中心时,它似乎阻止了我的听众。我非常感谢有关如何解决此问题的任何建议。
我能够通过使用事件点击来解决这个问题,这些点击可在碳石英事件服务库中找到。
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);