Can anyone tell me how to configure all the buttons on a Logitech MX 620 mouse under Ubuntu 12.04?
Specifically, I like to make one of them just the Ctrl key (for control clicking webpages) and another one Ctrl+W to close tabs. I also normally make the scroll wheel page down for each click (otherwise it hurts my arms to be scrolling so much). I make pushing the wheel to the left = pageback and pushing to the right = page forward.
I've searched for other answers to this and found something related here
But when I posted a followup post to solve the issue, no one responded --perhaps I made the mistake of posting to a question that had been "solved." I'm not sure how I'm supposed to reopen a question that is pertinent to my question but doesn't quite solve mine.
You're going to need several applications for this, to install them run
or
(
xev
was merged into x11utils, as of Ubuntu 14.04 or greater)Step 1
You need to find the button numbers for the buttons on your mouse. Run
xev
. You will see a litle white windows appear, put your mouse in it and press your mouse buttons (it's best to do this one button at a time). You should get output like this for each button:(note:
xev
also capture mouse movement so you might need to sift through mouse movement events to find your button events; e.g.:xev -event mouse | grep Button --before-context=1 --after-context=2
)This is what is important from that output:
button 1
. That tells us that particular button is button one. I would store this in a.txt
file for now.Step 2
Create the
xbindkeys
config file using:Next we need to add the key/button bindings to the config file. You can open this file with
gedit $HOME/.xbindkeysrc
. This is where the fun begins. We are going to usexte
to set bindings to our buttons.To make a button act as Ctrl we would add:
This would bind Ctrl to mouse button one.
If you will tell me the button numbers of your buttons and what you want each to do, I will write the script for you.
The best answer in 2021 is the Key Mapper utility:
https://github.com/sezanzeb/key-mapper
No more hacking required.
I followed the @Seth's instructions, but the binding I wanted was to for the thumb button an the M705 to do
CTRL + Left-click
(for opening links in a new tab in chrome browser). The binding I needed to add was this:It waits for the thumb button to be released, and then presses control key, performs the mouse click, then releases the control key.
For anyone who wants to bind copy and paste actions to mouse buttons:
sudo apt-get install xbindkeys xautomation xev
).xbindkeysrc
file:This is for copying:
This is for pasting:
*
b:9
means button 9 on the mouse (check button numbers withxev
).xbindkeysrc
first or restart your machine.You should install Solaar, a Linux tool that allows you to manage Logitech Unifying Receiver mice and keyboards, that comes with both a GUI and command line interface. To do that add the following repository and install by executing the following commands:
This will allow you to increase and maximize you mouse's DPI, monitor battery, enable smooth scrolling and side scrolling. To get the multi window and zoom button working you can visit this site which walks you through the easy steps to get the functionality you are looking for:
http://www.ralf-oechsner.de/opensource/page/logitech_performance_mx
You should already have these as they should come with Ubuntu, but run this just in case.
Now, download & install
To install:
Unzip, and
cd
into each of these folders.In each of them run:
Once both of them are installed, run
In Configurations tab, click Detect Mouse & Buttons
In Buttons tab, assign your mouse button a key or functionality. Make sure you ☑ check mark enabled.
Lastly, in Configurations tab, click on Restart btx button so your changes take effect.
I too have the g700s gaming mouse. The good news is that it was expensive (for a mouse) and the manufacture actually built it to a high standard. The functions for the mouse are stored in the mouse. The bad news is to configure it correctly you need to use the logitech software that only runs in windows.
So...basically you need to plug the mouse into a windows box, and configure it exactly how you want it. I'd recommend utilizing the switch profiles function so you can set it up good for normal usage, ie: running your linux desktop, compiz functions (switching apps, switching workspaces, toggling maximize, etc), and then make another profile for gaming (possibly with a different refresh rate) and the gaming buttons. As for compiz consider setting the 4 side thumbs buttons to alt, ctl, shift, superkey, as this will make using switching easier with the scroll wheel. alt + scroll wheel up becomes thumb button 1 + scroll wheel up.
My scheme:
thumb button 1 (forward lower) = alt
thumb button 2 (forward upper) = shift
thumb button 3 (rear lower) = ctrl
thumb button 4 (rear upper) = superkey (windows key)
index finger middle button = ctrl + alt + numpad 5
index finger closer to you = tab
index finger farther away from you = alt-f4 (compiz/linux/winX close app)
compiz defaults:
switch workspace = alt + ctl + mouse drag = lower 2 thumb buttons together + mouse click and drag; sounds complicated when typed it out but it's very efficient to use.
switch apps = alt + tab = lower thumb forward button + index finger closer button (remember for this to work well you need to keep holding down thumb button, so you can switch past 1 app)
fading a window (transparency) = alt + scroll wheel = thumb lower forward button + scroll wheel
Then go haul it back over to your linux box and it works perfectly.
The key bindings described above works great, but consider battlefield 4 also has a terrible time recognizing the mouse as a mouse with 10 buttons so for that I had to map my 4 thumb buttons to = , \ and ;. But obviously in linux this is silly, and to re-bind the = key to "next app" is a lesson in futility, especially when coding hahahaha.
MUCH NEEDED LINKS IF USING VIRTUALBOX TO RUN WINDOWS 7:
https://stackoverflow.com/questions/20021300/usb-devices-are-not-recognized-in-virtualbox-linux-host
https://www.youtube.com/watch?v=-0OyrvbZNwo
I have a Logitech MX 500 and wanted to map the lateral keys with Copy and Paste actions (it is very useful).
I used this guide to understand how to configure the xbindkeysrc file and be able to map the keys.
I made a solution that works with Wayland.
Its here https://github.com/mathportillo/wayland-mouse-mapper
It uses evemu to send a device event notice to the kernel, so it's not restricted by Wayland
A summarized bash script that show how it works is below (most of the commands require root privileges)
find your device:
to directly find your pointer device name use:
to list your device events use (change event5 to your pointer device name):
to bind commands to your device events use:
to trigger a mouse event use:
type can be other than keystroke, and code can be other than PageUp, value is 1 for pressed and 0 for released yes, your mouse can trigger keystrokes, the system will interpret it the same as keyboards, its all just events from event devices.
A script that merge all the above concepts on a working mapper, that works on Wayland and can be configured as a service to start on system startup, can be found in the git repo above.
Scroll up and down with mouse forward and back buttons
First, install the required packages:
Next, use
xev
provided byx11-utils
to detect the exact button numbers of the back and forward buttons of the mouse.For my wired vertical Anker mouse, back and forward are respectively buttons 8 and 9.
Continue by creating a hidden file named
.xbindkeysrc
in your home directory with the following contents:The
xte
command is provided by thexautomation
package.Finally, log out and in again from the desktop for these changes to take effect. You can now scroll up and down in browsers and other programs by pressing and holding the mouse back and forward buttons.