Getting Forward Backward Mouse Buttons Working In

  1. Getting Forward Backward Mouse Buttons Working In Windows
  2. Getting Forward Backward Mouse Buttons Working Instructions

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: style still to fix, unclear sections (Discuss in Talk:Mouse buttons#)

The factual accuracy of this article or section is disputed.

Reason: Configuration depends on the input driver, libinput can be used in Xorg. This article assumes that evdev is used instead, which is no longer the default. (Discuss in Talk:Mouse buttons#)
  • I use mouse 4 for my push to talk in TS and it's beyond frustrating to accidentally go 'forward.' It is imperative that I keep the buttons enabled, because just disabling the buttons just stops me from using them for anything at all. I just need them to not be shortcuts when they, in my opinion, shouldn't be by default.
  • To reassign a button across all applications. Using the mouse that you want to configure, start Microsoft Mouse and Keyboard Center. Select basic settings. Select the button that you want to reassign. In the list of the button that you want to reassign, select a command. To disable a button, select Disable this button.

In most modern applications which use back/forward features, XF86Back is mapped to back and XF86Forward is mapped to forward by default. On most MX mice the thumb buttons resolve to 8 & 9. If your mouse is different, check button numbers using xev and replace the numbers used in the example (b:8 & b:9).

This article describes how to configure a mouse with more than 3 buttons.

Prerequisites

Note: These are helper comments, and can be ignored if you are looking for nothing but raw information. Due to community feedback, I decided to add a bit more commenting that describes what's going on 'behind the scenes' with this configuration.

We will be using the evdev driver for Xorg. EVentDEVice is an advanced driver for USB input devices which offers much greater power over the standard Xorg mouse driver. It is also more 'direct' than the mouse driver, allowing lower latency and less translation issues.

  • Note that evdev is both a kernel module and an Xorg input driver. All the Arch kernels come with the evdev module.

With the newer Xorg 11R7.0 it seems only the following changes to /etc/X11/xorg.conf need to be made with nothing else needing to be done.

Finding the mouse name

Note: To get accurate information it is sometimes required to execute this command from a boot where no Xorg or mouse drivers have been loaded.

The first step is to find the name of the mouse / mice. To do this, execute the following command:

This should output something like this:

Or this if you have more than one mouse:

The mouse is the one that has the Handlers=mouse0, so the name of the device is Logitech USB Gaming Mouse.

Note: My mouse is a Logitech G5; your mouse is probably different, and therefore the Name will be different.

Copy the name of the device, and open up /etc/X11/xorg.conf.

Configuring Xorg

Now, we need an entry in xorg.conf that tells X how to use this mouse. It should look something like this:

Replace the Name option with the name you copied from above. You may also omit the CorePointer option if you use multiple mice or experience errors when attempting to load Xorg. The other options are all basic mouse configurations for evdev and should work with most mice.

Next, we need to tell X to use the mouse, so look in xorg.conf for ServerLayout.

Modify the ServerLayout section to use 'Evdev Mouse' as the device. When you are done, it should look something like this:

The only thing you should change in the layout is the InputDevice line that refers to your mouse.

That should be all that is required.

  • Edit by: xxsashixx

This is for Logitech G5 Mouse users. I have not tested this for other mice, but if you do not add this, your mouse MAY not work.If you do not need to add this, then do not.

Put

in the InputDevice section or else the mouse will not be picked up.

[#] = The number you got from:

  • Edit by: bapman

With the above method, your mouse might not to work after reboot (event number changes). To fix this, you can use symlinks in /dev/input/by-id. For example:

To find the appropriate id, do:

  • Edit by: Diamir

This article or section is out of date.

Reason: The udev rule will not work, the SYSFS= and BUS= keys have been removed [1]. (Discuss in Talk:Mouse buttons#)

With a Desktop type keyboard-mouse, this does not work because there is only one USB attachment and /dev/input/by-id contains only the keyboard.In this case, we can create a udev rule to get a consistent link.The following rules create the link /dev/input/usbmouse which points on the correct event entry:

You can call it z10_usb_mouse.rules and put it in /etc/udev/rules.d

The cryptic value to use for SYSFS(modalias) can be gotten in the following way:

enter the command cat /proc/bus/input/devices

You will find the keyboard and the mouse and see event4 is the mouse in this case:

So I enter the following command (adapt event # to your particular case):

grab the ATTRS which becomes with usb: to complete 'SYSFS{modalias} ' entry

Mouse

And finally, use usbmouse as the Device Option in xorg.conf:

Post Configuration

Google Chrome

It works. Horizontal scroll works out of the box - push the scroll wheel left or right. Thumb buttons also work as next/previous page.

Opera

It works. Note: buttons can be mapped to functions easily in Preferences > Advanced > Shortcuts > Mouse set-up. For example, to bind button 8 to back:

  1. Navigate to mouse set-up and expand the Application drop-down
  2. In the input column, type: Button 8
  3. In the actions column, type: Back

Firefox

Horizontal scroll

To get back and forward enabled, instead of scroll left/right, change the following settings in about:config:

Thumb Buttons - forward and back

Note: The following maybe redundant depending on whether xev detects all your mouse buttons correctly (functions can be mapped on a per-app basis) or you want to change the default behaviour.

To do this we need to map keystrokes to the desired mouse buttons and install xvkbdAUR and xbindkeys.

In most modern applications which use back/forward features, XF86Back is mapped to back and XF86Forward is mapped to forward by default. On most MX mice the thumb buttons resolve to 8 & 9. If your mouse is different, check button numbers using xev and replace the numbers used in the example (b:8 & b:9).

So if you have an MX mouse you would create the file ~/.xbindkeysrc, containing:

Now to test... Run the following command and if it works as expected remember to add xbindkeys to .xinitrc or somewhere where it will be executed each time X starts. Also, this should work with Epiphany and Konqueror without any additional configuration or use of IMWheel.

Since xvkbd is not available from the official repositories here’s another example using xte from the xautomation package

The above info and more help may be found in the MX1000 Buttons wiki.

xmodmap tweaking

Note: None of the below is necessary with evdev, but it's here for non-evdev users. Unless something does not work on your mouse, ignore this whole section!

It may prove to be more comfortable for some to change the ordering of button codes, as the case may be for left-handed people. Depending on the environment you use, the button codes can be configured in two different ways. If you use .xinitrc to load X, then add this to .xinitrc (change for the number of buttons you have):

Note that buttons 4 and 5 must go on the end or else your scroll wheel will not work.

If you use GDM/XDM/KDM instead of .xinitrc, then create the file ~/.Xmodmap and add this to it (change for the number of buttons you have):

  • GDM/XDM/KDM read the ~/.Xmodmap file if it's present, whereas startx does not. Another solution would be to add this to your ~/.xinitrc: xmodmap ~/.Xmodmap. This would allow you to use *DM and startx while only having to edit ~/.Xmodmap when you need to make changes.

You may have to play with these numbers a bit to get your desired behavior. Some mice use buttons 6 and 7 for the scroll wheel, in which case those buttons would have to be the last numbers. Keep playing with it until it works!

You can also check to see which buttons are being read with a program called xev, which is part of XOrg. When xev is run, it will show a box on your desktop that you can put the cursor into and click buttons to find out what buttons have been mapped.

xinput tweaking

For debugging purposes xinput can be used as it is able to change the button map on the fly in userspace. The following line corrects the button mapping (there have been reported cases with Logitech M505/B605 mice and possibly others) so the received events are mapped correctly:

Binding mouse to keyboard buttons

xte

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Duplicates xbindkeys, assumes xte instead of linking Xorg#Automation. (Discuss in Talk:Mouse buttons#)

xte from xautomation comes handy when we want to bind keyboard buttons to mouse.

Here is example ~/.xbindkeysrc which binds Shift_R to mouse button 3 ('right click'):

Binding keyboard to mouse buttons

xvkbd and xbindkeys

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Duplicates xbindkeys, assumes xvkbd instead of linking Xorg#Automation. (Discuss in Talk:Mouse buttons#)

Let us say we want to bind some mouse buttons to keyboard ones. The problem we will encounter is that we do not know how to emulate a key press. Here comes in handy xvkbdAUR. We can use it along with xbindkeys.

To restart xbindkeys type:

Here is example ~/.xbindkeysrc config:

If you want to check your mouse buttons number use xev. Do not forget to type capital letters in xvkbd -text usage and to escape opening bracket with or you get simply [Shift] written.

Here is an example for xbindkeys to enable x selection paste(third click pasting), you need both xsel and xvkbd installed, What it does it executes that command whenever button 13 of the mouse is pressed (in ~/.xbindkeysrc) :

This is an example for a keybinding for Meta+M:

evrouter

This article or section needs expansion.

Reason: What 'different methods of reading input'? (Discuss in Talk:Mouse buttons#)

Some programs, especially games, use different methods of reading input, so another program is needed: evrouterAUR.

For the evrouter command to be able to read the input devices, it will have to be run in the input group (or as root). This can be achieved by adding yourself to that group:

Now we can use the --dump option to display what the button to be changed is called:

Tip: For USB devices udev will usually create symbolic links in /dev/input/by-id/ which can be used to refer to specific devices.

Now press the buttons that you wish to change:

The line that ends with 'fill this in!' can be copied into the config file which by default is ~/.evrouterrc. For example, using the X11 key event emulator built into evrouter:

The 'event1' was changed to 'event*' in case udev gives it a different device number at boot. The 'none' was changed to 'any' so that the rule works even if any modifier keys are pressed when the button is pressed. To determine the key codes (in brackets) you can use

See evrouter(1) for a full explanation of the fields.

Tip: Rules can apply only to specific windows, see evrouter(1) for details.

After setting up the config file, run it as a daemon:

To stop the daemon:

Note:evrouter will fail to start if the /tmp/.evrouter:0.0 file exists but does not delete it when exiting, so you will have to delete it yourself.

Binding + and - in Logitech G5 mouse

If you want to bind the buttons + and - in G5/7 mouse, which normally changes DPI, you have to use g5hack[2] released by a lomoco author.

Getting Forward Backward Mouse Buttons Working In

This will change your DPI to 2000, light the 1st LED and disables DPI on-the-fly changing, so you can use it with evrouter. If you would use it frequently I suggest you to copy it to the /usr/bin directory:

If you want to bind your + and - buttons you must copy the line at the bottom (one with the comment '-' button does not function anymore' above) to the mode you will be using, like, for example, under the 'case 3:' you can put it on the line with the comment 'turn on third led' above (deleting the old one before of course).

For the newest G5 mouse which is reported as 'product 0xc049' original hack does not work. You have to simply change the #define MOUSE_G5 0xc041 to #define MOUSE_G5 0xc049 and recompile.

You can execute the g5hack tool at system start up using systemd unit. See Systemd#Writing unit files for detail.

User tools

piper is a graphical user interface to configure gaming mice, works with Wayland. In order to work with your mouse, it must be in the list of supported devices.

wayland-mouse-mapper is a small script for mapping mouse buttons to keystrokes on Wayland.

IMWheel provides configurable mouse wheel and button mapping. It can be configured globally or for individual processes.

Sample ~/.imwheelrc to enable back/forward thumb buttons for all applications and increased scroll speed in Chromium:

lomocoAUR for Logitech MX mice will help you set the proper resolution, enable or disable smart scroll (with boot time support too!), etc.

Be sure to look at /etc/udev/lomoco_mouse.conf and set up the the options you want to be automatically applied when the mouse gets loaded by udev.

Note: The lomoco package may be out of date. There is a hack for newer Logitech mice: [3]

key-mapper-gitAUR works with both X and Wayland and provides a GUI to configure input devices.

logiops-gitAUR is a tool for configuring Logitech mouses (Logitech Options for Linux). It may remap buttons to actions, support gestures, smart shift and so on.

Device Specific Configuration Files

Logitech G600

It is known that in xorg-server 1.18.0-3 side buttons of G600 are not recognized as a separate keyboard device, but another mouse which causes strange (moving mouse cursor to an edge of screen when one of main mouse buttons are clicked) behavior.To force xorg to recognize them as a keyboard buttons, add following section to your /etc/X11/xorg.conf:

Mad Catz Mouse

Logitech M560/M545/M546

These mouse is designed for Windows 8, and has a non conventional behavior: the mouse appears as a pair of mouse and keyboard and some buttons do not emit the standard mouse button event, but instead a combination of keyboard and mouse button. This prevent a 'confortable' use of this mouse under Linux.

This driver allow to use this mouse like an ordinary mouse. It's recommend use it with xbindkeys to mapping buttons.

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: should be packaged in AUR (Discuss in Talk:Mouse buttons#)

Getting Forward Backward Mouse Buttons Working In Windows

kernel module for M560(already merged into kernel v4.2)

Getting Forward Backward Mouse Buttons Working Instructions

Retrieved from 'https://wiki.archlinux.org/index.php?title=Mouse_buttons&oldid=653724'