Bug 53168

Summary: evdev 2.7.2 breaks mouse button remapping
Product: xorg Reporter: ataraxia937
Component: Input/evdevAssignee: Peter Hutterer <peter.hutterer>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: avid88, peter.hutterer
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description ataraxia937 2012-08-06 15:35:56 UTC
Upon upgrade from evdev 2.7.1 to 2.7.2, "ButtonMapping" "3 2 1" is no longer effective for creating a left-handed mouse mapping.

The config section looks like this:

Section "InputClass"
        Identifier      "left-hand mouse"
        MatchIsPointer  "on"
        Option  "ButtonMapping" "3 2 1"
EndSection

The server logs that this section is being applied:

[  4843.887] (II) config/udev: Adding input device Dell Dell USB Optical Mouse (/dev/input/event0)
[  4843.887] (**) Dell Dell USB Optical Mouse: Applying InputClass "evdev pointer catchall"
[  4843.887] (**) Dell Dell USB Optical Mouse: Applying InputClass "left-hand mouse"
[  4843.887] (II) Using input driver 'evdev' for 'Dell Dell USB Optical Mouse'
[  4843.887] (**) Dell Dell USB Optical Mouse: always reports core events
[  4843.887] (**) evdev: Dell Dell USB Optical Mouse: Device: "/dev/input/event0"
[  4843.887] (**) evdev: Dell Dell USB Optical Mouse: ButtonMapping '3 2 1'
[  4843.887] (--) evdev: Dell Dell USB Optical Mouse: Vendor 0x413c Product 0x3012
[  4843.887] (--) evdev: Dell Dell USB Optical Mouse: Found 3 mouse buttons
[  4843.887] (--) evdev: Dell Dell USB Optical Mouse: Found scroll wheel(s)
[  4843.887] (--) evdev: Dell Dell USB Optical Mouse: Found relative axes
[  4843.887] (--) evdev: Dell Dell USB Optical Mouse: Found x and y relative axes
[  4843.887] (II) evdev: Dell Dell USB Optical Mouse: Configuring as mouse
[  4843.887] (II) evdev: Dell Dell USB Optical Mouse: Adding scrollwheel support
[  4843.887] (**) evdev: Dell Dell USB Optical Mouse: YAxisMapping: buttons 4 and 5
[  4843.887] (**) evdev: Dell Dell USB Optical Mouse: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[  4843.887] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/input/input6/event0"
[  4843.887] (II) XINPUT: Adding extended input device "Dell Dell USB Optical Mouse" (type: MOUSE, id 9)
[  4843.887] (II) evdev: Dell Dell USB Optical Mouse: initialized for relative axes.
[  4843.887] (**) Dell Dell USB Optical Mouse: (accel) keeping acceleration scheme 1
[  4843.887] (**) Dell Dell USB Optical Mouse: (accel) acceleration profile 0
[  4843.887] (**) Dell Dell USB Optical Mouse: (accel) acceleration factor: 2.000
[  4843.887] (**) Dell Dell USB Optical Mouse: (accel) acceleration threshold: 4
[  4843.887] (II) config/udev: Adding input device Dell Dell USB Optical Mouse (/dev/input/mouse0)
[  4843.887] (**) Dell Dell USB Optical Mouse: Applying InputClass "left-hand mouse"
[  4843.887] (II) No input driver specified, ignoring this device.
[  4843.887] (II) This device may have been added with another device file.

But the mouse behaves as if the default mapping is in use, and indeed, xinput confirms it:

$ xinput get-button-map 'Dell Dell USB Optical Mouse'
1 2 3 4 5 6 7 

I'm still able to use "xinput set-button-map 'Dell Dell USB Optical Mouse' 3 2 1" after the fact to set the buttons the way I want them - it's only at the time of driver / device attachment that it doesn't work.

This same config works perfectly again if I downgrade evdev to 2.7.1, leaving all other software as it is.
Comment 1 Peter Hutterer 2012-08-07 04:53:05 UTC
http://patchwork.freedesktop.org/patch/11562/
Comment 2 ataraxia937 2012-08-07 15:03:54 UTC
Patch tested and confirmed to work for me. Thanks for the quick turnaround!
Comment 3 Peter Hutterer 2012-08-14 05:23:54 UTC
commit 33e7831b5fabc5c9dcc0224800a04761086952a7
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Aug 7 14:32:17 2012 +1000

    Fix broken ButtonMapping option (#53168)

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.