Мне нужно прослушивать глобальные события мыши (не связанные с приложением) на моем Mac в приложении, написанном на Python.
Я использую 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();
Но это работает вечно и не реагирует на события мыши, что не так?