我需要在用 Python 编写的应用程序中侦听 Mac 上的全局鼠标事件(未绑定到应用程序)。
我正在使用 PyObjC,但我不知道该怎么做。简单的 ObjC 示例或其他 Python 技术也值得赞赏。
到目前为止我的代码:
from Quartz import *
def MyFunction(proxy, type, event):
print event
CGEventTapCreate(kCGHIDEventTap, kCGTailAppendEventTap, kCGEventTapOptionListenOnly, kCGEventLeftMouseDown, MyFunction)
== 分段错误
我知道我需要稍后将它添加到事件源,但我需要先让它工作。
[更新]
使用 PyObjC 表单 Macports 解决了段错误,所以现在我写了这个:
from Quartz import *
def MyFunction(p, t, e, c):
print e
tap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionListenOnly, kCGEventLeftMouseDown, MyFunction, None)
runLoopSource = CFMachPortCreateRunLoopSource(None, tap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopDefaultMode);
CGEventTapEnable(tap, True);
CFRunLoopRun();
但这只是永远运行并且不响应鼠标事件,这是怎么回事?