svn commit: r261226 - head/sys/dev/usb/input

Hans Petter Selasky hselasky at FreeBSD.org
Tue Jan 28 08:49:01 UTC 2014


Author: hselasky
Date: Tue Jan 28 08:49:00 2014
New Revision: 261226
URL: http://svnweb.freebsd.org/changeset/base/261226

Log:
  Revert r260622:
  To be implemented a bit differently.

Modified:
  head/sys/dev/usb/input/ukbd.c

Modified: head/sys/dev/usb/input/ukbd.c
==============================================================================
--- head/sys/dev/usb/input/ukbd.c	Tue Jan 28 08:07:19 2014	(r261225)
+++ head/sys/dev/usb/input/ukbd.c	Tue Jan 28 08:49:00 2014	(r261226)
@@ -197,7 +197,6 @@ struct ukbd_softc {
 #define	UKBD_FLAG_NUMLOCK	0x00080000
 #define	UKBD_FLAG_CAPSLOCK	0x00100000
 #define	UKBD_FLAG_SCROLLLOCK 	0x00200000
-#define	UKBD_FLAG_VALID_KEYS	0x00400000
 
 	int	sc_mode;		/* input mode (K_XLATE,K_RAW,K_CODE) */
 	int	sc_state;		/* shift/lock key state */
@@ -513,41 +512,6 @@ ukbd_interrupt(struct ukbd_softc *sc)
 
 	n_mod = sc->sc_ndata.modifiers;
 	o_mod = sc->sc_odata.modifiers;
-
-	/*
-	 * Don't output any modifier keys before we see a valid
-	 * non-modifier key press. This prevents so-called "ghost
-	 * keyboards" keeping modifier keys pressed while not actually
-	 * seen as a real keyboard.
-	 */
-	if (sc->sc_flags & UKBD_FLAG_VALID_KEYS)
-		goto kfound;
-
-	for (i = 0; i != UKBD_NKEYCODE; i++) {
-		key = sc->sc_ndata.keycode[i];
-		switch (key) {
-		case 0xe0:
-		case 0xe4:
-		case 0xe1:
-		case 0xe5:
-		case 0xe2:
-		case 0xe6:
-		case 0xe3:
-		case 0xe7:
-		case 0x00:
-		case KEY_ERROR:
-			break;
-		default:
-			sc->sc_flags |= UKBD_FLAG_VALID_KEYS;
-			goto kfound;
-		}
-	}
-	DPRINTF("Keeping modifiers buffered\n");
-
-	/* keep modifiers in buffer */
-	sc->sc_ndata.modifiers = n_mod = 0;
-
-kfound:
 	if (n_mod != o_mod) {
 		for (i = 0; i < UKBD_NMOD; i++) {
 			if ((n_mod & ukbd_mods[i].mask) !=


More information about the svn-src-head mailing list