Skip to content
  • Peter Hutterer's avatar
    Limit the movement to 20 mm per event · 41b2312c
    Peter Hutterer authored
    
    
    Touchpads are limited by a fixed sampling rate (usually 80Hz). Some finger
    changes may happen too fast for this sampling rate, resulting in two distinct
    event sequences:
    * finger 1 up and finger 2 down in the same EV_SYN frame. Synaptics sees one
      finger down before and after and the changed coordinates
    * finger 1 up and finger 2 down _between_ two EV_SYN frames. Synaptics sees one
      touchpoint move from f1 position to f2 position.
    
    That move causes a large cursor jump. The former could be solved (with
    difficulty) by adding fake EV_SYN handling after releasing touchpoints but
    that won't fix the latter case.
    
    So as a solution for now limit the finger movement to 20mm per event.
    Tests on a T440 and an x220 showed that this is just above what a reasonable
    finger movement would trigger. If a movement is greater than that limit, reset
    it to 0/0.
    
    On devices without resolution, use 0.25 of the touchpad's diagonal instead.
    
    Signed-off-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
    41b2312c