Read Raw mouse events in bash. Open the /dev/input/mice and get the click event
I did a lot of googling and found it hard to find what I needed. I hope my example is useful to you. I found 3 examples that helped Me. They are covered under cc-wiki attribution, and are included here to keep it simple.
cat <<EOF >> /dev/null # Copyright (C) 2016 Nicholas.A.Schembri@bamboofields.net # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # #Thank you for the examples # now for a bash example # get an event from /dev/input/mice # linux raw mouse events bash click EOF # run the following in an xterm and you will see 1 for every mouse click. # we want just the mouse clicks while : do # read 3 bytes from /dev/mouse bytesAsBits=$(dd bs=1 count=3 if=/dev/input/mice 2>/dev/null| xxd -b) # bit 8 is left, bit 7 is right,and bit 6 is center leftMouse=$(echo $bytesAsBits|cut -d" " -f2|cut -b8) rightMouse=$(echo $bytesAsBits|cut -d" " -f2|cut -b7) centerMouse=$(echo $bytesAsBits|cut -d" " -f2|cut -b6) echo "L: $leftMouse, M: $centerMouse, R: $rightMouse" done
cat <<EOF >> /dev/null # this is not xbindkeys # xbindkeys is a program that allows you to launch shell commands with your keyboard or your mouse under X Window. It links commands to keys or mouse #buttons, using a configuration file. It's independant of the window manager and can capture all keyboard keys (ex: Power, Wake...). http://stackoverflow.com/questions/20595716/control-mouse-by-writing-to-dev-input-mice You can capture the events using od tool from the /dev/input/mice and then replay them once you have decoded the sequence. # cat /dev/input/mice | od -t x1 -w3 0000000 08 02 00 0000003 08 08 00 0000006 08 09 00 0000011 08 07 00 0000014 08 04 00 0000017 08 01 01 0000022 08 00 02 0000025 08 02 02 For this you can take help of the python code here: Get mouse deltas using Python! (in Linux) L:0, M: 0, R: 0, x: -1, y: -1 L:0, M: 0, R: 0, x: 0, y: -1 L:0, M: 0, R: 0, x: 0, y: -1 L:0, M: 0, R: 0, x: 0, y: 2 L:0, M: 0, R: 0, x: 0, y: 1 L:0, M: 0, R: 0, x: 0, y: -1 L:0, M: 0, R: 0, x: 1, y: -1 Once you have that, you can encode it back into a 3 byte sequence for each mouse move. To encode the binary values using bash you can refer to this question: Passing binary data as arguments in bash However I tried and writing to /dev/input/mice does not work. The reason is that, this file is only giving a streams of events for you which have already happened. So there must be some other way to inject such events. How to control mouse movement in linux? shareimprove this answer edited Dec 24 '13 at 13:59 community wiki 2 revs tuxdna tuxdna top 11% overall I am a Software Engineer by profession and a Free and Open Source Software enthusiast by choice. http://tuxdna.in/ And this 6 down vote accepted I'm on a basic device and not having access to X or ... so event.py doesn't works. So here's my simpler decode code part to interpret from "deprecated" '/dev/input/mice': import struct file = open( "/dev/input/mice", "rb" ); def getMouseEvent(): buf = file.read(3); button = ord( buf ); bLeft = button & 0x1; bMiddle = ( button & 0x4 ) > 0; bRight = ( button & 0x2 ) > 0; x,y = struct.unpack( "bb", buf[1:] ); print ("L:%d, M: %d, R: %d, x: %d, y: %d\n" % (bLeft,bMiddle,bRight, x, y) ); # return stuffs while( 1 ): getMouseEvent(); file.close(); shareimprove this answer edited Sep 5 '12 at 17:43 qdot 3,72922165 answered Sep 5 '12 at 17:27 Alexandre Mazel 647613 Alexandre Mazel top 48% overall Software Innovation Director at Aldebaran Like to program graphics, sounds, robots & fun. http://mangedisque.com/Alma/CV/CVAM_rd_en.php EOF