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:
- Open a local terminal.
- 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)]
- 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). - 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:
- Set a new button map for the mouse in 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
toxinput 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 B2 but need to use a script that will automatically map the correct input device.
- Run the following command in a local terminal:
xinput --list
- Make a note of the complete name of the mouse.
- Create a profile in Setup > System > Firmware Customization > Custom Commands > Desktop Commands > Final with a custom command:
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.