Module Name: src
Committed By: martin
Date: Tue Apr 28 16:22:15 UTC 2020
Modified Files:
src/sys/dev/pckbport [netbsd-9]: synaptics.c synapticsvar.h
Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #863):
sys/dev/pckbport/synaptics.c: revision 1.65
sys/dev/pckbport/synapticsvar.h: revision 1.10
Extended buttons are reported separate from touchpad buttons, so track
button press / release state separate from touch events.
To generate a diff of this commit:
cvs rdiff -u -r1.50.2.3 -r1.50.2.4 src/sys/dev/pckbport/synaptics.c
cvs rdiff -u -r1.9 -r1.9.2.1 src/sys/dev/pckbport/synapticsvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pckbport/synaptics.c
diff -u src/sys/dev/pckbport/synaptics.c:1.50.2.3 src/sys/dev/pckbport/synaptics.c:1.50.2.4
--- src/sys/dev/pckbport/synaptics.c:1.50.2.3 Thu Apr 2 19:23:41 2020
+++ src/sys/dev/pckbport/synaptics.c Tue Apr 28 16:22:15 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: synaptics.c,v 1.50.2.3 2020/04/02 19:23:41 martin Exp $ */
+/* $NetBSD: synaptics.c,v 1.50.2.4 2020/04/28 16:22:15 martin Exp $ */
/*
* Copyright (c) 2005, Steve C. Woodford
@@ -48,7 +48,7 @@
#include "opt_pms.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: synaptics.c,v 1.50.2.3 2020/04/02 19:23:41 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: synaptics.c,v 1.50.2.4 2020/04/28 16:22:15 martin Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1009,19 +1009,29 @@ pms_synaptics_parse(struct pms_softc *ps
psc->packet[3], psc->packet[4], psc->packet[5]);
if ((psc->packet[4] & SYN_1BUTMASK) != 0)
- sp.sp_left = PMS_LBUTMASK;
+ sc->ext_left = PMS_LBUTMASK;
+ else
+ sc->ext_left = 0;
if ((psc->packet[4] & SYN_3BUTMASK) != 0)
- sp.sp_middle = PMS_MBUTMASK;
+ sc->ext_middle = PMS_MBUTMASK;
+ else
+ sc->ext_middle = 0;
if ((psc->packet[5] & SYN_2BUTMASK) != 0)
- sp.sp_right = PMS_RBUTMASK;
+ sc->ext_right = PMS_RBUTMASK;
+ else
+ sc->ext_right = 0;
if ((psc->packet[5] & SYN_4BUTMASK) != 0)
- sp.sp_up = 1;
+ sc->ext_up = 1;
+ else
+ sc->ext_up = 0;
if ((psc->packet[4] & SYN_5BUTMASK) != 0)
- sp.sp_down = 1;
+ sc->ext_down = 1;
+ else
+ sc->ext_down = 0;
} else {
/* Left/Right button handling. */
sp.sp_left = psc->packet[0] & PMS_LBUTMASK;
@@ -1101,6 +1111,13 @@ pms_synaptics_parse(struct pms_softc *ps
sp.sp_middle = 0;
}
+ /* Overlay extended button state */
+ sp.sp_left |= sc->ext_left;
+ sp.sp_right |= sc->ext_right;
+ sp.sp_middle |= sc->ext_middle;
+ sp.sp_up |= sc->ext_up;
+ sp.sp_down |= sc->ext_down;
+
switch (synaptics_up_down_emul) {
case 1:
/* Do middle button emulation using up/down buttons */
Index: src/sys/dev/pckbport/synapticsvar.h
diff -u src/sys/dev/pckbport/synapticsvar.h:1.9 src/sys/dev/pckbport/synapticsvar.h:1.9.2.1
--- src/sys/dev/pckbport/synapticsvar.h:1.9 Sun Jun 2 08:55:00 2019
+++ src/sys/dev/pckbport/synapticsvar.h Tue Apr 28 16:22:15 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: synapticsvar.h,v 1.9 2019/06/02 08:55:00 blymn Exp $ */
+/* $NetBSD: synapticsvar.h,v 1.9.2.1 2020/04/28 16:22:15 martin Exp $ */
/*
* Copyright (c) 2005, Steve C. Woodford
@@ -89,6 +89,12 @@ struct synaptics_softc {
int history_x[SYN_MAX_FINGERS][SYN_HIST_SIZE];
int history_y[SYN_MAX_FINGERS][SYN_HIST_SIZE];
int history_z[SYN_MAX_FINGERS][SYN_HIST_SIZE];
+
+ char ext_left;
+ char ext_right;
+ char ext_middle;
+ char ext_up;
+ char ext_down;
};
int pms_synaptics_probe_init(void *vsc);