4
How to make the mouse move automatically, realistically, using Python?
I was able to find and change a code that produces a "V" movement on the screen. However, I would like to move the mouse using non-linear movements.
I found some interesting ideas:
- Algorithm to mimic mouse movement as a human
- Moving the mouse realistically using C#
- Moving the mouse realistically using a Spline of Interpolation or of Approximating
I’m facing difficulties when it comes to incorporating the mathematical part of the non-linearity of motion into my code.
Code:
import sys
import time
import win32api
if (len(sys.argv) < 4):
print "Como utilizar: python mousemove.py dx dy speed"
sys.exit()
current = win32api.GetCursorPos()
cx = sx = current[0]
cy = sy = current[1]
mx = int(sys.argv[1])
my = int(sys.argv[2])
vx = vy = int(sys.argv[3])
print "Movendo", mx, my, "com", vx, "pixels por segundo"
print "Pressione 'q' para sair"
last = time.time()
while(True):
if win32api.GetAsyncKeyState(ord('Q')):
sys.exit()
current = time.time()
tick = current - last
last = current
if mx > 0:
cx += vx * tick;
if cx > mx + sx or cx < sx:
vx = -vx;
cx = max( sx, min( mx + sx, cx ) )
if( my > 0 ):
cy += vy * tick;
if cy > my + sy or cy < sy:
vy = -vy;
cy = max( sy, min( my + sy, cy ) )
win32api.SetCursorPos((int(cx),int(cy)))
time.sleep(0.001)
Mathematical excerpt that draws a V:
if mx > 0:
cx += vx * tick;
if cx > mx + sx or cx < sx:
vx = -vx;
cx = max( sx, min( mx + sx, cx ) )
if( my > 0 ):
cy += vy * tick;
if cy > my + sy or cy < sy:
vy = -vy;
cy = max( sy, min( my + sy, cy ) )
Question:
How should I define the conditions to incorporate a certain randomness (non-linearity) in the mouse cursor movement?