views:

350

answers:

1

Problem

Am looking to automatically move the mouse cursor and simulate mouse button clicks from the command-line using an external script. Am not looking to:

  • Record mouse movement and playback (e.g., xnee, xmacro)
  • Instantly move the mouse from one location to another (e.g., xdotool, Python's warp_pointer)

Ideal Solution

What I'd like to do is the following:

  1. Edit a simple script file (e.g., mouse-script.txt).
  2. Add a list of coordinates, movement speeds, delays, and button clicks. For example:
    (x, y, rate) = (500, 500, 50)
    sleep = 5
    click = left
    
  3. Run the script: xsim < mouse-script.txt.

Question

How do you automate mouse movement so that it transitions from its current location to another spot on the screen, at a specific velocity? For example:

xdotool mousemove 500 500 --rate 50

The --rate 50 doesn't exist with xdotool.

I could write a script that uses xdotool to get the current mouse coordinates then move it a pixel at a time to the destination with a suitable sleep interval; what automated testing tool already does this?

Thank you.

+1  A: 
  1. Download xaut for Python
  2. Follow the README instructions
  3. Run:
    sudo apt-get install swig x11proto-xext-dev libx11-dev libxtst-dev
    cd /usr/local/src
    tar zxf xaut-0.2.0.tar.gz
    ./configure
    
  4. Edit src/Makefile
  5. Change the CFLAGS line as follows:
    CFLAGS = -Wall -fPIC
  6. Run:
    make
    
  7. Copy /usr/local/src/xaut-0.2.0/python/build/lib/* to a new directory.
  8. Change to that new directory.
  9. Copy and paste the following script into mm.py:
    import xaut
    mouse = xaut.mouse()
    delay mouse.move_delay( 100 )
    mouse.move( 500, 500 )
    
  10. Run the script:
    python mm.py
Dave Jarvis