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];