25 lines
939 B
Diff
25 lines
939 B
Diff
Index: sys/dev/pckbc/pms.c
|
|
===================================================================
|
|
RCS file: /home/cvs/src/sys/dev/pckbc/pms.c,v
|
|
retrieving revision 1.96
|
|
diff -u -p -u -p -r1.96 pms.c
|
|
--- sys/dev/pckbc/pms.c 6 Apr 2022 18:59:30 -0000 1.96
|
|
+++ sys/dev/pckbc/pms.c 16 Jul 2022 11:11:06 -0000
|
|
@@ -2610,6 +2610,16 @@ pms_proc_elantech_v4(struct pms_softc *s
|
|
|
|
case ELANTECH_PKT_TRACKPOINT:
|
|
if (sc->sc_dev_enable & PMS_DEV_SECONDARY) {
|
|
+ /*
|
|
+ * This firmware misreport coordinates for trackpoint
|
|
+ * occasionally. Discard packets outside of [-127, 127] range
|
|
+ * to prevent cursor jumps.
|
|
+ */
|
|
+ if (sc->packet[4] == 0x80 || sc->packet[5] == 0x80 ||
|
|
+ sc->packet[1] >> 7 == sc->packet[4] >> 7 ||
|
|
+ sc->packet[2] >> 7 == sc->packet[5] >> 7)
|
|
+ return;
|
|
+
|
|
x = sc->packet[4] - 0x100 + (sc->packet[1] << 1);
|
|
y = sc->packet[5] - 0x100 + (sc->packet[2] << 1);
|
|
buttons = butmap[sc->packet[0] & 7];
|