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