Ich muss in einer in Python geschriebenen App auf globale Mausereignisse (nicht an eine App gebunden) auf meinem Mac warten.Wie kann ich ein Mausereignis in Python auf dem Mac hören?
Ich benutze PyObjC, aber ich kann nicht herausfinden, wie es geht. Einfache ObjC-Beispiele oder andere Python-Techniken werden ebenfalls geschätzt.
Mein Code so weit:
from Quartz import *
def MyFunction(proxy, type, event):
print event
CGEventTapCreate(kCGHIDEventTap, kCGTailAppendEventTap, kCGEventTapOptionListenOnly, kCGEventLeftMouseDown, MyFunction)
== Segmentation fault
Ich weiß, dass ich es zu einer Ereignisquelle später hinzufügen müssen, aber ich brauche diese erste Arbeit zu bekommen.
[update]
Mit PyObjC Form Macports die segfault gelöst, so jetzt habe ich dies:
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();
Aber das läuft nur für immer und reagiert nicht auf Mausereignisse, was ist falsch?
Dies sollte die richtige Antwort sein –