implement a way to get raw keyboard data (for X)

This commit is contained in:
drochner 1998-06-11 22:15:14 +00:00
parent 0aa10dad6b
commit 68891be537
3 changed files with 28 additions and 3 deletions

View File

@ -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;
}

View File

@ -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)
*/

View File

@ -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.