How to assign "back" and "forward" actions to Logitech Anywhere Mouse MX' horizontal scroll wheel?

I am using a Logitech Anywhere Mouse MX on my Ubuntu. Mouse works well, but I can't assign the actions to the extra buttons available on it. What I miss the most is the "back" and "forward" actions assigned to the scroll wheel tilt left and right.

How can I activate these features?


Solution 1:

I have this same mouse, and I wanted to bind the two buttons on the side of the mouse to forward and back. Here is how I solved this:

1) Use the utility "xev" to determine what numbers the buttons you are wanting to remap correspond to. You may have to install this package using

sudo apt-get install xev  

Once xev is installed type "xev" into a terminal, and an X window that is white with a black box will pop up. Moving your mouse into that window will begin registering events to the terminal. Reading the output of that carefully will tell you the numbers of your mouse buttons. On my mouse, the left and right tilt map to buttons 6 and 7 respectively.

2) Now we are going to use the utility "xbindkeys" to remap the mouse buttons to key presses. If you don't already have this installed you may have to install it with

sudo apt-get install xbindkeys

3) Create a file in your home directory called ".xbindkeysrc". This is what xbindkeys will read to see what you are remapping. The contents of my .xbindkeysrc file are:

 "/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Left]""
   m:0x0 + b:8

 "/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Right]""
  m:0x0 + b:9

So this tells my computer to send the keyboard button presses "Alt+Left" or "Alt+Right" to the system using the virtual keyboard (xvkbd) whenever button 8 on mouse 0 is pressed or button 9 on mouse 0 is pressed respectively. These keys correspond to the the forward and back keys in most applications. This will work, for example, in Nautilus, chrome/

Note: you may need to install xvkbd if not already present on your system. sudo apt-get install xvkbd

Solution 2:

I use xbindkeys in combination with xdotool.

Create a .xbindkeysrc file in your home directory. It must contain:

# Mapping BACK to mousewheel left on old Logitech
"xdotool key Alt_L+Left"
m:0x0 + b:6

# Mapping FORWARD to mousewheel right on old Logitech
"xdotool key Alt_L+Right"
m:0x0 + b:7

However with VMware you don't have to do anything else except adding

mouse.vusb.enable = "TRUE"

to the .vmx file in your host system. It's what VMware opens every time you start your guest system.

Solution 3:

Here is what I did. No sudo commands or new packages necessary:

  • I tested my buttons with xev --> all buttons correspond to a certain value, which means they are recognized by the system
  • inspect devices with xinput list --> the mouse is listed with ID 9 in my case
  • xinput list-props 9 shows current mapping and especially tells about button labels --> seems like foreward / backward corresponds to button 8 and 9 which I do not have (wheel tilt is 6 and 7 and mapped to horizontal scrolling)
  • remapping bindings via xmodmap as interpreted by X is most convenient solution for me. First five buttons should not be changed (left right middle click and scolling up and down), but those reporting as button 6 & 7 should navigate foreward / backward
  • executing xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7 10 11 12 13 14 15 16" in a terminal swaps buttons 6 and 7 with 8 and 9 (virtually)
  • if this mapping does not work for you restore defaults with xmodmap -e "pointer = default" and try a different mapping
  • Now I have the button swap command in my Startup Applications to be executed after login
  • it also seems possible according to man xmodmap to store this command in a file called ~/.xmodmaprc or append the instruction to ~/.bashrc

Worked for me. Hope this helps.