Support WSDISPLAY_COMPAT_RAWKBD so that this keyboard is usable under X.
This commit is contained in:
parent
766d042b22
commit
50e028653d
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: hpf1275a_tty.c,v 1.4 2005/12/18 23:57:07 uwe Exp $ */
|
/* $NetBSD: hpf1275a_tty.c,v 1.5 2006/03/14 22:59:32 uwe Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2004 Valeriy E. Ushakov
|
* Copyright (c) 2004 Valeriy E. Ushakov
|
||||||
|
@ -28,7 +28,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: hpf1275a_tty.c,v 1.4 2005/12/18 23:57:07 uwe Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: hpf1275a_tty.c,v 1.5 2006/03/14 22:59:32 uwe Exp $");
|
||||||
|
|
||||||
|
#include "opt_wsdisplay_compat.h"
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/kernel.h>
|
#include <sys/kernel.h>
|
||||||
|
@ -61,7 +63,9 @@ struct hpf1275a_softc {
|
||||||
struct tty *sc_tp; /* back reference to the tty */
|
struct tty *sc_tp; /* back reference to the tty */
|
||||||
struct device *sc_wskbd; /* wskbd child */
|
struct device *sc_wskbd; /* wskbd child */
|
||||||
int sc_enabled;
|
int sc_enabled;
|
||||||
|
#ifdef WSDISPLAY_COMPAT_RAWKBD
|
||||||
|
int sc_rawkbd;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -262,6 +266,9 @@ hpf1275a_attach(struct device *parent, struct device *self, void *aux)
|
||||||
wska.accesscookie = sc;
|
wska.accesscookie = sc;
|
||||||
|
|
||||||
sc->sc_enabled = 0;
|
sc->sc_enabled = 0;
|
||||||
|
#ifdef WSDISPLAY_COMPAT_RAWKBD
|
||||||
|
sc->sc_rawkbd = 0;
|
||||||
|
#endif
|
||||||
sc->sc_wskbd = config_found(self, &wska, wskbddevprint);
|
sc->sc_wskbd = config_found(self, &wska, wskbddevprint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,7 +380,17 @@ hpf1275a_input(int c, struct tty *tp)
|
||||||
}
|
}
|
||||||
|
|
||||||
KASSERT(sc->sc_wskbd != NULL);
|
KASSERT(sc->sc_wskbd != NULL);
|
||||||
wskbd_input(sc->sc_wskbd, type, xtscan);
|
|
||||||
|
#ifdef WSDISPLAY_COMPAT_RAWKBD
|
||||||
|
if (sc->sc_rawkbd) {
|
||||||
|
u_char data[16];
|
||||||
|
int n;
|
||||||
|
|
||||||
|
n = pckbd_encode(type, xtscan, data);
|
||||||
|
wskbd_rawinput(sc->sc_wskbd, data, n);
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
wskbd_input(sc->sc_wskbd, type, xtscan);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
@ -403,7 +420,9 @@ static int
|
||||||
hpf1275a_wskbd_ioctl(void *self, u_long cmd, caddr_t data, int flag,
|
hpf1275a_wskbd_ioctl(void *self, u_long cmd, caddr_t data, int flag,
|
||||||
struct lwp *l)
|
struct lwp *l)
|
||||||
{
|
{
|
||||||
/* struct hpf1275a_softc *sc = (struct hpf1275a_softc *)self; */
|
#ifdef WSDISPLAY_COMPAT_RAWKBD
|
||||||
|
struct hpf1275a_softc *sc = (struct hpf1275a_softc *)self;
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case WSKBDIO_GTYPE:
|
case WSKBDIO_GTYPE:
|
||||||
|
@ -414,6 +433,12 @@ hpf1275a_wskbd_ioctl(void *self, u_long cmd, caddr_t data, int flag,
|
||||||
*(int *)data = 0; /* this keyboard has no leds */
|
*(int *)data = 0; /* this keyboard has no leds */
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
|
#ifdef WSDISPLAY_COMPAT_RAWKBD
|
||||||
|
case WSKBDIO_SETMODE:
|
||||||
|
sc->sc_rawkbd = (*(int *)data == WSKBD_RAW);
|
||||||
|
return (0);
|
||||||
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return (EPASSTHROUGH);
|
return (EPASSTHROUGH);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue