Ubuntu – How to bind mouse buttons to keys

input-devicesmousescripts

I have a Logitech MX400 Laser Mouse which has 5 buttons + 4 for vertical/horizontal scrolling. I would like it set up so instead of horizontal scrolling pressing right on the scrollwheel will send Ctrl+Tab and left will send Ctrl+Shift+Tab, which will allow me to cycle through tabs in browsers.

Also, it would be nice if I could remap the middle button to one of the ones on the side as it is really hard to press down.

Another bonus would be if I could write a script that allows me to define what buttons do what dependent on which window is currently active.

I have tried using xmodmap but I could only see how to rearrange buttons, not have them send key signals.

Thanks in advance.


Button Map (using xev):

Left        1
Middle      2
Right       3
ScrollUp    4
ScrollDown  5
ScrollLeft  6
ScrollRight 7
Backward    8
Forward     9

Best Answer

The xbindkeys and xte can help you.

For example my .xbindkeysrc file looks like this:

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9
Related Question