Ho bisogno di ascoltare eventi mouse globali (non legati a un'app) sul mio Mac in un'app scritta in Python.Come posso ascoltare un evento del mouse in Python su Mac?
Sto usando PyObjC, ma non riesco a capire come farlo. Sono stati apprezzati anche semplici esempi ObjC o altre tecniche Python.
Il mio codice finora:
from Quartz import *
def MyFunction(proxy, type, event):
print event
CGEventTapCreate(kCGHIDEventTap, kCGTailAppendEventTap, kCGEventTapOptionListenOnly, kCGEventLeftMouseDown, MyFunction)
== Segmentation fault
so che ho bisogno di aggiungerlo a una fonte di evento più tardi, ma ho bisogno di ottenere questo lavoro prima.
[update]
Utilizzando PyObjC forma MacPorts risolto il segfault, così ora ho scritto questo:
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();
Ma questo solo corre sempre e non risponde agli eventi del mouse, ciò che è sbagliato?
questa dovrebbe essere la risposta corretta –