The cursor still moves on tap if the movement is outside the defined hysteresis. Reproducible by tapping on an angle so that movement is generated within the first few events.
Fixing this is tricky. The movement must be less than MaxTapMove (we want tap after all) and more than the hysteresis. Simple fix is to force deltas to 0 in TS_1 state but that delays any normal movement by MaxTapTime. In the default time, this is noticeable and bad user experience.
Possible options could be:
- discarding the first one or two motions
- some second time for tapping that defines a medium range to reduce the delay
- workaround: increasing the hysteresis values
Options above are untested and need to be checked for user experience changes.
This is still a problem with xorg-x11-drv-synaptics-1.7.1-5.fc20.x86_64, making the touchpad on a Dell XPS 15 Touch almost unusable. Tapping/clicking with the side of your thumb is particularly problematic, because as your thumb goes down, the touch "blob" (contact area of the thumb on the touchpad) changes dramatically in size and shape, dragging the centroid strongly in one direction.
Can the size or pressure of the touch point be used to determine if a drag is being performed? If the size or pressure of the touch point is changing dramatically, the pointer should not move even though the centroid of the touch point is moving.
feature request has been open for three years, going to call this a WONTFIX.
at this point a fix like that is going to end up in libinput anyway rather than synaptics.