Bug 1026577

Summary: Unexpected touchpad behaviour on Lenovo T440
Product: Red Hat Enterprise Linux 6 Reporter: Vasiliy Sharapov <vsharapo>
Component: xorg-x11-drv-synapticsAssignee: Benjamin Tissoires <btissoir>
Status: CLOSED ERRATA QA Contact: Desktop QE <desktop-qa-list>
Severity: high Docs Contact:
Priority: high    
Version: 6.5CC: btissoir, emcnabb, ftaylor, gcase, jbastian, jsightle, markgerlach.mobile, mclasen, ngalvin, peter.hutterer, sseago, tpelka, vsharapo
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: xorg-x11-drv-synaptics-1.7.5.901-2.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-10-14 04:52:41 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1042514, 1077486, 1093449    
Bug Blocks: 1025049, 1056244, 1083163    
Attachments:
Description Flags
Flat press (single)
none
Flat press (multiple with movements between)
none
Flat press (multiple)
none
Point press (single)
none
Point press (multiple with movements between)
none
Point press (multiple)
none
Xorg log
none
Swipe left to right (from beyond the touchpad to beyond the touchpad in case you need edge info)
none
Swipe top to bottom (from beyond the touchpad to beyond the touchpad in case you need edge info)
none
ctual touchpad presses (4 individual -> 4 with moving between -> 4 individual double)
none
Just touchpad taps (4 individual -> 4 with moving between -> 4 individual double)
none
Vertical down -> vertical up -> horizontal right -> horizontal left none

Description Vasiliy Sharapov 2013-11-05 01:35:49 UTC
Version-Release number of selected component (if applicable):
RHEL6.5-20131024.1

The touchpad on the T440 behaves differently between Win7 and RHEL:
1. In win7 there is a right-click zone in the bottom ~25% of the right half of the touchpad, all single-touch presses in this zone are interpreted as right clicks, all single-touch presses in any other area are interpreted as a left-click. In el6.5 there is no right click zone and two-finger presses are the only way to right-click.
2. Pressing with an enlarging area, such as a fingertip that enlarges into a fingerprint introduces less cursor movement in Win7. This may be some clever trick, because the default sensitivity and acceleration appear to be very similar, except in this one case.

Comment 2 RHEL Program Management 2013-11-10 09:17:44 UTC
This request was not resolved in time for the current release.
Red Hat invites you to ask your support representative to
propose this request, if still desired, for consideration in
the next release of Red Hat Enterprise Linux.

Comment 4 Peter Hutterer 2013-11-26 03:47:15 UTC
Vasiliy: please get evemu from http://people.redhat.com/~phuttere/rpms/evemu/ and record the device with evemu-record. Specifically, make a separate recording of everything you want to work in a specific manner describing what you expect the action to do.

Please also supply an xorg.log.

As for the configuration, drop this into /etc/X11/xorg.conf.d/99-clickpad-softbuttons.conf
Section "InputClass"
        Identifier "Default clickpad buttons"
        MatchDriver "synaptics"
        MatchIsTouchpad "on"
        Option "ClickPad" "on"
        Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
EndSection


It is the default upstream, but it doesn't apply in RHEL because the kernel doesn't provide the property we need to identify clickpads. So you'll have to set the ClickPad option manually. The 50% value is where the right button should start, change it to 0 to have the bottom 18% a right click, and the other 82% as left-click.


As for number 2: if I read this correctly you want the cursor to move slower on higher finger pressure? or what exactly do you mean here?

Comment 5 Peter Hutterer 2013-11-28 01:01:59 UTC
workaround, and this could be a file we ship as quirk for t440s. Drop this into /etc/hal/fdi/policy/ and reboot.

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
        <match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" contains="t440">
                <match key="input.product" contains="Synaptics">
                        <merge key="input.x11_options.ClickPad" type="string">on</merge>
                        <merge key="input.x11_options.SoftButtonAreas" type="string">0 0 82% 0 0 0 0 0</merge>
                </match>
        </match>
  </device>
</deviceinfo>


Check your lshal output for the right system.hardware.product and of course
the touchpad if it really has Synaptics in the name and adjust accordingly.

This assigns the bottom 18% to the right button.

Comment 9 Vasiliy Sharapov 2013-12-04 01:46:56 UTC
(In reply to Peter Hutterer from comment #4)
> Vasiliy: please get evemu from
> http://people.redhat.com/~phuttere/rpms/evemu/ and record the device with
> evemu-record. Specifically, make a separate recording of everything you want
> to work in a specific manner describing what you expect the action to do.
> [...snip...]
> As for number 2: if I read this correctly you want the cursor to move slower
> on higher finger pressure? or what exactly do you mean here?

I was hoping you would have some ideas - reducing the sensitivity when pressure goes above normal would probably work, as long as normal use doesn't trigger it. I suspect this is what is happening in Win7.

I made recordings of single and multiple "instantaneous" presses (no contact -> press -> no contact) and also multiple moving presses (move -> stop -> press -> repeat) in "pointy" and "flat" variants.

Pointy presses (using your fingertip and pressing with an evenly expanding area ( ◦ -> O ) are always fine and precise, just for reference if needed.

Flat presses (using the pad of your finger and pressing with a downward-expanding area ( ° -> O ) are probably more commonly used, but the cursor moves down by a significant amount.

If you want more samples, or more manageable chunks of data I will provide it ASAP. (Didn't realize evemu-record and X were mutually exclusive for a while.)

Comment 10 Vasiliy Sharapov 2013-12-04 01:47:48 UTC
Created attachment 832378 [details]
Flat press (single)

Comment 11 Vasiliy Sharapov 2013-12-04 01:49:58 UTC
Created attachment 832379 [details]
Flat press (multiple with movements between)

Comment 12 Vasiliy Sharapov 2013-12-04 01:49:59 UTC
Created attachment 832380 [details]
Flat press (multiple)

Comment 13 Vasiliy Sharapov 2013-12-04 01:50:00 UTC
Created attachment 832381 [details]
Point press (single)

Comment 14 Vasiliy Sharapov 2013-12-04 01:50:01 UTC
Created attachment 832382 [details]
Point press (multiple with movements between)

Comment 15 Vasiliy Sharapov 2013-12-04 01:50:02 UTC
Created attachment 832383 [details]
Point press (multiple)

Comment 16 Vasiliy Sharapov 2013-12-04 01:50:03 UTC
Created attachment 832384 [details]
Xorg log

Comment 17 Peter Hutterer 2013-12-05 00:02:07 UTC
Created attachment 832900 [details]
Swipe left to right (from beyond the touchpad to beyond the touchpad in case you need edge info)

a set of recordings Vasiliy sent via email

Comment 18 Peter Hutterer 2013-12-05 00:04:03 UTC
Created attachment 832901 [details]
Swipe top to bottom (from beyond the touchpad to beyond the touchpad in case you need edge info)

Comment 19 Peter Hutterer 2013-12-05 00:05:09 UTC
Created attachment 832902 [details]
ctual touchpad presses (4 individual -> 4 with moving between -> 4 individual double)

Comment 20 Peter Hutterer 2013-12-05 00:05:53 UTC
Created attachment 832903 [details]
Just touchpad taps      (4 individual -> 4 with moving between -> 4 individual double)

Comment 21 Peter Hutterer 2013-12-05 00:06:19 UTC
Created attachment 832904 [details]
Vertical down -> vertical up -> horizontal right -> horizontal left

Comment 24 Benjamin Tissoires 2014-02-05 20:10:55 UTC
Update of the work to be done here:
Supporting the upper area as software button for the trackstick showed that we need to tackle it in several places in the synaptics Xorg driver.

upstream tracker bug:
https://bugs.freedesktop.org/show_bug.cgi?id=74544

----------------------------------------------------------
Required to make this work with the current stack:
* synaptics needs to support a second software button area (#74543)
* synaptics needs to switch into a mode where it disables motion events to avoid spurious cursor jumps when touching the touchpad while the trackstick is in use (#73158)
* syndaemon needs to monitor the trackstick and switch the touchpad into that mode (#66658)


Proposed behaviour:
When the touchpad is switched to the "no movement" mode it should stay there until a touchpad event outside of the software button area. Then toggle back to normal touchpad mode.
----------------------------------------------------------

Still, we also need to update the kernel to take into account Synaptics "image sensors" (RHBZ #1042514)

Comment 30 Benjamin Tissoires 2014-04-09 14:16:10 UTC
The bug has been fixed upstream regarding the Xorg part. So granting devel-ack for this bug.
We still need the kernel to be fixed for the customer seeing improvements.

Comment 31 Peter Hutterer 2014-05-05 03:59:51 UTC
MODIFIED

xorg-x11-drv-synaptics-1.7.5.901-2.el6 is available in brew

Comment 34 errata-xmlrpc 2014-10-14 04:52:41 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2014-1376.html