Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I started to use the mouse with my left hand some years ago. It didn't take me that long to learn - a couple of weeks. Since then I've started to get problems with my right shoulder.

Ever since I use the mouse on the left side and also has the buttons swapped. Now that does not work well when accessing my computer using Remote Desktop on a computer with the mouse on the right side.

Also my primary computer at work has two mouses attached, one on USB and the other via PS/2. It would be nice to configure the left one to have buttons swapped and the right one to be normal. That way I could work both ways.

Is there a way to configure the driver or are there an enhanced driver available that lets me control this per mouse rather than set the swap left/right globally in the Windows UI.

share|improve this question
Interesting question. I too have started using the mouse with my left had for the same reason, but I don't swap the buttons. I left click with my middle finger and right click with my index. It means that I, or anyone else, can still use the mouse right handed without having to change anything. – ChrisF Oct 11 '10 at 11:41
I found it easier to swap buttons, that way I dont really think about wether I'm using my left or right hand. I have actually had thoughts about modifying the mouse hardware as well. – Ernelli Oct 11 '10 at 11:44
up vote 2 down vote accepted

You can use X-Mouse Button Control to swap the mouse buttons.

X-Mouse Button Control does its changes by intercepting clicks, so they carry downstream to any Remote Desktop session. But I don't think it has per-mouse settings.

share|improve this answer

A hardware alternative may be a gaming mouse. I have found this SteelSeries mouse that claims to be ambidextrous and driverless. I guess you can swap left/right buttons by clicking another button.

Beware that I haven't tried it myself and it's expensive compared to a normal mouse. I wonder if modifying a normal mouse is worth the saving.

share|improve this answer

Microsoft Intellipoint mouse drivers handle the swap buttons feature in a different way to the standard mouse drivers, and remote desktop works correctly: A left-click on the physically-connected mouse is sent to the remote machine as a right-click. And when connecting to the machine from elsewhere, Intellipoint does not swap buttons.

However, the Intellipoint software does not swap the buttons over on a non-Intellipoint mouse. So, my home workstation has an Intellipoint mouse to the left of the keyboard, and the supplied Dell mouse to the right of the keyboard. Works a treat, for both left- and right-handed users.

My work PC has two Dell mice, and is running XP. Fortunately the mice have different hardware IDs, so I've modified an .inf file in the Intellipoint driver's installer, and convinced it that one of the mice was made by Microsoft.

However, I wasn't able to get this to work under Win7 last time I tried, so when my new work PC arrives I shall probably buy a Microsoft mouse to go with it.

One gotcha: You have to turn the standard "swap buttons" function off before installing Intellipoint. Otherwise when you remote desktop to that PC from elsewhere, the buttons get swapped.

It's possible that 3rd-party mouse drivers will also work better than the standard drivers.

share|improve this answer

My Penguin Ambidextrous Vertical mouse works very well in remote sessions. Also, I only need a single mouse. If I want to switch from left to right or vice versa, I just click a toggle switch. The built in track point and track pad in my Lenovo x230 does not carry my settings over to a remote session. This drives me nuts when working in a remote session on the road.

share|improve this answer

I think EitherMouse deserves to be mentioned here. I'm very happy with it when I have to use a Windows box. It makes managing a multi-mouses setup a breeze.

You can download the tool at its website:

For posterity's sake, I'll include the solution for GNU/Linux here as well. The best way, in my opinion, is to define a custom Xorg InputClass section config. This will be in effect anytime the mouse is detected. Here's my configuration file /etc/X11/xorg.conf.d/50-mouses-config.conf:

Section "InputClass"
        Identifier "Lachesis Left Handed"
        MatchUSBID "1532:000c"
        Option "ButtonMapping" "3 2 1"

The Identifier value is unimportant. The USB ID can found using the lsusb command. To see which buttons are available, the xev tool can be used to get the button ID as you press the buttons of your mouse. The command xinput list can be used to get a list of all the input devices on your system, and their xinput ID. You can a complete list of the buttons of the device using the command xinput get-button-map N, where N is your device's xinput ID, such as xinput get-button-map 10. You can experiment modifying the mapping of the buttons of your device using the xinput set-button-map N *mapping* command, such as: xinput set-button-map 10 3 2 1

You will have to restart your X session to make your new Xorg configuration effective. In case of problem, the Xorg.log (tail -f /var/log/Xorg.0.log) might give you a clue as to what went wrong.

An xinput set-button-map alternative can be used, but is less dynamic (it will not be applied automatically when your device is detected). The following script can be configured to run at startup (in Ubuntu there is a Startup Applications GUI to set it up). For some reasons it won't work if you simply call the script from your ~/.profile file. The MOUSE_NAME variable corresponds to whatever name is given to your mouse in the output of the xinput list command.


MOUSE_NAME="Razer Razer Lachesis"

while read -r line; do
    raw_line=$(grep "$MOUSE_NAME" | grep "pointer")
    if [ ! -z "$raw_line" ]; then
        mouse_id=$(echo "$raw_line" | cut -d '=' -f2 | sed 's/\t.*//g')
        echo "Found ${MOUSE_NAME}'s id: $mouse_id"
        xinput set-button-map $mouse_id $BUTTONS_MAP
done < <(xinput list)
share|improve this answer
I'm having problem with the Xorg way, on Ubuntu 14.04.03. For some reason the settings are read but maybe overridden by something else because it doesn't work (it used to). I opened a bug here: – user30747 Nov 22 '15 at 2:18

In an X Window System, you can use xmodmap (utility for modifying keymaps and pointer button mappings in X).

Left button is number 1, right button is number 3. Using xmodmap you can swap mouse buttons like this:

$ xmodmap -e "pointer = 3 2 1" 
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .