请注意,这是专门用于发送到其他应用程序的事件,而不是您自己的事件。在
在较低的层次上,您还可以考虑使用石英事件龙头。使用PyObjC的简单示例:from Quartz import CGEventTapCreate
# ...etc.
def listen_for_mouse_events():
mouse_tap = CGEventTapCreate(
kCGSessionEventTap,
kCGHeadInsertEventTap,
kCGEventTapOptionListenOnly,
CGEventMaskBit(kCGEventLeftMouseDown) | CGEventMaskBit(kCGEventLeftMouseUp),
on_mouse_event,
None
)
runLoopSource = CFMachPortCreateRunLoopSource(None, mouse_tap, 0)
CFRunLoopAddSource(
CFRunLoopGetCurrent(),
runLoopSource,
kCFRunLoopDefaultMode
)
CGEventTapEnable(mouse_tap, True)
def on_mouse_event(proxy, event_type, event, refcon):
location = CGEventGetLocation(event)
if (event_type == kCGEventLeftMouseDown):
pass
elif (event_type == kCGEventLeftMouseUp):
pass
(关于Windows解决方案,我恐怕无法详细评论。)