import time import win32api MOUSE_SPEED = .4 #seconds def mouse_glide_to(x,y): """Smooth glides mouse from current position to point x,y with default timing and speed""" x1,y1 = win32api.GetCursorPos() smooth_glide_mouse(x1,y1, x, y, MOUSE_SPEED) def smooth_glide_mouse(x1,y1,x2,y2, t, intervals): """Smoothly glides mouse from x1,y1, to x2,y2 in time t using intervals amount of intervals""" distance_x = x2-x1 distance_y = y2-y1 for n in range(0, intervals+1): move_mouse(x1 + n * (distance_x/intervals), y1 + n * (distance_y/intervals)) time.sleep(t*1.0/intervals) def move_mouse(x, y): win32api.SetCursorPos((x,y))mouse_glide_to(x,y) will move the cursor from its current position to point (x,y) in MOUSE_SPEED seconds. It works perfectly!
Monday, June 25, 2012
Python: Glide, instead of move, mouse cursor from one point to another
I couldn't find a function in pywin32 to smoothly glide a pointer from one point to another, instead of simply "moving" the cursor by making it jump from its current position to a given position. I needed a way to make the mouse sort of "glide" from point A to point B at a seemingly natural pace, so here's my solution:
Subscribe to:
Post Comments (Atom)
Have you considered using Bezier curves with random jitter to simulate more natural movement?
ReplyDeletewhere do you pass the itervals varible to the smooth_glide_mouse() function
ReplyDeletethe above example doesn't show it