My problem:
I got a very crappy PS2 to USB cable, and when I use the mouse scroll, from time to time a extra mouse key press was sent (key 9). This was not a problem in most of the places, except in firefox where it would trigger a back in history when I scrolled up (very annoying).
I've changed all the firefox preferences in about:config in
mousewheel.* to only scroll (action=0), but I was always getting the back in scroll up. (about:config information
here.)
Diagnosis:
To figure out what was the problem I used
xev
That will print to the terminal the events occurred in the small x window created by the program. Here is the problem I was having, the log is from me scrolling down, you can see at some point the keys sent are
9
and
8
:
ButtonPress event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747353, (40,101), root:(1358,514),
state 0x10, button 4, same_screen YES
ButtonRelease event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747353, (40,101), root:(1358,514),
state 0x810, button 4, same_screen YES
MotionNotify event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747449, (40,102), root:(1358,515),
state 0x10, is_hint 0, same_screen YES
ButtonRelease event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747449, (40,102), root:(1358,515),
state 0x10, button 8, same_screen YES
ButtonRelease event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747449, (40,102), root:(1358,515),
state 0x10, button 9, same_screen YES
MotionNotify event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747553, (40,102), root:(1358,515),
state 0x10, is_hint 0, same_screen YES
ButtonPress event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747553, (40,102), root:(1358,515),
state 0x10, button 8, same_screen YES
ButtonPress event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747553, (40,102), root:(1358,515),
state 0x10, button 9, same_screen YES
ButtonPress event, serial 40, synthetic NO, window 0x3800001,
root 0xb6, subw 0x0, time 747553, (40,102), root:(1358,515),
state 0x10, button 4, same_screen YES
As my mouse only has 2 buttons and a scroll wheel, I changed the mouse mapping to disable all the other buttons (buttons above 5 are set to button 0). The command is:
xmodmap -e "pointer = 1 2 3 4 5 0 0 0 0 0 0 0 0 0 "
You can check what mapping you are using by doing:
xmodmap -pp
In my case, after changing the mapping I get:
# xmodmap -pp
There are 14 pointer buttons defined.
Physical Button
Button Code
1 1
2 2
3 3
4 4
5 5
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
To return to the default mapping you can do :
# xmodmap -e "pointer = default"
And check:
# xmodmap -pp
There are 14 pointer buttons defined.
Physical Button
Button Code
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
To make this change permanent you just need to create a file
~/.Xmodmap
with the content:
pointer = 1 2 3 4 5 0 0 0 0 0 0 0 0 0
You can check the correctness of your file by doing
xmodmap ~/.Xmodmap
and check if the mapping was changed correctly.