【发布时间】:2014-01-04 19:38:19
【问题描述】:
我正在尝试通过附加全局事件侦听器来侦听鼠标事件和键盘事件,如 this great thread 中所述。
但是,当调用 Mission Control 时,它似乎阻止了我的听众。我非常感谢有关如何解决此问题的任何建议。
【问题讨论】:
标签: macos events mouseevent mission-control
我正在尝试通过附加全局事件侦听器来侦听鼠标事件和键盘事件,如 this great thread 中所述。
但是,当调用 Mission Control 时,它似乎阻止了我的听众。我非常感谢有关如何解决此问题的任何建议。
【问题讨论】:
标签: macos events mouseevent mission-control
我可以通过使用 Carbon 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);
【讨论】: