Skip to content

quirks: ignore mode switch button on Madcatz R.A.T.3 mouse

Anatolii Lishchynskyi requested to merge iamnotacake/libinput:patch-1 into master

Based on 50-system-cyborg.quirks, I created quirks for Madcatz R.A.T.3. Don't know how, but Madcatz's R.A.T. and Saitek's Cyborg are related. Maybe one of these companies has bought another... Anyway, in my RAT3 the problematic "mode switch" button had a little bit different keycodes. Here's log with all the buttons pressed:

> sudo libinput debug-events --device /dev/input/event21
-event21  DEVICE_ADDED     Madcatz Mad Catz R.A.T.3 Mouse    seat0 default group1  cap:p left scroll-nat scroll-button
event21  POINTER_BUTTON    +3.23s      BTN_LEFT (272) pressed, seat count: 1
event21  POINTER_BUTTON    +3.40s      BTN_LEFT (272) released, seat count: 0
event21  POINTER_BUTTON    +4.59s      BTN_MIDDLE (274) pressed, seat count: 1
event21  POINTER_BUTTON    +4.77s      BTN_MIDDLE (274) released, seat count: 0
event21  POINTER_BUTTON    +5.78s      BTN_RIGHT (273) pressed, seat count: 1
event21  POINTER_BUTTON    +5.92s      BTN_RIGHT (273) released, seat count: 0
event21  POINTER_BUTTON    +7.22s      BTN_EXTRA (276) pressed, seat count: 1   # side button, acts like "forward" in browser
event21  POINTER_BUTTON    +7.36s      BTN_EXTRA (276) released, seat count: 0
event21  POINTER_BUTTON    +7.99s      BTN_SIDE (275) pressed, seat count: 1    # side button, acts like "backward" in browser
event21  POINTER_BUTTON    +8.16s      BTN_SIDE (275) released, seat count: 0
event21  POINTER_AXIS      +8.84s      vert -15.00/-1* horiz 0.00/0 (wheel)
event21  POINTER_AXIS      +9.71s      vert 15.00/1* horiz 0.00/0 (wheel)
event21  POINTER_AXIS     +10.18s      vert 15.00/1* horiz 0.00/0 (wheel)
event21  POINTER_BUTTON   +14.46s      ??? (280) pressed, seat count: 1     # sensitivity + button
event21  POINTER_BUTTON   +14.60s      ??? (280) released, seat count: 0
event21  POINTER_BUTTON   +15.09s      ??? (281) pressed, seat count: 1     # sensitivity - button
event21  POINTER_BUTTON   +15.23s      ??? (281) released, seat count: 0
event21  POINTER_BUTTON   +17.43s      BTN_BACK (278) pressed, seat count: 1   # here problematic behavior starts
event21  POINTER_BUTTON   +18.10s      BTN_BACK (278) released, seat count: 0
event21  POINTER_BUTTON   +18.10s      BTN_TASK (279) pressed, seat count: 1
event21  POINTER_BUTTON   +18.73s      BTN_FORWARD (277) pressed, seat count: 1
event21  POINTER_BUTTON   +18.73s      BTN_TASK (279) released, seat count: 0
event21  POINTER_BUTTON   +19.39s      BTN_FORWARD (277) released, seat count: 0
event21  POINTER_BUTTON   +19.39s      BTN_BACK (278) pressed, seat count: 1
event21  POINTER_BUTTON   +19.84s      BTN_BACK (278) released, seat count: 0
event21  POINTER_BUTTON   +19.84s      BTN_TASK (279) pressed, seat count: 1
event21  POINTER_BUTTON   +20.34s      BTN_FORWARD (277) pressed, seat count: 1
event21  POINTER_BUTTON   +20.34s      BTN_TASK (279) released, seat count: 0
event21  POINTER_BUTTON   +21.84s      BTN_FORWARD (277) released, seat count: 0
event21  POINTER_BUTTON   +21.84s      BTN_BACK (278) pressed, seat count: 1
event21  POINTER_BUTTON   +22.26s      BTN_BACK (278) released, seat count: 0
event21  POINTER_BUTTON   +22.26s      BTN_TASK (279) pressed, seat count: 1
event21  POINTER_BUTTON   +22.61s      BTN_FORWARD (277) pressed, seat count: 1
event21  POINTER_BUTTON   +22.61s      BTN_TASK (279) released, seat count: 0

> lsusb | grep Mad
Bus 001 Device 017: ID 0738:1703 Mad Catz, Inc. Mad Catz R.A.T.3 Mouse

BTW, it seems strange that forward/backward in browser works with buttons called BTN_EXTRA & BTN_SIDE, while disabling BTN_BACK & BTN_FORWARD didn't affect this.

This quirk does the same thing as fix described in https://wiki.archlinux.org/index.php/Mad_Catz_Mouse where I create file in /etc/X11/xorg.conf.d and tell xinput to disable problematic buttons.

P.S. Why the heck did developers do that?! They wanted their mice to be usable only with their special drivers?

Merge request reports