[arch-commits] Commit in libinput/trunk (PKGBUILD synaptics.patch)

Jan Steffens heftig at archlinux.org
Tue Aug 4 02:02:27 UTC 2015


    Date: Tuesday, August 4, 2015 @ 04:02:27
  Author: heftig
Revision: 242991

0.21.0

Added:
  libinput/trunk/synaptics.patch
Modified:
  libinput/trunk/PKGBUILD

-----------------+
 PKGBUILD        |   14 +++++++--
 synaptics.patch |   76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-08-04 01:46:20 UTC (rev 242990)
+++ PKGBUILD	2015-08-04 02:02:27 UTC (rev 242991)
@@ -3,7 +3,7 @@
 # Maintainer: Jan de Groot
 
 pkgname=libinput
-pkgver=0.20.0
+pkgver=0.21.0
 pkgrel=1
 pkgdesc="library that handles input devices for display servers and other applications that need to directly deal with input devices."
 arch=(i686 x86_64)
@@ -12,13 +12,19 @@
 depends=('mtdev' 'systemd' 'libevdev')
 install=libinput.install
 options=('!libtool')
-source=(http://freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz{,.sig})
-sha256sums=('175bdfce97cfab13a2a0d02c3138fcf02f60c8fcd098835a97128ff114d7125d'
-            'SKIP')
+source=(http://freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz{,.sig}
+        synaptics.patch)
+sha256sums=('7cce7a9e510dfe5c4a19ad00e9350808d4f59f8611fd2b5e87213c507283f550'
+            'SKIP'
+            '9e49f17ff34f48c1119fb75f1adf9dae440efe5cb72c0057d201b70a4573842d')
 validpgpkeys=('3C2C43D9447D5938EF4551EBE23B7E70B467F0BF') # Peter Hutterer (Who-T) <office at who-t.net>
 
 prepare() {
   cd $pkgname-$pkgver
+
+  # Work around a synaptics bug that only affects Linux 4.1
+  # Patch added as recommended by upstream
+  patch -Np1 -i ../synaptics.patch
 }
 
 build() {

Added: synaptics.patch
===================================================================
--- synaptics.patch	                        (rev 0)
+++ synaptics.patch	2015-08-04 02:02:27 UTC (rev 242991)
@@ -0,0 +1,76 @@
+Date: Tue, 4 Aug 2015 11:23:12 +1000
+From: Peter Hutterer <peter.hutterer at who-t.net>
+To: wayland-devel at lists.freedesktop.org
+Cc: Hans de Goede <hdegoede at redhat.com>,
+        Jan Alexander Steffens <jan.steffens at gmail.com>
+Subject: [PATCH v3 libinput] touchpad: serial synaptics need to fake new
+ touches on TRIPLETAP
+Message-ID: <20150804012312.GA20986 at jelly.redhat.com>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+In-Reply-To: <55B5E8CE.7010007 at redhat.com>
+User-Agent: Mutt/1.5.23 (2014-03-12)
+X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (mail.clearchain.com [127.0.0.1]); Tue, 04 Aug 2015 10:54:55 +0930 (CST)
+
+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
+



More information about the arch-commits mailing list