Bug 89381 - libinput doesn't offer edge scrolling for all touchpads
Summary: libinput doesn't offer edge scrolling for all touchpads
Status: RESOLVED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: libinput (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-03-01 21:03 UTC by Kevin Fenzi
Modified: 2015-07-09 02:49 UTC (History)
4 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Kevin Fenzi 2015-03-01 21:03:49 UTC
This is a followup from an Xfce bug: 

https://bugzilla.xfce.org/show_bug.cgi?id=11621

The Xfce mouse prefs dialog doesn't allow setting Edge scrolling, because libinput isn't saying it's available. :( 

libinput Scroll Methods Available (277):	1, 0, 0

Is Edge scrolling just not implemented yet? Or is it expected to work?

Happy to provide more info, etc.
Comment 1 Peter Hutterer 2015-03-04 00:04:56 UTC
short answer: we don't have edge scrolling because it conflicts quite badly with software buttons and palm detection. so we only provide it on non-clickpads, i.e. devices with physical buttons.

http://wayland.freedesktop.org/libinput/doc/latest/scrolling.html
Comment 2 Kevin Fenzi 2015-03-04 13:07:42 UTC
Sad. ;( 

I've never had any problems with it and software buttons. 

Any chance to allow for some kind of override to still offer it? (ie, xorg snippet or something).
Comment 3 Peter Hutterer 2015-03-04 21:31:26 UTC
right now there's no override, this is implemented at the libinput level so the driver can't export this.

for software buttons and edge scrolling it's hard to get it right by design. the horizontal scrolling bar is in the same area as the button events and we allow movement within the software buttons (given a couple of restrictions). with horizontal scrolling enabled, a lot of the features we have currently that make software buttons work nicely would start subtly breaking.

For example: putting your finger down on a software button will not move the cursor. on some touchpads the vertical travel is high enough that any phys. click will trigger some movement. with scrolling enabled, that movement would need to be differentiated from scroll movement (timeouts, heuristics, all causing slower response time and some unpredictability).

this also means you can leave your finger on the button area and use a second finger for moving without the button finger affecting your movement. this would not be possible with edge scrolling enabled.

unlike synaptics, libinput doesn't differ between pure vertical and horizontal scrolling, once you started scrolling in one direction you get minute movements in the other direction too - this is particularly useful for "natural scrolling" when you want to manipulate content.

vertical scrolling only interferes with the software buttons in the bottom right corner - but that's where the majority of right button clicks are. In addition, iirc over 90% or so of all palm touches land in the zone that is the edge scrolling zone (see the link below). these touches cannot be distinguished from real touches by pressure data or other means. so we'd have to disable palm detection in the right zone and you'd get accidental scroll events when typing.
again, heuristics and timeouts can work around that but with a number of drawbacks. The T440 and upcoming T450 series are effectively unusable without palm detection.

http://wayland.freedesktop.org/libinput/doc/latest/palm_detection.html

synaptics works, but only by accident, only on some touchpads and only given a couple of specific conditions. first - I honestly don't know what happens when you have horizontal edge scrolling and software buttons enabled. It may work, it may not, if it does work it's purely coincidental. second, synaptics doesn't have palm detection, the closest thing to it is "disable while typing" which is an external process to switch the touchpad off, based on timeout. That approach isn't possible in Wayland btw due to the better separation between clients, syndaemon is essentially a key logger.

"synaptics works" is very much a YMMV depending on the hardware and use-cases.

Until we find some predictable way to deal with edge scrolling, palm detection and software buttons, it won't be available on those devices. It's available where we can make it work though, e.g. it even works on a touch-enabled Wacom tablet. 

but tbh what we're aiming for is making 2 finger scroll good and reliable enough that you won't want edge scrolling anymore :)
Comment 4 Kevin Fenzi 2015-03-05 02:18:18 UTC
Alright. I'll try and learn to love the 2 finger scroll. ;)
Comment 5 Peter Hutterer 2015-03-06 01:27:22 UTC
renaming title to be a bit less ambiguos. And I'm closing this bug as WONTFIX for now, comment #3 outlines the reasons why we don't provide edge scrolling on all touchpads.

Please don't comment with "I need edge scrolling" or "please reconsider" or something along those lines, CC yourself instead. We'll need real solutions to the problems outlined above, until we have them edge scrolling will remain a limited feature.
Comment 7 Peter Hutterer 2015-07-09 02:49:12 UTC
commit abff4a1c24830931f1cbd5e54d5b1a4621eab863
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jul 3 14:33:41 2015 +1000

    touchpad: allow edge scrolling on clickpads


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.