Skip to content
Snippets Groups Projects
  1. Oct 03, 2018
  2. Oct 02, 2018
    • Peter Hutterer's avatar
      touchpad: ignore motion speed for hovering touches · a8e3f4d1
      Peter Hutterer authored
      
      tp_detect_thumb_while_moving() assumes that of the 2 fingers down, at least
      one must be in TOUCH_UPDATE, otherwise we wouldn't have a speed to analyze for
      thumb.
      
      If a touch starts in HOVERING and exceeds the speed limit, we were previously
      increasing the 'exceeded count'. This later leads to an assert() in
      tp_detect_thumb_while_moving() when the second finger comes down because
      although we have multiple fingers, none of them are in TOUCH_UPDATE.
      
      This only happens when fingers 2 and 3 come down in the same event frame,
      because then we have nfingers_down at 2 (the hovering one doesn't count) but
      we don't yet have a finger in TOUCH_UPDATE.
      
      Fix this twofold, first by now calculating the speed on anything but
      TOUCH_UPDATE. And second by force-resetting the speed count on
      TOUCH_BEGIN/TOUCH_END so we definitely cover all the hover transitions.
      
      Fixes #150
      
      Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      a8e3f4d1
    • Peter Hutterer's avatar
      b5991772
  3. Sep 28, 2018
  4. Sep 27, 2018
  5. Sep 26, 2018
  6. Sep 20, 2018
  7. Sep 18, 2018
  8. Sep 17, 2018
  9. Sep 14, 2018
  10. Sep 12, 2018
  11. Sep 11, 2018
  12. Sep 10, 2018
  13. Sep 06, 2018
    • Peter Hutterer's avatar
      tablet: on tip down/up, force the delta to zero · f38fae3a
      Peter Hutterer authored
      
      We may get a pointer jump on tip down/up, see #128. For absolute coordinates
      we reset the history to avoid smoothing across that jump but deltas still used
      to be calculated based on the previous position to the current one. This
      can result in a large jump on tip down.
      
      Since the delta is supposed to be useful (and not physically accurate, see the
      docs), let's force it to 0/0 on tip down/up to avoid that scenario.
      
      Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      f38fae3a
  14. Sep 05, 2018
  15. Sep 04, 2018
  16. Aug 31, 2018
    • Peter Hutterer's avatar
      touchpad: add timestamp-based jump detection · 1f5c0119
      Peter Hutterer authored
      
      On Dell i2c touchpads, the controller appears to go to sleep after about 1s of
      inactivity on the touchpad. The wakeup takes a while so on the next touch, we
      may see a pointer jump, specifially on the third event (i.e. touch down,
      event, event+jump). The MSC_TIMESTAMP value carries a hint for what's
      happening here, the event sequence for a touchpad with scanout intervals
      7300µs is:
      
      	...
      	MSC_TIMESTAMP 0
      	SYN_REPORT
      	...
      	MSC_TIMESTAMP 7300
      	SYN_REPORT +2ms
      	...
      	MSC_TIMESTAMP 123456
      	SYN_REPORT +7ms
      	...
      	MSC_TIMESTAMP 123456+7300
      	SYN_REPORT +8ms
      
      Note how the SYN_REPORT timestamps don't reflect the MSC_TIMESTAMPS.
      
      This patch adds a quirk activate MSC_TIMESTAMP watching. When we do so, we
      monitor for a 0 MSC_TIMESTAMP. Let's assume that the first event after that is
      the interval, then check the third event. If that third event's timestamp is too
      large rewrite the touches' motion history to reflect the correct timestamps,
      i.e. instead of the SYN_REPORT timestamps the motion history now uses
      "third-event SYN_REPORT timestamps minus MSC_TIMESTAMP values".
      
      The pointer accel filter code uses absolute timestamps (#123) so we have to
      restart the pointer acceleration filter when we detect this jump. This allows
      us to reset the 0 time for the filter to the previous event's MSC_TIMESTAMP
      time, so that our new large delta has the correct time delta too. This
      calculates the acceleration correctly for that window.
      
      The result is that the pointer is still delayed by the wake-up window (not
      fixable in libinput) but at least it ends up where it should've.
      
      There are a few side-effects: thumb, gesture, and hysteresis all still use the
      unmodified SYN_REPORT time. There is a potential for false detection of either
      of these now, but we'll have to fix those as they come up.
      
      Fixes #36
      
      Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      1f5c0119
    • Peter Hutterer's avatar
      quirks: add a quirk to monitor MSC_TIMESTAMP for pointer jumps · 0e2f1bab
      Peter Hutterer authored
      
      Currently enabled on all Dell i2c touchpads, these seem to be the ones that
      needed it.
      
      Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
      0e2f1bab
  17. Aug 30, 2018
Loading