39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
'''
|
|
This script simulates a double-click at the given mouse cursor position.
|
|
'''
|
|
|
|
import Quartz
|
|
from time import sleep
|
|
|
|
def post_mouse_event(type, pos, click_state):
|
|
event = Quartz.CGEventCreateMouseEvent(
|
|
None, type, pos, Quartz.kCGMouseButtonLeft
|
|
)
|
|
Quartz.CGEventSetIntegerValueField(event, Quartz.kCGMouseEventClickState, click_state)
|
|
Quartz.CGEventPost(Quartz.kCGHIDEventTap, event)
|
|
|
|
def double_click (x, y):
|
|
pos = None
|
|
if x is None or y is None:
|
|
# Get current mouse position if no coordinates are provided
|
|
loc = Quartz.CGEventGetLocation(Quartz.CGEventCreate(None))
|
|
pos = (loc.x, loc.y)
|
|
else:
|
|
# Use provided coordinates
|
|
pos = (x, y)
|
|
|
|
# First click
|
|
post_mouse_event(Quartz.kCGEventLeftMouseDown, pos, 1)
|
|
post_mouse_event(Quartz.kCGEventLeftMouseUp, pos, 1)
|
|
|
|
sleep(0.05) # Short delay within double-click threshold
|
|
|
|
# Second click
|
|
post_mouse_event(Quartz.kCGEventLeftMouseDown, pos, 2)
|
|
post_mouse_event(Quartz.kCGEventLeftMouseUp, pos, 2)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print('test: double clicking at cursor position in 3 seconds...')
|
|
sleep(3)
|
|
double_click() |