I dig a little deeper and figured it out.
Linked ArchWiki page is correct, although it doesn't explain what *exactly* is the problem a why these Xorg ButtonMapping fixes it.
The real reason is described here:
https://bugs.launchpad.net/ubuntu/+s...92/comments/13
Code:
The real problem here is that the mouse has a "mode" button that changes modes by registering a button click WITHOUT SENDING A RELEASE. It's probably not a bug that the x server then sees every subsequent mouse click as a button combination, including the standard button 1 (left button) click.
You can see this for yourself by using the xinput tool.
On my model (7), repeatedly pressing the "mode" button (lighted, on the index finger guard) releases the previous button and presses the next one without release. In this way it loops through buttons 13, 14 and 15.
That is:
*click* press 13
*click* release 13, press 14
*click* release 14, press 15
*click* release 15, press 13
(repeat ad nauseum)
Apparently during part of the start-up process, the mouse sends its first press-without-release, and the server jams. HUP'ing the server is the only way to break this state.
The permanent fix to this problem is to configure X to ignore buttons 13, 14 and 15 (at least on the RAT7; use xinput to discover the problematic buttons on other models).
You can fix it by adding custom Xorg conf file to xorg.conf.d/ directory (/etc/X11/xorg.conf.d on Slackware). Working config for rat 5 is here:
https://bugs.launchpad.net/ubuntu/+s...92/comments/19
But first you need to make sure to use exact product string as detected by xinput. Otherwise it won't work.
Code:
yenn@darkstar ~ > xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB KVM id=10 [slave pointer (2)]
⎜ ↳ Mad Catz Mad Catz R.A.T.5 Mouse id=12 [slave pointer (2)]
Older Rats identified themselves as 'Saitek Cyborg R.A.T.5 Mouse', while mine is 'Mad Catz Mad Catz R.A.T.5 Mouse'.
/etc/X11/xorg.conf.d/rat5.conf
Code:
Section "InputClass"
Identifier "Mad Catz R.A.T.5 Mouse"
MatchProduct "Mad Catz Mad Catz R.A.T.5 Mouse" # check exact model with xinput
MatchDevicePath "/dev/input/event*"
Option "ButtonMapping" "1 2 3 4 5 6 7 2 9 10 11 12 0 0 0 16 17 18 19 20 21" # block buttons 13,14,15
EndSection