How to assign "back" and "forward" actions to Logitech Anywhere Mouse MX' horizontal scroll wheel?
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
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.
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.