keyboard
if (keyboard[index] == NULL)
keyboard[index] = kbd;
keyboard[index] = kbd;
if (keyboard[kbd->kb_index] != kbd) {
keyboard[kbd->kb_index] = NULL;
if (keyboard[i] == NULL)
if (!KBD_IS_VALID(keyboard[i]))
if (strcmp("*", driver) && strcmp(keyboard[i]->kb_name, driver))
if ((unit != -1) && (keyboard[i]->kb_unit != unit))
if (pref <= keyboard[i]->kb_pref) {
pref = keyboard[i]->kb_pref;
if (KBD_IS_BUSY(keyboard[index])) {
keyboard[index]->kb_token = id;
KBD_BUSY(keyboard[index]);
keyboard[index]->kb_callback.kc_func = func;
keyboard[index]->kb_callback.kc_arg = arg;
kbd_clear_state(keyboard[index]);
if (keyboard[index] == NULL) {
if (!KBD_IS_VALID(keyboard[index])) {
kbd = keyboard[index];
if (keyboard[kbd->kb_index] != kbd) {
if (keyboard[kbd->kb_index] != kbd) {
static keyboard_t *keyboard[KBD_MAXKEYBOARDS];
typedef struct keyboard keyboard_t;
(void *)&sc->keyboard, sckbdevent, sc);
kbd_release(sc->kbd, (void *)&sc->keyboard);
sc->keyboard = i;
error = kbd_release(sc->kbd, (void *)&sc->keyboard);
sc->keyboard = -1;
sc->keyboard = sc_allocate_keyboard(sc, -1);
if (sc->keyboard >= 0) {
sc->kbd = kbd_get_keyboard(sc->keyboard);
if (sc->keyboard >= 0) {
DPRINTF(5, ("sc%d: releasing kbd%d\n", unit, sc->keyboard));
i = kbd_release(sc->kbd, (void *)&sc->keyboard);
sc->keyboard = sc_allocate_keyboard(sc, unit);
DPRINTF(1, ("sc%d: keyboard %d\n", unit, sc->keyboard));
sc->kbd = kbd_get_keyboard(sc->keyboard);
if (sc->keyboard >= 0)
kbd_release(sc->kbd, &sc->keyboard);
sc->keyboard = -1;
idx0 = kbd_allocate("kbdmux", -1, (void *)&sc->keyboard, sckbdevent, sc);
idx0 = kbd_allocate("*", unit, (void *)&sc->keyboard, sckbdevent, sc);
if (sc->keyboard >= 0)
kprintf(", kbd%d", sc->keyboard);
sc->keyboard = -1;
kbd_release(thiskbd, (void *)&sc->keyboard);
struct keyboard;
int keyboard; /* -1 if unavailable */
struct keyboard *kbd;
sc_softc_t *sc_find_softc(struct video_adapter *adp, struct keyboard *kbd);
sc->keyboard = -1;
sc_find_softc(struct video_adapter *adp, struct keyboard *kbd)
int keyboard(void) __dead2;
keyboard();