我需要在用Python編寫的應用程序中監聽我的Mac上的全局鼠標事件(未綁定到應用程序)。如何在Mac上監聽Python中的鼠標事件?
我使用PyObjC,但我無法弄清楚如何去做。 Plain 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();
但這只是一直運行,不響應鼠標事件,有什麼不好?
這應該是正確的答案 – 2011-03-10 10:59:20