Summary: | libinput 1.2: two finger scrolling broken | ||
---|---|---|---|
Product: | Wayland | Reporter: | Greg White <gwhite> |
Component: | libinput | Assignee: | Peter Hutterer <peter.hutterer> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | elreydetodo, gwhite, peter.hutterer |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Recording of an attempted two finger scroll
0001-touchpad-expand-immediate-pinch-detection-to-25mm.patch 0001-touchpad-only-trigger-immediate-pinch-detection-for-.patch Another recording of attempted two-finger scroll |
Description
Greg White
2016-02-23 14:02:38 UTC
capture one of thes sequences with evemu-record and attach it here please Created attachment 121932 [details]
Recording of an attempted two finger scroll
stdout from evemu-record: # EVEMU 1.3 # Kernel: 4.5.0-rc5-GTW1+ # DMI: dmi:bvnDellInc.:bvrA07:bd10/15/2014:svnDellInc.:pnXPS159530:pvrA07:rvnDellInc.:rnXPS159530:rvrA07:cvnDellInc.:ct8:cvrNotSpecified: # Input device name: "SynPS/2 Synaptics TouchPad" # Input device ID: bus 0x11 vendor 0x02 product 0x07 version 0x1b1 # Supported events: # Event type 0 (EV_SYN) # Event code 0 (SYN_REPORT) # Event code 1 (SYN_CONFIG) # Event code 2 (SYN_MT_REPORT) # Event code 3 (SYN_DROPPED) # Event code 4 ((null)) # Event code 5 ((null)) # Event code 6 ((null)) # Event code 7 ((null)) # Event code 8 ((null)) # Event code 9 ((null)) # Event code 10 ((null)) # Event code 11 ((null)) # Event code 12 ((null)) # Event code 13 ((null)) # Event code 14 ((null)) # Event type 1 (EV_KEY) # Event code 272 (BTN_LEFT) # Event code 325 (BTN_TOOL_FINGER) # Event code 328 (BTN_TOOL_QUINTTAP) # Event code 330 (BTN_TOUCH) # Event code 333 (BTN_TOOL_DOUBLETAP) # Event code 334 (BTN_TOOL_TRIPLETAP) # Event code 335 (BTN_TOOL_QUADTAP) # Event type 3 (EV_ABS) # Event code 0 (ABS_X) # Value 1532 # Min 1386 # Max 5660 # Fuzz 0 # Flat 0 # Resolution 42 # Event code 1 (ABS_Y) # Value 3049 # Min 1252 # Max 4646 # Fuzz 0 # Flat 0 # Resolution 44 # Event code 24 (ABS_PRESSURE) # Value 0 # Min 0 # Max 255 # Fuzz 0 # Flat 0 # Resolution 0 # Event code 28 (ABS_TOOL_WIDTH) # Value 0 # Min 0 # Max 15 # Fuzz 0 # Flat 0 # Resolution 0 # Event code 47 (ABS_MT_SLOT) # Value 0 # Min 0 # Max 1 # Fuzz 0 # Flat 0 # Resolution 0 # Event code 53 (ABS_MT_POSITION_X) # Value 0 # Min 1386 # Max 5660 # Fuzz 0 # Flat 0 # Resolution 42 # Event code 54 (ABS_MT_POSITION_Y) # Value 0 # Min 1252 # Max 4646 # Fuzz 0 # Flat 0 # Resolution 44 # Event code 57 (ABS_MT_TRACKING_ID) # Value 0 # Min 0 # Max 65535 # Fuzz 0 # Flat 0 # Resolution 0 # Event code 58 (ABS_MT_PRESSURE) # Value 0 # Min 0 # Max 255 # Fuzz 0 # Flat 0 # Resolution 0 # Properties: # Property type 0 (INPUT_PROP_POINTER) # Property type 2 (INPUT_PROP_BUTTONPAD) N: SynPS/2 Synaptics TouchPad I: 0011 0002 0007 01b1 P: 05 00 00 00 00 00 00 00 B: 00 0b 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 01 00 00 00 00 00 B: 01 20 e5 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 01 00 00 00 00 00 00 00 00 B: 02 00 00 00 00 00 00 00 00 B: 03 03 00 00 11 00 80 60 06 B: 04 00 00 00 00 00 00 00 00 B: 05 00 00 00 00 00 00 00 00 B: 11 00 00 00 00 00 00 00 00 B: 12 00 00 00 00 00 00 00 00 B: 14 00 00 00 00 00 00 00 00 B: 15 00 00 00 00 00 00 00 00 B: 15 00 00 00 00 00 00 00 00 A: 00 1386 5660 0 0 42 A: 01 1252 4646 0 0 44 A: 18 0 255 0 0 0 A: 1c 0 15 0 0 0 A: 2f 0 1 0 0 0 A: 35 1386 5660 0 0 42 A: 36 1252 4646 0 0 44 A: 39 0 65535 0 0 0 A: 3a 0 255 0 0 0 ok, that's not surprising. Your finger position is that of a pinch, with the two fingers lined up vertically and 21mm apart. We have code that identifies a pinch gesture whenever the fingers are more than 20mm vertically apart. so as an immediate workaround you can just keep your fingers closer together. long term we should increase that distance, 20mm is too small. oh, attach the output of touchpad-edge-detector please and the physical dimensions of your touchpad in mm Created attachment 121934 [details] [review] 0001-touchpad-expand-immediate-pinch-detection-to-25mm.patch this patch ups it to 25mm which should be enough based on your recording (I find more than 25mm quite unnatural, but ymmv). Try it and see if it helps, as said in the above comment we need to also check that your touchpad dimensions are correct The touchpad measures as 105x80mm. Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event10 Move one finger around the touchpad to detect the actual edges Kernel says: x [1386..5660], y [1252..4646] Touchpad sends: x [1392..5659], y [1227..4604] /^C Touchpad size as listed by the kernel: 101x77mm Calculate resolution as: x axis: 4274/<width in mm> y axis: 3394/<height in mm> Suggested udev rule: # <Laptop model description goes here> evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnDellInc.:bvrA07:bd10/15/2014:svnDellInc.:pnXPS159530:pvrA07:rvnDellInc.:rnXPS159530:rvrA07:cvnDellInc.:ct8:cvrNotSpecified:* EVDEV_ABS_00=1392:5659:<x resolution> EVDEV_ABS_01=1227:4604:<y resolution> EVDEV_ABS_35=1392:5659:<x resolution> EVDEV_ABS_36=1227:4604:<y resolution> I will try the patch. That said, I disagree with your algorithm. A pinch is when there are two fingers down and they are moving towards or away from each other. A scroll is when there are two fingers down moving in the same direction, no matter how far apart. 25mm will be better (at 20mm, I have to jam my fingers together to get a scroll and I have small fingers.) However, I often have my fingers much more than 25mm apart when I am scrolling, sometimes as much as 50mm. I'm "finger trained" on a Macbook, but I've been using this synaptics pad for years. If the existing algorithm stands, what I'd really like is to disable pinch. Not only do I never use pinch but, as noted, it's going to break scrolling rather badly. Patch applied. That was better. I modified the patch to completely disable pinch at that spot. Perfect. the size difference between the announced ranges and the actual ranges on the touchpad are likely enough to trigger incorrect detection,. add this to your /usr/lib/udev/hwdb.d/60-evdev.hwdb (note the comment at the top about how to make a local copy), i'll get this into systemd upstream. Once applied, reboot and evemu-describe should now show the modified ranges and resolutions. evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnDellInc.*:pnXPS159530:* EVDEV_ABS_00=1392:5659:41 EVDEV_ABS_01=1227:4604:44 EVDEV_ABS_35=1392:5659:41 EVDEV_ABS_36=1227:4604:44 (In reply to Greg White from comment #9) > Patch applied. That was better. > > I modified the patch to completely disable pinch at that spot. Perfect. did you test it without the modification? I won't disable pinch here altogether, at least not until we get some other issues. The hwdb entry and the 25mm patch together should be enough to make 2fg scrolling reliable. OK, great, I put that into my hwdb. Mostly, it seems to have improved the sensitivity of the pointer. Which is a great goodness. I did try the patch. As I noted, I very commonly scroll with my fingers very far apart, and I definitely get missed scrolls even with the patch in place and with the hwdb updated. As I said, my fingers learned on a Macbook. I definitely scroll with my fingers far apart, but it's always worked on this touchpad in the past...so it's very jarring. I would again urge you to rethink pinch. Scrolling is the (VERY MUCH) more common case - please bias toward making it work as smoothly as possible. Created attachment 121956 [details] [review] 0001-touchpad-only-trigger-immediate-pinch-detection-for-.patch Try this one please, instead of the previous one. This should be the correct solution and provide you with reliable scrolling and mostly reliable pinch gestures. Beautiful. Works like a charm with that patch installed. No scroll fails. Created attachment 121968 [details] Another recording of attempted two-finger scroll This patch solves the problem for me as well. Thanks. Tested-by: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> commit dbb85f67396ce47ca0fb66b610b3818f9a041ca0 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Wed Feb 24 13:46:48 2016 +1000 touchpad: only trigger immediate pinch detection for three fingers |
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.