This is a workaround upstream suggests for use with kernel 4.1.

Upstream-Status: Inappropriate [temporary work-around]
Signed-Off-By: Jussi Kukkonen <jussi.kukkonen@intel.com>



From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Mon Aug 3 18:23:12 PDT 2015
Subject: [PATCH v3 libinput] touchpad: serial synaptics need to fake new touches on TRIPLETAP

On the 4.1 kernels synaptics pretends to have 3 slots (the serial fw only does
2). This was added to avoid cursor jumps but has since been reverted for 4.2
(kernel commit dbf3c37086, 4.1.3 is still buggy). In some cases a TRIPLETAP
may be triggered without slot 2 ever activating.

While there are still those kernels out there, work around this bug by opening
a new touch point where none exists if the fake finger count exceeds the slot
count.

Reported-by: Jan Alexander Steffens <jan.steffens at gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
Tested-by: Jan Alexander Steffens <jan.steffens at gmail.com>
Reviewed-by: Hans de Goede <hdegoede at redhat.com>
---
Changes to v2:
- split out the handling instead of having a tmp state variable, see Hans'
  comments from v2

Mainly sending this to the list again so I have a link to point people to.
If you're on 4.1.x add this patch to your distribution package.

 src/evdev-mt-touchpad.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index a683d9a..5ef03d5 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -369,13 +369,23 @@ tp_restore_synaptics_touches(struct tp_dispatch *tp,
 	for (i = 0; i < tp->num_slots; i++) {
 		struct tp_touch *t = tp_get_touch(tp, i);
 
-		if (t->state != TOUCH_END)
+		switch(t->state) {
+		case TOUCH_HOVERING:
+		case TOUCH_BEGIN:
+		case TOUCH_UPDATE:
 			continue;
-
-		/* new touch, move it through begin to update immediately */
-		tp_new_touch(tp, t, time);
-		tp_begin_touch(tp, t, time);
-		t->state = TOUCH_UPDATE;
+		case TOUCH_NONE:
+			/* new touch, move it through to begin immediately */
+			tp_new_touch(tp, t, time);
+			tp_begin_touch(tp, t, time);
+			break;
+		case TOUCH_END:
+			/* touch just ended ,we need need to restore it to update */
+			tp_new_touch(tp, t, time);
+			tp_begin_touch(tp, t, time);
+			t->state = TOUCH_UPDATE;
+			break;
+		}
 	}
 }
 
-- 
2.4.3

