The branch main has been updated by wulf:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=032d3153877ef1767c121bbdf8e00f4f93b30a5d

commit 032d3153877ef1767c121bbdf8e00f4f93b30a5d
Author:     Vladimir Kondratyev <w...@freebsd.org>
AuthorDate: 2021-02-13 18:12:56 +0000
Commit:     Vladimir Kondratyev <w...@freebsd.org>
CommitDate: 2021-02-13 18:12:56 +0000

    ukbd: Fix handling of keyboard ErrorRollOver reports
    
    Ignore fantom keyboard state reports entirelly rather than ignore
    RollOver states for each key separatelly.  Latter results in spurious
    release/push pairs of events on each fantom keyboard state report.
    
    Reported by:    Jan Martin Mikkelsen <janm_AT_transactionware_DOT_com>
    Submitted by:   Jan Martin Mikkelsen (initial version)
    PR:             253249
    MFC after:      1 week
---
 sys/dev/usb/input/ukbd.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/sys/dev/usb/input/ukbd.c b/sys/dev/usb/input/ukbd.c
index 3314a3b3e70f..f2ff476150ff 100644
--- a/sys/dev/usb/input/ukbd.c
+++ b/sys/dev/usb/input/ukbd.c
@@ -722,11 +722,16 @@ ukbd_intr_callback(struct usb_xfer *xfer, usb_error_t 
error)
                                            hid_get_udata(sc->sc_buffer, len, 
&tmp_loc);
                                        /* advance to next location */
                                        tmp_loc.pos += tmp_loc.size;
+                                       if (key == KEY_ERROR) {
+                                               DPRINTF("KEY_ERROR\n");
+                                               sc->sc_ndata = sc->sc_odata;
+                                               goto tr_setup; /* ignore */
+                                       }
                                        if (modifiers & MOD_FN)
                                                key = ukbd_apple_fn(key);
                                        if (sc->sc_flags & UKBD_FLAG_APPLE_SWAP)
                                                key = ukbd_apple_swap(key);
-                                       if (key == KEY_NONE || key == KEY_ERROR 
|| key >= UKBD_NKEYCODE)
+                                       if (key == KEY_NONE || key >= 
UKBD_NKEYCODE)
                                                continue;
                                        /* set key in bitmap */
                                        sc->sc_ndata.bitmap[key / 64] |= 1ULL 
<< (key % 64);
_______________________________________________
dev-commits-src-main@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"

Reply via email to