1. 30 Oct, 2017 3 commits
  2. 05 Sep, 2017 1 commit
  3. 04 Sep, 2017 1 commit
  4. 01 Sep, 2017 2 commits
  5. 11 Jul, 2017 2 commits
  6. 09 Jul, 2017 1 commit
  7. 03 Jul, 2017 1 commit
    • Peter Hutterer's avatar
      touchpad: add pressure-base palm detection · 25d54b90
      Peter Hutterer authored
      If a touch goes past the fixed pressure threshold it is labelled as a palm and
      stays a palm. Default value is one that works well here on a T440 and is
      virtually impossible to trigger by a normal finger or thumb. A udev property
      is exposed so we can handle this in the udev hwdb and the new tool introduce a
      few commits ago can help finding the palm detection threshold.
      
      Unlike the other palm detection features, once a palm goes past the threshold
      it remains a palm until the touch is released. This means palm overrides any
      other palm detection features. For code simplicity, we don't combine the
      states but merely check for pressure before and after the other palm detection
      functions. If the pressure triggers, it will trigger before anything else. And
      if something else is already active (e.g. edge where the pressure doesn't work
      well) it will trigger as soon as the palm is released.
      
      The palm threshold should thus be chosen with some room to spare between the
      highest finger pressure.
      
      https://bugs.freedesktop.org/show_bug.cgi?id=94236Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      25d54b90
  8. 21 Jun, 2017 1 commit
  9. 17 May, 2017 1 commit
  10. 28 Apr, 2017 1 commit
  11. 26 Apr, 2017 1 commit
  12. 21 Apr, 2017 1 commit
  13. 30 Jan, 2017 2 commits
    • Peter Hutterer's avatar
      evdev: improve type-safety on dispatch switches · 60de087e
      Peter Hutterer authored
      Set the dispatch type on creation, then check that whenever we try to get the
      dispatch struct. This avoids a potential mismatch between the backends.
      
      Plus, use of container_of means we're not dependent on the exact layout
      anymore.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      60de087e
    • Peter Hutterer's avatar
      touchpad: use pressure values for touch is-down decision · 568d527c
      Peter Hutterer authored
      Don't rely on BTN_TOUCH for "finger down", the value for that is hardcoded in
      the kernel and not always suitable. Some devices need a different value to
      avoid reacting to accidental touches or hovering fingers.
      
      Implement a basic Schmitt trigger, same as we have in the synaptics driver. We
      also take the default values from there but these will likely see some
      updates.
      
      A special case is when we have more fingers down than slots. Since we can't
      detect the pressure on fake fingers (we only get a bit for 'is down') we
      assume that *all* fingers are down with sufficient pressure. It's too much of
      a niche case to have this work any other way.
      
      This patch drops the handling of ABS_DISTANCE because it's simply not needed
      anymore.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      568d527c
  14. 26 Jan, 2017 2 commits
  15. 23 Jan, 2017 1 commit
  16. 14 Dec, 2016 1 commit
  17. 29 Nov, 2016 1 commit
  18. 12 Sep, 2016 1 commit
  19. 07 Sep, 2016 1 commit
    • Peter Hutterer's avatar
      tablet: add touch arbitration · b519ea4a
      Peter Hutterer authored
      So far we've relied on the wacom kernel module to do touch arbitration for us
      but that won't be the case in upcoming kernels. Implement touch arbitration in
      userspace by pairing the two devices and suspending the touch device whenever
      a tool comes into proximity.
      
      In the future more sophisticated arbitration can be done (e.g. only touches
      which are close to the pen) but let's burn that bridge when we have to cross
      it.
      
      Note that touch arbitration is "device suspend light", i.e. we leave the
      device enabled and the fd is active. Tablet interactions are comparatively
      short-lived, so closing the fd and asking logind for a new one every time the
      pen changes proximity is suboptimal. Instead, we just keep a boolean around
      and discard all events while it is set.
      Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      Reviewed-by: Jason Gerecke's avatarJason Gerecke <jason.gerecke@wacom.com>
      b519ea4a
  20. 14 Aug, 2016 1 commit
  21. 04 Aug, 2016 1 commit
  22. 20 Jul, 2016 2 commits
  23. 03 Jul, 2016 1 commit
  24. 19 Jun, 2016 1 commit
  25. 09 Jun, 2016 1 commit
  26. 01 Jun, 2016 1 commit
  27. 05 Apr, 2016 1 commit
    • Peter Hutterer's avatar
      touchpad: add a middle button software area · 886b5a2c
      Peter Hutterer authored
      Middle button interaction is most commonly to paste and it is a single-event
      interaction (button press). We provided middle button in software button mode
      by emulating it with a two-finger press with L+R down at the same time. This
      is also what many touchpads are spectacularly bad at, it is very common to
      detect the physical button down event before the second finger registers,
      resulting in left or right clicks where a middle button should be triggered.
      
      Unless the fingers are resting on the touchpad for at least one scanout, the
      success rate for middle button emulation is only at 70% or so.
      
      This patch adds a 25%-width middle button area between the left and the right
      software button, everything else stays the same. To avoid immediate breakage,
      the middle button emulation remains but may be removed in the future.
      The doc is updated to only refer to the middle button area now.
      
      https://bugs.freedesktop.org/show_bug.cgi?id=94755Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
      886b5a2c
  28. 04 Apr, 2016 1 commit
    • Peter Hutterer's avatar
      touchpad: reset the motion history on significant negative pressure changes · ef48c07a
      Peter Hutterer authored
      Resetting the motion history has the side-effect of swallowing movements, we
      don't calculate deltas until we have 4 motion events. During a finger release,
      we're likely to get a large pressure change between two events, resetting the
      motion history prevents the cursor from jumping on release.
      
      The value of 7 found by trial-and-error, tested on the T440 and T450 hardware.
      The absolute value is highly variable but recordings show that the pressure
      changes only by 1 or 2 units during normal interaction. Higher pressure
      changes are during finger position changes but since those should not cause a
      jump anyway, we tend to win there too.
      
      Currently only enabled for negative pressure changes, let's see how we go with
      that. This is enabled for all touchpads now, but the value may need
      device-specific thresholds in the future.
      
      https://bugs.freedesktop.org/show_bug.cgi?id=94379Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
      Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
      ef48c07a
  29. 30 Mar, 2016 1 commit
  30. 11 Mar, 2016 1 commit
  31. 18 Feb, 2016 1 commit
  32. 04 Feb, 2016 1 commit
  33. 27 Jan, 2016 1 commit
    • Peter Hutterer's avatar
      touchpad: add a config option to disable tap-and-drag · cba2278c
      Peter Hutterer authored
      There are a number of use-cases where tapping may be desirable, but
      tap-and-drag is not, e.g. where tapping is used to select multiple items in a
      list. Having tap-and-drag on hinders this, and the nature of the interaction
      means it cannot be detected based on timeouts, movement thresholds, etc.
      
      Provide an option instead to turn tap-an-drag off. Tap-and-drag remains
      enabled by default (though tapping is disabled by default).
      
      For the touchpad tap state diagram, the new option disables the transition
      from state TOUCH to state TAPPED and releases the button immediately instead.
      This means that multitap-and-drag is disabled too since we now just loop
      around in the single-tap state for multitap.
      
      It also makes tapping more responsive - we don't have to wait for the timeout
      before we know whether it's a tap event. The first touch time is noted, we now
      send the button press with the time of the first touch and the release with
      the time of the release. This ensures a realistic time diff between the two
      events.
      
      https://bugs.freedesktop.org/show_bug.cgi?id=93502Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.netto>
      Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
      cba2278c