I have an Optical GreatEye Wheelmouse which has 2 scroll wheels and 5 "buttons" (three including middle as "click" on first scroll wheel) and left and right side buttons (dark side areas in image below) and despite the xinput --list-props
output looking correct BOTH scroll wheels are behaving as buttons 4 and 5 instead of the second one working on 6 and 7, why is this and how do I fix it (get 2nd scroll wheel working as horizontal scroll wheel would)?
Above image from: A4Tech website
Output from xinput list-props #
where # is the correct device Id:
Device 'ImExPS/2 Generic Explorer Mouse':
Device Enabled (142): 1
Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (269): 0
Device Accel Constant Deceleration (270): 1.000000
Device Accel Adaptive Deceleration (271): 1.000000
Device Accel Velocity Scaling (272): 10.000000
Device Product ID (261): 2, 6
Device Node (262): "/dev/input/event1"
Evdev Axis Inversion (273): 0, 0
Evdev Axes Swap (275): 0
Axis Labels (276): "Rel X" (152), "Rel Y" (153), "Rel Horiz Wheel" (267), "Rel Vert Wheel" (268)
Button Labels (277): "Button Left" (145), "Button Middle" (146), "Button Right" (147), "Button Wheel Up" (148), "Button Wheel Down" (149), "Button Horiz Wheel Left" (150), "Button Horiz Wheel Right" (151), "Button Side" (265), "Button Extra" (266), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264)
Evdev Scrolling Distance (278): 1, 1, 1
Evdev Middle Button Emulation (279): 0
Evdev Middle Button Timeout (280): 50
Evdev Third Button Emulation (281): 0
Evdev Third Button Emulation Timeout (282): 1000
Evdev Third Button Emulation Button (283): 3
Evdev Third Button Emulation Threshold (284): 20
Evdev Wheel Emulation (285): 0
Evdev Wheel Emulation Axes (286): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (287): 10
Evdev Wheel Emulation Timeout (288): 200
Evdev Wheel Emulation Button (289): 4
Evdev Drag Lock Buttons (290): 0
Using xev
I have seen that the events being seen for the two scroll wheels are identical. To me this suggests that it is a kernel/module issue, I am using Debian "Jessie" with backports - the latter mean that I am currently using, as per uname -a
:
Linux XXXXX 4.9.0-0.bpo.1-rt-amd64 #1 SMP PREEMPT RT Debian 4.9.2-2~bpo8+1 (2017-01-26) x86_64 GNU/Linux
As a speculative hypothesis I am wondering (give the limited number of mice that actually have more that one real scroll-wheel) whether this might be something actually kernel related - so, as a supplementary answer, where could I start looking to find out more about what is going wrong?
Update: perhaps I was wrong, in that:
Evdev Wheel Emulation Axes (286): 0, 0, 4, 5
should be:
Evdev Wheel Emulation Axes (286): 6, 7, 4, 5
but just changing that with xinput set-props # 286 6 7 4 5
where # is the correct ID number did not in itself produce any changes...
Curiously, grep
-ping my /var/log/Xorg.0.log
file yields:
[ 46.173] (II) config/udev: Adding input device ImExPS/2 Generic Explorer Mouse (/dev/input/event1)
[ 46.173] (**) ImExPS/2 Generic Explorer Mouse: Applying InputClass "evdev pointer catchall"
[ 46.173] (**) ImExPS/2 Generic Explorer Mouse: Applying InputClass "evdev pointer catchall"
[ 46.173] (II) Using input driver 'evdev' for 'ImExPS/2 Generic Explorer Mouse'
[ 46.173] (**) ImExPS/2 Generic Explorer Mouse: always reports core events
[ 46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: Device: "/dev/input/event1"
[ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Vendor 0x2 Product 0x6
[ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found 9 mouse buttons
[ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found scroll wheel(s)
[ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found relative axes
[ 46.173] (--) evdev: ImExPS/2 Generic Explorer Mouse: Found x and y relative axes
[ 46.173] (II) evdev: ImExPS/2 Generic Explorer Mouse: Configuring as mouse
[ 46.173] (II) evdev: ImExPS/2 Generic Explorer Mouse: Adding scrollwheel support
[ 46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: YAxisMapping: buttons 4 and 5
[ 46.173] (**) evdev: ImExPS/2 Generic Explorer Mouse: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[ 46.173] (II) XINPUT: Adding extended input device "ImExPS/2 Generic Explorer Mouse" (type: MOUSE, id 9)
[ 46.174] (II) evdev: ImExPS/2 Generic Explorer Mouse: initialized for relative axes.
[ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) keeping acceleration scheme 1
[ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration profile 0
[ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration factor: 2.000
[ 46.174] (**) ImExPS/2 Generic Explorer Mouse: (accel) acceleration threshold: 4
[ 46.174] (II) config/udev: Adding input device ImExPS/2 Generic Explorer Mouse (/dev/input/mouse0)
Note that although there is a line including YAxisMapping: buttons 4 and 5
there is no corresponding XAxisMapping: buttons 6 and 7
- which is suggestive...
Note: (in response to comment) it is a PS/2 connector mouse so USB related diagnostics are probably not going to be helpful.
After installing the evtest
package I found that the events for the two scroll wheels had the same type 2 (EV_REL)
, code 8 (EV_WHEEL)
but that the first scroll wheel had value 1
or -1
(for movement in the two opposite directions) but the second scroll wheel had value 2
or -2
. Interestingly I recall that in use I had notice that in some applications the second scroll wheel produced scrolling actions TWICE as large as for the first - which is starting to sound like some code could be misinterpreting value as a move quantity rather than a "direction"!
dmesg
)? What kind of events do you see when you runevtest
as root on the mouse device? Are the two wheels distinguishable that way? If not, do you get distinguishable events in the hidraw device with usbhid-dump, assuming it's a HID device?