Module Name:    src
Committed By:   tsutsui
Date:           Sat Apr  8 17:04:56 UTC 2017

Modified Files:
        src/sys/arch/hp300/dev: dnkbd.c
        src/sys/dev/hil: hilkbd.c

Log Message:
Remove auto-repeat key functions in WSKBD_RAW mode.

Pulled from OpenBSD:
 
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/hp300/dev/Attic/dnkbd.c#rev1.18
 http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/hil/hilkbd.c#rev1.15
> WSKBD_RAW mode used in X, but X independently implements auto-repeat keys.

Tested with Xorg server on HP425t with topcat.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/hp300/dev/dnkbd.c
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/hil/hilkbd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/hp300/dev/dnkbd.c
diff -u src/sys/arch/hp300/dev/dnkbd.c:1.9 src/sys/arch/hp300/dev/dnkbd.c:1.10
--- src/sys/arch/hp300/dev/dnkbd.c:1.9	Sat Mar 25 22:08:27 2017
+++ src/sys/arch/hp300/dev/dnkbd.c	Sat Apr  8 17:04:56 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: dnkbd.c,v 1.9 2017/03/25 22:08:27 tsutsui Exp $	*/
+/*	$NetBSD: dnkbd.c,v 1.10 2017/04/08 17:04:56 tsutsui Exp $	*/
 /*	$OpenBSD: dnkbd.c,v 1.17 2009/07/23 21:05:56 blambert Exp $	*/
 
 /*
@@ -188,11 +188,6 @@ struct dnkbd_softc {
 
 #ifdef WSDISPLAY_COMPAT_RAWKBD
 	int		sc_rawkbd;
-	int		sc_nrep;
-	char		sc_rep[2];	/* at most, one key */
-	struct callout	sc_rawrepeat_ch;
-#define	REP_DELAY1	400
-#define	REP_DELAYN	100
 #endif
 };
 
@@ -259,9 +254,6 @@ static int	dnkbd_intr(void *);
 static int	dnkbd_pollin(struct dnkbd_softc *, u_int);
 static int	dnkbd_pollout(struct dnkbd_softc *, int);
 static int	dnkbd_probe(struct dnkbd_softc *);
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-static void	dnkbd_rawrepeat(void *);
-#endif
 static int	dnkbd_send(struct dnkbd_softc *, const uint8_t *, size_t);
 static void	dnkbd_break(struct dnkbd_softc *, int);
 
@@ -300,10 +292,6 @@ dnkbd_attach(device_t parent, device_t s
 
 	callout_init(&sc->sc_bellstop_tmo, 0);
 	callout_setfunc(&sc->sc_bellstop_tmo, dnkbd_bellstop, sc);
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-	callout_init(&sc->sc_rawrepeat_ch, 0);
-	callout_setfunc(&sc->sc_rawrepeat_ch, dnkbd_rawrepeat, sc);
-#endif
 
 	/* reset the port */
 	dnkbd_init(sc, 1200, LCR_8BITS | LCR_PEVEN | LCR_PENAB);
@@ -706,9 +694,9 @@ dnevent_kbd_internal(struct dnkbd_softc 
 #ifdef WSDISPLAY_COMPAT_RAWKBD
 	if (sc->sc_rawkbd) {
 		u_char cbuf[2];
-		int c, j, npress;
+		int c, j;
 
-		npress = j = 0;
+		j = 0;
 		c = dnkbd_raw[key];
 		if (c != 0) {
 			/* fake extended scancode if necessary */
@@ -717,12 +705,6 @@ dnevent_kbd_internal(struct dnkbd_softc 
 			cbuf[j] = c & 0x7f;
 			if (type == WSCONS_EVENT_KEY_UP)
 				cbuf[j] |= 0x80;
-			else {
-				/* remember pressed key for autorepeat */
-				if (c & 0x80)
-					sc->sc_rep[npress++] = 0xe0;
-				sc->sc_rep[npress++] = c & 0x7f;
-			}
 			j++;
 		}
 
@@ -730,12 +712,6 @@ dnevent_kbd_internal(struct dnkbd_softc 
 			s = spltty();
 			wskbd_rawinput(sc->sc_wskbddev, cbuf, j);
 			splx(s);
-			callout_stop(&sc->sc_rawrepeat_ch);
-			sc->sc_nrep = npress;
-			if (npress != 0) {
-				callout_schedule(&sc->sc_rawrepeat_ch,
-				    mstohz(REP_DELAY1));
-			}
 		}
 	} else
 #endif
@@ -746,21 +722,6 @@ dnevent_kbd_internal(struct dnkbd_softc 
 	}
 }
 
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-void
-dnkbd_rawrepeat(void *v)
-{
-	struct dnkbd_softc *sc = v;
-	int s;
-
-	s = spltty();
-	wskbd_rawinput(sc->sc_wskbddev, sc->sc_rep, sc->sc_nrep);
-	splx(s);
-
-	callout_schedule(&sc->sc_rawrepeat_ch, mstohz(REP_DELAYN));
-}
-#endif
-
 #if NWSMOUSE > 0
 void
 dnevent_mouse(struct dnkbd_softc *sc, uint8_t *dat)
@@ -1040,7 +1001,6 @@ dnkbd_ioctl(void *v, u_long cmd, void *d
 #ifdef WSDISPLAY_COMPAT_RAWKBD
 	case WSKBDIO_SETMODE:
 		sc->sc_rawkbd = *(int *)data == WSKBD_RAW;
-		callout_stop(&sc->sc_rawrepeat_ch);
 		return 0;
 #endif
 	}

Index: src/sys/dev/hil/hilkbd.c
diff -u src/sys/dev/hil/hilkbd.c:1.3 src/sys/dev/hil/hilkbd.c:1.4
--- src/sys/dev/hil/hilkbd.c:1.3	Mon Feb 21 12:33:05 2011
+++ src/sys/dev/hil/hilkbd.c	Sat Apr  8 17:04:56 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: hilkbd.c,v 1.3 2011/02/21 12:33:05 he Exp $	*/
+/*	$NetBSD: hilkbd.c,v 1.4 2017/04/08 17:04:56 tsutsui Exp $	*/
 /*	$OpenBSD: hilkbd.c,v 1.14 2009/01/21 21:53:59 grange Exp $	*/
 /*
  * Copyright (c) 2003, Miodrag Vallat.
@@ -64,11 +64,6 @@ struct hilkbd_softc {
 
 #ifdef WSDISPLAY_COMPAT_RAWKBD
 	int		sc_rawkbd;
-	int		sc_nrep;
-	char		sc_rep[HILBUFSIZE * 2];
-	struct callout	sc_rawrepeat_ch;
-#define	REP_DELAY1	400
-#define	REP_DELAYN	100
 #endif
 };
 
@@ -122,9 +117,6 @@ static void	hilkbd_callback(struct hilde
 static void	hilkbd_decode(struct hilkbd_softc *, uint8_t, u_int *, int *,
 		    int);
 static int	hilkbd_is_console(int);
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-static void	hilkbd_rawrepeat(void *);
-#endif
 
 static int	seen_hilkbd_console;
 
@@ -195,11 +187,6 @@ hilkbdattach(device_t parent, device_t s
 	 */
 	ps2 = (sc->sc_numleds != 0);
 
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-	callout_init(&sc->sc_rawrepeat_ch, 0);
-	callout_setfunc(&sc->sc_rawrepeat_ch, hilkbd_rawrepeat, sc);
-#endif
-
 	/* Do not consider button boxes as console devices. */
 	if (ha->ha_type == HIL_DEVICE_BUTTONBOX)
 		a.console = 0;
@@ -316,7 +303,6 @@ hilkbd_ioctl(void *v, u_long cmd, void *
 #ifdef WSDISPLAY_COMPAT_RAWKBD
 	case WSKBDIO_SETMODE:
 		sc->sc_rawkbd = *(int *)data == WSKBD_RAW;
-		callout_stop(&sc->sc_rawrepeat_ch);
 		return 0;
 #endif
 	case WSKBDIO_COMPLEXBELL:
@@ -409,9 +395,9 @@ hilkbd_callback(struct hildev_softc *hds
 #ifdef WSDISPLAY_COMPAT_RAWKBD
 	if (sc->sc_rawkbd) {
 		uint8_t cbuf[HILBUFSIZE * 2];
-		int c, j, npress;
+		int c, j;
 
-		npress = j = 0;
+		j = 0;
 		for (i = 1, buf++; i < buflen; i++) {
 			hilkbd_decode(sc, *buf++, &type, &key, kbdtype);
 			c = hilkbd_raw[key];
@@ -423,24 +409,12 @@ hilkbd_callback(struct hildev_softc *hds
 			cbuf[j] = c & 0x7f;
 			if (type == WSCONS_EVENT_KEY_UP)
 				cbuf[j] |= 0x80;
-			else {
-				/* remember pressed keys for autorepeat */
-				if (c & 0x80)
-					sc->sc_rep[npress++] = 0xe0;
-				sc->sc_rep[npress++] = c & 0x7f;
-			}
 			j++;
 		}
 
 		s = spltty();
 		wskbd_rawinput(sc->sc_wskbddev, cbuf, j);
 		splx(s);
-		callout_stop(&sc->sc_rawrepeat_ch);
-		sc->sc_nrep = npress;
-		if (npress != 0) {
-			callout_schedule(&sc->sc_rawrepeat_ch,
-			    mstohz(REP_DELAY1));
-		}
 	} else
 #endif
 	{
@@ -485,17 +459,3 @@ hilkbd_is_console(int hil_is_console)
 	seen_hilkbd_console = 1;
 	return 1;
 }
-
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-void
-hilkbd_rawrepeat(void *v)
-{
-	struct hilkbd_softc *sc = v;
-	int s;
-
-	s = spltty();
-	wskbd_rawinput(sc->sc_wskbddev, sc->sc_rep, sc->sc_nrep);
-	splx(s);
-	callout_schedule(&sc->sc_rawrepeat_ch, mstohz(REP_DELAYN));
-}
-#endif

Reply via email to