Summary: | Middle trackpoint button not recognized on Thinkpad E470 | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | VeryRealUser <m8r-63be6j> | ||||||
Component: | Input/synaptics | Assignee: | Peter Hutterer <peter.hutterer> | ||||||
Status: | RESOLVED NOTOURBUG | QA Contact: | |||||||
Severity: | normal | ||||||||
Priority: | medium | CC: | aduggan, kensington, peter.hutterer | ||||||
Version: | 7.7 (2012.06) | ||||||||
Hardware: | x86-64 (AMD64) | ||||||||
OS: | Linux (All) | ||||||||
Whiteboard: | |||||||||
i915 platform: | i915 features: | ||||||||
Attachments: |
|
Description
VeryRealUser
2017-04-16 13:51:27 UTC
looks like this is going to be a kernel issue. when you run evemu-record, do you see middle button events coming from the trackpoint? if not, not much libinput can do. (In reply to Peter Hutterer from comment #1) > looks like this is going to be a kernel issue. when you run evemu-record, do > you see middle button events coming from the trackpoint? if not, not much > libinput can do. When running evemu-record and psmouse loaded with proto=imps, the middle button is detected: [...] E: 0.000000 0001 0112 0001 # EV_KEY / BTN_MIDDLE 1 E: 0.000000 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 0.103450 0001 0112 0000 # EV_KEY / BTN_MIDDLE 0 E: 0.103450 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- [...] (see evemu-record-proto-imps.log) When psmouse is loaded without proto=imps, the middle button is not detected (see evemu-record.log). Created attachment 130916 [details]
evemu-record log with proto=imps
Created attachment 130917 [details]
evemu-record log without proto=imps
I think I can confirm that this is a kernel bug. I dove a bit into the psmouse module, especially trackpoint.c: - as dmesg reports extended button can not be read, originating from https://github.com/torvalds/linux/blob/v4.8/drivers/input/mouse/trackpoint.c#L383 - this is due to the second ps2 command in trackpoint_read returning -1 https://github.com/torvalds/linux/blob/v4.8/drivers/input/mouse/trackpoint.c#L53 Neither do I have any experience with the ps2 interface, nor do I the trackpoint especially. But it seems like Lenovo might have changed something in the trackpoint protocol for this model? Or it's a kernel bug. I don't really know how to investigate any further atm. A quick and dirty fix is to enable the middle button like it is done here: https://github.com/torvalds/linux/blob/v4.8/drivers/input/mouse/trackpoint.c#L398, e.g. by setting button_info to 0x33, although it failed. right, so basically if you force the protocol to imps, you're leaving the touchpad's firmware in mouse emulation mode. Look at the evemu, it looks like a three-button mouse (rel x/y and some buttons). That means you lose any of the software-enabled touchpad features, scrolling is just one of those. If you don't get any middle button events in evemu, then libinput won't see them either, not much we can do there. So this is, as you already discovered, a kernel bug and needs to be fixed there. Best to bring this up on the linux-input list, make sure you cc Andrew Duggan on this (cc-d here now too). For now, I'll have to close this here since there isn't much I can do in userspace, let's punt this to the kernel instead. |
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.