19

I need to be able to record the mouse movements every so often (every .2 of a second for example) and have them in a coordinate representation instead of a diff.

I found the following script:

#!/bin/bash
while :
do
cat /dev/input/mice | read -n 1
date
sleep 1
done

But it doesn't seem to print anything to the terminal (or perhaps it's all gibberish). Other discussions suggest that /dev/input/mice is deprecated. On top of that, /dev/input/mice wouldn't actually have the data in a friendly format.

Am I going to have to do the conversion manually (from the format in the /dev/input files), or is there an API for this?

anonymous
  • 637
  • 3
  • 9
  • 14

2 Answers2

26

Try the following command :

xdotool getmouselocation 2>&1 |
    sed -rn '${s/x:([0-9]+) y:([0-9]+) .*/\1x\2/p}'

See http://www.semicomplete.com/projects/xdotool/

Gilles Quénot
  • 31,569
  • 7
  • 64
  • 82
18

One more option is xinput. For instance, xinput test 8 would write

motion a[0]=496 a[1]=830 
motion a[0]=496 a[1]=829 
motion a[0]=496 a[1]=832 
motion a[0]=496 a[1]=834 

upon mouse movement, where "8" is my mouse device number. Use xinput --list to find out the number of your mouse among devices.

Boris Burkov
  • 3,931
  • 4
  • 25
  • 37