ubuntu:mouse:map_mouse_buttons_to_arbitrary_functions

This is an old revision of the document!


Ubuntu - Mouse - Map Mouse Buttons to Arbitrary Functions

There are various options that can be used to allow a mouse button click to action an arbitrary function.

These include:

  • xbindkeys allows you to map any mouse (or keyboard) event to some program.
  • xautomation provides the xte program; which can generate fake input, including keystrokes and mouse-clicks.
  • xvkbd can send a keyboard key signal or mouse click to other programs.
  • xdotool can simulate keyboard input and mouse activity, move and resize windows, etc.

Map Mouse Buttons to Arbitrary Functions


Install xbindkeys

sudo apt install xbindkeys

NOTE: Xbindkeys is a program that allows to bind commands to certain keys or key combinations on the keyboard.

  • Xbindkeys works with multimedia keys and is window manager independent.

Install xautomation

sudo apt install xautomation

NOTE: This provides the xte program; which can generate fake input, including keystrokes and mouse-clicks.


Create the xbindkeys Configuration File

xbindkeys --defaults > $HOME/.xbindkeysrc

NOTE: The $HOME/.xbindkeysrc file could also be created manually.

NOTE: The format of this file is a series of paired lines.

  • The first line is a command to be executed for an event;
    • The quotation marks (“”) around the command is required.
  • The second line is the associated mouse button.
    • The first mouse button (left) is called b:1, the second b:2 and so forth.

Assign a function to a Mouse Button

Edit the xbindkeys Configuration file, ~/.xbindkeysrc:

Add commands similar to this:

~/.xbindkeysrc
"xte 'keydown Home' 'keyup Home'"  
b:6

NOTE: This binds button 6 to the home key


Other examples

~/.xbindkeysrc
# Back
"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L'"
 b:8
 
# Forward
"xte 'keydown Alt_L' 'key Right' 'keyup Alt_L'"
  b:9

NOTE: This maps:

  • Button 8 is mapped to ALT+LEFT.
  • Button 9 is mapped to ALT+RIGHT.

More complex examples

“/usr/bin/xte 'mouseclick 1' 'mouseclick 1' &” b:8 + Release </file>

NOTE: This maps a double-left-click to button 8,

  • The Release option catches release events instead of press events.

Run at startup

One approach is to create a shell script that performs the Mouse Button mapping:

echo "xinput --set-button-map 21 3 2 1" > leftmouseremap.sh

Give it executable permission:

chmod +x leftmouseremap.sh 

NOTE: Either run the script manually, or configure it to automatically run on system reboot.

  • Follow any process to have this script run at boot if needed.
  • Remember to configure 'xbindkeys' to run automatically on system startup too if needed:
    • '/usr/bin/xbindkeys'

References

ubuntu/mouse/map_mouse_buttons_to_arbitrary_functions.1635204808.txt.gz · Last modified: 2021/10/25 23:33 by peter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki