Problem: After upgrading xf86-input-evdev to 1.2.0 mouse pointer is stuck on the vertical line in the middle of the screen. Everything except the horizontal movement is fine. Cause: The mouse reports 1 absolute axis and 4 relative axes (X, Y, WHEEL, HWHEEL). The evdev driver initializes the absolute axis as the X axis and subsequent initialization of the relative X axis fails, because bit EV_AXES_V_PRESENT in axes->v_flags[0] is set by the former initialization of absolute axis (evdev_axes.c:232:EvdevParseMapToRelAxis). ARCH: IA32 (pentium4) VIDEO: ATI Radeon 9200SE INPUT: Benq x530 Wireless Desktop (aka Darfon Wireless Keyboard & Mouse) connected via single USB (the receiver has also an extra PS2 connector which is unplugged) OS: Gentoo Linux KERNEL: 2.6.23 (gentoo-sources-2.6.23-r5) XORG: 7.3 / 1.4.0.90 EVDEV: 1.2.0 GCC: 4.2.2 (Gentoo 4.2.2 p1.0) Everything patched by gentoo and compiled on my machine. I do not use HAL/DBUS or such stuff. Story: After upgrade I accommodated xorg.conf to new configuration options (using just "Device" option for evdev). Everything worked fine except for horizontal mouse movement. My xorg.conf and Xorg.log: ... Identifier "mouse2" Driver "evdev" Option "Device" "/dev/input/by-id/usb-Darfon_W_eless_Keyboard___Mouse-event-mouse" ... (**) mouse2: always reports core events (II) mouse2: Found 1 absolute axes. (II) mouse2: Configuring as pointer. (II) mouse2: Found 4 relative axes. (II) mouse2: Configuring as pointer. (EE) mouse2: Unable to parse 'RelAxis 0' as a map specifier. (**) mouse2: Configuring 1 absolute axes. ... After a bit of debugging I discovered problem with the absolute axis. My mouse has just 2 buttons and wheel, I have no idea why there is any absolute axis. The mouse is wireless using common radio receiver together with keyboard. I use evdev input driver for both the mouse and the keyboard, because it is the only configuration which insures correct keysyms for media keys (I suspect that the media keys look like sent by the mouse or something similar, because without evdev for mouse they do not generate any keycodes at all). I created a workaround simply by nuking the absolute axis initialization with meaningless "Abs32MapTo" option so the mouse works fine --- horrible, but I can live with that. I have not studied the code any further (sorry for not providing working patch;). I suppose this is a bug, because evdev-1.1.5 had no problems while detecting the same 1 absolute and 4 relative axes. My recent conf and log: ... Identifier "mouse2" Driver "evdev" Option "Device" "/dev/input/by-id/usb-Darfon_W_eless_Keyboard___Mouse-event-mouse" Option "Abs32MapTo" "-1" # disable absolute X axis (breaks X movement!) ... (**) mouse2: always reports core events (II) mouse2: Found 1 absolute axes. (II) mouse2: Configuring as pointer. (**) Option "Abs32MapTo" "-1" (EE) mouse2: Unable to parse '-1' as a map specifier string. (II) mouse2: Found 4 relative axes. (II) mouse2: Configuring as pointer. (**) mouse2: Configuring 1 absolute axes. ... Hope this report helps (anyway I'm lucky solving just such peanuts on -O3 compiled system:). Z.
Created attachment 13578 [details] Full configs & logs
I confirm the bug (and I don't think it is minor as it makes mouse unusable), I have Logitech Wave USB wireless mouse+keyboard, `evtest` under console correctly displays movement in X and Y axis. It is on event9 (mouse) and event10 (keyboard). Mouse event device under `evtest` writes: Input driver version is 1.0.0 Input device ID: bus 0x3 vendor 0x46d product 0xc517 version 0x110 Input device name: "Logitech USB Receiver" Supported events: Event type 0 (Sync) Event type 1 (Key) Event code 113 (Mute) ... Event type 2 (Relative) Event code 0 (X) Event code 1 (Y) Event code 6 (HWheel) Event code 7 (Dial) Event code 8 (Wheel) Event type 3 (Absolute) Event code 32 (Volume) Value 0 Min 1 Max 4173 Event type 4 (Misc) Event code 4 (ScanCode) But X.org reports this: (**) Logitech USB Receiver: always reports core events (**) Option "xkb_model" "evdev" (**) Option "xkb_layout" "us,cz" (**) Option "xkb_variant" "basic,qwerty" (**) Option "xkb_options" "grp:alt_shift_toggle" (II) XINPUT: Adding extended input device "Logitech USB Receiver" (type: KEYBOARD) evdev: leds are 0x0 for device 10 (II) Logitech USB Receiver: Init (II) Logitech USB Receiver: On ... (**) Logitech USB Receiver: always reports core events (II) Logitech USB Receiver: Found 1 absolute axes. (II) Logitech USB Receiver: Configuring as pointer. (II) Logitech USB Receiver: Found 5 relative axes. (II) Logitech USB Receiver: Configuring as pointer. (EE) Logitech USB Receiver: Unable to parse 'RelAxis 0' as a map specifier. (**) Logitech USB Receiver: Configuring 1 absolute axes. (II) Logitech USB Receiver: Checking button DIGI_STYLUS (74) (II) Logitech USB Receiver: Checking bit 330 (EE) Logitech USB Receiver: AbsoluteTouch: 'DIGI_Touch' does not exist. (II) Logitech USB Receiver: Found 9 mouse buttons (II) Logitech USB Receiver: Configured 18 mouse buttons. (**) Option "xkb_model" "evdev" (**) Option "xkb_layout" "us" (II) XINPUT: Adding extended input device "Logitech USB Receiver" (type: KEYBOARD) (**) Logitech USB Receiver: 4 valuators. (**) Logitech USB Receiver: Configuring in Absolute mode. (**) Logitech USB Receiver: Registering 18 buttons. evdev: leds are 0x0 for device 14 (II) Logitech USB Receiver: Init (II) Logitech USB Receiver: On
I've added some debugging to EvdevParseMapOption (the DEBUG: lines) and discovered a problem: (II) Logitech USB Receiver: Found 1 absolute axes. (II) Logitech USB Receiver: Configuring as pointer. (EE) Logitech USB Receiver: DEBUG: Parsing 'AbsAxis 0 1 4173'. (EE) Logitech USB Receiver: DEBUG: Option 'Abs32MapTo'. (EE) Logitech USB Receiver: DEBUG: Def 'AbsAxis 0 1 4173'. (EE) Logitech USB Receiver: DEBUG: tokens->str 'AbsAxis'. (EE) Logitech USB Receiver: DEBUG: tokens->next->str '0'. (II) Logitech USB Receiver: Found 5 relative axes. (II) Logitech USB Receiver: Configuring as pointer. (EE) Logitech USB Receiver: DEBUG: Parsing 'RelAxis 0'. (EE) Logitech USB Receiver: DEBUG: Option 'RelXMapTo'. (EE) Logitech USB Receiver: DEBUG: Def 'RelAxis 0'. (EE) Logitech USB Receiver: DEBUG: tokens->str 'RelAxis'. (EE) Logitech USB Receiver: DEBUG: tokens->next->str '0'. (EE) Logitech USB Receiver: Unable to parse 'RelAxis 0' as a map specifier. Both EvdevParseMapToRelAxis and EvdevParseMapToAbsAxis access flags of pEvdev->state->axes->v_flags[strtol(tokens->next->str)], because both functions have evdevAxesPtr axes = state->axes; Shouldn't it be state->rel and state->abs respectively?
*** This bug has been marked as a duplicate of bug 13135 ***
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.