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