xf86-input-synaptics:synaptics-1.7-branch: 13 commit(s)

Peter Hutterer whot at kemper.freedesktop.org
Wed Apr 30 21:18:30 PDT 2014


Reporting from xf86-input-synaptics: xf86-input-synaptics driver

Please visit:
    http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics
Or get your own copy by using:
    git-clone git://anongit.freedesktop.org/xorg/driver/xf86-input-synaptics

13 commits against synaptics-1.7-branch at 8577f7dc...:
 conf/50-synaptics.conf         |    9 -
 include/synaptics-properties.h |    3 
 man/synaptics.man              |   58 +++++++++-
 src/eventcomm.c                |   19 +++
 src/properties.c               |   51 +++++++--
 src/synaptics.c                |  222 ++++++++++++++++++++++++++++++-----------
 src/synapticsstr.h             |   24 ++++
 7 files changed, 301 insertions(+), 85 deletions(-)


commit fa54c5b8fcf75531b2d6c6bb6879b3414e5c7792
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Tue Apr 22 18:58:11 2014 +0200

    Add support for INPUT_PROP_TOPBUTTONPAD
    
    Add a HasSecondaryButtons boolean config option which defaults to true for
    devices with the INPUT_PROP_TOPBUTTONPAD and false for all other devices.
    
    Only parse the SecondarySoftButtonAreas when this option is true, effectively
    disabling the top buttons when it is false. Likewise, only initialize the
    SecondarySoftButtonAreas property if we enable support for it.
    
    This means that it is now safe to always set a SecondarySoftButtonAreas
    default in 50-synaptics.conf, and that he section which was intended for
    use with future pnp-id matching can be dropped, as that is now all handled
    in the kernel.
    
    While at also remove the comment about disabling the bottom edge area, as that
    is now done automatically.
    
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Hans de Goede <hdegoede at redhat.com>
    (cherry picked from commit 7bf27568417691e772e715f8fc6c30ea7ec892d6)
    
    Conflicts:
    	src/eventcomm.c

diffstat:
    conf/50-synaptics.conf |    9 ++++-----
    man/synaptics.man      |   29 +++++++++++++++++++++++------
    src/eventcomm.c        |    8 ++++++++
    src/properties.c       |    3 +++
    src/synaptics.c        |    7 ++++++-
    src/synapticsstr.h     |    1 +
    6 files changed, 45 insertions(+), 12 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit 11b2814c17c17cc43cf1b22f56998b100e59cf04
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Mon Mar 17 14:55:37 2014 +1000

    If the touchpad is in TOUCHPAD_OFF mode, allow physical clicks
    
    Enabling clicks in off mode also allows for the new Lenovo *40 series to use
    the top software buttons while the touchpad is disabled. This benefits those
    that usually disable touchpads altogether but still need the buttons for the
    trackstick.
    
    This changes existing behaviour, but TouchpadOff was always intended to stop
    erroneous events while typing. Physical button presses are hard to trigger
    accidentally. On the touchpads that TouchpadOff concept was originally
    designed for the buttons are nowhere near the keyboard and are physically
    separated from the touchpad anyway. On Clickpads, triggering a physical
    click requires more force than accidentally touching the surface.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=76156
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Hans de Goede <hdegoede at redhat.com>
    (cherry picked from commit dc5474964d4ec73b5c324961026e1037bb344946)

diffstat:
    man/synaptics.man |    7 ++++++-
    src/synaptics.c   |   17 +++++++----------
    2 files changed, 13 insertions(+), 11 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit ed84731b72692c648b48d00b84bb680446e265b6
Author: Stephen Chandler Paul <thatslyude at gmail.com>
Date:   Mon Mar 10 18:33:20 2014 -0400

    Don't allow any type of movement starting in the top softbutton area
    
    Clicking in the top soft button area causes the trackpad to begin
    registering motion, even if the finger never leaves the top soft button
    area. We don't want this kind of behavior for the top soft button area,
    since it makes clicking and dragging items much more difficult when
    using a pointing stick.
    
    Signed-off-by: Stephen Chandler Paul <thatslyude at gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit b40a5255fe73f7f95c8ff7145dd91605f3430119)

diffstat:
    src/synaptics.c |    3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit 8732f7b5c16aaba1df4b2429804d02c2742bdf59
Author: Stephen Chandler Paul <thatslyude at gmail.com>
Date:   Mon Mar 10 18:25:20 2014 -0400

    Replace is_inside_anybutton_area with current_button_area
    
    Signed-off-by: Stephen Chandler Paul <thatslyude at gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 9a419ba01c53a38b4b601f4415801fca29a2b4e2)

diffstat:
    src/synaptics.c    |   27 ++++++++++++++++-----------
    src/synapticsstr.h |    3 ++-
    2 files changed, 18 insertions(+), 12 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit 1e08fbf8a71b5958ac1765c889b5101e62fad20f
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Mon Mar 10 09:07:59 2014 +1000

    Add property support for secondary (top) software buttons
    
    This was originally intended as a fixed xorg.conf option only (and still
    largely is seen as such). Secondary software button are required only on a specific series
    of touchpads and should be pre-configured by the system and/or the
    distribution. As such, the property will not be initialized if it is not set
    in the xorg.conf and will thus not respond to runtime changes.
    
    Exposing the property in this way gives clients a chance of detecting if a top
    software button area is present and thus adjust their behaviour accordingly.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Hans de Goede <hdegoede at redhat.com>
    (cherry picked from commit 66240dc329683f0141c1e11590ea2c3d8ca25788)

diffstat:
    include/synaptics-properties.h |    3 ++
    man/synaptics.man              |    3 +-
    src/properties.c               |   48 +++++++++++++++++++++++++++++--------
    src/synaptics.c                |   16 ------------
    src/synapticsstr.h             |   16 ++++++++++++
    5 files changed, 59 insertions(+), 27 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit eb3af31c597ed6dc1bef31f39a5f6c9d586713ae
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Feb 21 10:31:44 2014 +0100

    Wait for *new* coordinates on a clickpad click before reporting the click
    
    It is possible for a click to get reported before any related touch events
    get reported, here is the relevant part of an evemu-record session on a T440s:
    
    E: 3.985585 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
    E: 3.997419 0003 0039 -001	# EV_ABS / ABS_MT_TRACKING_ID   -1
    E: 3.997419 0001 014a 0000	# EV_KEY / BTN_TOUCH            0
    E: 3.997419 0003 0018 0000	# EV_ABS / ABS_PRESSURE         0
    E: 3.997419 0001 0145 0000	# EV_KEY / BTN_TOOL_FINGER      0
    E: 3.997419 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
    E: 5.117881 0001 0110 0001	# EV_KEY / BTN_LEFT             1
    E: 5.117881 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
    E: 5.133422 0003 0039 0187	# EV_ABS / ABS_MT_TRACKING_ID   187
    E: 5.133422 0003 0035 3098	# EV_ABS / ABS_MT_POSITION_X    3098
    E: 5.133422 0003 0036 3282	# EV_ABS / ABS_MT_POSITION_Y    3282
    E: 5.133422 0003 003a 0046	# EV_ABS / ABS_MT_PRESSURE      46
    E: 5.133422 0001 014a 0001	# EV_KEY / BTN_TOUCH            1
    E: 5.133422 0003 0000 3102	# EV_ABS / ABS_X                3102
    E: 5.133422 0003 0001 3282	# EV_ABS / ABS_Y                3282
    E: 5.133422 0003 0018 0046	# EV_ABS / ABS_PRESSURE         46
    E: 5.133422 0001 0145 0001	# EV_KEY / BTN_TOOL_FINGER      1
    E: 5.133422 0000 0000 0000	# ------------ SYN_REPORT (0) ----------
    
    Notice the BTN_LEFT event all by itself!
    
    If this happens, it may lead to the following problem scenario:
    -touch the touchpad in its right click area
    -let go of the touchpad
    -rapidly click in the middle area, so that BTN_LEFT gets reported before the
     new coordinates (such as seen in the trace above, this may require some
     practicing with evemu-record to reproduce)
    -the driver registers the click as a right click because it uses the
     old coordinates from the cumulative coordinates to determine the
     click location
    
    This commit fixes this by:
    1) Resetting the cumulative coordinates not only when no button is pressed,
       but also when there is no finger touching the touchpad, so that when
       we do get a touch the cumulative coordinates start at the right place
    2) Delaying processing the BTN_LEFT down transition if there is no finger
       touching the touchpad
    
    This approach has one downside, if we wrongly identify a touchpad as
    a clickpad, then the left button won't work unless the user touches the
    touchpad while clicking the left button.
    
    If we want we can fix this by doing something like this:
    1) Making update_hw_button_state return a delay; and
    2) Tracking that we've delayed BTN_LEFT down transition processing; and
    3) When we've delayed BTN_LEFT down transition return a small delay value; and
    4) If when we're called again we still don't have a finger down, just
       treat the click as a BTN_LEFT
    
    But this is not worth the trouble IMHO, the proper thing to do in this
    scenario is to fix the mis-identification of the touchpad as a clickpad.
    
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit bbe4c56c4998a90b478581a4d93717251d8e05be)

diffstat:
    src/eventcomm.c |    5 +++--
    src/synaptics.c |    7 +++++++
    2 files changed, 10 insertions(+), 2 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit ad834529c3fb63ced0ed74efb6c382d1761467c8
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Feb 21 10:31:43 2014 +0100

    On button down update cumulative to current x and y, instead of previous
    
    When a button click and new coordinates get reported in one go we sync the
    cumulative coordinates to the old x and y, rather then the newly reported ones.
    
    This keeping of the old coordinates causes the following issue:
    -touch the touchpad in its right click area
    -let go of the touchpad
    -rapidly click in the left click area (or middle area), so that the
     new location and the click get reported in one syn (may require some
     practicing with evemu-record to reproduce)
    -the driver registers the click as a right click because it uses the
     old coordinates from the cumulative coordinates to determine the
     click location
    
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 743c45b9cfd057d00c37dab1cfca4b6202fb2642)

diffstat:
    src/eventcomm.c |    6 ++++++
    1 file changed, 6 insertions(+)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit db920ba696d7870b1b074ae2daff1e93a7296b99
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Feb 21 10:31:42 2014 +0100

    Ignore motion the first X ms after a clickpad click
    
    This fixes my #1 anoyance with clickpads, where 2 out of 3 clicks turn into
    a click + drag unless I hold my finger really really still.
    
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    
    Replaced property with a hardcoded 100ms. This is not something that we should
    expose as property, we should find a delay that works best and live with it.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 71652fe1f0800b081ba5602e9edda22a8d8d628e)

diffstat:
    src/synaptics.c    |   12 ++++++++++++
    src/synapticsstr.h |    2 ++
    2 files changed, 14 insertions(+)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit 6d6bfcbf8763d967b8f3805cfe035324aba53e77
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Feb 21 10:31:41 2014 +0100

    Don't report motion inside soft-button areas
    
    Unless the motion has started outside the soft-button area.
    
    Note that we must start reporting motions regardless of whether we think we're
    in the button area or not as soon as we've switched to using cumulative
    coordinates, since then the coordinates are no longer absolute.
    
    This fixes the reporting of unintended motion just before a click in a soft
    button area which sometimes causes mis-clicks.
    
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 3adaf4623845dce54129b6474f4f8f2966f9bc47)
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    
    Conflicts:
    	src/synaptics.c

diffstat:
    src/synaptics.c    |   66 ++++++++++++++++++++++++++++++++++++++++++++++++-
    src/synapticsstr.h |    1 
    2 files changed, 66 insertions(+), 1 deletion(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit f712eb7c41436c3f84a0d244be879c5c118788c5
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Feb 21 10:31:40 2014 +0100

    Get rid of old_hw_state
    
    We only use it to store button state which we already have in
    priv->lastButtons.
    
    While at it also properly indent the code block checking the various
    soft button areas.
    
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit effeee86c1c286cd09ab750efc4932790dd560dd)

diffstat:
    src/synaptics.c    |   58 +++++++++++++++++++------------------------------
    src/synapticsstr.h |    1 
    2 files changed, 23 insertions(+), 36 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit 59bb2aaaac728bfbf92600314782ff2db506c91e
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Feb 21 10:31:39 2014 +0100

    Add an enum for the different soft_button_areas
    
    While at it also move the enum for the soft button edges out of
    is_inside_button_area() so that it can be used elsewhere too.
    
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 840670508e0150ae11ae744c676253c7fba332dc)

diffstat:
    src/synaptics.c |   35 ++++++++++++++++++++++-------------
    1 file changed, 22 insertions(+), 13 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit 13fc982c670e992060fd33a116fbc6eb32cdba25
Author: Benjamin Tissoires <benjamin.tissoires at redhat.com>
Date:   Thu Feb 20 13:13:18 2014 -0500

    Add secondary (top) software buttons area
    
    New generation of laptops with trackstick do not have physical buttons
    associated with the trackstick, but instead rely on software buttons at
    the top of the clickpad.
    Adding a secondary software button area for this purpose.
    As we're likely detecting the devices that need it based on udev tags
    and MatchTag configuration items, this area doesn't need to be exposed
    through properties. So static configuration is fine.
    
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires at redhat.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    
    [couple of man-page additions and rewrites]
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 402cc872570b58b8420e7973d0706f3b2a2aaf91)

diffstat:
    man/synaptics.man  |   18 ++++++++++++++++++
    src/synaptics.c    |   47 ++++++++++++++++++++++++++++++++++++++++-------
    src/synapticsstr.h |    2 +-
    3 files changed, 59 insertions(+), 8 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8


commit 75b6fd13cfc0e8c8b1ca17626b5316a83359e353
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Wed Feb 19 18:30:35 2014 +0100

    Allow using the entire touchpad for motions started inside the active area
    
    synaptics offers an option to make parts of the touchpad insensitive. This
    is ie useful to do palm avoidance rather then palm detection (which may be
    unreliable) by disabling an area of 15% on the right and left side of the
    touchpad.
    
    Currently a motion which has started inside the active area, stops as soon
    as it moves outside of the active area.
    
    If a motion started inside the active area and thus has already generated some
    move events, this makes no sense. If the user moves outside of the active
    area in this case, this is very likely because the user wants to continue
    the motion.
    
    This commit allows such motions to continue normally.
    
    I would like to thank Juerd Waalboer for the basic idea, some coding and lots
    of testing for this fix.
    
    Cc: Juerd Waalboer <juerd at tnx.nl>
    Reported-by: Juerd Waalboer <juerd at tnx.nl>
    Tested-by: Juerd Waalboer <juerd at tnx.nl>
    Signed-off-by: Hans de Goede <hdegoede at redhat.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 945acfc261707be78cbc5438c22b061e20076004)

diffstat:
    man/synaptics.man |   15 ++++++++-------
    src/synaptics.c   |   11 ++++++-----
    2 files changed, 14 insertions(+), 12 deletions(-)

cgit url:
http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/commit/?id=fa54c5b8




More information about the xorg-commit mailing list