diff options
author | jhb <jhb@FreeBSD.org> | 2004-02-23 15:36:40 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2004-02-23 15:36:40 +0000 |
commit | f00d012895c25bf3226963e7770eaa6ad2a6d823 (patch) | |
tree | e3cf9a9ae570a4728675a0cd9798ae50b22527af | |
parent | 2466e144104f40eeab648d99e2f7494f84ff9ef6 (diff) | |
download | FreeBSD-src-f00d012895c25bf3226963e7770eaa6ad2a6d823.zip FreeBSD-src-f00d012895c25bf3226963e7770eaa6ad2a6d823.tar.gz |
Fix a problem with the USB keyboard driver not properly handling key
rollover resulting in duplicate keypress events.
PR: 57273
PR: 63171
Submitted by: plasma <plasma at freebsd.sinica.edu.tw>
Submitted by: Brian Candler <B.Candler at pobox.com>
MFC after: 1 week
-rw-r--r-- | sys/dev/usb/ukbd.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/dev/usb/ukbd.c b/sys/dev/usb/ukbd.c index b16c601..1f72ebf 100644 --- a/sys/dev/usb/ukbd.c +++ b/sys/dev/usb/ukbd.c @@ -43,7 +43,7 @@ __FBSDID("$FreeBSD$"); /* - * HID spec: http://www.usb.org/developers/data/devclass/hid1_1.pdf + * HID spec: http://www.usb.org/developers/devclass_docs/HID1_11.pdf */ #include "opt_kbd.h" @@ -746,10 +746,10 @@ ukbd_interrupt(keyboard_t *kbd, void *arg) for (i = 0; i < NKEYCODE; i++) { key = state->ks_odata.keycode[i]; if (key == 0) - break; + continue; for (j = 0; j < NKEYCODE; j++) { if (ud->keycode[j] == 0) - break; + continue; if (key == ud->keycode[j]) goto rfound; } @@ -762,11 +762,11 @@ ukbd_interrupt(keyboard_t *kbd, void *arg) for (i = 0; i < NKEYCODE; i++) { key = ud->keycode[i]; if (key == 0) - break; + continue; state->ks_ntime[i] = now + kbd->kb_delay1; for (j = 0; j < NKEYCODE; j++) { if (state->ks_odata.keycode[j] == 0) - break; + continue; if (key == state->ks_odata.keycode[j]) { state->ks_ntime[i] = state->ks_otime[j]; if (state->ks_otime[j] > now) |