How-To: Swapping function of mouse buttons (e.g. when using an Evoluent Mouse)

The assignment of mouse buttons for Evoluent Mouse 3 changed between firmware versions 5.04.130 and 5.05.100.

Problem

Users have become used to the assignment as it was up to 5.04.130, so you want to reproduce the same assignment in 5.05.100.0.

Solution
A. To manually analyze the assignment and determine how it needs to be adjusted:
  1. Open a Local Terminal
  2. Find the mouse ID:
    xinput list
    The output should look something like this:
    | Virtual core pointerid=2[master pointer (3)]
    |- Virtual core XTEST pointer id=4[slave pointer (2)]
    |- Logitech USB Optical Mouse id=10[slave pointer (2)]
    - Virtual core keyboardid=3[master keyboard (2)]
    - Virtual core XTEST keyboard id=5[slave keyboard (3)]
    - Power Buttonid=6[slave keyboard (3)]
    - Video Busid=7[slave keyboard (3)]
    - Power Buttonid=8[slave keyboard (3)]
    - Sleep Buttonid=9[slave keyboard (3)]
    - Logitech USB Keyboardid=11[slave keyboard (3)]
    - Logitech USB Keyboardid=12[slave keyboard (3)]
  3. Find your mouse and its ID in the output (here: Logitech USB Optical Mouse, id=10 )
    Check the number of buttons in the button map:
    xinput get-button-map [ID]
    (where ID is the ID of your mouse device)
  4. Now check which button number is set for the buttons in question:
    xev
    A test window will appear. Click into the window using the buttons that you want to swap. Look for the button numbers in the terminal output:
    ButtonPress event, serial 39, synthetic NO, window 0x3200001,
    root 0xae, subw 0x0, time 25542794, (114,113), root:(2884,634),
    state 0x10, button 1, same_screen YES

    ButtonRelease event, serial 39, synthetic NO, window 0x3200001,
    root 0xae, subw 0x0, time 25542898, (114,113), root:(2884,634),
    state 0x110, button 1, same_screen YES

    ButtonPress event, serial 39, synthetic NO, window 0x3200001,
    root 0xae, subw 0x0, time 25543218, (114,113), root:(2884,634),
    state 0x10, button 3, same_screen YES

    ButtonRelease event, serial 39, synthetic NO, window 0x3200001,
    root 0xae, subw 0x0, time 25543330, (114,113), root:(2884,634),
    state 0x410, button 3, same_screen YES

    In the above example the buttons number 1 and 3 were used.
B. To change the assigment of the mouse buttons on the local thin client:
  1. Set a new button map for the mouse.
    Setup > System > Firmware Customization > Custom Commands > Desktop Commands > Final
    Swap the buttons in the map. To swap e.g. the buttons 1 and 3 change the setting from
    xinput set-button-map [ID] 1 2 3 4 5 6 7
    to
    xinput set-button-map [ID] 3 2 1 4 5 6 7
C. To automatically change the assignment using a UMS profile:

As the ID of the mouse may be different on each client you cannot use the command as shown in B) but need to use a script that will automatically map the correct input device.

  1. Run the following command in a Local Terminal:
    xinput --list
    Make a note of the complete name of the mouse.
  2. Create a profile with a custom command:
    Setup > System > Firmware Customization > Custom Commands > Desktop Commands > Final
    MouseID=$(xinput --list --id-only 'NAME OF MOUSE')
    xinput set-button-map $MouseID 3 2 1 4 5 6 7
    Replace NAME OF MOUSE with the name of the mouse as determined in step C1.

    IGEL's Terms & Conditions apply.