--- b/sys/dev/atkbdc/psm.c +++ b/sys/dev/atkbdc/psm.c @@ -3658,12 +3658,13 @@ proc_synaptics_mux(struct psm_softc *sc, packetbuf_t *pb) pb->ipacket[0] &= 0xfb; pb->ipacket[3] &= 0xfb; } - sc->muxsave[0] = 0; + sc->muxsave[0] &= 0x30; break; default: /* Generic mouse (Trackpoint) packet */ /* Filter out middle button events induced by some w values */ - if (sc->muxmsbuttons & 0x03 || pb->ipacket[0] & 0x03) + if (sc->muxmsbuttons & 0x03 || pb->ipacket[0] & 0x03 || + sc->muxsave[0] & 0x30 || sc->muxsave[2] != 0) pb->ipacket[0] &= 0xfb; sc->muxmsbuttons = pb->ipacket[0] & 0x07; /* Convert to Synaptics pass-through protocol */