Default the HIL keyboard to "US ASCII". This should fix a bug where
an unrecognized keyboard produced garbage on keypresses in the kernel, but worked in the boot program (which has this default). The bug is that the keymap pointers are unitialized.
This commit is contained in:
parent
534c6caa6b
commit
01d74572dd
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: hil.c,v 1.28 1996/10/13 03:14:13 christos Exp $ */
|
/* $NetBSD: hil.c,v 1.29 1996/10/14 07:09:41 thorpej Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 University of Utah.
|
* Copyright (c) 1988 University of Utah.
|
||||||
|
@ -111,6 +111,10 @@ hilsoftinit(unit, hilbase)
|
||||||
register struct hil_softc *hilp = &hil_softc[unit];
|
register struct hil_softc *hilp = &hil_softc[unit];
|
||||||
register int i;
|
register int i;
|
||||||
|
|
||||||
|
/* XXX ITE interface */
|
||||||
|
extern char *us_keymap, *us_shiftmap, *us_ctrlmap,
|
||||||
|
*us_ctrlshiftmap, **us_stringmap;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (hildebug & HDB_FOLLOW)
|
if (hildebug & HDB_FOLLOW)
|
||||||
printf("hilsoftinit(%d, %x)\n", unit, hilbase);
|
printf("hilsoftinit(%d, %x)\n", unit, hilbase);
|
||||||
|
@ -125,7 +129,6 @@ hilsoftinit(unit, hilbase)
|
||||||
hilp->hl_cmdbp = hilp->hl_cmdbuf;
|
hilp->hl_cmdbp = hilp->hl_cmdbuf;
|
||||||
hilp->hl_pollbp = hilp->hl_pollbuf;
|
hilp->hl_pollbp = hilp->hl_pollbuf;
|
||||||
hilp->hl_kbddev = 0;
|
hilp->hl_kbddev = 0;
|
||||||
hilp->hl_kbdlang = KBD_DEFAULT;
|
|
||||||
hilp->hl_kbdflags = 0;
|
hilp->hl_kbdflags = 0;
|
||||||
/*
|
/*
|
||||||
* Clear all queues and device associations with queues
|
* Clear all queues and device associations with queues
|
||||||
|
@ -138,6 +141,18 @@ hilsoftinit(unit, hilbase)
|
||||||
for (i = 0; i < NHILD; i++)
|
for (i = 0; i < NHILD; i++)
|
||||||
hilp->hl_device[i].hd_qmask = 0;
|
hilp->hl_device[i].hd_qmask = 0;
|
||||||
hilp->hl_device[HILLOOPDEV].hd_flags = (HIL_ALIVE|HIL_PSEUDO);
|
hilp->hl_device[HILLOOPDEV].hd_flags = (HIL_ALIVE|HIL_PSEUDO);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set up default keyboard language. We always default
|
||||||
|
* to US ASCII - it seems to work OK for non-recognized
|
||||||
|
* keyboards.
|
||||||
|
*/
|
||||||
|
hilp->hl_kbdlang = KBD_DEFAULT;
|
||||||
|
kbd_keymap = us_keymap; /* XXX */
|
||||||
|
kbd_shiftmap = us_shiftmap; /* XXX */
|
||||||
|
kbd_ctrlmap = us_ctrlmap; /* XXX */
|
||||||
|
kbd_ctrlshiftmap = us_ctrlshiftmap; /* XXX */
|
||||||
|
kbd_stringmap = us_stringmap; /* XXX */
|
||||||
}
|
}
|
||||||
|
|
||||||
hilinit(unit, hilbase)
|
hilinit(unit, hilbase)
|
||||||
|
@ -1387,7 +1402,7 @@ hilconfig(hilp)
|
||||||
if (hilp->hl_kbdlang != KBD_SPECIAL) {
|
if (hilp->hl_kbdlang != KBD_SPECIAL) {
|
||||||
struct kbdmap *km;
|
struct kbdmap *km;
|
||||||
|
|
||||||
for (km = kbd_map; km->kbd_code; km++)
|
for (km = kbd_map; km->kbd_code; km++) {
|
||||||
if (km->kbd_code == db) {
|
if (km->kbd_code == db) {
|
||||||
hilp->hl_kbdlang = db;
|
hilp->hl_kbdlang = db;
|
||||||
/* XXX */
|
/* XXX */
|
||||||
|
@ -1396,7 +1411,14 @@ hilconfig(hilp)
|
||||||
kbd_ctrlmap = km->kbd_ctrlmap;
|
kbd_ctrlmap = km->kbd_ctrlmap;
|
||||||
kbd_ctrlshiftmap = km->kbd_ctrlshiftmap;
|
kbd_ctrlshiftmap = km->kbd_ctrlshiftmap;
|
||||||
kbd_stringmap = km->kbd_stringmap;
|
kbd_stringmap = km->kbd_stringmap;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (km->kbd_code == 0) {
|
||||||
|
printf(
|
||||||
|
"hilconfig: unknown keyboard type 0x%x, using default\n",
|
||||||
|
db);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
splx(s);
|
splx(s);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue