diff options
| author | drochner <drochner@NetBSD.org> | 1998-06-11 22:15:14 +0000 |
|---|---|---|
| committer | drochner <drochner@NetBSD.org> | 1998-06-11 22:15:14 +0000 |
| commit | 68891be537ff49c37f0d1146599bb9b955beff01 (patch) | |
| tree | 79bb6802b0568fa9c3f6f3cc33bec1109b6805aa /sys/dev | |
| parent | 0aa10dad6b65bd8ea089ea23b10311e9ec38625c (diff) | |
implement a way to get raw keyboard data (for X)
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/pckbc/pckbd.c | 19 | ||||
| -rw-r--r-- | sys/dev/wscons/wsconsio.h | 8 | ||||
| -rw-r--r-- | sys/dev/wscons/wskbdvar.h | 4 |
3 files changed, 28 insertions, 3 deletions
diff --git a/sys/dev/pckbc/pckbd.c b/sys/dev/pckbc/pckbd.c index cbfd7930769..e3000caaf7a 100644 --- a/sys/dev/pckbc/pckbd.c +++ b/sys/dev/pckbc/pckbd.c @@ -1,4 +1,4 @@ -/* $NetBSD: pckbd.c,v 1.7 1998/05/03 09:57:50 drochner Exp $ */ +/* $NetBSD: pckbd.c,v 1.8 1998/06/11 22:15:14 drochner Exp $ */ /*- * Copyright (c) 1993, 1994, 1995 Charles Hannum. All rights reserved. @@ -68,6 +68,8 @@ #include "locators.h" +#include "opt_wsdisplay_compat.h" + struct pckbd_internal { int t_isconsole; pckbc_tag_t t_kbctag; @@ -87,6 +89,9 @@ struct pckbd_softc { struct pckbd_internal *id; struct device *sc_wskbddev; +#ifdef WSDISPLAY_COMPAT_RAWKBD + int rawkbd; +#endif }; static int pckbd_is_console __P((pckbc_tag_t, pckbc_slot_t)); @@ -408,6 +413,13 @@ pckbd_input(vsc, data) struct pckbd_softc *sc = vsc; int type, key; +#ifdef WSDISPLAY_COMPAT_RAWKBD + if (sc->rawkbd) { + char d = data; + wskbd_rawinput(sc->sc_wskbddev, &d, 1); + return; + } +#endif if (pckbd_decode(sc->id, data, &type, &key)) wskbd_input(sc->sc_wskbddev, type, key); } @@ -448,6 +460,11 @@ pckbd_ioctl(v, cmd, data, flag, p) #endif #undef d return (0); +#ifdef WSDISPLAY_COMPAT_RAWKBD + case WSKBDIO_SETMODE: + t->t_sc->rawkbd = (*(int *)data == WSKBD_RAW); + return (0); +#endif } return -1; } diff --git a/sys/dev/wscons/wsconsio.h b/sys/dev/wscons/wsconsio.h index 6712c91166c..fc4c5c35014 100644 --- a/sys/dev/wscons/wsconsio.h +++ b/sys/dev/wscons/wsconsio.h @@ -1,4 +1,4 @@ -/* $NetBSD: wsconsio.h,v 1.2 1998/04/07 13:43:17 hannken Exp $ */ +/* $NetBSD: wsconsio.h,v 1.3 1998/06/11 22:15:14 drochner Exp $ */ /* * Copyright (c) 1996, 1997 Christopher G. Demetriou. All rights reserved. @@ -143,6 +143,12 @@ struct wskbd_string_data { #define WSKBDIO_GETSTRING _IOR('W', 17, struct wskbd_string_data) #define WSKBDIO_SETSTRING _IOW('W', 18, struct wskbd_string_data) +/* internal use only */ +#define WSKBDIO_SETMODE _IOW('W', 19, int) +#define WSKBDIO_GETMODE _IOR('W', 20, int) +#define WSKBD_TRANSLATED 0 +#define WSKBD_RAW 1 + /* * Mouse ioctls (32 - 63) */ diff --git a/sys/dev/wscons/wskbdvar.h b/sys/dev/wscons/wskbdvar.h index 1954fc0c3de..0f59c663c3d 100644 --- a/sys/dev/wscons/wskbdvar.h +++ b/sys/dev/wscons/wskbdvar.h @@ -1,4 +1,4 @@ -/* $NetBSD: wskbdvar.h,v 1.3 1998/04/09 13:09:47 hannken Exp $ */ +/* $NetBSD: wskbdvar.h,v 1.4 1998/06/11 22:15:15 drochner Exp $ */ /* * Copyright (c) 1996, 1997 Christopher G. Demetriou. All rights reserved. @@ -72,6 +72,8 @@ int wskbddevprint __P((void *, const char *)); * Callbacks from the keyboard driver to the wskbd interface driver. */ void wskbd_input __P((struct device *kbddev, u_int type, int value)); +/* for WSDISPLAY_COMPAT_RAWKBD */ +void wskbd_rawinput __P((struct device *, char *, int)); /* * Console interface. |
