diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2002-11-29 01:00:52 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2002-11-29 01:00:52 +0000 |
commit | 329167638ffe05116d699503dd7f5b4c2cc9b021 (patch) | |
tree | 1c93287cb6629f592114e4df1cfbc67861614153 /sys/arch/sparc64/dev | |
parent | 99328e699f5768ac2189b862432f978ddd7b9114 (diff) |
Upon detection of an international Sun keyboard with a recognized layout,
attach it with the appropriate keymap table, rather than the default KB_US
table.
If this is not the expected behaviour, users can still revert to US layout
via "kbd us" or "wsconsctl -w keyboard.encoding=us".
As the installation media uses the prom console, which will honor the
international keyboard layout, this will definitely help users with
international keyboards and fancy characters in their passwords...
Note that there is still some Sun keyboard tables missing at the moment.
Diffstat (limited to 'sys/arch/sparc64/dev')
-rw-r--r-- | sys/arch/sparc64/dev/comkbd_ebus.c | 35 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/z8530kbd.c | 14 |
2 files changed, 36 insertions, 13 deletions
diff --git a/sys/arch/sparc64/dev/comkbd_ebus.c b/sys/arch/sparc64/dev/comkbd_ebus.c index ec8b943a337..c201ef04436 100644 --- a/sys/arch/sparc64/dev/comkbd_ebus.c +++ b/sys/arch/sparc64/dev/comkbd_ebus.c @@ -1,4 +1,4 @@ -/* $OpenBSD: comkbd_ebus.c,v 1.7 2002/05/29 20:43:43 maja Exp $ */ +/* $OpenBSD: comkbd_ebus.c,v 1.8 2002/11/29 01:00:49 miod Exp $ */ /* * Copyright (c) 2002 Jason L. Wright (jason@thought.net) @@ -232,7 +232,28 @@ comkbd_attach(parent, self, aux) 0, &sc->sc_ioh) != 0) { printf(": can't map register space\n"); return; + } else + printf("\n"); + + if (ISTYPE5(sc->sc_layout)) { + a.keymap = &sunkbd5_keymapdata; +#ifndef SUNKBD5_LAYOUT + if (sc->sc_layout < MAXSUNLAYOUT && + sunkbd_layouts[sc->sc_layout] != -1) + sunkbd5_keymapdata.layout = + sunkbd_layouts[sc->sc_layout]; +#endif + } else { + a.keymap = &sunkbd_keymapdata; +#ifndef SUNKBD_LAYOUT + if (sc->sc_layout < MAXSUNLAYOUT && + sunkbd_layouts[sc->sc_layout] != -1) + sunkbd_keymapdata.layout = + sunkbd_layouts[sc->sc_layout]; +#endif } + a.accessops = &comkbd_accessops; + a.accesscookie = sc; if (console) { comkbd_init(sc); @@ -248,18 +269,8 @@ comkbd_attach(parent, self, aux) COM_WRITE(sc, com_ier, sc->sc_ier); COM_READ(sc, com_iir); COM_WRITE(sc, com_mcr, MCR_IENABLE | MCR_DTR | MCR_RTS); - } else - printf("\n"); - - - a.console = console; - if (ISTYPE5(sc->sc_layout)) { - a.keymap = &sunkbd5_keymapdata; - } else { - a.keymap = &sunkbd_keymapdata; } - a.accessops = &comkbd_accessops; - a.accesscookie = sc; + sc->sc_wskbddev = config_found(self, &a, wskbddevprint); } diff --git a/sys/arch/sparc64/dev/z8530kbd.c b/sys/arch/sparc64/dev/z8530kbd.c index 4a12fbc0c97..2b2a67d8255 100644 --- a/sys/arch/sparc64/dev/z8530kbd.c +++ b/sys/arch/sparc64/dev/z8530kbd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: z8530kbd.c,v 1.12 2002/05/29 20:43:43 maja Exp $ */ +/* $OpenBSD: z8530kbd.c,v 1.13 2002/11/29 01:00:49 miod Exp $ */ /* $NetBSD: z8530tty.c,v 1.77 2001/05/30 15:24:24 lukem Exp $ */ /*- @@ -407,8 +407,20 @@ zskbd_attach(parent, self, aux) a.console = console; if (ISTYPE5(zst->zst_layout)) { a.keymap = &sunkbd5_keymapdata; +#ifndef SUNKBD5_LAYOUT + if (zst->zst_layout < MAXSUNLAYOUT && + sunkbd_layouts[zst->zst_layout] != -1) + sunkbd5_keymapdata.layout = + sunkbd_layouts[zst->zst_layout]; +#endif } else { a.keymap = &sunkbd_keymapdata; +#ifndef SUNKBD_LAYOUT + if (zst->zst_layout < MAXSUNLAYOUT && + sunkbd_layouts[zst->zst_layout] != -1) + sunkbd_keymapdata.layout = + sunkbd_layouts[zst->zst_layout]; +#endif } a.accessops = &zskbd_accessops; a.accesscookie = zst; |