Bug 96315 - Decreased touchpad sensitivity area
Summary: Decreased touchpad sensitivity area
Status: RESOLVED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: libinput (show other bugs)
Version: 1.2.x
Hardware: All Linux (All)
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-06-01 18:14 UTC by cooks.go.hungry
Modified: 2017-01-06 04:48 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
xinput_list-props_Touchpad_Information.txt (1.26 KB, text/plain)
2016-06-02 18:00 UTC, cooks.go.hungry
Details
scroll.evemu (95.24 KB, text/plain)
2016-06-02 18:00 UTC, cooks.go.hungry
Details

Description cooks.go.hungry 2016-06-01 18:14:45 UTC
Since installing the xserver-xorg-input-libinput package even though it fixed my other problems, I have found that the touch sensitivity area is much smaller than previously on the outside of my touchpad if I drag my finger the cursor does not move, same with this person: https://bugs.launchpad.net/ubuntu-gnome/+bug/1586657/comments/8

I am running Ubuntu GNOME 16.04 with GNOME 3.20.

I initially reported this issue here but thought I should also do so upstream: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-libinput/+bug/1586683
Comment 1 Peter Hutterer 2016-06-02 06:14:23 UTC
Please look at https://wayland.freedesktop.org/libinput/doc/latest/reporting_bugs.html and provide the info listed there, thanks.
Comment 2 cooks.go.hungry 2016-06-02 17:59:21 UTC
The version number of libinput10 is 1.2.3-1ubuntu1, and the version number of xserver-xorg-input-libinput is 0.18.0-1. And I will attach the evemu-record output and the 'xinput list-props' output. Here is the contents of the "/sys/class/dmi/id/modalias" file:

dmi:bvnLENOVO:bvrH5ET69WW(1.12):bd11/15/2012:svnLENOVO:pn62742SG:pvrLenovoB590:rvnLENOVO:rn62742SG:rvrWin8ProDPKIPG:cvnLENOVO:ct10:cvrNotAvailable:

And I have a Lenovo B590 laptop. I am not absolutely certain of the dimensions of my touchpad, but I have used my huge meter long ruler which also deals in mm to try to establish this, so as far as I can tell it's:

length: 94mm
width: 57mm
Comment 3 cooks.go.hungry 2016-06-02 18:00:08 UTC
Created attachment 124278 [details]
xinput_list-props_Touchpad_Information.txt
Comment 4 cooks.go.hungry 2016-06-02 18:00:45 UTC
Created attachment 124279 [details]
scroll.evemu
Comment 5 Peter Hutterer 2016-06-03 01:06:39 UTC
replay of the event shows that the finger is detected as palm at the edge. 
run the touchpad-edge-detector tool please. The axis ranges look out of whack which would make the edge zones larger than they are designed to be.

https://wayland.freedesktop.org/libinput/doc/latest/palm_detection.html
Comment 6 cooks.go.hungry 2016-06-03 15:37:06 UTC
OK, I ran that tool, here is the output:

Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event5
Move one finger around the touchpad to detect the actual edges
Kernel says:	x [1184..5760], y [1022..4828]
Touchpad sends:	x [1270..5659], y [1114..4764] -

Touchpad size as listed by the kernel: 88x54mm
Calculate resolution as:
	x axis: 4576/<width in mm>
	y axis: 3806/<height in mm>

Suggested udev rule:
# <Laptop model description goes here>
evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnLENOVO:bvrH5ET69WW(1.12):bd11/15/2012:svnLENOVO:pn62742SG:pvrLenovoB590:rvnLENOVO:rn62742SG:rvrWin8ProDPKIPG:cvnLENOVO:ct10:cvrNotAvailable:*
 EVDEV_ABS_00=1270:5659:<x resolution>
 EVDEV_ABS_01=1114:4764:<y resolution>
 EVDEV_ABS_35=1270:5659:<x resolution>
 EVDEV_ABS_36=1114:4764:<y resolution>
Comment 7 Peter Hutterer 2016-06-05 22:52:47 UTC
(In reply to cooks.go.hungry from comment #6)
> OK, I ran that tool, here is the output:
> 
> Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event5
> Move one finger around the touchpad to detect the actual edges
> Kernel says:	x [1184..5760], y [1022..4828]
> Touchpad sends:	x [1270..5659], y [1114..4764] -

wow, that is quite unusual. The touchpad's range is actually smaller than the range it announces, usually it's the other way round.

Find the file 60-evdev.hwdb on your system and follow the instructions at the top to save this hunk as local hwdb entry. Then restart and check if the behaviour improves. If the hwdb entry applies correctly, evemu-describe should show the new axis ranges.

evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*pvrLenovoB590*
 EVDEV_ABS_00=1270:5659:49
 EVDEV_ABS_01=1114:4764:67
 EVDEV_ABS_35=1270:5659:49
 EVDEV_ABS_36=1114:4764:67
Comment 8 cooks.go.hungry 2016-06-10 22:49:12 UTC
So just to be clear, do I just need to create a local entry with the same configuration and basically the same contents as the global file (I assume that's what it is)?
Comment 9 Peter Hutterer 2016-06-12 23:49:21 UTC
nope, the new file just needs to include the bit from comment 7, but the 60-evdev.hwdb file has a long comment with how to save, update, restart, etc. everything so it actually applies :)
Comment 10 cooks.go.hungry 2016-06-19 13:42:21 UTC
Right, sorry for the delay, I have done as you and the file said but it makes no difference. I assume that a restart of the system is not required for these changes to take effect?
Comment 11 Peter Hutterer 2016-06-19 21:44:37 UTC
you do need to restart, or at least run sudo udevadm trigger /dev/input/eventX. I usually recommend to run sudo udevadm test /dev/input/eventX, make sure the new properties appear in the output and then restart. eventX is your device's event node.
Comment 12 cooks.go.hungry 2016-06-19 22:01:58 UTC
I already ran all those commands as it was instructed in the file, but still no difference. I have even now restarted my entire machine, but still no difference.
Comment 13 Peter Hutterer 2016-06-20 00:22:53 UTC
do the EVDEV_ABS_00 etc properties show up in the udevadm info /sys/class/input/eventX output? if not, the match string is incorrect and we need to figure out what isn't correct here. If they show up, evemu-describe should show the new axis ranges/resolutions
Comment 14 cooks.go.hungry 2016-06-23 19:16:16 UTC
When running that command, no, they do not show up in the output.
Comment 15 Peter Hutterer 2016-06-24 00:16:08 UTC
please describe exactly what you did and attach the file you're using so we can figure out what's wrong. the file must be named with a .hwdb suffix and you need to follow the instructions at the top of 60-evdev.hwdb to rebuild the database, and trigger the rules.
Comment 16 cooks.go.hungry 2016-06-25 10:31:58 UTC
Well, that was strange, after a restart of my machine they do show up in the output of that command...
Comment 17 Peter Hutterer 2016-07-18 01:30:10 UTC
so, what's the status of this bug now. with the hwdb entry above applied it works well?
Comment 18 cooks.go.hungry 2016-07-18 17:38:51 UTC
No, it works exactly as it did without them applied.
Comment 19 Peter Hutterer 2016-07-21 00:55:13 UTC
ok, so recap: your touchpad's range is smaller than announced, with the udev rule in place the touchpad-edge-detector should match the input data (make sure you move the finger around the whole touchpad area)

I've pointed out palm detection in comment 5, but that's usually interfering when the touchpad ranges are larger than the kernel announces. In your case the zones should be set up mostly correctly.

So what areas or movement on your touchpads don't work? The comment you linked to is an intended behaviour, if a touch starts inside the palm zone and moves slowly vertically then this is the same behaviour we see from a palm touch and hence we discard it. There is no good way to detect palms otherwise (especially on touchpad like yours).
Comment 20 cooks.go.hungry 2016-07-21 18:11:06 UTC
Basically if I place my finger at the edge of my touchpad or in one of the corners no matter where I move my finger, as long as it does not leave the touchpad, there is no movement of the cursor.

This also means that I am unable to use the edges of my touchpad to scroll.

Neither of these issues were present before I installed this package. And even if I use my little finger (so it can't possibly think it's my palm), it doesn't work, even if not right on the edge of my touchpad, where one would normally try to scroll that is.
Comment 21 Peter Hutterer 2016-07-22 00:42:05 UTC
(In reply to cooks.go.hungry from comment #20)
> Basically if I place my finger at the edge of my touchpad or in one of the
> corners no matter where I move my finger, as long as it does not leave the
> touchpad, there is no movement of the cursor.

this is intended, see the link regarding palm detection above

> This also means that I am unable to use the edges of my touchpad to scroll.

do you have edge scrolling enabled? your xinput list-props output above shows you have 2-finger scrolling enabled, not edge scrolling.

run this command to enable it temporarily:
 xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Scroll Method Enabled" 0 1 0
if that does the job either write an xorg.conf snippet or get your DE to enable it for you (eg. GNOME has a toggle for it)

> Neither of these issues were present before I installed this package. And
> even if I use my little finger (so it can't possibly think it's my palm) [..]

you're vastly overestimating the capabilities on your touchpad, sorry. it can't even track two fingers properly (it's of the semi-mt class) and pressure information is notoriously unreliable - that's why we don't use it for palm detection.

anyway, afaict the problem here is that edge scrolling isn't enabled.
Comment 22 cooks.go.hungry 2016-07-22 08:36:27 UTC
The "edge-scrolling-enabled" option in gsettings was enabled, though the "scroll-method" was set to "two-finger-scrolling". But even now that I have set it to "edge-scrolling" it does not seem to make any difference, two-finger scrolling is the only scrolling that will work, the other does not and everything behaves as previously described.
Comment 23 Peter Hutterer 2016-08-02 04:01:51 UTC
Ok, you're probably running into https://bugzilla.gnome.org/show_bug.cgi?id=769276

try the xinput command above and test, if it works then the gnome bug is the only remaining issue.
Comment 24 cooks.go.hungry 2016-08-02 09:48:16 UTC
Well, I've set 'edge-scrolling' as my scrolling method in dconf but still that doesn't work and only two-finger-scrolling seems to. Here is the "xinput list-props 11" output:

Device 'SynPS/2 Synaptics TouchPad':
	Device Enabled (138):	1
	Coordinate Transformation Matrix (140):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Tapping Enabled (274):	0
	libinput Tapping Enabled Default (275):	0
	libinput Tapping Drag Enabled (276):	1
	libinput Tapping Drag Enabled Default (277):	1
	libinput Tapping Drag Lock Enabled (278):	0
	libinput Tapping Drag Lock Enabled Default (279):	0
	libinput Accel Speed (280):	-0.750000
	libinput Accel Speed Default (281):	0.000000
	libinput Natural Scrolling Enabled (282):	0
	libinput Natural Scrolling Enabled Default (283):	0
	libinput Send Events Modes Available (258):	1, 1
	libinput Send Events Mode Enabled (259):	0, 0
	libinput Send Events Mode Enabled Default (260):	0, 0
	libinput Left Handed Enabled (284):	0
	libinput Left Handed Enabled Default (285):	0
	libinput Scroll Methods Available (286):	1, 1, 0
	libinput Scroll Method Enabled (287):	1, 0, 0
	libinput Scroll Method Enabled Default (288):	1, 0, 0
	libinput Disable While Typing Enabled (289):	0
	libinput Disable While Typing Enabled Default (290):	1
	Device Node (261):	"/dev/input/event5"
	Device Product ID (262):	2, 7
	libinput Drag Lock Buttons (291):	<no items>
	libinput Horizonal Scroll Enabled (263):	1

That bug wasn't entirely clear on one thing (at least to me), is this an issue when two-finger-scrolling is available, or only when it is also set?
Comment 25 Peter Hutterer 2016-08-03 07:00:04 UTC
again, please try the xinput command, not dconf, gsettings or anything else gnome related. your output still shows 2fg scrolling enabled.

(In reply to cooks.go.hungry from comment #24)
> That bug wasn't entirely clear on one thing (at least to me), is this an
> issue when two-finger-scrolling is available, or only when it is also set?

when 2fg scrolling is enabled the edge zones are used for palm detection. when edge scrolling is enabled, the right edge zone works as scrolling area and palm detection is disabled in that area.
Comment 26 cooks.go.hungry 2016-08-03 09:52:19 UTC
Sorry, maybe I misunderstood, how exactly do I set it using xinput?
Comment 27 Peter Hutterer 2016-08-03 10:19:26 UTC
 xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Scroll Method Enabled" 0 1 0
Comment 28 Peter Hutterer 2016-08-30 06:45:52 UTC
ping?
Comment 29 cooks.go.hungry 2016-09-02 16:18:32 UTC
Right, sorry, I thought I had replied but apparently not... To reply, no, it didn't make any difference. Unless that's not what you were asking me?
Comment 30 cooks.go.hungry 2016-09-02 16:22:44 UTC
Actually, saying it didn't do anything is not entirely true (though I did not realise this when I posted he above comment), there is one thing which it managed to do. And that is to disable two-finger scrolling which is what I had enabled before, so now I can't scroll at all with my touchpad.
Comment 31 Peter Hutterer 2016-09-06 06:50:55 UTC
I'm getting lost here because we have three bugs here. First: the axis ranges are out which is what the hwdb entry in comment #7 is supposed to address. Judging by comment #16 that one applies locally.

Please verify that the ranges are correct by re-running the touchpad-edge-detector and trying to reach all edges of the touchpad. The events should be within a couple of units of the announced ranges.

Second: the palm detection area - that one is intended, but only for 2fg scrolling. When edge scrolling is enabled the right edge should work just fine. Edge scrolling can be enabled with the command in comment #27.

Please verify that when edge scrolling is enabled, the right edge works as expected for scrolling.

Third: gnome's edge-scroll setting doesn't work. For this bug we'll have to ignore this, we can't fix that from within libinput.
Comment 32 Peter Hutterer 2016-11-01 04:06:30 UTC
ping?
Comment 33 cooks.go.hungry 2016-11-03 21:38:04 UTC
Sorry for keeping you waiting, I've been very busy. I will reply on this matter within the next couple of days if not tomorrow.
Comment 34 cooks.go.hungry 2016-11-22 15:53:53 UTC
(In reply to Peter Hutterer from comment #31)
> I'm getting lost here because we have three bugs here. First: the axis
> ranges are out which is what the hwdb entry in comment #7 is supposed to
> address. Judging by comment #16 that one applies locally.
> 
> Please verify that the ranges are correct by re-running the
> touchpad-edge-detector and trying to reach all edges of the touchpad. The
> events should be within a couple of units of the announced ranges.

I ran the command again and this was the output: 

Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event5
Move one finger around the touchpad to detect the actual edges
Kernel says:	x [1270..5659], y [1114..4764]
Touchpad sends:	x [1243..5759], y [1130..4832] \
^C

Touchpad size as listed by the kernel: 89x54mm
Calculate resolution as:
	x axis: 4389/<width in mm>
	y axis: 3650/<height in mm>

Suggested udev rule:
# <Laptop model description goes here>
evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnLENOVO:bvrH5ET69WW(1.12):bd11/15/2012:svnLENOVO:pn62742SG:pvrLenovoB590:rvnLENOVO:rn62742SG:rvrWin8ProDPKIPG:cvnLENOVO:ct10:cvrNotAvailable:*
 EVDEV_ABS_00=1243:5759:<x resolution>
 EVDEV_ABS_01=1130:4832:<y resolution>
 EVDEV_ABS_35=1243:5759:<x resolution>
 EVDEV_ABS_36=1130:4832:<y resolution>

> Second: the palm detection area - that one is intended, but only for 2fg
> scrolling. When edge scrolling is enabled the right edge should work just
> fine. Edge scrolling can be enabled with the command in comment #27.
> 
> Please verify that when edge scrolling is enabled, the right edge works as
> expected for scrolling.
If when I run the command which should enable edge scrolling, it doesn't get enabled. Although 2fg scrolling stops working, no way of scrolling is enabled. Now I can't scroll at all.

> Third: gnome's edge-scroll setting doesn't work. For this bug we'll have to
> ignore this, we can't fix that from within libinput.

This might not be the case as your command wasn't working either.

Also, sorry for keeping you waiting so long, I've been very busy.
Comment 35 cooks.go.hungry 2016-11-22 15:57:22 UTC
I should also just add that dconf does not register that the command has been executed.

What I mean by the that is I looked in the settings and edge scrolling is not enabled there, though enabling it there also does nothing.
Comment 36 Peter Hutterer 2016-11-25 02:40:51 UTC
gsettings and the xinput command are two different beasts, gsettings doesn't notice things directly done with xinput. After running the command, what's the value of the property?

and I need you to run the edge-detector and make sure you hit every edge properly, including the corners. The first file I gave you is still out because in comment 34 you have different value. Please run your finger around the touchpad's edges a few times to make sure we get the correct min/max values.
Comment 37 Peter Hutterer 2017-01-04 07:26:21 UTC
ping?
Comment 38 cooks.go.hungry 2017-01-04 11:13:04 UTC
Right, sorry for not getting back sooner. I was quite sure that the last output I gave you in comment 34 was the right one. At least I tried for quite some time to get all my fingers round all of the touchpad so it should be correct. I can try again, if you want?
Comment 39 Peter Hutterer 2017-01-06 04:48:17 UTC
https://github.com/systemd/systemd/pull/5031

I *think* this should fix the issue now, so I'm closing this bug. If there's another issue left after this was properly applied etc, please open a new bug because I can't keep my attention across 38 comments without having some summary feature that bugzilla doesn't have, sorry :)


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.