Created attachment 114913 [details] hid-lenovo patch that sets INPUT_PROP_POINTING_STICK I added the prop INPUT_PROP_POINTING_STICK to the hid-lenovo driver to enable middle button scrolling for the Lenovo Compact USB keyboard by default (patch attached). The patch works well if the USB keyboard is plugged in after booting. If it's connected at boot time, the middle and right clickpad buttons of my Lenovo T440s are recognized as left clicks, and since there's no middle click, trackpoint scrolling with the integrated trackpoint doesn't work either. Kernel: 4.0.0-0.rc5.git4.1.fc22.x86_64 Libinput: 0.12.0.2.fc22 Repeatable: always Steps to reproduce: 0. Find a Thinkpad with T440s-like clickpad and a Lenovo Compact USB keyboard 1. Apply the attached patch to the hid-lenovo kernel module, recompile and install the module 2. Connect Lenovo Compact USB keyboard 3. Notice that middle button scrolling works with both the USB keyboard and the integrated trackpoint 4. Reboot the system leaving the USB keyboard connected 5. Notice that middle button scrolling works with the USB keyboard, but that middle and right click don't work on the clickpad anymore
with the patch applied, what is the evemu-describe output of this device?
Created attachment 114952 [details] evemu-describe output of the usb keyboard device
Created attachment 114953 [details] evemu-describe output of the usb trackpoint device
Created attachment 114954 [details] updated hid-lenovo patch Patch cleaned up after comments. Results are the same.
I suspect the cause here is the re-ordering of event nodes when you reboot with the keyboard plugged in, though I'm not yet sure why. Can you get the list of devices (a simple evemu-describe without arguments will list them) before/after rebooting?
Also make sure you update to libinput from git master. The keyboard looks like a fake MT device and we pushed a few fixes for that (see Bug 89783)
oh and another thing: are we talking about the bottom edge or the top edge of the clickpad here?
Hi, I'm prety sure that the cause is the code in evdev-mt-touchpad.c which is responsible for selecting a trackstick to redirect the top software buttons to: if (tp->buttons.trackpoint == NULL && (added_device->tags & EVDEV_TAG_TRACKPOINT)) { /* Don't send any pending releases to the new trackpoint */ tp->buttons.active_is_topbutton = false; tp->buttons.trackpoint = added_device; libinput_device_add_event_listener(&added_device->base, &tp->sendevents.trackpoint_listener, tp_trackpoint_event, tp); } Notice that currently this takes the first device which has EVDEV_TAG_TRACKPOINT set, we should change this to instead take the first ps/2 device (or maybe even the first "TPPS2 IBM TrackPoint"). Regards, Hans
Created attachment 115067 [details] [review] 0001-touchpad-only-pair-with-BUS_I8042-trackpoint-devices.patch untested, but it passes the test suite and that should be enough to fix this bug.
Thanks! Your patch works for me.
updated patch on the list now: http://lists.freedesktop.org/archives/wayland-devel/2015-April/021332.html
commit 7552cd04f7a50fb674ec826933dbdb7f804d7447 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Tue Apr 14 17:04:45 2015 +1000 touchpad: only pair internal trackpoint devices with internal touchpads
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.