Bug 93846 - scrolling jump and movement threshold
Summary: scrolling jump and movement threshold
Status: RESOLVED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: libinput (show other bugs)
Version: 1.4.0
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 94910
  Show dependency treegraph
 
Reported: 2016-01-25 09:01 UTC by nicmus
Modified: 2016-06-20 00:06 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
evemu-record (39.20 KB, text/plain)
2016-01-25 09:01 UTC, nicmus
Details
record of libinput-debug (1.40 KB, text/plain)
2016-01-28 08:06 UTC, nicmus
Details
scrolling jump (53.51 KB, video/webm)
2016-01-29 06:52 UTC, nicmus
Details
0001-udev-update-the-hwdb-matches-to-avoid-use-of-and.patch (2.78 KB, patch)
2016-04-13 04:40 UTC, Peter Hutterer
Details | Splinter Review

Description nicmus 2016-01-25 09:01:35 UTC
Created attachment 121258 [details]
evemu-record

Hi,

I have some issues with my touchpad with libinput driver (no problem is present wyth synaptics driver). I'm running archlinux and gnome on wayland.

hardware info in evemu-record attached file
 
First problem: small movement are ineffective on the mouse cursor (i.e. no movement at all). or there are but really not smooth. That makes things hard when making fine positioning.

Second problem: Scrolling also requires a huge stroke to be activated (I think this may be due to the first problem to fail to recognize small movements). Moreover, and this is what has the greatest impact on usability, there are many jumps in scrolling mode.

I tried to simulate both problems during the recording of the event. But in my opinion the problem is present elsewhere because movements are recognized correctly by the kernel.

I don't know if it might be useful but here's the output of udevadm test:

---------------------------------
.INPUT_CLASS=mouse
ACTION=add
DEVLINKS=/dev/input/by-path/platform-i8042-serio-4-event-mouse
DEVNAME=/dev/input/event14
DEVPATH=/devices/platform/i8042/serio4/input/input15/event14
ID_INPUT=1
ID_INPUT_TOUCHPAD=1
ID_PATH=platform-i8042-serio-4
ID_PATH_TAG=platform-i8042-serio-4
ID_SERIAL=noserial
LIBINPUT_ATTR_RESOLUTION_HINT=31x31
LIBINPUT_DEVICE_GROUP=11/2/e/0:isa0060/serio4
LIBINPUT_MODEL_ELANTECH_TOUCHPAD=1
MAJOR=13
MINOR=78
SUBSYSTEM=input
USEC_INITIALIZED=15972787
---------------------------------
Comment 1 Peter Hutterer 2016-01-27 05:57:58 UTC
according to this your touchpad is 102x56mm, is this correct?

please run the touchpad-edge-detector tool as well to make sure the range reflects what the device actually sends.
Comment 2 nicmus 2016-01-27 07:28:58 UTC
Yeah the size is ok though there is a little deviation of very few millimetres from my measurement. (touchpad-edge-detector is able to detect the entire resolution)

I further checked the behaviour with synaptics driver and also there I see that small movements lead to no effective moving of the cursor, Now I can better specify what makes my user experience different between the two drivers.
In synaptics the cursor speed depends on the velocity I'm moving the finger on my clickpad. It feels like the resolution is changing along with the finger velocity.
I.e. slow movement allows me fine positioning of the cursor, while fast movements allows the covering of the entire screen. I'm experiencing a flat behaviour instead under libinput. That is, cursor speed does not depends on the finger velocity.
I tried to change acceleration options with xinput according to arch wiki page
"Mouse_acceleration" with no results at all.
Is this property not yet implemented? Or is it software disabled on my specific clickpad?

The second problem is still in place. Scrolling leads to large jump.
Comment 3 Peter Hutterer 2016-01-28 06:12:26 UTC
First: the arch wiki page [1] is out of date, most of this won't work on libinput devices since we moved the acceleration into libinput. You'll need to set the "libinput Accel Speed" property to a value between [-1, 1], where anything > 0 is faster than the default

[1] https://wiki.archlinux.org/index.php/Mouse_acceleration


I looked at your recording, and my calculations say you've moved your scroll motion by 4.5mm. That's not a lot, but libinput-debug-event says libinput is sending about ca 30 small scroll events, with a value of 1.48 pixels each (except two are 3px and one is 0.37px). Can you run libinput-debug-event and match the output with the visual output? maybe the events are lost in the xorg driver or the server?

the finger movement before the scroll recording too shows a movement of less than 1mm. that's a pretty tiny movement, and half of that would be swallowed by the hysteresis of 0.5mm. Having said that, this is extremely fine-grained movement, is this really how you interact with the touchpad?
Comment 4 nicmus 2016-01-28 08:06:15 UTC
Created attachment 121347 [details]
record of libinput-debug
Comment 5 nicmus 2016-01-28 08:12:13 UTC
>>> is this really how you interact with the touchpad?

Actually it is not, although I was trying to manually compensate for the odd settings in gnome. I've made some search and I found out there is no way to influence the mouse/touchpad settings in gnome on wayland up to day. The mouse settings panel only allows adjustment of the cursor speed and I've checked what options were available in gnome-settings-daemon through dconf, but also there I'm not able to find "libinput Accel Speed".
  So for now the solution consists in setting the speed to the minimum to have better control.

>>> Can you run libinput-debug-event and match the output with the visual output?
>>> maybe the events are lost in the xorg driver or the server?

I ran libinput-debug-event filtered on POINTER_AXIS, please find it attached.
It looks fine to me; no jump is to be seen. Nevertheless in the graphical environment, jumps occurs during scrolling. I made at the same time of the libinput-debug-event a screencast for a gtk scrolled window to highlight the jumps, do you want me to attach it here?
Comment 6 Peter Hutterer 2016-01-28 21:40:35 UTC
yes please, it should help illustrate the problem.

recent gnome version have a org.gnome.desktop.peripherals.touchpad speed setting that adjusts the libinput accel speed. That is the only knob available right now (both in gnome and libinput). if you reduce that to the minimum, then you get a slowdown of the motion, in addition to a flat profile. See
http://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html

This makes it virtually impossible for me to debug what's going on, at least for this bug I need you to leave the speed at 0.0 so we talk about the same behaviour. Please do that, then restate the bug and why you had to reduce the speed. We should be able to address that, so reducing the speed becomes a matter of personal preference vs. something to work around broken behaviour.
Comment 7 nicmus 2016-01-29 06:52:47 UTC
Created attachment 121380 [details]
scrolling jump
Comment 8 nicmus 2016-01-29 07:14:25 UTC
I set the touchpad speed to 0.0.

I try to restate the problem in different words. (Sorry this sort of problems are hard to describe).

Well the problem is that I'm not able to properly point a target. I always over/undershoot it.  Let's consider this example.

I -slowly- move the finger from the top of the touchpad to the bottom (no movement on the x-axis). The cursor will move consequently from a point (x1,y1) to (x1,y2). 

Now I repeat the same movement on the touchpad but -faster-. Again the cursor on the screen moves from (x1,y1) to (x1,y2). 

This is not the behaviour I'd expect. 
When I move the finger faster I expect the cursor to reach a point (x1,y3) with y3 > y2. This is exactly what happens in synaptics driver. The range of the cursor movement on the screen depends on the speed I'm moving my finger on the touchpad.
(Note: I restricted the movement on the y axis albeit the problem applies generally)


In the previous comment there is attached a short video of the odd scrolling behaviour.
Comment 9 Peter Hutterer 2016-02-01 05:53:09 UTC
try the hysteresis-removal patch from bug 93503, this should help with the scroll jumps. if that doesn't fix it, please split the bugs into a scroll and a movement bug, it gets too confusing otherwise.

Note that the touchpad motion you describe is expected when you set the acceleration to the minimum - which you had before. This should not happen when you have the touchpad on 0.0 or higher though, the pointer will get accelerated then on faster motion. So do you still see this behaviour now that you've changed the speed?
Comment 10 Paviluf 2016-04-11 22:07:29 UTC
I have the same kind of behavior on my HP Chromekook 14 (Falco) on Fedora 23.
The cursor is "shaking" when I try to make a precise movement.

What infos should I give to help ?
Comment 11 Peter Hutterer 2016-04-12 01:46:47 UTC
The Falco has a Cyapa touchpad that should have the hysteresis applied and thus remove that shaking cursor. Does LIBINPUT_MODEL_CYAPA show in udevadm info /sys/class/input/eventX for your device?
Comment 12 Paviluf 2016-04-12 11:00:33 UTC
Here is the output of "udevadm info /sys/class/input/event8"

P: /devices/pci0000:00/0000:00:15.1/i2c-7/7-0067/input/input8/event8
N: input/event8
S: input/by-path/pci-0000:00:15.1-event-mouse
E: DEVLINKS=/dev/input/by-path/pci-0000:00:15.1-event-mouse
E: DEVNAME=/dev/input/event8
E: DEVPATH=/devices/pci0000:00/0000:00:15.1/i2c-7/7-0067/input/input8/event8
E: ID_INPUT=1
E: ID_INPUT_HEIGHT_MM=64
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_WIDTH_MM=98
E: ID_PATH=pci-0000:00:15.1
E: ID_PATH_TAG=pci-0000_00_15_1
E: ID_SERIAL=noserial
E: LIBINPUT_DEVICE_GROUP=18/0/0/1:i2c-7-0067
E: MAJOR=13
E: MINOR=72
E: SUBSYSTEM=input
E: USEC_INITIALIZED=4692248

As you can see "LIBINPUT_MODEL_CYAPA" is not present. What does this mean ?

I don't know if it's related but the cursor "jump" sometimes too. A little like described here https://bugs.freedesktop.org/show_bug.cgi?id=91695. It's often when I want to make a click with the bottom left touchpad button, sometimes at the moment I touch the button the cursor jump at the bottom left of the sreen.
Comment 13 Peter Hutterer 2016-04-12 22:15:33 UTC
Please file a separate bug for the cursor jump, I'll likely need extra recordings for that one and they are often touchpad-specific.

For this bug: run evemu-describe against the touchpad and attach it here, that has a dmi string that we can then check for
Comment 14 Paviluf 2016-04-12 23:19:57 UTC
(In reply to Peter Hutterer from comment #13)
> Please file a separate bug for the cursor jump, I'll likely need extra
> recordings for that one and they are often touchpad-specific.

Done, see here https://bugs.freedesktop.org/show_bug.cgi?id=94910

> For this bug: run evemu-describe against the touchpad and attach it here,
> that has a dmi string that we can then check for

Here is the pitput of evemu-describe 

http://pastebin.com/T49aLgQs
Comment 15 Peter Hutterer 2016-04-13 04:40:08 UTC
Created attachment 122888 [details] [review]
0001-udev-update-the-hwdb-matches-to-avoid-use-of-and.patch

Try this one, this should apply the tag now and stop the wobbling
Comment 16 Paviluf 2016-04-13 10:32:35 UTC
That don't work :( To be sure that I try correctly this is the file I patched :

/usr/lib/udev/hwdb.d/90-libinput-model-quirks.hwdb

And this is the content of the file :

http://pastebin.com/0cXDwRzE

I rebooted too.
Comment 17 Peter Hutterer 2016-04-14 00:10:47 UTC
did it apply the property to the device? udevadm info /sys/class/input/eventX with your event node. also: you'll need to run sudo udevadm hwdb --update after installing the hwdb file.
Comment 18 Paviluf 2016-04-14 09:39:48 UTC
That work ! I needed to run "sudo udevadm hwdb --update" and reboot. Here is the output of "udevadm info /sys/class/input/event12"

P: /devices/pci0000:00/0000:00:15.1/i2c-7/7-0067/input/input12/event12
N: input/event12
S: input/by-path/pci-0000:00:15.1-event-mouse
E: DEVLINKS=/dev/input/by-path/pci-0000:00:15.1-event-mouse
E: DEVNAME=/dev/input/event12
E: DEVPATH=/devices/pci0000:00/0000:00:15.1/i2c-7/7-0067/input/input12/event12
E: ID_INPUT=1
E: ID_INPUT_HEIGHT_MM=64
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_WIDTH_MM=98
E: ID_PATH=pci-0000:00:15.1
E: ID_PATH_TAG=pci-0000_00_15_1
E: ID_SERIAL=noserial
E: LIBINPUT_DEVICE_GROUP=18/0/0/1:i2c-7-0067
E: LIBINPUT_MODEL_CHROMEBOOK=1
E: LIBINPUT_MODEL_CYAPA=1
E: MAJOR=13
E: MINOR=76
E: SUBSYSTEM=input
E: USEC_INITIALIZED=4616336

However I lost the right click. That's understandable because it's the way chromebook touchpad works but how can I re-enable it ?

Thanks !
Comment 19 Peter Hutterer 2016-04-15 00:37:29 UTC
right-click still works by using a two-finger click, but the chromebooks default to the clickfinger method. If you're using GNOME, run this:

gsettings set org.gnome.desktop.peripherals.touchpad click-method 'areas'

otherwise check man libinput for the xf86-input-libinput driver option to set the click method
Comment 20 Paviluf 2016-04-15 11:58:53 UTC
I'm on Gnome and I first tried that :

/etc/X11/xorg.conf.d/50-cros-touchpad.conf
	Section "InputClass"
	        Identifier "MyTouchpad"
	        MatchIsTouchpad "on"
	        Driver "libinput"
	        Option "ClickMethod" "buttonareas"
	EndSection

But that didn't worked. So I tried the gsettings command and that worked. The right click is back. Thanks !

Just for my knowledge, is Gnome overwrite the xorg setting or I didn't use the right one ?
Comment 21 Paviluf 2016-04-17 13:44:38 UTC
(In reply to Peter Hutterer from comment #19)
> right-click still works by using a two-finger click, but the chromebooks
> default to the clickfinger method. If you're using GNOME, run this:
> 
> gsettings set org.gnome.desktop.peripherals.touchpad click-method 'areas'
> 
> otherwise check man libinput for the xf86-input-libinput driver option to
> set the click method

From what I found it seems that Gnome override xorg.conf.d settings. Is that right ?
Comment 22 Peter Hutterer 2016-04-17 22:58:10 UTC
correct. the xorg.conf.d settings are server-wide, the gnome settings are per session and thus override the xorg.conf settings
Comment 23 Paviluf 2016-04-18 11:30:31 UTC
Ok thank you very much. Do you know when your patch will be merged into libinput and in Fedora ?
Comment 24 Peter Hutterer 2016-04-18 21:18:27 UTC
commit 8ebe33827e52816bdb1da4873c98168a8fcc2ae4
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Apr 13 11:15:56 2016 +1000

    udev: update the hwdb matches to avoid use of ( and )
Comment 25 Paviluf 2016-04-18 22:29:51 UTC
Great, I guess it will be available for libinput 1.2.4.
Thank you again !
Comment 26 Peter Hutterer 2016-06-17 00:50:42 UTC
I lost track, sorry - what's the remaining problem of this bug now?
Comment 27 Paviluf 2016-06-17 11:20:22 UTC
No more problem here for me. Thanks !
Comment 28 Peter Hutterer 2016-06-20 00:06:50 UTC
ok, closing. thanks!


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.