summaryrefslogtreecommitdiff
path: root/usr/src/cmd/loadkeys
diff options
context:
space:
mode:
authorstevel@tonic-gate <none@none>2005-06-14 00:00:00 -0700
committerstevel@tonic-gate <none@none>2005-06-14 00:00:00 -0700
commit7c478bd95313f5f23a4c958a745db2134aa03244 (patch)
treec871e58545497667cbb4b0a4f2daf204743e1fe7 /usr/src/cmd/loadkeys
downloadillumos-joyent-7c478bd95313f5f23a4c958a745db2134aa03244.tar.gz
OpenSolaris Launch
Diffstat (limited to 'usr/src/cmd/loadkeys')
-rw-r--r--usr/src/cmd/loadkeys/Makefile85
-rw-r--r--usr/src/cmd/loadkeys/dumpkeys.c441
-rw-r--r--usr/src/cmd/loadkeys/loadkeys.y1014
-rw-r--r--usr/src/cmd/loadkeys/set_keyboard_layout114
-rw-r--r--usr/src/cmd/loadkeys/type_101/Makefile214
-rw-r--r--usr/src/cmd/loadkeys/type_101/canadian_french290
-rw-r--r--usr/src/cmd/loadkeys/type_101/czech95
-rw-r--r--usr/src/cmd/loadkeys/type_101/denmark90
-rw-r--r--usr/src/cmd/loadkeys/type_101/france89
-rw-r--r--usr/src/cmd/loadkeys/type_101/germany90
-rw-r--r--usr/src/cmd/loadkeys/type_101/greece89
-rw-r--r--usr/src/cmd/loadkeys/type_101/hungary96
-rw-r--r--usr/src/cmd/loadkeys/type_101/italy90
-rw-r--r--usr/src/cmd/loadkeys/type_101/j310093
-rw-r--r--usr/src/cmd/loadkeys/type_101/japan89
-rw-r--r--usr/src/cmd/loadkeys/type_101/korea89
-rw-r--r--usr/src/cmd/loadkeys/type_101/latvia91
-rw-r--r--usr/src/cmd/loadkeys/type_101/lithuania91
-rw-r--r--usr/src/cmd/loadkeys/type_101/neaten.sh102
-rw-r--r--usr/src/cmd/loadkeys/type_101/netherlands90
-rw-r--r--usr/src/cmd/loadkeys/type_101/norway90
-rw-r--r--usr/src/cmd/loadkeys/type_101/poland95
-rw-r--r--usr/src/cmd/loadkeys/type_101/portugal90
-rw-r--r--usr/src/cmd/loadkeys/type_101/reset187
-rw-r--r--usr/src/cmd/loadkeys/type_101/russia89
-rw-r--r--usr/src/cmd/loadkeys/type_101/spain90
-rw-r--r--usr/src/cmd/loadkeys/type_101/sweden90
-rw-r--r--usr/src/cmd/loadkeys/type_101/swiss_french90
-rw-r--r--usr/src/cmd/loadkeys/type_101/swiss_german90
-rw-r--r--usr/src/cmd/loadkeys/type_101/taiwan89
-rw-r--r--usr/src/cmd/loadkeys/type_101/turkey95
-rw-r--r--usr/src/cmd/loadkeys/type_101/uk89
-rw-r--r--usr/src/cmd/loadkeys/type_101/us89
-rw-r--r--usr/src/cmd/loadkeys/type_4/Makefile273
-rw-r--r--usr/src/cmd/loadkeys/type_4/belgium_france71
-rw-r--r--usr/src/cmd/loadkeys/type_4/canada74
-rw-r--r--usr/src/cmd/loadkeys/type_4/canadian_french_569
-rw-r--r--usr/src/cmd/loadkeys/type_4/canadian_french_5_tbits576
-rw-r--r--usr/src/cmd/loadkeys/type_4/canadian_french_hobo75
-rw-r--r--usr/src/cmd/loadkeys/type_4/czech_567
-rw-r--r--usr/src/cmd/loadkeys/type_4/denmark72
-rw-r--r--usr/src/cmd/loadkeys/type_4/denmark_565
-rw-r--r--usr/src/cmd/loadkeys/type_4/denmark_hobo73
-rw-r--r--usr/src/cmd/loadkeys/type_4/france_572
-rw-r--r--usr/src/cmd/loadkeys/type_4/france_hobo79
-rw-r--r--usr/src/cmd/loadkeys/type_4/germany71
-rw-r--r--usr/src/cmd/loadkeys/type_4/germany_572
-rw-r--r--usr/src/cmd/loadkeys/type_4/germany_hobo79
-rw-r--r--usr/src/cmd/loadkeys/type_4/hungary_572
-rw-r--r--usr/src/cmd/loadkeys/type_4/italy71
-rw-r--r--usr/src/cmd/loadkeys/type_4/italy_562
-rw-r--r--usr/src/cmd/loadkeys/type_4/italy_hobo70
-rw-r--r--usr/src/cmd/loadkeys/type_4/japan49
-rw-r--r--usr/src/cmd/loadkeys/type_4/japan_565
-rw-r--r--usr/src/cmd/loadkeys/type_4/japan_hobo76
-rw-r--r--usr/src/cmd/loadkeys/type_4/korea157
-rw-r--r--usr/src/cmd/loadkeys/type_4/korea_542
-rw-r--r--usr/src/cmd/loadkeys/type_4/korea_hobo58
-rw-r--r--usr/src/cmd/loadkeys/type_4/netherlands72
-rw-r--r--usr/src/cmd/loadkeys/type_4/netherlands_571
-rw-r--r--usr/src/cmd/loadkeys/type_4/netherlands_hobo78
-rw-r--r--usr/src/cmd/loadkeys/type_4/norway68
-rw-r--r--usr/src/cmd/loadkeys/type_4/norway_565
-rw-r--r--usr/src/cmd/loadkeys/type_4/norway_hobo73
-rw-r--r--usr/src/cmd/loadkeys/type_4/poland_569
-rw-r--r--usr/src/cmd/loadkeys/type_4/portugal71
-rw-r--r--usr/src/cmd/loadkeys/type_4/portugal_564
-rw-r--r--usr/src/cmd/loadkeys/type_4/portugal_hobo72
-rw-r--r--usr/src/cmd/loadkeys/type_4/reset157
-rw-r--r--usr/src/cmd/loadkeys/type_4/russia_550
-rw-r--r--usr/src/cmd/loadkeys/type_4/spain_565
-rw-r--r--usr/src/cmd/loadkeys/type_4/spain_hobo73
-rw-r--r--usr/src/cmd/loadkeys/type_4/spain_latin_america71
-rw-r--r--usr/src/cmd/loadkeys/type_4/sweden_565
-rw-r--r--usr/src/cmd/loadkeys/type_4/sweden_finland71
-rw-r--r--usr/src/cmd/loadkeys/type_4/sweden_hobo73
-rw-r--r--usr/src/cmd/loadkeys/type_4/swiss_french71
-rw-r--r--usr/src/cmd/loadkeys/type_4/swiss_french_567
-rw-r--r--usr/src/cmd/loadkeys/type_4/swiss_french_hobo75
-rw-r--r--usr/src/cmd/loadkeys/type_4/swiss_german71
-rw-r--r--usr/src/cmd/loadkeys/type_4/swiss_german_567
-rw-r--r--usr/src/cmd/loadkeys/type_4/swiss_german_hobo75
-rw-r--r--usr/src/cmd/loadkeys/type_4/taiwan154
-rw-r--r--usr/src/cmd/loadkeys/type_4/taiwan_541
-rw-r--r--usr/src/cmd/loadkeys/type_4/taiwan_hobo57
-rw-r--r--usr/src/cmd/loadkeys/type_4/uk71
-rw-r--r--usr/src/cmd/loadkeys/type_4/uk_549
-rw-r--r--usr/src/cmd/loadkeys/type_4/uk_hobo65
-rw-r--r--usr/src/cmd/loadkeys/type_4/us71
-rw-r--r--usr/src/cmd/loadkeys/type_4/us101a_pc99
-rw-r--r--usr/src/cmd/loadkeys/type_4/us_585
-rw-r--r--usr/src/cmd/loadkeys/type_4/us_hobo90
-rw-r--r--usr/src/cmd/loadkeys/type_6/Makefile127
-rw-r--r--usr/src/cmd/loadkeys/type_6/denmark65
-rw-r--r--usr/src/cmd/loadkeys/type_6/finnish65
-rw-r--r--usr/src/cmd/loadkeys/type_6/france73
-rw-r--r--usr/src/cmd/loadkeys/type_6/germany73
-rw-r--r--usr/src/cmd/loadkeys/type_6/italy63
-rw-r--r--usr/src/cmd/loadkeys/type_6/japan65
-rw-r--r--usr/src/cmd/loadkeys/type_6/korea47
-rw-r--r--usr/src/cmd/loadkeys/type_6/netherlands71
-rw-r--r--usr/src/cmd/loadkeys/type_6/norway65
-rw-r--r--usr/src/cmd/loadkeys/type_6/portugal65
-rw-r--r--usr/src/cmd/loadkeys/type_6/reset284
-rw-r--r--usr/src/cmd/loadkeys/type_6/spain65
-rw-r--r--usr/src/cmd/loadkeys/type_6/sweden65
-rw-r--r--usr/src/cmd/loadkeys/type_6/swiss_french67
-rw-r--r--usr/src/cmd/loadkeys/type_6/swiss_german68
-rw-r--r--usr/src/cmd/loadkeys/type_6/taiwan46
-rw-r--r--usr/src/cmd/loadkeys/type_6/uk49
-rw-r--r--usr/src/cmd/loadkeys/type_6/us85
111 files changed, 10569 insertions, 0 deletions
diff --git a/usr/src/cmd/loadkeys/Makefile b/usr/src/cmd/loadkeys/Makefile
new file mode 100644
index 0000000000..f58a966765
--- /dev/null
+++ b/usr/src/cmd/loadkeys/Makefile
@@ -0,0 +1,85 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# cmd/loadkeys/Makefile
+#
+
+PROG= loadkeys dumpkeys
+sparc_SUBDIRS= type_4 type_6 type_101
+ppc_SUBDIRS= type_101
+i386_SUBDIRS= type_6 type_101
+SUBDIRS= $($(MACH)_SUBDIRS)
+SRCS= $(PROG:%=%.c)
+
+ROOTHELPER= $(ROOTLIB)/set_keyboard_layout
+sparc_EXTRA_INSTALL_TARGETS=
+i386_EXTRA_INSTALL_TARGETS=$(ROOTHELPER)
+EXTRA_INSTALL_TARGETS= $($(MACH)_EXTRA_INSTALL_TARGETS)
+
+include ../Makefile.cmd
+
+.KEEP_STATE:
+
+.PARALLEL: $(SUBDIRS)
+
+all: $(PROG) $(SUBDIRS)
+
+install: $(PROG) $(ROOTPROG) $(SUBDIRS) $(EXTRA_INSTALL_TARGETS)
+
+$(ROOTLIB)/%: %
+ $(INS.file)
+
+# explicit yacc work for the NSE
+#
+loadkeys.c: loadkeys.y
+ $(YACC.y) loadkeys.y
+ mv y.tab.c $@
+
+loadkeys: loadkeys.c
+ $(LINK.c) -o $@ loadkeys.c $(LDLIBS)
+ $(POST_PROCESS)
+
+all:= TARGET= all
+install:= TARGET= install
+clean:= TARGET= clean
+clobber:= TARGET= clobber
+lint:= TARGET= lint
+_msg:= TARGET= catalog
+
+clobber: $(SUBDIRS)
+ $(RM) $(CLOBBERFILES)
+
+clean: $(SUBDIRS)
+ $(RM) loadkeys.c
+
+lint:
+ $(LINT.c) dumpkeys.c $(LDLIBS)
+
+$(SUBDIRS): FRC
+ @cd $@; pwd; $(MAKE) $(TARGET)
+
+FRC:
diff --git a/usr/src/cmd/loadkeys/dumpkeys.c b/usr/src/cmd/loadkeys/dumpkeys.c
new file mode 100644
index 0000000000..b200d5c73a
--- /dev/null
+++ b/usr/src/cmd/loadkeys/dumpkeys.c
@@ -0,0 +1,441 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+#ifndef lint
+#ident "%Z%%M% %I% %E% SMI"
+#endif
+
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
+ */
+
+#include <sys/types.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/kbd.h>
+#include <sys/kbio.h>
+#include <errno.h>
+
+typedef enum {
+ SM_INVALID, /* this shift mask is invalid for this keyboard */
+ SM_NORMAL, /* "normal", valid shift mask */
+ SM_NUMLOCK, /* "Num Lock" shift mask */
+ SM_UP /* "Up" shift mask */
+} smtype_t;
+
+typedef struct {
+ char *sm_name;
+ int sm_mask;
+ smtype_t sm_type;
+} smentry_t;
+
+
+smentry_t shiftmasks[] = {
+ { "base", 0, SM_NORMAL },
+ { "shift", SHIFTMASK, SM_NORMAL },
+ { "caps", CAPSMASK, SM_NORMAL },
+ { "ctrl", CTRLMASK, SM_NORMAL },
+ { "altg", ALTGRAPHMASK, SM_NORMAL },
+ { "numl", NUMLOCKMASK, SM_NUMLOCK },
+ { "up", UPMASK, SM_UP },
+};
+
+#define NSHIFTS (sizeof (shiftmasks) / sizeof (shiftmasks[0]))
+
+static void printentry(struct kiockeymap *kio);
+static void printchar(int character, int delim);
+
+/*ARGSUSED*/
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ register int kbdfd;
+ register int keystation;
+ register int shift;
+ int ktype;
+ struct kiockeymap keyentry[NSHIFTS];
+ register int allsame;
+
+ if ((kbdfd = open("/dev/kbd", O_WRONLY)) < 0) {
+ perror("dumpkeys: /dev/kbd");
+ return (1);
+ }
+ if (ioctl(kbdfd, KIOCTYPE, &ktype) < 0) {
+ perror("dumpkeys: ioctl(KIOCTYPE)");
+ return (1);
+ }
+ /* if no keyboard detected, or ascii terminal, exit silently */
+ if (ktype == KB_ASCII || ktype < 0)
+ exit(0);
+
+ /*
+ * See which shift masks are valid for this keyboard.
+ * We do that by trying to get the entry for keystation 0 and that
+ * shift mask; if the "ioctl" fails, we assume it's because the shift
+ * mask is invalid.
+ */
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ keyentry[shift].kio_tablemask =
+ shiftmasks[shift].sm_mask;
+ keyentry[shift].kio_station = 0;
+ if (ioctl(kbdfd, KIOCGKEY, &keyentry[shift]) < 0)
+ shiftmasks[shift].sm_type = SM_INVALID;
+ }
+
+ /*
+ * Loop until we get an EINVAL, so we don't have to know
+ * how big the table might be.
+ */
+ for (keystation = 0; ; keystation++) {
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ if (shiftmasks[shift].sm_type != SM_INVALID) {
+ keyentry[shift].kio_tablemask =
+ shiftmasks[shift].sm_mask;
+ keyentry[shift].kio_station = keystation;
+ if (ioctl(kbdfd, KIOCGKEY,
+ &keyentry[shift]) < 0) {
+ if (errno == EINVAL)
+ return (0);
+ perror("dumpkeys: KIOCGKEY");
+ return (1);
+ }
+ }
+ }
+
+ (void) printf("key %d\t", keystation);
+
+ /*
+ * See if all the "normal" entries (all but the Num Lock and Up
+ * entries) are the same.
+ */
+ allsame = 1;
+ for (shift = 1; shift < NSHIFTS; shift++) {
+ if (shiftmasks[shift].sm_type == SM_NORMAL) {
+ if (keyentry[0].kio_entry
+ != keyentry[shift].kio_entry) {
+ allsame = 0;
+ break;
+ }
+ }
+ }
+
+ if (allsame) {
+ /*
+ * All of the "normal" entries are the same; just print
+ * "all".
+ */
+ (void) printf(" all ");
+ printentry(&keyentry[0]);
+ } else {
+ /*
+ * The normal entries aren't all the same; print them
+ * individually.
+ */
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ if (shiftmasks[shift].sm_type == SM_NORMAL) {
+ (void) printf(" %s ",
+ shiftmasks[shift].sm_name);
+ printentry(&keyentry[shift]);
+ }
+ }
+ }
+ if (allsame && keyentry[0].kio_entry == HOLE) {
+ /*
+ * This key is a "hole"; if either the Num Lock or Up
+ * entry isn't a "hole", print it.
+ */
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ switch (shiftmasks[shift].sm_type) {
+
+ case SM_NUMLOCK:
+ case SM_UP:
+ if (keyentry[shift].kio_entry
+ != HOLE) {
+ (void) printf(" %s ",
+ shiftmasks[shift].sm_name);
+ printentry(&keyentry[shift]);
+ }
+ break;
+ }
+ }
+ } else {
+ /*
+ * This entry isn't a "hole"; if the Num Lock entry
+ * isn't NONL (i.e, if Num Lock actually does
+ * something) print it, and if the Up entry isn't NOP
+ * (i.e., if up transitions on this key actually do
+ * something) print it.
+ */
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ switch (shiftmasks[shift].sm_type) {
+
+ case SM_NUMLOCK:
+ if (keyentry[shift].kio_entry
+ != NONL) {
+ (void) printf(" %s ",
+ shiftmasks[shift].sm_name);
+ printentry(&keyentry[shift]);
+ }
+ break;
+
+ case SM_UP:
+ if (keyentry[shift].kio_entry
+ != NOP) {
+ (void) printf(" %s ",
+ shiftmasks[shift].sm_name);
+ printentry(&keyentry[shift]);
+ }
+ break;
+ }
+ }
+ }
+ (void) printf("\n");
+ }
+}
+
+static char *shiftkeys[] = {
+ "capslock",
+ "shiftlock",
+ "leftshift",
+ "rightshift",
+ "leftctrl",
+ "rightctrl",
+ "meta", /* not used */
+ "top", /* not used */
+ "cmd", /* reserved */
+ "altgraph",
+ "alt",
+ "numlock",
+};
+
+#define NSHIFTKEYS (sizeof (shiftkeys) / sizeof (shiftkeys[0]))
+
+static char *buckybits[] = {
+ "metabit",
+ "systembit",
+};
+
+#define NBUCKYBITS (sizeof (buckybits) / sizeof (buckybits[0]))
+
+static char *funnies[] = {
+ "nop",
+ "oops",
+ "hole",
+ "reset",
+ "error",
+ "idle",
+ "compose",
+ "nonl",
+};
+
+#define NFUNNIES (sizeof (funnies) / sizeof (funnies[0]))
+
+static char *fa_class[] = {
+ "fa_umlaut",
+ "fa_cflex",
+ "fa_tilde",
+ "fa_cedilla",
+ "fa_acute",
+ "fa_grave",
+};
+
+#define NFA_CLASS (sizeof (fa_class) / sizeof (fa_class[0]))
+
+typedef struct {
+ char *string;
+ char *name;
+} builtin_string_t;
+
+builtin_string_t builtin_strings[] = {
+ { "\033[H", "homearrow" },
+ { "\033[A", "uparrow" },
+ { "\033[B", "downarrow" },
+ { "\033[D", "leftarrow" },
+ { "\033[C", "rightarrow" },
+};
+
+#define NBUILTIN_STRINGS (sizeof (builtin_strings) / \
+ sizeof (builtin_strings[0]))
+
+static char *fkeysets[] = {
+ "lf",
+ "rf",
+ "tf",
+ "bf",
+};
+
+#define NFKEYSETS (sizeof (fkeysets) / sizeof (fkeysets[0]))
+
+static char *padkeys[] = {
+ "padequal",
+ "padslash",
+ "padstar",
+ "padminus",
+ "padsep",
+ "pad7",
+ "pad8",
+ "pad9",
+ "padplus",
+ "pad4",
+ "pad5",
+ "pad6",
+ "pad1",
+ "pad2",
+ "pad3",
+ "pad0",
+ "paddot",
+ "padenter",
+};
+
+#define NPADKEYS (sizeof (padkeys) / sizeof (padkeys[0]))
+
+static void
+printentry(kio)
+ register struct kiockeymap *kio;
+{
+ register int entry = (kio->kio_entry & 0x1F);
+ register int fkeyset;
+ register int i;
+ register int c;
+
+ switch (kio->kio_entry >> 8) {
+
+ case 0x0:
+ if (kio->kio_entry == '"')
+ (void) printf("'\"'"); /* special case */
+ else if (kio->kio_entry == ' ')
+ (void) printf("' '"); /* special case */
+ else
+ printchar((int)kio->kio_entry, '\'');
+ break;
+
+ case SHIFTKEYS >> 8:
+ if (entry < NSHIFTKEYS)
+ (void) printf("shiftkeys+%s", shiftkeys[entry]);
+ else
+ (void) printf("%#4x", kio->kio_entry);
+ break;
+
+ case BUCKYBITS >> 8:
+ if (entry < NBUCKYBITS)
+ (void) printf("buckybits+%s", buckybits[entry]);
+ else
+ (void) printf("%#4x", kio->kio_entry);
+ break;
+
+ case FUNNY >> 8:
+ if (entry < NFUNNIES)
+ (void) printf("%s", funnies[entry]);
+ else
+ (void) printf("%#4x", kio->kio_entry);
+ break;
+
+ case FA_CLASS >> 8:
+ if (entry < NFA_CLASS)
+ (void) printf("%s", fa_class[entry]);
+ else
+ (void) printf("%#4x", kio->kio_entry);
+ break;
+
+ case STRING >> 8:
+ if (entry < NBUILTIN_STRINGS && strncmp(kio->kio_string,
+ builtin_strings[entry].string, KTAB_STRLEN) == 0)
+ (void) printf("string+%s", builtin_strings[entry].name);
+ else {
+ (void) printf("\"");
+ for (i = 0;
+ i < KTAB_STRLEN && (c = kio->kio_string[i]) != '\0';
+ i++)
+ printchar(c, '"');
+ (void) printf("\"");
+ }
+ break;
+
+ case FUNCKEYS >> 8:
+ fkeyset = (int)(kio->kio_entry & 0xF0) >> 4;
+ if (fkeyset < NFKEYSETS)
+ (void) printf("%s(%d)", fkeysets[fkeyset],
+ (entry&0x0F) + 1);
+ else
+ (void) printf("%#4x", kio->kio_entry);
+ break;
+
+ case PADKEYS >> 8:
+ if (entry < NPADKEYS)
+ (void) printf("%s", padkeys[entry]);
+ else
+ (void) printf("%#4x", kio->kio_entry);
+ break;
+
+ default:
+ (void) printf("%#4x", kio->kio_entry);
+ break;
+ }
+}
+
+static void
+printchar(character, delim)
+ int character;
+ int delim;
+{
+ switch (character) {
+
+ case '\n':
+ (void) printf("'\\n'");
+ break;
+
+ case '\t':
+ (void) printf("'\\t'");
+ break;
+
+ case '\b':
+ (void) printf("'\\b'");
+ break;
+
+ case '\r':
+ (void) printf("'\\r'");
+ break;
+
+ case '\v':
+ (void) printf("'\\v'");
+ break;
+
+ case '\\':
+ (void) printf("'\\\\'");
+ break;
+
+ default:
+ if (isprint(character)) {
+ if (character == delim)
+ (void) printf("'\\'");
+ (void) printf("%c", character);
+ } else {
+ if (character < 040)
+ (void) printf("^%c", character + 0100);
+ else
+ (void) printf("'\\%.3o'", character);
+ }
+ break;
+ }
+}
diff --git a/usr/src/cmd/loadkeys/loadkeys.y b/usr/src/cmd/loadkeys/loadkeys.y
new file mode 100644
index 0000000000..2795f1f7bf
--- /dev/null
+++ b/usr/src/cmd/loadkeys/loadkeys.y
@@ -0,0 +1,1014 @@
+%{
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+#ifndef lint
+#pragma ident "%Z%%M% %I% %E% SMI"
+#endif
+
+/*
+ * Copyright (c) 1999 by Sun Microsystems, Inc.
+ * All rights reserved.
+ */
+
+#include <sys/param.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <search.h>
+#include <string.h>
+#include <malloc.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/kbd.h>
+#include <sys/kbio.h>
+
+#define ALL -1 /* special symbol for all tables */
+
+/*
+ * SunOS 4.x and Solaris 2.[1234] put Type 4 key tables into
+ * the keytables directory with no type qualification.
+ * If we're a SPARC, we might be using an NFS server that
+ * doesn't have the new type-qualified directories.
+ * (loadkeys wasn't used on non-SPARCs in 2.[1234].)
+ */
+#ifdef sparc
+#define COMPATIBILITY_DIR
+#endif
+
+static char keytable_dir[] = "/usr/share/lib/keytables/type_%d/";
+#ifdef COMPATIBILITY_DIR
+static char keytable_dir2[] = "/usr/share/lib/keytables/";
+#endif
+static char layout_prefix[] = "layout_";
+
+struct keyentry {
+ struct keyentry *ke_next;
+ struct kiockeymap ke_entry;
+};
+
+typedef struct keyentry keyentry;
+
+static keyentry *firstentry;
+static keyentry *lastentry;
+
+struct dupentry {
+ struct dupentry *de_next;
+ int de_station;
+ int de_otherstation;
+};
+
+typedef struct dupentry dupentry;
+
+static dupentry *firstduplicate;
+static dupentry *lastduplicate;
+
+static dupentry *firstswap;
+static dupentry *lastswap;
+
+static char *infilename;
+static FILE *infile;
+static int lineno;
+static int begline;
+
+static char *strings[16] = {
+ "\033[H", /* HOMEARROW */
+ "\033[A", /* UPARROW */
+ "\033[B", /* DOWNARROW */
+ "\033[D", /* LEFTARROW */
+ "\033[C", /* RIGHTARROW */
+};
+
+static int nstrings = 5; /* start out with 5 strings */
+
+typedef enum {
+ SM_INVALID, /* this shift mask is invalid for this keyboard */
+ SM_NORMAL, /* "normal", valid shift mask */
+ SM_NUMLOCK, /* "Num Lock" shift mask */
+ SM_UP /* "Up" shift mask */
+} smtype_t;
+
+typedef struct {
+ int sm_mask;
+ smtype_t sm_type;
+} smentry_t;
+
+static smentry_t shiftmasks[] = {
+ { 0, SM_NORMAL },
+ { SHIFTMASK, SM_NORMAL },
+ { CAPSMASK, SM_NORMAL },
+ { CTRLMASK, SM_NORMAL },
+ { ALTGRAPHMASK, SM_NORMAL },
+ { NUMLOCKMASK, SM_NUMLOCK },
+ { UPMASK, SM_UP },
+};
+
+
+#define NSHIFTS (sizeof (shiftmasks) / sizeof (shiftmasks[0]))
+
+static void enter_mapentry(int station, keyentry *entrylistp);
+static keyentry *makeentry(int tablemask, int entry);
+static int loadkey(int kbdfd, keyentry *kep);
+static int dupkey(int kbdfd, dupentry *dep, int shiftmask);
+static int swapkey(int kbdfd, dupentry *dep, int shiftmask);
+static int yylex();
+static int readesc(FILE *stream, int delim, int single_char);
+static int wordcmp(const void *w1, const void *w2);
+static int yyerror(char *msg);
+static void usage(void);
+static void set_layout(char *arg);
+static FILE *open_mapping_file(char *pathbuf, char *name,
+ boolean_t explicit_name, int type);
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ register int kbdfd;
+ int type;
+ int layout;
+ /* maxint is 8 hex digits. */
+ char layout_filename[sizeof(layout_prefix)+8];
+ char pathbuf[MAXPATHLEN];
+ register int shift;
+ struct kiockeymap mapentry;
+ register keyentry *kep;
+ register dupentry *dep;
+ boolean_t explicit_name;
+
+ while(++argv, --argc) {
+ if(argv[0][0] != '-') break;
+ switch(argv[0][1]) {
+ case 'e':
+ /* -e obsolete, silently ignore */
+ break;
+ case 's':
+ if (argc != 2) {
+ usage();
+ /* NOTREACHED */
+ }
+ set_layout(argv[1]);
+ exit(0);
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+
+ if (argc > 1) usage();
+
+ if ((kbdfd = open("/dev/kbd", O_WRONLY)) < 0) {
+ /* perror("loadkeys: /dev/kbd"); */
+ return (1);
+ }
+
+ if (ioctl(kbdfd, KIOCTYPE, &type) < 0) {
+ /*
+ * There may not be a keyboard connected,
+ * return silently
+ */
+ return (1);
+ }
+
+ if (argc == 0) {
+ /* If no keyboard detected, exit silently. */
+ if (type == -1)
+ return (0);
+
+ if (ioctl(kbdfd, KIOCLAYOUT, &layout) < 0) {
+ perror("loadkeys: ioctl(KIOCLAYOUT)");
+ return (1);
+ }
+
+ (void) sprintf(layout_filename,
+ "%s%.2x", layout_prefix, layout);
+ infilename = layout_filename;
+ explicit_name = B_FALSE;
+ } else {
+ infilename = argv[0];
+ explicit_name = B_TRUE;
+ }
+
+ infile = open_mapping_file(pathbuf, infilename, explicit_name, type);
+ if (infile == NULL) return (1);
+
+ infilename = pathbuf;
+
+ lineno = 0;
+ begline = 1;
+ yyparse();
+ fclose(infile);
+
+ /*
+ * See which shift masks are valid for this keyboard.
+ * We do that by trying to get the entry for keystation 0 and that
+ * shift mask; if the "ioctl" fails, we assume it's because the shift
+ * mask is invalid.
+ */
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ mapentry.kio_tablemask =
+ shiftmasks[shift].sm_mask;
+ mapentry.kio_station = 0;
+ if (ioctl(kbdfd, KIOCGKEY, &mapentry) < 0)
+ shiftmasks[shift].sm_type = SM_INVALID;
+ }
+
+ for (kep = firstentry; kep != NULL; kep = kep->ke_next) {
+ if (kep->ke_entry.kio_tablemask == ALL) {
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ switch (shiftmasks[shift].sm_type) {
+
+ case SM_INVALID:
+ continue;
+
+ case SM_NUMLOCK:
+ /*
+ * Defaults to NONL, not to a copy of
+ * the base entry.
+ */
+ if (kep->ke_entry.kio_entry != HOLE)
+ kep->ke_entry.kio_entry = NONL;
+ break;
+
+ case SM_UP:
+ /*
+ * Defaults to NOP, not to a copy of
+ * the base entry.
+ */
+ if (kep->ke_entry.kio_entry != HOLE)
+ kep->ke_entry.kio_entry = NOP;
+ break;
+ }
+ kep->ke_entry.kio_tablemask =
+ shiftmasks[shift].sm_mask;
+ if (!loadkey(kbdfd, kep))
+ return (1);
+ }
+ } else {
+ if (!loadkey(kbdfd, kep))
+ return (1);
+ }
+ }
+
+ for (dep = firstswap; dep != NULL; dep = dep->de_next) {
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ if (shiftmasks[shift].sm_type != SM_INVALID) {
+ if (!swapkey(kbdfd, dep,
+ shiftmasks[shift].sm_mask))
+ return (0);
+ }
+ }
+ }
+
+ for (dep = firstduplicate; dep != NULL; dep = dep->de_next) {
+ for (shift = 0; shift < NSHIFTS; shift++) {
+ if (shiftmasks[shift].sm_type != SM_INVALID) {
+ if (!dupkey(kbdfd, dep,
+ shiftmasks[shift].sm_mask))
+ return (0);
+ }
+ }
+ }
+
+ close(kbdfd);
+ return (0);
+}
+
+static void
+usage()
+{
+ (void) fprintf(stderr, "usage: loadkeys [ file ]\n");
+ exit(1);
+}
+
+static void
+set_layout(char *arg)
+{
+ int layout;
+ int ret;
+ int kbdfd;
+
+ layout = (int) strtol(arg, &arg, 0);
+ if (*arg != '\0') {
+ fprintf(stderr, "usage: loadkeys -s layoutnumber\n");
+ exit(1);
+ }
+
+ if ((kbdfd = open("/dev/kbd", O_WRONLY)) < 0) {
+ perror("/dev/kbd");
+ exit(1);
+ }
+
+ ret = ioctl(kbdfd, KIOCSLAYOUT, layout);
+ if (ret == -1) {
+ perror("KIOCSLAYOUT");
+ }
+
+ close(kbdfd);
+}
+
+/*
+ * Attempt to find the specified mapping file. Return a FILE * if found,
+ * else print a message on stderr and return NULL.
+ */
+FILE *
+open_mapping_file(
+ char *pathbuf,
+ char *name,
+ boolean_t explicit_name,
+ int type
+) {
+ /* If the user specified the name, try it "raw". */
+ if (explicit_name) {
+ strcpy(pathbuf, name);
+ infile = fopen(pathbuf, "r");
+ if (infile) return (infile);
+ if (errno != ENOENT) goto fopen_fail;
+ }
+
+ /* Everything after this point applies only to relative names. */
+ if (*name == '/') goto fopen_fail;
+
+ /* Try the type-qualified directory name. */
+ sprintf(pathbuf, keytable_dir, type);
+ if ((int)(strlen(pathbuf) + strlen(name) + 1) >= MAXPATHLEN) {
+ (void) fprintf(stderr, "loadkeys: Name %s is too long\n",
+ name);
+ return (NULL);
+ }
+ (void) strcat(pathbuf, name);
+ infile = fopen(pathbuf, "r");
+ if (infile) return (infile);
+ if (errno != ENOENT) goto fopen_fail;
+
+#ifdef COMPATIBILITY_DIR
+ /* If not, and either the name was specified explicitly */
+ /* or this is a type 4... */
+ if (explicit_name || type == KB_SUN4) {
+ /* Try the compatibility name. */
+ /* No need to check len here, it's shorter. */
+ (void) strcpy(pathbuf, keytable_dir2);
+ (void) strcat(pathbuf, infilename);
+ infile = fopen(pathbuf, "r");
+ if (infile) return (infile);
+ if (errno != ENOENT) goto fopen_fail;
+ }
+#endif
+
+fopen_fail:
+ (void) fprintf(stderr, "loadkeys: ");
+ perror(name);
+ return (NULL);
+}
+
+/*
+ * We have a list of entries for a given keystation, and the keystation number
+ * for that keystation; put that keystation number into all the entries in that
+ * list, and chain that list to the end of the main list of entries.
+ */
+static void
+enter_mapentry(station, entrylistp)
+ int station;
+ keyentry *entrylistp;
+{
+ register keyentry *kep;
+
+ if (lastentry == NULL)
+ firstentry = entrylistp;
+ else
+ lastentry->ke_next = entrylistp;
+ kep = entrylistp;
+ for (;;) {
+ kep->ke_entry.kio_station = (u_char)station;
+ if (kep->ke_next == NULL) {
+ lastentry = kep;
+ break;
+ }
+ kep = kep->ke_next;
+ }
+}
+
+/*
+ * Allocate and fill in a new entry.
+ */
+static keyentry *
+makeentry(tablemask, entry)
+ int tablemask;
+ int entry;
+{
+ register keyentry *kep;
+ register int index;
+
+ if ((kep = (keyentry *) malloc((unsigned)sizeof (keyentry))) == NULL)
+ yyerror("out of memory for entries");
+ kep->ke_next = NULL;
+ kep->ke_entry.kio_tablemask = tablemask;
+ kep->ke_entry.kio_station = 0;
+ kep->ke_entry.kio_entry = (u_short)entry;
+ index = entry - STRING;
+ if (index >= 0 && index <= 15)
+ (void) strncpy(kep->ke_entry.kio_string, strings[index],
+ KTAB_STRLEN);
+ return (kep);
+}
+
+/*
+ * Make a set of entries for a keystation that indicate that that keystation's
+ * settings should be copied from another keystation's settings.
+ */
+static void
+duplicate_mapentry(station, otherstation)
+ int station;
+ int otherstation;
+{
+ register dupentry *dep;
+
+ if ((dep = (dupentry *) malloc((unsigned)sizeof (dupentry))) == NULL)
+ yyerror("out of memory for entries");
+
+ if (lastduplicate == NULL)
+ firstduplicate = dep;
+ else
+ lastduplicate->de_next = dep;
+ lastduplicate = dep;
+ dep->de_next = NULL;
+ dep->de_station = station;
+ dep->de_otherstation = otherstation;
+}
+
+/*
+ * Make a set of entries for a keystation that indicate that that keystation's
+ * settings should be swapped with another keystation's settings.
+ */
+static void
+swap_mapentry(station, otherstation)
+ int station;
+ int otherstation;
+{
+ register dupentry *dep;
+
+ if ((dep = (dupentry *) malloc((unsigned)sizeof (dupentry))) == NULL)
+ yyerror("out of memory for entries");
+
+ if (lastswap == NULL)
+ firstswap = dep;
+ else
+ lastswap->de_next = dep;
+ lastswap = dep;
+ dep->de_next = NULL;
+ dep->de_station = station;
+ dep->de_otherstation = otherstation;
+}
+
+static int
+loadkey(kbdfd, kep)
+ int kbdfd;
+ register keyentry *kep;
+{
+ if (ioctl(kbdfd, KIOCSKEY, &kep->ke_entry) < 0) {
+ perror("loadkeys: ioctl(KIOCSKEY)");
+ return (0);
+ }
+ return (1);
+}
+
+static int
+dupkey(kbdfd, dep, shiftmask)
+ int kbdfd;
+ register dupentry *dep;
+ int shiftmask;
+{
+ struct kiockeymap entry;
+
+ entry.kio_tablemask = shiftmask;
+ entry.kio_station = dep->de_otherstation;
+ if (ioctl(kbdfd, KIOCGKEY, &entry) < 0) {
+ perror("loadkeys: ioctl(KIOCGKEY)");
+ return (0);
+ }
+ entry.kio_station = dep->de_station;
+ if (ioctl(kbdfd, KIOCSKEY, &entry) < 0) {
+ perror("loadkeys: ioctl(KIOCSKEY)");
+ return (0);
+ }
+ return (1);
+}
+
+
+
+static int
+swapkey(kbdfd, dep, shiftmask)
+ int kbdfd;
+ register dupentry *dep;
+ int shiftmask;
+{
+ struct kiockeymap entry1, entry2;
+
+ entry1.kio_tablemask = shiftmask;
+ entry1.kio_station = dep->de_station;
+ if (ioctl(kbdfd, KIOCGKEY, &entry1) < 0) {
+ perror("loadkeys: ioctl(KIOCGKEY)");
+ return (0);
+ }
+ entry2.kio_tablemask = shiftmask;
+ entry2.kio_station = dep->de_otherstation;
+ if (ioctl(kbdfd, KIOCGKEY, &entry2) < 0) {
+ perror("loadkeys: ioctl(KIOCGKEY)");
+ return (0);
+ }
+ entry1.kio_station = dep->de_otherstation;
+ if (ioctl(kbdfd, KIOCSKEY, &entry1) < 0) {
+ perror("loadkeys: ioctl(KIOCSKEY)");
+ return (0);
+ }
+ entry2.kio_station = dep->de_station;
+ if (ioctl(kbdfd, KIOCSKEY, &entry2) < 0) {
+ perror("loadkeys: ioctl(KIOCSKEY)");
+ return (0);
+ }
+ return (1);
+}
+%}
+
+%term TABLENAME INT CHAR CHARSTRING CONSTANT FKEY KEY SAME AS SWAP WITH
+
+%union {
+ keyentry *keyentry;
+ int number;
+};
+
+%type <keyentry> entrylist entry
+%type <number> CHARSTRING CHAR INT CONSTANT FKEY TABLENAME
+%type <number> code expr term number
+
+%%
+
+table:
+ table line
+| /* null */
+;
+
+line:
+ KEY number entrylist '\n'
+ {
+ enter_mapentry($2, $3);
+ }
+| KEY number SAME AS number '\n'
+ {
+ duplicate_mapentry($2, $5);
+ }
+| SWAP number WITH number '\n'
+ {
+ swap_mapentry($2, $4);
+ }
+| '\n'
+;
+
+entrylist:
+ entrylist entry
+ {
+ /*
+ * Append this entry to the end of the entry list.
+ */
+ register keyentry *kep;
+ kep = $1;
+ for (;;) {
+ if (kep->ke_next == NULL) {
+ kep->ke_next = $2;
+ break;
+ }
+ kep = kep->ke_next;
+ }
+ $$ = $1;
+ }
+| entry
+ {
+ $$ = $1;
+ }
+;
+
+entry:
+ TABLENAME code
+ {
+ $$ = makeentry($1, $2);
+ }
+;
+
+code:
+ CHARSTRING
+ {
+ $$ = $1;
+ }
+| CHAR
+ {
+ $$ = $1;
+ }
+| '('
+ {
+ $$ = '(';
+ }
+| ')'
+ {
+ $$ = ')';
+ }
+| '+'
+ {
+ $$ = '+';
+ }
+| expr
+ {
+ $$ = $1;
+ }
+;
+
+expr:
+ term
+ {
+ $$ = $1;
+ }
+| expr '+' term
+ {
+ $$ = $1 + $3;
+ }
+;
+
+term:
+ CONSTANT
+ {
+ $$ = $1;
+ }
+| FKEY '(' number ')'
+ {
+ if ($3 < 1 || $3 > 16)
+ yyerror("invalid function key number");
+ $$ = $1 + $3 - 1;
+ }
+;
+
+number:
+ INT
+ {
+ $$ = $1;
+ }
+| CHAR
+ {
+ if (isdigit($1))
+ $$ = $1 - '0';
+ else
+ yyerror("syntax error");
+ }
+;
+
+%%
+
+typedef struct {
+ char *w_string;
+ int w_type; /* token type */
+ int w_lval; /* yylval for this token */
+} word_t;
+
+/*
+ * Table must be in alphabetical order.
+ */
+word_t wordtab[] = {
+ { "all", TABLENAME, ALL },
+ { "alt", CONSTANT, ALT },
+ { "altg", TABLENAME, ALTGRAPHMASK },
+ { "altgraph", CONSTANT, ALTGRAPH },
+ { "as", AS, 0 },
+ { "base", TABLENAME, 0 },
+ { "bf", FKEY, BOTTOMFUNC },
+ { "buckybits", CONSTANT, BUCKYBITS },
+ { "caps", TABLENAME, CAPSMASK },
+ { "capslock", CONSTANT, CAPSLOCK },
+ { "compose", CONSTANT, COMPOSE },
+ { "ctrl", TABLENAME, CTRLMASK },
+ { "downarrow", CONSTANT, DOWNARROW },
+ { "error", CONSTANT, ERROR },
+ { "fa_acute", CONSTANT, FA_ACUTE },
+ { "fa_cedilla", CONSTANT, FA_CEDILLA },
+ { "fa_cflex", CONSTANT, FA_CFLEX },
+ { "fa_grave", CONSTANT, FA_GRAVE },
+ { "fa_tilde", CONSTANT, FA_TILDE },
+ { "fa_umlaut", CONSTANT, FA_UMLAUT },
+ { "hole", CONSTANT, HOLE },
+ { "homearrow", CONSTANT, HOMEARROW },
+ { "idle", CONSTANT, IDLE },
+ { "key", KEY, 0 },
+ { "leftarrow", CONSTANT, LEFTARROW },
+ { "leftctrl", CONSTANT, LEFTCTRL },
+ { "leftshift", CONSTANT, LEFTSHIFT },
+ { "lf", FKEY, LEFTFUNC },
+ { "metabit", CONSTANT, METABIT },
+ { "nonl", CONSTANT, NONL },
+ { "nop", CONSTANT, NOP },
+ { "numl", TABLENAME, NUMLOCKMASK },
+ { "numlock", CONSTANT, NUMLOCK },
+ { "oops", CONSTANT, OOPS },
+ { "pad0", CONSTANT, PAD0 },
+ { "pad1", CONSTANT, PAD1 },
+ { "pad2", CONSTANT, PAD2 },
+ { "pad3", CONSTANT, PAD3 },
+ { "pad4", CONSTANT, PAD4 },
+ { "pad5", CONSTANT, PAD5 },
+ { "pad6", CONSTANT, PAD6 },
+ { "pad7", CONSTANT, PAD7 },
+ { "pad8", CONSTANT, PAD8 },
+ { "pad9", CONSTANT, PAD9 },
+ { "paddot", CONSTANT, PADDOT },
+ { "padenter", CONSTANT, PADENTER },
+ { "padequal", CONSTANT, PADEQUAL },
+ { "padminus", CONSTANT, PADMINUS },
+ { "padplus", CONSTANT, PADPLUS },
+ { "padsep", CONSTANT, PADSEP },
+ { "padslash", CONSTANT, PADSLASH },
+ { "padstar", CONSTANT, PADSTAR },
+ { "reset", CONSTANT, RESET },
+ { "rf", FKEY, RIGHTFUNC },
+ { "rightarrow", CONSTANT, RIGHTARROW },
+ { "rightctrl", CONSTANT, RIGHTCTRL },
+ { "rightshift", CONSTANT, RIGHTSHIFT },
+ { "same", SAME, 0 },
+ { "shift", TABLENAME, SHIFTMASK },
+ { "shiftkeys", CONSTANT, SHIFTKEYS },
+ { "shiftlock", CONSTANT, SHIFTLOCK },
+ { "string", CONSTANT, STRING },
+ { "swap", SWAP, 0 },
+ { "systembit", CONSTANT, SYSTEMBIT },
+ { "tf", FKEY, TOPFUNC },
+ { "up", TABLENAME, UPMASK },
+ { "uparrow", CONSTANT, UPARROW },
+ { "with", WITH, 0 },
+};
+
+#define NWORDS (sizeof (wordtab) / sizeof (wordtab[0]))
+
+static int
+yylex()
+{
+ register int c;
+ char tokbuf[256+1];
+ register char *cp;
+ register int tokentype;
+
+ while ((c = getc(infile)) == ' ' || c == '\t')
+ ;
+ if (begline) {
+ lineno++;
+ begline = 0;
+ if (c == '#') {
+ while ((c = getc(infile)) != EOF && c != '\n')
+ ;
+ }
+ }
+ if (c == EOF)
+ return (0); /* end marker */
+ if (c == '\n') {
+ begline = 1;
+ return (c);
+ }
+
+ switch (c) {
+
+ case '\'':
+ tokentype = CHAR;
+ if ((c = getc(infile)) == EOF)
+ yyerror("unterminated character constant");
+ if (c == '\n') {
+ (void) ungetc(c, infile);
+ yylval.number = '\'';
+ } else {
+ switch (c) {
+
+ case '\'':
+ yyerror("null character constant");
+ break;
+
+ case '\\':
+ yylval.number = readesc(infile, '\'', 1);
+ break;
+
+ default:
+ yylval.number = c;
+ break;
+ }
+ if ((c = getc(infile)) == EOF || c == '\n')
+ yyerror("unterminated character constant");
+ else if (c != '\'')
+ yyerror("only one character allowed in character constant");
+ }
+ break;
+
+ case '"':
+ if ((c = getc(infile)) == EOF)
+ yyerror("unterminated string constant");
+ if (c == '\n') {
+ (void) ungetc(c, infile);
+ tokentype = CHAR;
+ yylval.number = '"';
+ } else {
+ tokentype = CHARSTRING;
+ cp = &tokbuf[0];
+ do {
+ if (cp > &tokbuf[256])
+ yyerror("line too long");
+ if (c == '\\')
+ c = readesc(infile, '"', 0);
+ *cp++ = (char)c;
+ } while ((c = getc(infile)) != EOF && c != '\n' &&
+ c != '"');
+ if (c != '"')
+ yyerror("unterminated string constant");
+ *cp = '\0';
+ if (nstrings == 16)
+ yyerror("too many strings");
+ if ((int) strlen(tokbuf) > KTAB_STRLEN)
+ yyerror("string too long");
+ strings[nstrings] = strdup(tokbuf);
+ yylval.number = STRING+nstrings;
+ nstrings++;
+ }
+ break;
+
+ case '(':
+ case ')':
+ case '+':
+ tokentype = c;
+ break;
+
+ case '^':
+ if ((c = getc(infile)) == EOF)
+ yyerror("missing newline at end of line");
+ tokentype = CHAR;
+ if (c == ' ' || c == '\t' || c == '\n') {
+ /*
+ * '^' by itself.
+ */
+ yylval.number = '^';
+ } else {
+ yylval.number = c & 037;
+ if ((c = getc(infile)) == EOF)
+ yyerror("missing newline at end of line");
+ if (c != ' ' && c != '\t' && c != '\n')
+ yyerror("invalid control character");
+ }
+ (void) ungetc(c, infile);
+ break;
+
+ default:
+ cp = &tokbuf[0];
+ do {
+ if (cp > &tokbuf[256])
+ yyerror("line too long");
+ *cp++ = (char)c;
+ } while ((c = getc(infile)) != EOF && (isalnum(c) || c == '_'));
+ if (c == EOF)
+ yyerror("newline missing");
+ (void) ungetc(c, infile);
+ *cp = '\0';
+ if (strlen(tokbuf) == 1) {
+ tokentype = CHAR;
+ yylval.number = (unsigned char)tokbuf[0];
+ } else if (strlen(tokbuf) == 2 && tokbuf[0] == '^') {
+ tokentype = CHAR;
+ yylval.number = (unsigned char)(tokbuf[1] & 037);
+ } else {
+ word_t word;
+ register word_t *wptr;
+ char *ptr;
+
+ for (cp = &tokbuf[0]; (c = *cp) != '\0'; cp++) {
+ if (isupper(c))
+ *cp = tolower(c);
+ }
+ word.w_string = tokbuf;
+ wptr = (word_t *)bsearch((char *)&word,
+ (char *)wordtab, NWORDS, sizeof (word_t),
+ wordcmp);
+ if (wptr != NULL) {
+ yylval.number = wptr->w_lval;
+ tokentype = wptr->w_type;
+ } else {
+ yylval.number = strtol(tokbuf, &ptr, 10);
+ if (ptr == tokbuf)
+ yyerror("syntax error");
+ else
+ tokentype = INT;
+ }
+ break;
+ }
+ }
+
+ return (tokentype);
+}
+
+static int
+readesc(stream, delim, single_char)
+ FILE *stream;
+ int delim;
+ int single_char;
+{
+ register int c;
+ register int val;
+ register int i;
+
+ if ((c = getc(stream)) == EOF || c == '\n')
+ yyerror("unterminated character constant");
+
+ if (c >= '0' && c <= '7') {
+ val = 0;
+ i = 1;
+ for (;;) {
+ val = val*8 + c - '0';
+ if ((c = getc(stream)) == EOF || c == '\n')
+ yyerror("unterminated character constant");
+ if (c == delim)
+ break;
+ i++;
+ if (i > 3) {
+ if (single_char)
+ yyerror("escape sequence too long");
+ else
+ break;
+ }
+ if (c < '0' || c > '7') {
+ if (single_char)
+ yyerror("illegal character in escape sequence");
+ else
+ break;
+ }
+ }
+ (void) ungetc(c, stream);
+ } else {
+ switch (c) {
+
+ case 'n':
+ val = '\n';
+ break;
+
+ case 't':
+ val = '\t';
+ break;
+
+ case 'b':
+ val = '\b';
+ break;
+
+ case 'r':
+ val = '\r';
+ break;
+
+ case 'v':
+ val = '\v';
+ break;
+
+ case '\\':
+ val = '\\';
+ break;
+
+ default:
+ if (c == delim)
+ val = delim;
+ else
+ yyerror("illegal character in escape sequence");
+ }
+ }
+ return (val);
+}
+
+static int
+wordcmp(const void *w1, const void *w2)
+{
+ return (strcmp(
+ ((const word_t *)w1)->w_string,
+ ((const word_t *)w2)->w_string));
+}
+
+static int
+yyerror(msg)
+ char *msg;
+{
+ (void) fprintf(stderr, "%s, line %d: %s\n", infilename, lineno, msg);
+ exit(1);
+}
diff --git a/usr/src/cmd/loadkeys/set_keyboard_layout b/usr/src/cmd/loadkeys/set_keyboard_layout
new file mode 100644
index 0000000000..d04413cd86
--- /dev/null
+++ b/usr/src/cmd/loadkeys/set_keyboard_layout
@@ -0,0 +1,114 @@
+#! /usr/bin/sh
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright (c) 2001 by Sun Microsystems, Inc.
+# All rights reserved.
+#
+
+KBD_TYPE=`/usr/bin/kbd -t`
+
+# (Really, should pick this up from the keyboard device node keyboard-type
+# value, or the 1275 PC keyboard binding "layout" property.)
+KBD_LAYOUT_NAME="`/usr/sbin/eeprom kbd-type | /usr/bin/sed -n s/kbd-type=//p`"
+
+case "$KBD_TYPE" in
+"USB keyboard")
+ case "$KBD_LAYOUT_NAME" in
+ "") LAYOUT= ;;
+ "Czech" ) LAYOUT= ;;
+ "Danish" ) LAYOUT=6 ;;
+ "Dutch" ) LAYOUT=18 ;;
+ "French" ) LAYOUT=8 ;;
+ "French-Canadian" ) LAYOUT= ;;
+ "German" ) LAYOUT=9 ;;
+ "Greek" ) LAYOUT= ;;
+ "Hungarian" ) LAYOUT= ;;
+ "Italian" ) LAYOUT=14 ;;
+ "Japanese(106)" ) LAYOUT=15 ;;
+ "Japanese(J3100)" ) LAYOUT= ;;
+ "Latvian" ) LAYOUT= ;;
+ "Lithuanian" ) LAYOUT= ;;
+ "Polish" ) LAYOUT= ;;
+ "Korean" ) LAYOUT=16 ;;
+ "Norwegian" ) LAYOUT=19 ;;
+ "Portuguese" ) LAYOUT=22 ;;
+ "Russian" ) LAYOUT= ;;
+ "Spanish" ) LAYOUT=25 ;;
+ "Swedish" ) LAYOUT=26 ;;
+ "Swiss-French" ) LAYOUT=27 ;;
+ "Swiss-German" ) LAYOUT=28 ;;
+ "Taiwanese" ) LAYOUT=30 ;;
+ "Turkish" ) LAYOUT= ;;
+ "UK-English" ) LAYOUT=32 ;;
+ "US-English" ) LAYOUT=33 ;;
+ "US-English(Microsoft-Natural)" ) LAYOUT=33 ;;
+ "US-English(104-Key)" ) LAYOUT=33 ;;
+ *) LAYOUT= ;;
+ esac
+ ;;
+"PC")
+ case "$KBD_LAYOUT_NAME" in
+ "") LAYOUT= ;;
+ "Czech" ) LAYOUT=53 ;;
+ "Danish" ) LAYOUT=36 ;;
+ "Dutch" ) LAYOUT=39 ;;
+ "French" ) LAYOUT=35 ;;
+ "French-Canadian" ) LAYOUT=50 ;;
+ "German" ) LAYOUT=37 ;;
+ "Greek" ) LAYOUT=57 ;;
+ "Hungarian" ) LAYOUT=51 ;;
+ "Italian" ) LAYOUT=38 ;;
+ "Japanese(106)" ) LAYOUT=49 ;;
+ "Japanese(J3100)" ) LAYOUT=34 ;;
+ "Latvian" ) LAYOUT=55 ;;
+ "Lithuanian" ) LAYOUT=59 ;;
+ "Polish" ) LAYOUT=52 ;;
+ "Korean" ) LAYOUT=47 ;;
+ "Norwegian" ) LAYOUT=40 ;;
+ "Portuguese" ) LAYOUT=41 ;;
+ "Russian" ) LAYOUT=54 ;;
+ "Spanish" ) LAYOUT=42 ;;
+ "Swedish" ) LAYOUT=43 ;;
+ "Swiss-French" ) LAYOUT=44 ;;
+ "Swiss-German" ) LAYOUT=45 ;;
+ "Taiwanese" ) LAYOUT=48 ;;
+ "Turkish" ) LAYOUT=56 ;;
+ "UK-English" ) LAYOUT=46 ;;
+ "US-English" ) LAYOUT=1 ;;
+ "US-English(Microsoft-Natural)" ) LAYOUT=1001 ;;
+ "US-English(104-Key)" ) LAYOUT=1001 ;;
+ *) LAYOUT=0 ;;
+ esac
+ ;;
+esac
+
+
+if test -n "$LAYOUT"
+then
+ # Set the layout for a non-self-ID keyboard.
+ # loadkeys -s is a project private interface, and subject to change
+ # without notice.
+ /usr/bin/loadkeys -s $LAYOUT
+fi
diff --git a/usr/src/cmd/loadkeys/type_101/Makefile b/usr/src/cmd/loadkeys/type_101/Makefile
new file mode 100644
index 0000000000..57e3afa5ae
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/Makefile
@@ -0,0 +1,214 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright (c) 1999 by Sun Microsystems, Inc.
+# All rights reserved.
+#
+# cmd/loadkeys/type_101/Makefile
+
+KEYTABLES = \
+ canadian_french2 \
+ czech \
+ denmark \
+ france \
+ germany \
+ greece \
+ hungary \
+ italy \
+ j3100 \
+ japan \
+ korea \
+ latvia \
+ lithuania \
+ netherlands \
+ norway \
+ poland \
+ portugal \
+ reset \
+ russia \
+ spain \
+ sweden \
+ swiss_french \
+ swiss_german \
+ taiwan \
+ turkey \
+ uk \
+ us
+
+include ../../Makefile.cmd
+
+ROOTKEYTABLESDIR= $(ROOTSHLIB)/keytables
+ROOTKEYDIR= $(ROOTKEYTABLESDIR)/type_101
+ROOTKEYTABLES= $(KEYTABLES:%=$(ROOTKEYDIR)/%)
+
+# there is an install target for each ROOT layout link
+#
+LAYOUTS= \
+ layout_00 \
+ layout_01 \
+ layout_22 \
+ layout_23 \
+ layout_24 \
+ layout_25 \
+ layout_26 \
+ layout_27 \
+ layout_28 \
+ layout_29 \
+ layout_2a \
+ layout_2b \
+ layout_2c \
+ layout_2d \
+ layout_2e \
+ layout_2f \
+ layout_30 \
+ layout_31 \
+ layout_32 \
+ layout_33 \
+ layout_34 \
+ layout_35 \
+ layout_36 \
+ layout_37 \
+ layout_38 \
+ layout_39 \
+ layout_3b \
+ layout_3e9
+
+ROOTLINKS= $(LAYOUTS:%=$(ROOTKEYDIR)/%)
+
+$(ROOTKEYTABLES) := FILEMODE = 444
+
+# install rule
+$(ROOTKEYDIR)/%: %
+ $(INS.file)
+
+.KEEP_STATE:
+
+all: $(KEYTABLES)
+
+install: all $(ROOTKEYTABLESDIR) $(ROOTKEYDIR) $(ROOTKEYTABLES) $(ROOTLINKS)
+
+clean:
+
+neaten:
+ for i in $(KEYTABLES); do \
+ sh ./neaten.sh $$i; \
+ if cmp -s $$i $$i.neat; then \
+ echo No change to $$i.; \
+ rm $$i.neat; \
+ fi; \
+ done
+
+$(ROOTKEYTABLESDIR):
+ $(INS.dir)
+
+$(ROOTKEYDIR): $(ROOTKEYTABLESDIR)
+ $(INS.dir)
+
+# install targets for ROOT layout links
+#
+$(ROOTKEYDIR)/layout_00: $(ROOTKEYDIR)/us
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us $@
+
+$(ROOTKEYDIR)/layout_01: $(ROOTKEYDIR)/us
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us $@
+
+$(ROOTKEYDIR)/layout_22: $(ROOTKEYDIR)/j3100
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/j3100 $@
+
+$(ROOTKEYDIR)/layout_23: $(ROOTKEYDIR)/france
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/france $@
+
+$(ROOTKEYDIR)/layout_24: $(ROOTKEYDIR)/denmark
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/denmark $@
+
+$(ROOTKEYDIR)/layout_25: $(ROOTKEYDIR)/germany
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/germany $@
+
+$(ROOTKEYDIR)/layout_26: $(ROOTKEYDIR)/italy
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/italy $@
+
+$(ROOTKEYDIR)/layout_27: $(ROOTKEYDIR)/netherlands
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/netherlands $@
+
+$(ROOTKEYDIR)/layout_28: $(ROOTKEYDIR)/norway
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/norway $@
+
+$(ROOTKEYDIR)/layout_29: $(ROOTKEYDIR)/portugal
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/portugal $@
+
+$(ROOTKEYDIR)/layout_2a: $(ROOTKEYDIR)/spain
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/spain $@
+
+$(ROOTKEYDIR)/layout_2b: $(ROOTKEYDIR)/sweden
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/sweden $@
+
+$(ROOTKEYDIR)/layout_2c: $(ROOTKEYDIR)/swiss_french
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_french $@
+
+$(ROOTKEYDIR)/layout_2d: $(ROOTKEYDIR)/swiss_german
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_german $@
+
+$(ROOTKEYDIR)/layout_2e: $(ROOTKEYDIR)/uk
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/uk $@
+
+$(ROOTKEYDIR)/layout_2f: $(ROOTKEYDIR)/korea
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/korea $@
+
+$(ROOTKEYDIR)/layout_30: $(ROOTKEYDIR)/taiwan
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/taiwan $@
+
+$(ROOTKEYDIR)/layout_31: $(ROOTKEYDIR)/japan
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/japan $@
+
+$(ROOTKEYDIR)/layout_32: $(ROOTKEYDIR)/canadian_french2
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/canadian_french2 $@
+
+$(ROOTKEYDIR)/layout_33: $(ROOTKEYDIR)/hungary
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/hungary $@
+
+$(ROOTKEYDIR)/layout_34: $(ROOTKEYDIR)/poland
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/poland $@
+
+$(ROOTKEYDIR)/layout_35: $(ROOTKEYDIR)/czech
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/czech $@
+
+$(ROOTKEYDIR)/layout_36: $(ROOTKEYDIR)/russia
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/russia $@
+
+$(ROOTKEYDIR)/layout_37: $(ROOTKEYDIR)/latvia
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/latvia $@
+
+$(ROOTKEYDIR)/layout_38: $(ROOTKEYDIR)/turkey
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/turkey $@
+
+$(ROOTKEYDIR)/layout_39: $(ROOTKEYDIR)/greece
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/greece $@
+
+$(ROOTKEYDIR)/layout_3b: $(ROOTKEYDIR)/lithuania
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/lithuania $@
+
+$(ROOTKEYDIR)/layout_3e9: $(ROOTKEYDIR)/us
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us $@
+
+include ../../Makefile.targ
diff --git a/usr/src/cmd/loadkeys/type_101/canadian_french2 b/usr/src/cmd/loadkeys/type_101/canadian_french2
new file mode 100644
index 0000000000..5fb78fa6b3
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/canadian_french2
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# French Canadian key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base # shift | caps # ctrl # altg '\\'
+key 2 base 1 shift ! caps 1 ctrl 1 altg ±
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift / caps 3 ctrl 3 altg £
+key 5 base 4 shift $ caps 4 ctrl 4 altg ¢
+key 6 base 5 shift % caps 5 ctrl 5 altg ¤
+key 7 base 6 shift ? caps 6 ctrl 6 altg ¬
+key 8 base 7 shift & caps 7 ctrl 7 altg ¦
+key 9 base 8 shift * caps 8 ctrl ^[ altg ²
+key 10 base 9 shift ( caps 9 ctrl ^] altg ³
+key 11 base 0 shift ) caps 0 ctrl 0 altg ¼
+key 12 base - shift _ caps - ctrl - altg nop
+key 13 base = shift + caps = ctrl = altg ¾
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg §
+key 26 base p shift P caps P ctrl ^P altg ¶
+key 27 base fa_cflex shift ^ caps fa_cflex ctrl fa_cflex altg [
+key 28 base fa_cedilla shift fa_umlaut caps fa_cedilla ctrl fa_cedilla altg ]
+key 29 base < shift > caps < ctrl > altg }
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg ~
+key 41 base fa_grave shift ` caps fa_grave ctrl fa_grave altg {
+key 42 base < shift > caps < ctrl < altg }
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base « shift » caps « ctrl « altg ° numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg µ
+key 53 base , shift '\'' caps , ctrl , altg _
+key 54 base . shift . caps . ctrl . altg fa_acute
+key 55 base é shift É caps É ctrl é altg á
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/czech b/usr/src/cmd/loadkeys/type_101/czech
new file mode 100644
index 0000000000..086e56269c
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/czech
@@ -0,0 +1,95 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Czech key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ; shift ° caps ; ctrl ; altg nop
+key 2 base + shift 1 caps + ctrl + altg ~
+key 3 base nop shift 2 caps nop ctrl nop altg nop
+key 4 base nop shift 3 caps nop ctrl nop altg fa_cflex
+key 5 base nop shift 4 caps nop ctrl nop altg nop
+key 6 base nop shift 5 caps nop ctrl nop altg nop
+key 7 base nop shift 6 caps nop ctrl nop altg nop
+key 8 base ý shift 7 caps ý ctrl ý altg `
+key 9 base á shift 8 caps á ctrl á altg nop
+key 10 base í shift 9 caps í ctrl í altg fa_acute
+key 11 base é shift 0 caps é ctrl é altg nop
+key 12 base = shift % caps = ctrl = altg fa_umlaut
+key 13 base fa_acute shift nop caps fa_acute ctrl fa_acute altg fa_cedilla
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg '\\'
+key 18 base w shift W caps W ctrl ^W altg |
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base z shift Z caps Z ctrl ^Z altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base ú shift / caps ú ctrl ú altg ÷
+key 28 base ) shift ( caps ) ctrl ) altg ×
+key 29 base fa_umlaut shift nop caps nop ctrl nop altg ¤
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 34 base f shift F caps F ctrl ^F altg [
+key 35 base g shift G caps G ctrl ^G altg ]
+key 36 base h shift H caps H ctrl ^H altg nop
+key 40 base nop shift '"' caps nop ctrl nop altg $
+key 41 base § shift ! caps § ctrl § altg ß
+key 42 base # shift '\'' caps # ctrl # altg '`'
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base y shift Y caps Y ctrl ^Y altg >
+key 47 base x shift X caps X ctrl ^X altg #
+key 48 base c shift C caps C ctrl ^C altg &
+key 49 base v shift V caps V ctrl ^V altg @
+key 50 base b shift B caps B ctrl ^B altg {
+key 51 base n shift N caps N ctrl ^N altg }
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ? caps , ctrl , altg <
+key 54 base . shift : caps . ctrl . altg >
+key 55 base - shift _ caps - ctrl ^_ altg *
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/denmark b/usr/src/cmd/loadkeys/type_101/denmark
new file mode 100644
index 0000000000..3498a06fdd
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/denmark
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Danish key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ½ shift § caps ½ ctrl ½ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift # caps 3 ctrl 3 altg £
+key 5 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg nop
+key 8 base 7 shift / caps 7 ctrl 7 altg {
+key 9 base 8 shift ( caps 8 ctrl ^[ altg [
+key 10 base 9 shift ) caps 9 ctrl ^] altg ]
+key 11 base 0 shift = caps 0 ctrl 0 altg }
+key 12 base + shift ? caps + ctrl + altg nop
+key 13 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg |
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base å shift Å caps Å ctrl å altg nop
+key 28 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 29 base '\'' shift * caps '\'' ctrl ^^ altg `
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base æ shift Æ caps Æ ctrl æ altg nop
+key 41 base ø shift Ø caps Ø ctrl ø altg nop
+key 42 base '\'' shift * caps '\'' ctrl ^^ altg `
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl ^\ altg '\\' numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/france b/usr/src/cmd/loadkeys/type_101/france
new file mode 100644
index 0000000000..aadc0ca15f
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/france
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# French key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ² shift nop caps ² ctrl ² altg nop
+key 2 base & shift 1 caps & ctrl & altg nop
+key 3 base é shift 2 caps é ctrl é altg ~
+key 4 base '"' shift 3 caps '"' ctrl '"' altg #
+key 5 base '\'' shift 4 caps '\'' ctrl '\'' altg {
+key 6 base ( shift 5 caps ( ctrl ^[ altg [
+key 7 base - shift 6 caps - ctrl ^_ altg |
+key 8 base è shift 7 caps è ctrl è altg `
+key 9 base _ shift 8 caps _ ctrl ^\ altg \
+key 10 base ç shift 9 caps ç ctrl ^^ altg ^
+key 11 base à shift 0 caps à ctrl ^@ altg @
+key 12 base ) shift ° caps ) ctrl ^] altg ]
+key 13 base = shift + caps = ctrl = altg }
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base a shift A caps A ctrl ^A altg nop
+key 18 base z shift Z caps Z ctrl ^Z altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base fa_cflex shift fa_umlaut caps fa_cflex ctrl fa_cflex altg nop
+key 28 base $ shift £ caps $ ctrl $ altg ¤
+key 29 base * shift µ caps * ctrl * altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base q shift Q caps Q ctrl ^Q altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base m shift M caps M ctrl ^M altg nop
+key 41 base ù shift % caps ù ctrl ù altg nop
+key 42 base * shift µ caps * ctrl * altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl < altg nop numl nonl up nop
+key 46 base w shift W caps W ctrl ^W altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base , shift ? caps , ctrl , altg nop
+key 53 base ; shift . caps ; ctrl ; altg nop
+key 54 base : shift / caps : ctrl : altg nop
+key 55 base ! shift § caps ! ctrl ! altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/germany b/usr/src/cmd/loadkeys/type_101/germany
new file mode 100644
index 0000000000..bc703e2a3b
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/germany
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# German key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ^ shift ° caps ^ ctrl ^^ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg ²
+key 4 base 3 shift § caps 3 ctrl 3 altg ³
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg nop
+key 8 base 7 shift / caps 7 ctrl 7 altg {
+key 9 base 8 shift ( caps 8 ctrl ^[ altg [
+key 10 base 9 shift ) caps 9 ctrl ^] altg ]
+key 11 base 0 shift = caps 0 ctrl 0 altg }
+key 12 base ß shift ? caps ß ctrl ^\ altg '\\'
+key 13 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg @
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base z shift Z caps Z ctrl ^Z altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base ü shift Ü caps Ü ctrl ü altg nop
+key 28 base + shift * caps + ctrl + altg ~
+key 29 base # shift '\'' caps # ctrl # altg '`'
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ö shift Ö caps Ö ctrl ö altg nop
+key 41 base ä shift Ä caps Ä ctrl ä altg nop
+key 42 base # shift '\'' caps # ctrl # altg '`'
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl < altg | numl nonl up nop
+key 46 base y shift Y caps Y ctrl ^Y altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg µ
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/greece b/usr/src/cmd/loadkeys/type_101/greece
new file mode 100644
index 0000000000..fbeb2856ea
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/greece
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Greek key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ¬ caps ` ctrl ` altg ¦
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 4 base 3 shift £ caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift @ caps '\'' ctrl '\'' altg nop
+key 42 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base '\\' shift | caps '\\' ctrl ^\ altg nop numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/hungary b/usr/src/cmd/loadkeys/type_101/hungary
new file mode 100644
index 0000000000..219cd66358
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/hungary
@@ -0,0 +1,96 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Hungarian key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base 0 shift § caps § ctrl 0 altg nop
+key 2 base 1 shift '\'' caps 1 ctrl 1 altg ~
+key 3 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 4 base 3 shift + caps 3 ctrl 3 altg fa_cflex
+key 5 base 4 shift ! caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift / caps 6 ctrl 6 altg nop
+key 8 base 7 shift = caps 7 ctrl 7 altg `
+key 9 base 8 shift ( caps 8 ctrl 8 altg nop
+key 10 base 9 shift ) caps 9 ctrl 9 altg fa_acute
+key 11 base ö shift Ö caps Ö ctrl ö altg nop
+key 12 base ü shift Ü caps Ü ctrl ü altg fa_umlaut
+key 13 base ó shift Ó caps Ó ctrl ó altg fa_cedilla
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg '\\'
+key 18 base w shift W caps W ctrl ^W altg |
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base z shift Z caps Z ctrl ^Z altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base nop shift nop caps nop ctrl nop altg ÷
+key 28 base ú shift Ú caps Ú ctrl ú altg ×
+key 29 base nop shift nop caps nop ctrl nop altg ¤
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 34 base f shift F caps F ctrl ^F altg [
+key 35 base g shift G caps G ctrl ^G altg ]
+key 36 base h shift H caps H ctrl ^H altg í
+key 40 base é shift É caps É ctrl é altg $
+key 41 base á shift Á caps Á ctrl á altg ß
+key 42 base # shift '\'' caps # ctrl # altg '`'
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base y shift Y caps Y ctrl ^Y altg >
+key 47 base x shift X caps X ctrl ^X altg #
+key 48 base c shift C caps C ctrl ^C altg &
+key 49 base v shift V caps V ctrl ^V altg @
+key 50 base b shift B caps B ctrl ^B altg {
+key 51 base n shift N caps N ctrl ^N altg }
+key 52 base m shift M caps M ctrl '\r' altg <
+key 53 base , shift ? caps , ctrl , altg ;
+key 54 base . shift : caps . ctrl . altg >
+key 55 base - shift _ caps - ctrl ^_ altg *
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/italy b/usr/src/cmd/loadkeys/type_101/italy
new file mode 100644
index 0000000000..ae5eb91fb2
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/italy
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Italian key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg nop
+key 4 base 3 shift £ caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg nop
+key 8 base 7 shift / caps 7 ctrl 7 altg nop
+key 9 base 8 shift ( caps 8 ctrl ^[ altg {
+key 10 base 9 shift ) caps 9 ctrl ^] altg }
+key 11 base 0 shift = caps 0 ctrl 0 altg nop
+key 12 base '\'' shift ? caps '\'' ctrl '\'' altg `
+key 13 base ì shift ^ caps Ì ctrl ^^ altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base è shift é caps é ctrl è altg [
+key 28 base + shift * caps + ctrl + altg ]
+key 29 base ù shift § caps ù ctrl ù altg ~
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ò shift ç caps ò ctrl ò altg @
+key 41 base à shift ° caps à ctrl à altg #
+key 42 base ù shift § caps ù ctrl ù altg ~
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl < altg nop numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/j3100 b/usr/src/cmd/loadkeys/type_101/j3100
new file mode 100644
index 0000000000..d41af6dfb6
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/j3100
@@ -0,0 +1,93 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Toshiba J3100 keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ~ caps ` ctrl ` altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift @ caps 2 ctrl 2 altg nop
+key 4 base 3 shift # caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 base '\\' shift '|' caps '\\' ctrl ^\ altg nop
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all hole
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+alt up shiftkeys+alt
+key 64 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Esc, Function Keys, PrintScreen/ScrollLock/Pause
+key 110 base ^[ shift 3 caps ^[ ctrl ^[ altg nop
+
+# Japanese Keys
+key 131 base ' ' shift ' ' caps ' ' ctrl ' ' altg nop numl nonl up nop
+key 132 base ' ' shift ' ' caps ' ' ctrl ' ' altg nop numl nonl up nop
+key 133 base ' ' shift ' ' caps ' ' ctrl ' ' altg nop numl nonl up nop
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/japan b/usr/src/cmd/loadkeys/type_101/japan
new file mode 100644
index 0000000000..9909ffc341
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/japan
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Japanese 106 keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ~ caps ` ctrl ^^ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 4 base 3 shift # caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg nop
+key 8 base 7 shift '\'' caps 7 ctrl 7 altg nop
+key 9 base 8 shift ( caps 8 ctrl 8 altg nop
+key 10 base 9 shift ) caps 9 ctrl 9 altg nop
+key 11 base 0 shift ~ caps 0 ctrl 0 altg nop
+key 12 base - shift = caps - ctrl - altg nop
+key 13 base ^ shift ~ caps ^ ctrl ^ altg nop
+key 14 base '\\' shift '|' caps '\\' ctrl ^\ altg nop
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base @ shift ` caps @ ctrl ^@ altg nop
+key 28 base [ shift { caps [ ctrl ^[ altg nop
+key 29 base ] shift } caps ] ctrl ^] altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift + caps ; ctrl ; altg nop
+key 41 base : shift * caps : ctrl : altg nop
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 base '\\' shift '_' caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+alt up shiftkeys+alt
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 base ' ' shift ' ' caps ' ' ctrl ' ' altg nop numl nonl up nop
+key 132 base ' ' shift ' ' caps ' ' ctrl ' ' altg nop numl nonl up nop
+key 133 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/korea b/usr/src/cmd/loadkeys/type_101/korea
new file mode 100644
index 0000000000..37b5a0e77e
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/korea
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Korean 103 keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ~ caps ` ctrl ^^ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 4 base 3 shift # caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+alt up shiftkeys+alt
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 base ' ' shift ' ' caps ' ' ctrl ' ' altg nop numl nonl up nop
+key 151 base ' ' shift ' ' caps ' ' ctrl ' ' altg nop numl nonl up nop
diff --git a/usr/src/cmd/loadkeys/type_101/latvia b/usr/src/cmd/loadkeys/type_101/latvia
new file mode 100644
index 0000000000..18239225d2
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/latvia
@@ -0,0 +1,91 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Latvian key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift fa_tilde caps ` ctrl ` altg -
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift @ caps 2 ctrl 2 altg §
+key 4 base 3 shift # caps 3 ctrl 3 altg °
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg '\''
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 19 base e shift E caps E ctrl ^E altg ã
+key 20 base r shift R caps R ctrl ^R altg °
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg õ
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base ° shift | caps ° ctrl ° altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 39 base l shift L caps L ctrl ^L altg ô
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base ` shift '"' caps ` ctrl ` altg fa_grave
+key 42 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/lithuania b/usr/src/cmd/loadkeys/type_101/lithuania
new file mode 100644
index 0000000000..c951b66714
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/lithuania
@@ -0,0 +1,91 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Lithuanian key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base '\'' shift ~ caps '\'' ctrl '\'' altg `
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl 2 altg @
+key 4 base 3 shift / caps 3 ctrl 3 altg #
+key 5 base 4 shift ; caps 4 ctrl 4 altg $
+key 6 base 5 shift : caps 5 ctrl 5 altg %
+key 7 base 6 shift , caps 6 ctrl ^^ altg ^
+key 8 base 7 shift . caps 7 ctrl 7 altg &
+key 9 base 8 shift ? caps 8 ctrl 8 altg *
+key 10 base 9 shift ( caps 9 ctrl 9 altg [
+key 11 base 0 shift ) caps 0 ctrl 0 altg ]
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 19 base e shift E caps E ctrl ^E altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 all nop
+key 28 all nop
+key 29 base ^ shift '\'' caps ^ ctrl ^^ altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 39 base l shift L caps L ctrl ^L altg nop
+key 40 all nop
+key 41 all nop
+key 42 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base nop shift nop caps nop ctrl nop altg <
+key 54 base nop shift nop caps nop ctrl nop altg >
+key 55 all nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/neaten.sh b/usr/src/cmd/loadkeys/type_101/neaten.sh
new file mode 100644
index 0000000000..10c04b679d
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/neaten.sh
@@ -0,0 +1,102 @@
+#! /usr/bin/sh
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright (c) 1999 by Sun Microsystems, Inc.
+# All rights reserved.
+#
+
+sccsid=`echo '#pragma ident "@Z@@M@ @I@ @E@ SMI"' | sed 's/@/%/g'`
+
+
+markrow()
+{
+ # markrow file begin end label
+ file="$1"
+ begin="$2"
+ end="$3"
+ label="$4"
+
+ awk -f - $file <<-EOT > $file.$$
+ \$2 >= $begin && \$2 <= $end && done == 0 {
+ print "";
+ print "# $label";
+ done = 1;
+ }
+ {
+ print \$0;
+ }
+ EOT
+ mv -f $file.$$ $file
+}
+
+header=/tmp/header.$$
+sorted=/tmp/sorted.$$
+
+for i
+do
+ echo "#" > $header
+ echo "$sccsid" >> $header
+ echo "#" >> $header
+ echo "# Copyright (c) `date +%Y` by Sun Microsystems, Inc." >> $header
+ echo "# All rights reserved." >> $header
+ echo "#" >> $header
+ sed -n \
+ -e '/^[^#]/q' \
+ -e '/^[ ]*$/q' \
+ -e '/%\Z%/d' \
+ -e '/@(#)/d' \
+ -e '/Copyright/d' \
+ -e '/[aA]ll [rR]ights [rR]eserved/d' \
+ -e '/^#[ ]*$/d' \
+ -e p \
+ $i >> $header
+ echo '#' >> $header
+ grep -v '^#' $i |
+ grep -v '^[ ]*$' |
+ sed -e 's/[ ][ ]*/ /g' |
+ sort -n +1 -o $sorted
+ # The following are specific to PC keyboards, but similar
+ # schemes should work for many other types.
+ markrow $sorted 0 0 "??? Unknown keys ???"
+ markrow $sorted 1 15 "Main Pad Row 1: digits, Backspace"
+ markrow $sorted 16 29 "Main Pad Row 2: Tab, QWERTY..."
+ markrow $sorted 30 43 "Main Pad Row 3: CapsLock, ASDFGH..., Enter"
+ markrow $sorted 44 57 "Main Pad Row 4: Shift, ZXCVBN..., Shift"
+ markrow $sorted 58 65 "Main Pad Row 5: Ctrl, Alt, Space, ..."
+ markrow $sorted 66 74 "??? Unknown keys ???"
+ markrow $sorted 75 89 "Arrow Pad"
+ markrow $sorted 90 108 "Numeric Pad"
+ markrow $sorted 109 109 "??? Unknown keys ???"
+ markrow $sorted 110 126 "Esc, Function Keys, PrintScreen/ScrollLock/Pause"
+ markrow $sorted 127 130 "??? Unknown keys ???"
+ markrow $sorted 131 133 "Japanese Keys"
+ markrow $sorted 134 149 "??? Unknown keys ???"
+ markrow $sorted 150 151 "Korean Keys"
+ markrow $sorted 152 99999 "??? Unknown keys ???"
+ cat $header $sorted > $i.neat
+ rm -f $header $sorted
+
+ echo "Neaten $i -> $i.neat"
+done
diff --git a/usr/src/cmd/loadkeys/type_101/netherlands b/usr/src/cmd/loadkeys/type_101/netherlands
new file mode 100644
index 0000000000..840d51f920
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/netherlands
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Dutch key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base @ shift § caps @ ctrl ^@ altg '¬'
+key 2 base 1 shift ! caps 1 ctrl 1 altg ¹
+key 3 base 2 shift '"' caps 2 ctrl 2 altg ²
+key 4 base 3 shift # caps 3 ctrl 3 altg ³
+key 5 base 4 shift $ caps 4 ctrl 4 altg ¼
+key 6 base 5 shift % caps 5 ctrl 5 altg ½
+key 7 base 6 shift & caps 6 ctrl 6 altg ¾
+key 8 base 7 shift _ caps 7 ctrl ^_ altg £
+key 9 base 8 shift ( caps 8 ctrl 8 altg {
+key 10 base 9 shift ) caps 9 ctrl ^\ altg }
+key 11 base 0 shift · caps 0 ctrl 0 altg nop
+key 12 base / shift ? caps / ctrl / altg '\\'
+key 13 base ° shift fa_tilde caps ° ctrl ° altg fa_cedilla
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg ¶
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base fa_umlaut shift fa_cflex caps ü ctrl ü altg nop
+key 28 base * shift | caps * ctrl * altg ~
+key 29 base < shift > caps < ctrl < altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg ß
+key 40 base + shift ± caps + ctrl + altg nop
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 42 base < shift > caps < ctrl < altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base [ shift ] caps [ ctrl [ altg ¦ numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg «
+key 47 base x shift X caps X ctrl ^X altg »
+key 48 base c shift C caps C ctrl ^C altg ¢
+key 52 base m shift M caps M ctrl '\r' altg µ
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg ·
+key 55 base - shift = caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/norway b/usr/src/cmd/loadkeys/type_101/norway
new file mode 100644
index 0000000000..148b77ca2a
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/norway
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Norwegian key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base | shift § caps | ctrl | altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift # caps 3 ctrl 3 altg £
+key 5 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 6 base 5 shift % caps 5 ctrl 5 altg ~
+key 7 base 6 shift & caps 6 ctrl 6 altg ^
+key 8 base 7 shift / caps 7 ctrl 7 altg {
+key 9 base 8 shift ( caps 8 ctrl ^[ altg [
+key 10 base 9 shift ) caps 9 ctrl ^] altg ]
+key 11 base 0 shift = caps 0 ctrl 0 altg }
+key 12 base + shift ? caps + ctrl + altg nop
+key 13 base '\\' shift fa_grave caps '\\' ctrl '\\' altg fa_acute
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base å shift Å caps Å ctrl å altg nop
+key 28 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 29 base '\'' shift * caps '\'' ctrl ^^ altg `
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ø shift Ø caps Ø ctrl ø altg nop
+key 41 base æ shift Æ caps Æ ctrl æ altg nop
+key 42 base '\'' shift * caps '\'' ctrl ^^ altg `
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl ^\ altg nop numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/poland b/usr/src/cmd/loadkeys/type_101/poland
new file mode 100644
index 0000000000..ee500bd98a
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/poland
@@ -0,0 +1,95 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Poland key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 all nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg ~
+key 3 base 2 shift " caps 2 ctrl 2 altg nop
+key 4 base 3 shift # caps 3 ctrl 3 altg fa_cflex
+key 5 base 4 shift ¤ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg nop
+key 8 base 7 shift / caps 7 ctrl 7 altg `
+key 9 base 8 shift ( caps 8 ctrl 8 altg nop
+key 10 base 9 shift ) caps 9 ctrl 9 altg fa_acute
+key 11 base 0 shift = caps 0 ctrl 0 altg nop
+key 12 base + shift ? caps + ctrl + altg fa_umlaut
+key 13 base nop shift * caps nop ctrl nop altg fa_cedilla
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg '\\'
+key 18 base w shift W caps W ctrl ^W altg |
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base z shift Z caps Z ctrl ^Z altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base nop shift nop caps nop ctrl nop altg ÷
+key 28 base nop shift nop caps nop ctrl nop altg ×
+key 29 base ó shift nop caps ó ctrl ó altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 34 base f shift F caps F ctrl ^F altg [
+key 35 base g shift G caps G ctrl ^G altg ]
+key 36 base h shift H caps H ctrl ^H altg nop
+key 40 base nop shift nop caps nop ctrl nop altg $
+key 41 base nop shift nop caps nop ctrl nop altg ß
+key 42 base # shift '\'' caps # ctrl # altg '`'
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base y shift Y caps Y ctrl ^Y altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 49 base v shift V caps V ctrl ^V altg @
+key 50 base b shift B caps B ctrl ^B altg {
+key 51 base n shift N caps N ctrl ^N altg }
+key 52 base m shift M caps M ctrl '\r' altg §
+key 53 base , shift ; caps , ctrl , altg <
+key 54 base . shift : caps . ctrl . altg >
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/portugal b/usr/src/cmd/loadkeys/type_101/portugal
new file mode 100644
index 0000000000..b452e1c6e0
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/portugal
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Portugese key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base '\\' shift | caps '\\' ctrl '\\' altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift # caps 3 ctrl 3 altg £
+key 5 base 4 shift $ caps 4 ctrl 4 altg §
+key 6 base 5 shift % caps 5 ctrl 5 altg ~
+key 7 base 6 shift & caps 6 ctrl 6 altg ^
+key 8 base 7 shift / caps 7 ctrl 7 altg {
+key 9 base 8 shift ( caps 8 ctrl ^[ altg [
+key 10 base 9 shift ) caps 9 ctrl ^] altg ]
+key 11 base 0 shift = caps 0 ctrl 0 altg }
+key 12 base '\'' shift ? caps '\'' ctrl ^\ altg `
+key 13 base « shift » caps « ctrl « altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base + shift * caps + ctrl + altg fa_umlaut
+key 28 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg fa_acute
+key 29 base fa_tilde shift fa_cflex caps fa_tilde ctrl fa_tilde altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ç shift Ç caps Ç ctrl ç altg nop
+key 41 base º shift ª caps º ctrl Ø altg nop
+key 42 base fa_tilde shift fa_cflex caps fa_tilde ctrl fa_tilde altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl < altg nop numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/reset b/usr/src/cmd/loadkeys/type_101/reset
new file mode 100644
index 0000000000..9230552814
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/reset
@@ -0,0 +1,187 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Resets every single key on the default type101
+# Useful in returning default type101 to sanity
+#
+
+# ??? Unknown keys ???
+key 0 all hole
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ~ caps ` ctrl ^^ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 4 base 3 shift # caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 16 base '\t' shift '\t' caps '\t' ctrl '\t' altg nop
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 19 base e shift E caps E ctrl ^E altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 21 base t shift T caps T ctrl ^T altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 23 base u shift U caps U ctrl ^U altg nop
+key 24 base i shift I caps I ctrl '\t' altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 30 all shiftkeys+capslock
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 33 base d shift D caps D ctrl ^D altg nop
+key 34 base f shift F caps F ctrl ^F altg nop
+key 35 base g shift G caps G ctrl ^G altg nop
+key 36 base h shift H caps H ctrl '\b' altg nop
+key 37 base j shift J caps J ctrl '\n' altg nop
+key 38 base k shift K caps K ctrl '\v' altg nop
+key 39 base l shift L caps L ctrl ^L altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 43 base '\r' shift '\r' caps '\r' ctrl '\r' altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 44 all shiftkeys+leftshift up shiftkeys+leftshift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 49 base v shift V caps V ctrl ^V altg nop
+key 50 base b shift B caps B ctrl ^B altg nop
+key 51 base n shift N caps N ctrl ^N altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+key 57 all shiftkeys+rightshift up shiftkeys+rightshift
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 58 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 59 all hole
+key 60 all shiftkeys+alt up shiftkeys+alt
+key 61 all ' '
+key 62 all shiftkeys+alt up shiftkeys+alt
+key 63 all hole
+key 64 all shiftkeys+rightctrl up shiftkeys+rightctrl
+key 65 all hole
+
+# ??? Unknown keys ???
+key 66 all hole
+key 67 all hole
+key 68 all hole
+key 69 all hole
+key 70 all hole
+key 71 all hole
+key 72 all hole
+key 73 all hole
+key 74 all hole
+
+# Arrow Pad
+key 75 all bf(8)
+key 76 all '\177'
+key 77 all nop
+key 78 all hole
+key 79 all string+leftarrow
+key 80 all rf(7)
+key 81 all rf(13)
+key 82 all hole
+key 83 all string+uparrow
+key 84 all string+downarrow
+key 85 all rf(9)
+key 86 all rf(15)
+key 87 all hole
+key 88 all hole
+key 89 all string+rightarrow
+
+# Numeric Pad
+key 90 all shiftkeys+numlock
+key 91 base rf(7) shift 7 caps rf(7) ctrl pad7 altg nop numl pad7
+key 92 base string+leftarrow shift 4 caps string+leftarrow ctrl pad4 altg nop numl pad4
+key 93 base rf(13) shift 1 caps rf(13) ctrl pad1 altg nop numl pad1
+key 94 all hole
+key 95 base padslash shift / caps padslash ctrl padslash altg nop
+key 96 base string+uparrow shift 8 caps string+uparrow ctrl pad8 altg nop numl pad8
+key 97 base rf(11) shift 5 caps rf(11) ctrl pad5 altg nop numl pad5
+key 98 base string+downarrow shift 2 caps string+downarrow ctrl pad2 altg nop numl pad2
+key 99 base bf(8) shift 0 caps bf(8) ctrl pad0 altg nop numl pad0
+key 100 base padstar shift * caps padstar ctrl padstar altg nop
+key 101 base rf(9) shift 9 caps rf(9) ctrl pad9 altg nop numl pad9
+key 102 base string+rightarrow shift 6 caps string+rightarrow ctrl pad6 altg nop numl pad6
+key 103 base rf(15) shift 3 caps rf(15) ctrl pad3 altg nop numl pad3
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+key 105 base padminus shift - caps padminus ctrl padminus altg nop
+key 106 base padplus shift + caps padplus ctrl padplus altg nop
+key 107 all hole
+key 108 base padenter shift '\n' caps padenter ctrl padenter altg nop
+
+# ??? Unknown keys ???
+key 109 all hole
+
+# Esc, Function Keys, PrintScreen/ScrollLock/Pause
+key 110 all ^[
+key 111 all hole
+key 112 all tf(1)
+key 113 all tf(2)
+key 114 all tf(3)
+key 115 all tf(4)
+key 116 all tf(5)
+key 117 all tf(6)
+key 118 all tf(7)
+key 119 all tf(8)
+key 120 all tf(9)
+key 121 all tf(10)
+key 122 all tf(11)
+key 123 all tf(12)
+key 124 all nop
+key 125 all nop
+key 126 all nop
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/russia b/usr/src/cmd/loadkeys/type_101/russia
new file mode 100644
index 0000000000..1f4ed3efda
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/russia
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Russian key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ¬ caps ` ctrl ` altg ¦
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 4 base 3 shift £ caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift @ caps '\'' ctrl '\'' altg nop
+key 42 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base '\\' shift | caps '\\' ctrl ^\ altg nop numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/spain b/usr/src/cmd/loadkeys/type_101/spain
new file mode 100644
index 0000000000..8c1ab34445
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/spain
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Spanish key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base º shift ª caps º ctrl º altg '\\'
+key 2 base 1 shift ! caps 1 ctrl 1 altg |
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift · caps 3 ctrl 3 altg #
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg ¬
+key 8 base 7 shift / caps 7 ctrl 7 altg nop
+key 9 base 8 shift ( caps 8 ctrl ^[ altg nop
+key 10 base 9 shift ) caps 9 ctrl ^] altg nop
+key 11 base 0 shift = caps 0 ctrl 0 altg nop
+key 12 base '\'' shift ? caps '\'' ctrl ^\ altg nop
+key 13 base ¡ shift ¿ caps ¡ ctrl ¡ altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base fa_grave shift fa_cflex caps fa_grave ctrl fa_grave altg [
+key 28 base + shift * caps + ctrl + altg ]
+key 29 base ç shift Ç caps ç ctrl ç altg }
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ñ shift Ñ caps ñ ctrl ñ altg nop
+key 41 base fa_acute shift fa_umlaut caps fa_acute ctrl fa_acute altg {
+key 42 base ç shift Ç caps ç ctrl ç altg }
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl < altg nop numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/sweden b/usr/src/cmd/loadkeys/type_101/sweden
new file mode 100644
index 0000000000..803b894123
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/sweden
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Swedish key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base § shift ½ caps § ctrl § altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift # caps 3 ctrl 3 altg ³
+key 5 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg nop
+key 8 base 7 shift / caps 7 ctrl 7 altg {
+key 9 base 8 shift ( caps 8 ctrl ^[ altg [
+key 10 base 9 shift ) caps 9 ctrl ^] altg ]
+key 11 base 0 shift = caps 0 ctrl 0 altg }
+key 12 base + shift ? caps + ctrl + altg '\\'
+key 13 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base å shift Å caps Å ctrl å altg nop
+key 28 base fa_umlaut shift ^ caps fa_umlaut ctrl fa_umlaut altg ~
+key 29 base '\'' shift * caps '\'' ctrl ^^ altg `
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ö shift Ö caps Ö ctrl ö altg nop
+key 41 base ä shift Ä caps Ä ctrl ä altg nop
+key 42 base '\'' shift * caps '\'' ctrl ^^ altg `
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl ^\ altg | numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/swiss_french b/usr/src/cmd/loadkeys/type_101/swiss_french
new file mode 100644
index 0000000000..7a16aaf51e
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/swiss_french
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Swiss French key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base § shift º caps § ctrl § altg nop
+key 2 base 1 shift + caps 1 ctrl 1 altg |
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift * caps 3 ctrl 3 altg #
+key 5 base 4 shift ç caps 4 ctrl 4 altg ^
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg ¬
+key 8 base 7 shift / caps 7 ctrl 7 altg ¦
+key 9 base 8 shift ( caps 8 ctrl ^[ altg nop
+key 10 base 9 shift ) caps 9 ctrl ^] altg nop
+key 11 base 0 shift = caps 0 ctrl 0 altg nop
+key 12 base + shift ? caps + ctrl + altg fa_acute
+key 13 base fa_cflex shift fa_grave caps fa_cflex ctrl fa_cflex altg fa_tilde
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base z shift Z caps Z ctrl ^Z altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base è shift È caps È ctrl è altg [
+key 28 base fa_umlaut shift ! caps fa_umlaut ctrl fa_umlaut altg ]
+key 29 base $ shift £ caps $ ctrl $ altg }
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base é shift ö caps É ctrl é altg nop
+key 41 base à shift ä caps ä ctrl à altg {
+key 42 base $ shift £ caps $ ctrl $ altg }
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl ^\ altg '\\' numl nonl up nop
+key 46 base y shift Y caps Y ctrl ^Y altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/swiss_german b/usr/src/cmd/loadkeys/type_101/swiss_german
new file mode 100644
index 0000000000..a26edcb774
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/swiss_german
@@ -0,0 +1,90 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Swiss German key layout
+# "caps lock" acts as "shift lock" on this keyboard
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base § shift ½ caps § ctrl § altg nop
+key 2 base 1 shift + caps 1 ctrl 1 altg |
+key 3 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 4 base 3 shift * caps 3 ctrl 3 altg #
+key 5 base 4 shift ç caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg ¬
+key 8 base 7 shift / caps 7 ctrl 7 altg ¦
+key 9 base 8 shift ( caps 8 ctrl ^[ altg nop
+key 10 base 9 shift ) caps 9 ctrl ^] altg nop
+key 11 base 0 shift = caps 0 ctrl 0 altg nop
+key 12 base + shift ? caps + ctrl + altg ´
+key 13 base fa_cflex shift fa_grave caps fa_cflex ctrl fa_cflex altg fa_tilde
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base z shift Z caps Z ctrl ^Z altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base è shift È caps È ctrl è altg [
+key 28 base fa_umlaut shift ! caps fa_umlaut ctrl fa_umlaut altg ]
+key 29 base $ shift £ caps $ ctrl $ altg }
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base é shift É caps É ctrl é altg é
+key 41 base ä shift Ä caps Ä ctrl ä altg {
+key 42 base $ shift £ caps $ ctrl $ altg }
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base < shift > caps < ctrl ^\ altg '\\' numl nonl up nop
+key 46 base y shift Y caps Y ctrl ^Y altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift ; caps , ctrl , altg nop
+key 54 base . shift : caps . ctrl . altg nop
+key 55 base - shift _ caps - ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/taiwan b/usr/src/cmd/loadkeys/type_101/taiwan
new file mode 100644
index 0000000000..56139b8914
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/taiwan
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Taiwan key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ~ caps ` ctrl ^^ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 4 base 3 shift # caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+alt up shiftkeys+alt
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/turkey b/usr/src/cmd/loadkeys/type_101/turkey
new file mode 100644
index 0000000000..05b5277fd4
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/turkey
@@ -0,0 +1,95 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Turkey key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base '"' shift é caps '"' ctrl '"' altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '\'' caps 2 ctrl 2 altg nop
+key 4 base 3 shift fa_cflex caps 3 ctrl 3 altg #
+key 5 base 4 shift + caps 4 ctrl 4 altg $
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift & caps 6 ctrl 6 altg nop
+key 8 base 7 shift / caps 7 ctrl 7 altg {
+key 9 base 8 shift ( caps 8 ctrl 8 altg [
+key 10 base 9 shift ) caps 9 ctrl 9 altg ]
+key 11 base 0 shift = caps 0 ctrl 0 altg }
+key 12 base * shift ? caps * ctrl * altg '\\'
+key 13 base - shift _ caps - ctrl ^_ altg nop
+key 14 all hole
+key 15 base '\b' shift '\b' caps '\b' ctrl '\b' altg nop
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg @
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base nop shift nop caps nop ctrl nop altg fa_umlaut
+key 28 base ü shift Ü caps Ü ctrl ü altg ~
+key 29 base , shift ; caps , ctrl , altg fa_grave
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg æ
+key 32 base s shift S caps S ctrl ^S altg ß
+key 34 base f shift F caps F ctrl ^F altg nop
+key 35 base g shift G caps G ctrl ^G altg nop
+key 36 base h shift H caps H ctrl ^H altg nop
+key 40 base nop shift nop caps nop ctrl nop altg fa_acute
+key 41 base i shift nop caps nop ctrl nop altg ß
+key 42 base # shift '\'' caps # ctrl # altg '`'
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 49 base v shift V caps V ctrl ^V altg nop
+key 50 base b shift B caps B ctrl ^B altg nop
+key 51 base n shift N caps N ctrl ^N altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base ö shift Ö caps Ö ctrl ö altg nop
+key 54 base ç shift Ç caps Ç ctrl ç altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift padsep caps '\177' ctrl padsep numl padsep
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/uk b/usr/src/cmd/loadkeys/type_101/uk
new file mode 100644
index 0000000000..86d28c99f1
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/uk
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# UK key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ¬ caps ` ctrl ` altg ¦
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 4 base 3 shift £ caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift @ caps '\'' ctrl '\'' altg nop
+key 42 base # shift ~ caps # ctrl # altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 base '\\' shift | caps '\\' ctrl ^\ altg nop numl nonl up nop
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+altgraph up shiftkeys+altgraph
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_101/us b/usr/src/cmd/loadkeys/type_101/us
new file mode 100644
index 0000000000..0173086ff3
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_101/us
@@ -0,0 +1,89 @@
+#
+#pragma ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# US key layout
+#
+
+# Main Pad Row 1: digits, Backspace
+key 1 base ` shift ~ caps ` ctrl ^^ altg nop
+key 2 base 1 shift ! caps 1 ctrl 1 altg nop
+key 3 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 4 base 3 shift # caps 3 ctrl 3 altg nop
+key 5 base 4 shift $ caps 4 ctrl 4 altg nop
+key 6 base 5 shift % caps 5 ctrl 5 altg nop
+key 7 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 8 base 7 shift & caps 7 ctrl 7 altg nop
+key 9 base 8 shift * caps 8 ctrl 8 altg nop
+key 10 base 9 shift ( caps 9 ctrl 9 altg nop
+key 11 base 0 shift ) caps 0 ctrl 0 altg nop
+key 12 base - shift _ caps - ctrl ^_ altg nop
+key 13 base = shift + caps = ctrl = altg nop
+key 14 all hole
+key 15 all '\b'
+
+# Main Pad Row 2: Tab, QWERTY...
+key 17 base q shift Q caps Q ctrl ^Q altg nop
+key 18 base w shift W caps W ctrl ^W altg nop
+key 20 base r shift R caps R ctrl ^R altg nop
+key 22 base y shift Y caps Y ctrl ^Y altg nop
+key 25 base o shift O caps O ctrl ^O altg nop
+key 26 base p shift P caps P ctrl ^P altg nop
+key 27 base [ shift { caps [ ctrl ^[ altg nop
+key 28 base ] shift } caps ] ctrl ^] altg nop
+key 29 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 3: CapsLock, ASDFGH..., Enter
+key 31 base a shift A caps A ctrl ^A altg nop
+key 32 base s shift S caps S ctrl ^S altg nop
+key 40 base ; shift : caps ; ctrl ; altg nop
+key 41 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+
+# Main Pad Row 4: Shift, ZXCVBN..., Shift
+key 45 all hole
+key 46 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base x shift X caps X ctrl ^X altg nop
+key 48 base c shift C caps C ctrl ^C altg nop
+key 52 base m shift M caps M ctrl '\r' altg nop
+key 53 base , shift < caps , ctrl , altg nop
+key 54 base . shift > caps . ctrl . altg nop
+key 55 base / shift ? caps / ctrl ^_ altg nop
+key 56 all nop
+
+# Main Pad Row 5: Ctrl, Alt, Space, ...
+key 62 all shiftkeys+alt up shiftkeys+alt
+
+# Numeric Pad
+key 104 base '\177' shift . caps '\177' ctrl paddot altg nop numl paddot
+
+# Japanese Keys
+key 131 all hole
+key 132 all hole
+key 133 all hole
+
+# Korean Keys
+key 150 all hole
+key 151 all hole
diff --git a/usr/src/cmd/loadkeys/type_4/Makefile b/usr/src/cmd/loadkeys/type_4/Makefile
new file mode 100644
index 0000000000..556b22e5bb
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/Makefile
@@ -0,0 +1,273 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Copyright (c) 1991, by Sun Microsystems, Inc.
+#
+# cmd/loadkeys/type_4/Makefile
+
+KEYTABLES = \
+ us belgium_france germany swiss_german swiss_french uk \
+ canada denmark italy netherlands norway portugal spain_latin_america \
+ sweden_finland japan korea taiwan us101a_pc \
+ reset germany_5 norway_5 sweden_5 uk_5 italy_5 \
+ portugal_5 swiss_french_5 us_5 denmark_5 netherlands_5 spain_5 \
+ swiss_german_5 france_5 japan_5 korea_5 taiwan_5 canadian_french_5 \
+ hungary_5 poland_5 czech_5 russia_5 canadian_french_5_tbits5 \
+ germany_hobo norway_hobo sweden_hobo uk_hobo italy_hobo \
+ portugal_hobo swiss_french_hobo us_hobo denmark_hobo netherlands_hobo \
+ spain_hobo swiss_german_hobo france_hobo japan_hobo korea_hobo \
+ taiwan_hobo canadian_french_hobo
+
+include ../../Makefile.cmd
+
+ROOTKEYDIR= $(ROOTSHLIB)/keytables/type_4
+ROOTKEYTABLES= $(KEYTABLES:%=$(ROOTKEYDIR)/%)
+
+# there is an install target for each ROOT layout link
+#
+LAYOUTS= \
+ layout_00 layout_01 layout_02 layout_03 layout_04 layout_05 \
+ layout_06 layout_07 layout_08 layout_09 layout_0a layout_0b \
+ layout_0c layout_0d layout_0e layout_10 layout_11 layout_13 \
+ layout_20 layout_21 layout_22 layout_23 layout_24 layout_25 \
+ layout_26 layout_27 layout_28 layout_29 layout_2a layout_2b \
+ layout_2c layout_2d layout_2e layout_2f layout_30 layout_31 \
+ layout_32 layout_33 layout_34 layout_35 layout_36 layout_3f \
+ layout_50 layout_51 layout_52 layout_53 layout_54 \
+ layout_55 layout_56 layout_57 layout_58 layout_59 layout_5a \
+ layout_5b layout_5c layout_5d layout_5e \
+ layout_5f layout_60 layout_61
+
+ROOTLINKS= $(LAYOUTS:%=$(ROOTKEYDIR)/%)
+
+$(ROOTKEYTABLES) := FILEMODE = 444
+
+# install rule
+$(ROOTKEYDIR)/%: %
+ $(INS.file)
+
+COMPATKEYDIR= $(ROOTSHLIB)/keytables
+
+COMPATLINKS= $(LAYOUTS:%=$(COMPATKEYDIR)/%) $(KEYTABLES:%=$(COMPATKEYDIR)/%)
+
+$(COMPATKEYDIR)/%: $(ROOTKEYDIR)/%
+ $(RM) $@; ln $< $@
+
+.KEEP_STATE:
+
+all: $(KEYTABLES)
+
+install: all $(COMPATKEYDIR) $(ROOTKEYDIR) $(ROOTKEYTABLES) $(ROOTLINKS) $(COMPATLINKS)
+
+clean:
+
+$(COMPATKEYDIR):
+ $(INS.dir)
+
+$(ROOTKEYDIR): $(COMPATKEYDIR)
+ $(INS.dir)
+
+# install targets for ROOT layout links
+#
+$(ROOTKEYDIR)/layout_00: $(ROOTKEYDIR)/us
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us $@
+
+$(ROOTKEYDIR)/layout_01: $(ROOTKEYDIR)/us
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us $@
+
+$(ROOTKEYDIR)/layout_02: $(ROOTKEYDIR)/belgium_france
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/belgium_france $@
+
+$(ROOTKEYDIR)/layout_03: $(ROOTKEYDIR)/canada
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/canada $@
+
+$(ROOTKEYDIR)/layout_04: $(ROOTKEYDIR)/denmark
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/denmark $@
+
+$(ROOTKEYDIR)/layout_05: $(ROOTKEYDIR)/germany
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/germany $@
+
+$(ROOTKEYDIR)/layout_06: $(ROOTKEYDIR)/italy
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/italy $@
+
+$(ROOTKEYDIR)/layout_07: $(ROOTKEYDIR)/netherlands
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/netherlands $@
+
+$(ROOTKEYDIR)/layout_08: $(ROOTKEYDIR)/norway
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/norway $@
+
+$(ROOTKEYDIR)/layout_09: $(ROOTKEYDIR)/portugal
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/portugal $@
+
+$(ROOTKEYDIR)/layout_0a: $(ROOTKEYDIR)/spain_latin_america
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/spain_latin_america $@
+
+$(ROOTKEYDIR)/layout_0b: $(ROOTKEYDIR)/sweden_finland
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/sweden_finland $@
+
+$(ROOTKEYDIR)/layout_0c: $(ROOTKEYDIR)/swiss_french
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_french $@
+
+$(ROOTKEYDIR)/layout_0d: $(ROOTKEYDIR)/swiss_german
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_german $@
+
+$(ROOTKEYDIR)/layout_0e: $(ROOTKEYDIR)/uk
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/uk $@
+
+$(ROOTKEYDIR)/layout_10: $(ROOTKEYDIR)/korea
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/korea $@
+
+$(ROOTKEYDIR)/layout_11: $(ROOTKEYDIR)/taiwan
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/taiwan $@
+
+$(ROOTKEYDIR)/layout_13: $(ROOTKEYDIR)/us101a_pc
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us101a_pc $@
+
+$(ROOTKEYDIR)/layout_20: $(ROOTKEYDIR)/japan
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/japan $@
+
+$(ROOTKEYDIR)/layout_21: $(ROOTKEYDIR)/us_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us_5 $@
+
+$(ROOTKEYDIR)/layout_22: $(ROOTKEYDIR)/us_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us_5 $@
+
+$(ROOTKEYDIR)/layout_23: $(ROOTKEYDIR)/france_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/france_5 $@
+
+$(ROOTKEYDIR)/layout_24: $(ROOTKEYDIR)/denmark_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/denmark_5 $@
+
+$(ROOTKEYDIR)/layout_25: $(ROOTKEYDIR)/germany_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/germany_5 $@
+
+$(ROOTKEYDIR)/layout_26: $(ROOTKEYDIR)/italy_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/italy_5 $@
+
+$(ROOTKEYDIR)/layout_27: $(ROOTKEYDIR)/netherlands_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/netherlands_5 $@
+
+$(ROOTKEYDIR)/layout_28: $(ROOTKEYDIR)/norway_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/norway_5 $@
+
+$(ROOTKEYDIR)/layout_29: $(ROOTKEYDIR)/portugal_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/portugal_5 $@
+
+$(ROOTKEYDIR)/layout_2a: $(ROOTKEYDIR)/spain_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/spain_5 $@
+
+$(ROOTKEYDIR)/layout_2b: $(ROOTKEYDIR)/sweden_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/sweden_5 $@
+
+$(ROOTKEYDIR)/layout_2c: $(ROOTKEYDIR)/swiss_french_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_french_5 $@
+
+$(ROOTKEYDIR)/layout_2d: $(ROOTKEYDIR)/swiss_german_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_german_5 $@
+
+$(ROOTKEYDIR)/layout_2e: $(ROOTKEYDIR)/uk_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/uk_5 $@
+
+$(ROOTKEYDIR)/layout_2f: $(ROOTKEYDIR)/korea_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/korea_5 $@
+
+$(ROOTKEYDIR)/layout_30: $(ROOTKEYDIR)/taiwan_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/taiwan_5 $@
+
+$(ROOTKEYDIR)/layout_31: $(ROOTKEYDIR)/japan_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/japan_5 $@
+
+$(ROOTKEYDIR)/layout_32: $(ROOTKEYDIR)/canadian_french_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/canadian_french_5 $@
+
+$(ROOTKEYDIR)/layout_33: $(ROOTKEYDIR)/hungary_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/hungary_5 $@
+
+$(ROOTKEYDIR)/layout_34: $(ROOTKEYDIR)/poland_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/poland_5 $@
+
+$(ROOTKEYDIR)/layout_35: $(ROOTKEYDIR)/czech_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/czech_5 $@
+
+$(ROOTKEYDIR)/layout_36: $(ROOTKEYDIR)/russia_5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/russia_5 $@
+
+$(ROOTKEYDIR)/layout_3f: $(ROOTKEYDIR)/canadian_french_5_tbits5
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/canadian_french_5_tbits5 $@
+
+$(ROOTKEYDIR)/layout_50: $(ROOTKEYDIR)/us_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us_hobo $@
+
+$(ROOTKEYDIR)/layout_51: $(ROOTKEYDIR)/us_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us_hobo $@
+
+$(ROOTKEYDIR)/layout_52: $(ROOTKEYDIR)/france_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/france_hobo $@
+
+$(ROOTKEYDIR)/layout_53: $(ROOTKEYDIR)/denmark_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/denmark_hobo $@
+
+$(ROOTKEYDIR)/layout_54: $(ROOTKEYDIR)/germany_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/germany_hobo $@
+
+$(ROOTKEYDIR)/layout_55: $(ROOTKEYDIR)/italy_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/italy_hobo $@
+
+$(ROOTKEYDIR)/layout_56: $(ROOTKEYDIR)/netherlands_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/netherlands_hobo $@
+
+$(ROOTKEYDIR)/layout_57: $(ROOTKEYDIR)/norway_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/norway_hobo $@
+
+$(ROOTKEYDIR)/layout_58: $(ROOTKEYDIR)/portugal_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/portugal_hobo $@
+
+$(ROOTKEYDIR)/layout_59: $(ROOTKEYDIR)/spain_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/spain_hobo $@
+
+$(ROOTKEYDIR)/layout_5a: $(ROOTKEYDIR)/sweden_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/sweden_hobo $@
+
+$(ROOTKEYDIR)/layout_5b: $(ROOTKEYDIR)/swiss_french_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_french_hobo $@
+
+$(ROOTKEYDIR)/layout_5c: $(ROOTKEYDIR)/swiss_german_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_german_hobo $@
+
+$(ROOTKEYDIR)/layout_5d: $(ROOTKEYDIR)/uk_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/uk_hobo $@
+
+$(ROOTKEYDIR)/layout_5e: $(ROOTKEYDIR)/korea_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/korea_hobo $@
+
+$(ROOTKEYDIR)/layout_5f: $(ROOTKEYDIR)/taiwan_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/taiwan_hobo $@
+
+$(ROOTKEYDIR)/layout_60: $(ROOTKEYDIR)/japan_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/japan_hobo $@
+
+$(ROOTKEYDIR)/layout_61: $(ROOTKEYDIR)/canadian_french_hobo
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/canadian_french_hobo $@
+
+include ../../Makefile.targ
diff --git a/usr/src/cmd/loadkeys/type_4/belgium_france b/usr/src/cmd/loadkeys/type_4/belgium_france
new file mode 100644
index 0000000000..fa843809a7
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/belgium_france
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Belgian/French key layout
+#
+key 88 base [ shift { caps [ ctrl ^[ altg «
+key 15 base ] shift } caps ] ctrl ^] altg »
+key 30 base & shift 1 caps & ctrl & altg nop
+key 31 base é shift 2 caps E ctrl É altg ²
+key 32 base '"' shift 3 caps '"' ctrl '"' altg ³
+key 33 base '\'' shift 4 caps '\'' ctrl '\'' altg nop
+key 34 base ( shift 5 caps ( ctrl ( altg nop
+key 35 base § shift 6 caps § ctrl ^^ altg ^
+key 36 base è shift 7 caps E ctrl è altg nop
+key 37 base ! shift 8 caps ! ctrl ! altg £
+key 38 base ç shift 9 caps C ctrl ^\ altg '\\'
+key 39 base à shift 0 caps A ctrl à altg nop
+key 40 base ) shift ° caps ) ctrl ) altg ~
+key 41 base - shift _ caps - ctrl ^_ altg #
+key 54 base a shift A caps A ctrl ^A altg nop
+key 55 base z shift Z caps Z ctrl ^Z altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base fa_cflex shift fa_umlaut caps fa_cflex ctrl fa_cflex altg nop
+key 65 base ` shift $ caps ` ctrl ^@ altg @
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base q shift Q caps Q ctrl ^Q altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base m shift M caps M ctrl '\r' altg µ
+key 87 base ù shift % caps U ctrl ù altg nop
+key 42 base * shift | caps * ctrl ^\ altg ¤
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base w shift W caps W ctrl ^W altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base , shift ? caps , ctrl , altg nop
+key 107 base ; shift . caps ; ctrl ; altg nop
+key 108 base : shift / caps : ctrl : altg nop
+key 109 base = shift + caps = ctrl = altg nop
+key 119 all shiftkeys+altgraph up shiftkeys+altgraph
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+capslock
diff --git a/usr/src/cmd/loadkeys/type_4/canada b/usr/src/cmd/loadkeys/type_4/canada
new file mode 100644
index 0000000000..f0303cc2c5
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/canada
@@ -0,0 +1,74 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Canadian key layout
+#
+key 88 base # shift | caps # ctrl ^\ altg '\\'
+key 30 base 1 shift ! caps 1 ctrl 1 altg ±
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift / caps 3 ctrl 3 altg £
+key 33 base 4 shift $ caps 4 ctrl 4 altg ¢
+key 34 base 5 shift % caps 5 ctrl 5 altg ¤
+key 35 base 6 shift ? caps 6 ctrl 6 altg ¬
+key 36 base 7 shift & caps 7 ctrl 7 altg |
+key 37 base 8 shift * caps 8 ctrl 8 altg ²
+key 38 base 9 shift ( caps 9 ctrl 9 altg ³
+key 39 base 0 shift ) caps 0 ctrl 0 altg ¼
+key 40 base - shift _ caps - ctrl ^_ altg ½
+key 41 base = shift + caps = ctrl = altg ¾
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg §
+key 63 base p shift P caps P ctrl ^P altg ¶
+#key 64 base fa_cflex shift fa_umlaut caps fa_cflex ctrl fa_cflex altg <
+#key 65 base fa_cedilla shift fa_tilde caps fa_cedilla ctrl fa_cedilla altg =
+key 64 base fa_cflex shift ^ caps fa_cflex ctrl ^^ altg [
+key 65 base fa_cedilla shift fa_umlaut caps fa_cedilla ctrl ^] altg ]
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ; shift : caps ; ctrl ; altg ~
+key 87 base fa_grave shift ` caps fa_grave ctrl ` altg {
+#The next line includes ^[ - not the right place for it but the
+# best place has already been used up with ^^.
+key 42 base < shift > caps < ctrl ^[ altg }
+key 124 base « shift » caps « ctrl « altg ° numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg «
+key 104 base b shift B caps B ctrl ^B altg »
+key 105 base n shift N caps N ctrl ^N altg °
+key 106 base m shift M caps M ctrl '\r' altg µ
+key 107 base , shift '\'' caps , ctrl , altg ¯
+key 108 base . shift . caps . ctrl . altg nop
+key 109 base é shift É caps É ctrl é altg fa_acute
+key 119 all shiftkeys+altgraph up shiftkeys+altgraph
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+capslock
diff --git a/usr/src/cmd/loadkeys/type_4/canadian_french_5 b/usr/src/cmd/loadkeys/type_4/canadian_french_5
new file mode 100644
index 0000000000..ffca84afb8
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/canadian_french_5
@@ -0,0 +1,69 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Canadian French Type 5 key layout
+#
+key 42 base / shift \ caps / ctrl / altg |
+key 30 base 1 shift ! caps 1 ctrl 1 altg ±
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift $ caps 4 ctrl 4 altg ¢
+key 34 base 5 shift % caps 5 ctrl 5 altg ¤
+key 35 base 6 shift ? caps 6 ctrl 6 altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg [
+key 39 base 0 shift ) caps 0 ctrl 0 altg ]
+key 40 base - shift _ caps - ctrl - altg nop
+key 41 base = shift + caps = ctrl = altg ¬
+key 63 base p shift P caps P ctrl  altg ¶
+key 64 base fa_cflex shift fa_umlaut caps fa_cflex ctrl  altg fa_grave
+key 65 base ç shift Ç caps Ç ctrl ç altg ~
+key 86 base ; shift : caps ; ctrl ; altg °
+key 87 base è shift È caps È ctrl è altg nop
+key 88 base à shift À caps À ctrl à altg nop
+key 124 base ù shift Ù caps Ù ctrl ù altg nop numl ù
+key 100 base z shift Z caps Z ctrl  altg «
+key 101 base x shift X caps X ctrl  altg »
+key 106 base m shift M caps M ctrl ^M altg nop
+key 107 base , shift '\'' caps , ctrl , altg <
+key 108 base . shift '"' caps . ctrl . altg >
+key 109 base é shift É caps É ctrl é altg `
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/canadian_french_5_tbits5 b/usr/src/cmd/loadkeys/type_4/canadian_french_5_tbits5
new file mode 100644
index 0000000000..067ea91997
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/canadian_french_5_tbits5
@@ -0,0 +1,76 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Canadian French Type 5 TBITS-5 key layout
+#
+key 42 base / shift \ caps / ctrl / altg |
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ? caps 6 ctrl 6 altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg {
+key 37 base 8 shift * caps 8 ctrl 8 altg }
+key 38 base 9 shift ( caps 9 ctrl 9 altg [
+key 39 base 0 shift ) caps 0 ctrl 0 altg ]
+key 40 base - shift _ caps - ctrl - altg nop
+key 41 base = shift + caps = ctrl = altg ¬
+key 63 base p shift P caps P ctrl  altg nop
+key 64 base fa_cflex shift fa_umlaut caps fa_cflex ctrl  altg fa_grave
+key 65 base ç shift Ç caps Ç ctrl ç altg ~
+key 86 base ; shift : caps ; ctrl ; altg °
+key 87 base è shift È caps È ctrl è altg nop
+key 88 base à shift À caps À ctrl à altg nop
+key 124 base ù shift Ù caps Ù ctrl ù altg nop numl ù
+key 100 base z shift Z caps Z ctrl  altg «
+key 101 base x shift X caps X ctrl  altg »
+key 106 base m shift M caps M ctrl ^M altg nop
+key 107 base , shift '\'' caps , ctrl , altg <
+key 108 base . shift '"' caps . ctrl . altg >
+key 109 base é shift É caps É ctrl é altg nop
+key 121 altg  
+key 122 all hole
+#
+# Following key does not exist on keyboard, but has been
+# added for firmware to produce ^ and ` characters.
+#
+key 15 base ^ shift ` caps ^ ctrl ^^ altg ^
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/canadian_french_hobo b/usr/src/cmd/loadkeys/type_4/canadian_french_hobo
new file mode 100644
index 0000000000..1de2e24960
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/canadian_french_hobo
@@ -0,0 +1,75 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Canadian French Hobo key layout
+#
+key 42 base / shift \ caps / ctrl / altg |
+key 30 base 1 shift ! caps 1 ctrl 1 altg ±
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift $ caps 4 ctrl 4 altg ¢
+key 34 base 5 shift % caps 5 ctrl 5 altg ¤
+key 35 base 6 shift ? caps 6 ctrl 6 altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop numl 7
+key 37 base 8 shift * caps 8 ctrl 8 altg nop numl 8
+key 38 base 9 shift ( caps 9 ctrl 9 altg [ numl 9
+key 39 base 0 shift ) caps 0 ctrl 0 altg ] numl *
+key 40 base - shift _ caps - ctrl - altg nop
+key 41 base = shift + caps = ctrl = altg ¬
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 base p shift P caps P ctrl  altg ¶ numl -
+key 64 base fa_cflex shift fa_umlaut caps fa_cflex ctrl  altg fa_grave
+key 65 base ç shift Ç caps Ç ctrl ç altg ~
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ; shift : caps ; ctrl ; altg ° numl +
+key 87 base è shift È caps È ctrl è altg nop
+key 88 base à shift À caps À ctrl à altg nop
+key 124 base ù shift Ù caps Ù ctrl nop altg nop
+key 100 base z shift Z caps Z ctrl  altg «
+key 101 base x shift X caps X ctrl  altg »
+key 106 base m shift M caps M ctrl ^M altg µ numl 0
+key 107 base , shift '\'' caps , ctrl , altg < numl ,
+key 108 base . shift '"' caps . ctrl . altg > numl .
+key 109 base é shift É caps É ctrl é altg ` numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/czech_5 b/usr/src/cmd/loadkeys/type_4/czech_5
new file mode 100644
index 0000000000..4573f1ee82
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/czech_5
@@ -0,0 +1,67 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Czech Type 5 key layout
+#
+key 42 base ` shift ~ caps ` ctrl nop altg nop
+key 30 base + shift 1 caps + ctrl nop altg +
+key 31 base @ shift 2 caps @ ctrl nop altg @
+key 32 base # shift 3 caps # ctrl nop altg #
+key 33 base $ shift 4 caps $ ctrl nop altg $
+key 34 base % shift 5 caps % ctrl nop altg %
+key 35 base ^ shift 6 caps ^ ctrl nop altg ^
+key 36 base & shift 7 caps & ctrl nop altg &
+key 37 base * shift 8 caps * ctrl nop altg *
+key 38 base { shift 9 caps { ctrl nop altg {
+key 39 base } shift 0 caps } ctrl nop altg }
+key 40 base = shift % caps = ctrl nop altg nop
+key 41 base nop shift nop caps nop ctrl nop altg nop
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 64 base [ shift / caps [ ctrl nop altg [
+key 65 base ) shift ( caps ) ctrl nop altg ]
+key 86 base ; shift '"' caps ; ctrl nop altg ;
+key 87 base '\'' shift ! caps '\'' ctrl nop altg '\''
+key 88 base nop shift nop caps nop ctrl nop altg nop
+key 124 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 107 base , shift ? caps , ctrl , altg <
+key 108 base . shift : caps . ctrl . altg >
+key 109 base - shift _ caps - ctrl nop altg nop
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/denmark b/usr/src/cmd/loadkeys/type_4/denmark
new file mode 100644
index 0000000000..6614188516
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/denmark
@@ -0,0 +1,72 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Danish key layout
+#
+key 88 base ½ shift § caps ½ ctrl ½ altg nop
+key 15 base ~ shift ^ caps ~ ctrl ^^ altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base + shift ? caps + ctrl ^_ altg nop
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg |
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base æ shift Æ caps Æ ctrl æ altg nop
+key 87 base ø shift Ø caps Ø ctrl ø altg nop
+key 42 base '\'' shift * caps '\'' ctrl ^^ altg `
+key 124 base < shift > caps < ctrl ^\ altg '\\' numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 76 all shiftkeys+capslock
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all shiftkeys+altgraph up shiftkeys+altgraph
+key 13 all compose
diff --git a/usr/src/cmd/loadkeys/type_4/denmark_5 b/usr/src/cmd/loadkeys/type_4/denmark_5
new file mode 100644
index 0000000000..7bb4be8f49
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/denmark_5
@@ -0,0 +1,65 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Danish Type 5 key layout
+#
+key 42 base ½ shift § caps ½ ctrl ½ altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base + shift ? caps + ctrl ^_ altg nop
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg |
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 86 base æ shift Æ caps Æ ctrl æ altg nop
+key 87 base ø shift Ø caps Ø ctrl ø altg nop
+key 88 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 124 base < shift > caps < ctrl ^\ altg '\\' numl nonl
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/denmark_hobo b/usr/src/cmd/loadkeys/type_4/denmark_hobo
new file mode 100644
index 0000000000..4097edb948
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/denmark_hobo
@@ -0,0 +1,73 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Danish Hobo key layout
+#
+key 42 base ½ shift § caps ½ ctrl ½ altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg { numl 7
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [ numl 8
+key 38 base 9 shift ) caps 9 ctrl ^] altg ] numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg } numl *
+key 40 base + shift ? caps + ctrl ^_ altg nop
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg |
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base æ shift Æ caps Æ ctrl æ altg nop numl +
+key 87 base ø shift Ø caps Ø ctrl ø altg nop
+key 88 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 124 base < shift > caps < ctrl ^\ altg '\\' numl nonl
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/france_5 b/usr/src/cmd/loadkeys/type_4/france_5
new file mode 100644
index 0000000000..6bb1df85d1
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/france_5
@@ -0,0 +1,72 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# French Type 5 key layout
+#
+# "caps lock" acts as "shift lock" on this keyboard
+#
+key 42 base ² shift nop caps ² ctrl ² altg nop
+key 30 base & shift 1 caps & ctrl & altg nop
+key 31 base é shift 2 caps é ctrl é altg ~
+key 32 base '"' shift 3 caps '"' ctrl '"' altg #
+key 33 base '\'' shift 4 caps '\'' ctrl '\'' altg {
+key 34 base ( shift 5 caps ( ctrl ^[ altg [
+key 35 base - shift 6 caps - ctrl ^_ altg |
+key 36 base è shift 7 caps è ctrl è altg `
+key 37 base _ shift 8 caps _ ctrl ^\ altg \
+key 38 base ç shift 9 caps ç ctrl ^^ altg ^
+key 39 base à shift 0 caps à ctrl ^@ altg @
+key 40 base ) shift ° caps ) ctrl ^] altg ]
+key 41 base = shift + caps = ctrl = altg }
+key 54 base a shift A caps A ctrl ^A altg nop
+key 55 base z shift Z caps Z ctrl ^Z altg nop
+key 64 base fa_cflex shift fa_umlaut caps fa_cflex ctrl fa_cflex altg nop
+key 65 base $ shift £ caps $ ctrl $ altg ¤
+key 77 base q shift Q caps Q ctrl ^Q altg nop
+key 86 base m shift M caps M ctrl ^M altg nop
+key 87 base ù shift % caps ù ctrl ù altg nop
+key 88 base * shift µ caps * ctrl * altg nop
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base w shift W caps W ctrl ^W altg nop
+key 106 base , shift ? caps , ctrl , altg nop
+key 107 base ; shift . caps ; ctrl ; altg nop
+key 108 base : shift / caps : ctrl : altg nop
+key 109 base ! shift § caps ! ctrl ! altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/france_hobo b/usr/src/cmd/loadkeys/type_4/france_hobo
new file mode 100644
index 0000000000..c95f74e2f8
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/france_hobo
@@ -0,0 +1,79 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# French Hobo key layout
+#
+# "caps lock" acts as "shift lock" on this keyboard
+#
+key 42 base ² shift nop caps ² ctrl ² altg nop
+key 30 base & shift 1 caps & ctrl & altg nop
+key 31 base é shift 2 caps é ctrl é altg ~
+key 32 base '"' shift 3 caps '"' ctrl '"' altg #
+key 33 base '\'' shift 4 caps '\'' ctrl '\'' altg {
+key 34 base ( shift 5 caps ( ctrl ^[ altg [
+key 35 base - shift 6 caps - ctrl ^_ altg |
+key 36 base è shift 7 caps è ctrl è altg ` numl 7
+key 37 base _ shift 8 caps _ ctrl ^\ altg \ numl 8
+key 38 base ç shift 9 caps ç ctrl ^^ altg ^ numl 9
+key 39 base à shift 0 caps à ctrl ^@ altg @ numl *
+key 40 base ) shift ° caps ) ctrl ^] altg ]
+key 41 base = shift + caps = ctrl = altg }
+key 54 base a shift A caps A ctrl ^A altg nop
+key 55 base z shift Z caps Z ctrl ^Z altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base fa_cflex shift fa_umlaut caps fa_cflex ctrl fa_cflex altg nop
+key 65 base $ shift £ caps $ ctrl $ altg ¤
+key 77 base q shift Q caps Q ctrl ^Q altg nop
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base m shift M caps M ctrl ^M altg nop numl +
+key 87 base ù shift % caps ù ctrl ù altg nop
+key 88 base * shift µ caps * ctrl * altg nop
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base w shift W caps W ctrl ^W altg nop
+key 106 base , shift ? caps , ctrl , altg nop numl 0
+key 107 base ; shift . caps ; ctrl ; altg nop numl ,
+key 108 base : shift / caps : ctrl : altg nop numl .
+key 109 base ! shift § caps ! ctrl ! altg nop numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/germany b/usr/src/cmd/loadkeys/type_4/germany
new file mode 100644
index 0000000000..43bc856ec5
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/germany
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# German key layout
+#
+key 88 base [ shift { caps [ ctrl ^[ altg «
+key 15 base ] shift } caps ] ctrl ^] altg »
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl 2 altg ²
+key 32 base 3 shift § caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg °
+key 37 base 8 shift ( caps 8 ctrl 8 altg `
+key 38 base 9 shift ) caps 9 ctrl 9 altg '
+key 39 base 0 shift = caps 0 ctrl 0 altg |
+key 40 base ß shift ? caps ß ctrl ^\ altg '\\'
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base ü shift Ü caps Ü ctrl ü altg nop
+key 65 base + shift * caps + ctrl + altg ~
+key 76 all shiftkeys+capslock
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ö shift Ö caps Ö ctrl ö altg nop
+key 87 base ä shift Ä caps Ä ctrl ä altg nop
+key 42 base # shift ^ caps # ctrl ^^ altg @
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg µ
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 19 all shiftkeys+altgraph up shiftkeys+altgraph
+key 67 all compose
+key 13 all shiftkeys+alt up shiftkeys+alt
diff --git a/usr/src/cmd/loadkeys/type_4/germany_5 b/usr/src/cmd/loadkeys/type_4/germany_5
new file mode 100644
index 0000000000..5bedb21263
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/germany_5
@@ -0,0 +1,72 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# German Type 5 key layout
+#
+# "caps lock" acts as "shift lock" on this keyboard
+#
+key 42 base ^ shift ° caps ^ ctrl ^^ altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg ²
+key 32 base 3 shift § caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base ß shift ? caps ß ctrl ^\ altg '\\'
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg @
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 64 base ü shift Ü caps Ü ctrl ü altg nop
+key 65 base + shift * caps + ctrl + altg ~
+key 86 base ö shift Ö caps Ö ctrl ö altg nop
+key 87 base ä shift Ä caps Ä ctrl ä altg nop
+key 88 base # shift '\'' caps # ctrl # altg '`'
+key 124 base < shift > caps < ctrl < altg | numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 106 base m shift M caps M ctrl '\r' altg µ
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/germany_hobo b/usr/src/cmd/loadkeys/type_4/germany_hobo
new file mode 100644
index 0000000000..84f53802a5
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/germany_hobo
@@ -0,0 +1,79 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# German Hobo key layout
+#
+# "caps lock" acts as "shift lock" on this keyboard
+#
+key 42 base ^ shift ° caps ^ ctrl ^^ altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg ²
+key 32 base 3 shift § caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg { numl 7
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [ numl 8
+key 38 base 9 shift ) caps 9 ctrl ^] altg ] numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg } numl *
+key 40 base ß shift ? caps ß ctrl ^\ altg '\\'
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg @
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base ü shift Ü caps Ü ctrl ü altg nop
+key 65 base + shift * caps + ctrl + altg ~
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ö shift Ö caps Ö ctrl ö altg nop numl +
+key 87 base ä shift Ä caps Ä ctrl ä altg nop
+key 88 base # shift '\'' caps # ctrl # altg '`'
+key 124 base < shift > caps < ctrl < altg | numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 106 base m shift M caps M ctrl '\r' altg µ numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/hungary_5 b/usr/src/cmd/loadkeys/type_4/hungary_5
new file mode 100644
index 0000000000..c3436dfb0a
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/hungary_5
@@ -0,0 +1,72 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Hungarian Type 5 key layout
+#
+key 42 base 0 shift nop caps 0 ctrl 0 altg nop
+key 30 base 1 shift '\'' caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 32 base 3 shift + caps 3 ctrl 3 altg #
+key 33 base 4 shift ! caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift / caps 6 ctrl 6 altg ^
+key 36 base 7 shift = caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl 8 altg [
+key 38 base 9 shift ) caps 9 ctrl 9 altg ]
+key 39 base } shift } caps } ctrl nop altg }
+key 40 base \ shift \ caps \ ctrl nop altg \
+key 41 base ~ shift ~ caps ~ ctrl nop altg ~
+key 43 all '\b'
+key 54 base q shift Q caps Q ctrl ^Q altg @
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 64 base nop shift nop caps nop ctrl nop altg nop
+key 65 base nop shift nop caps nop ctrl nop altg nop
+key 84 base k shift K caps K ctrl '\v' altg &
+key 86 base ; shift nop caps nop ctrl nop altg ;
+key 87 base nop shift nop caps nop ctrl nop altg nop
+key 88 base nop shift nop caps nop ctrl nop altg nop
+key 124 base nop shift nop caps nop ctrl nop altg |
+key 100 base y shift Y caps Y ctrl ^Y altg <
+key 101 base x shift X caps X ctrl ^X altg >
+key 102 base c shift C caps C ctrl ^C altg `
+key 107 base , shift ? caps , ctrl nop altg *
+key 108 base . shift : caps . ctrl nop altg nop
+key 109 base - shift _ caps - ctrl nop altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/italy b/usr/src/cmd/loadkeys/type_4/italy
new file mode 100644
index 0000000000..bbb3ccb353
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/italy
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Italian key layout
+#
+key 88 base [ shift { caps [ ctrl ^[ altg «
+key 15 base ] shift } caps ] ctrl ^] altg »
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl 2 altg ²
+key 32 base 3 shift £ caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg ¬
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl ^\ altg '\\'
+key 39 base 0 shift = caps 0 ctrl 0 altg |
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg `
+key 41 base ì shift ^ caps Ì ctrl ^^ altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base è shift é caps E ctrl è altg nop
+key 65 base + shift * caps + ctrl + altg ~
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ò shift ç caps O ctrl ^@ altg @
+key 87 base à shift ° caps A ctrl à altg #
+key 42 base ù shift § caps U ctrl ù altg nop
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 76 all shiftkeys+capslock
diff --git a/usr/src/cmd/loadkeys/type_4/italy_5 b/usr/src/cmd/loadkeys/type_4/italy_5
new file mode 100644
index 0000000000..7a2af06c57
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/italy_5
@@ -0,0 +1,62 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Italian Type 5 key layout
+#
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 32 base 3 shift £ caps 3 ctrl 3 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg {
+key 38 base 9 shift ) caps 9 ctrl 9 altg }
+key 39 base 0 shift = caps 0 ctrl 0 altg nop
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 41 base ì shift ^ caps Ì ctrl ^^ altg nop
+key 64 base è shift é caps È ctrl ^[ altg [
+key 65 base + shift * caps + ctrl ^] altg ]
+key 86 base ò shift ç caps Ò ctrl ^@ altg @
+key 87 base à shift ° caps À ctrl à altg #
+key 88 base ù shift § caps Ù ctrl ù altg ~
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/italy_hobo b/usr/src/cmd/loadkeys/type_4/italy_hobo
new file mode 100644
index 0000000000..72288d1fe1
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/italy_hobo
@@ -0,0 +1,70 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Italian Hobo key layout
+#
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 32 base 3 shift £ caps 3 ctrl 3 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop numl 7
+key 37 base 8 shift ( caps 8 ctrl 8 altg { numl 8
+key 38 base 9 shift ) caps 9 ctrl 9 altg } numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg nop numl *
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 41 base ì shift ^ caps Ì ctrl ^^ altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base è shift é caps È ctrl ^[ altg [
+key 65 base + shift * caps + ctrl ^] altg ]
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ò shift ç caps Ò ctrl ^@ altg @ numl +
+key 87 base à shift ° caps À ctrl à altg #
+key 88 base ù shift § caps Ù ctrl ù altg ~
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/japan b/usr/src/cmd/loadkeys/type_4/japan
new file mode 100644
index 0000000000..aca27d7601
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/japan
@@ -0,0 +1,49 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Japanese key layout
+#
+# key 13: ROMAN/KANA
+#
+key 13 all bf(4)
+key 15 all '\n'
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift '\'' caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift nop caps 0 ctrl 0 altg nop
+key 40 base - shift = caps - ctrl - altg nop
+key 41 base ^ shift ~ caps ^ ctrl ^^ altg nop
+key 42 base ] shift } caps ] ctrl ^] altg nop
+key 64 base @ shift ` caps @ ctrl ^@ altg nop
+key 65 base [ shift { caps [ ctrl ^[ altg nop
+key 86 base ; shift + caps ; ctrl ; altg nop
+key 87 base : shift * caps : ctrl : altg nop
+key 111 base '\\' shift _ caps '\\' ctrl ^\ altg nop
+# key 115: KAKUTEI
+key 115 all bf(1)
+# key 116: HENKAN
+key 116 all bf(2)
+# key 117: NIHONGO On/Off
+key 117 all ^@
diff --git a/usr/src/cmd/loadkeys/type_4/japan_5 b/usr/src/cmd/loadkeys/type_4/japan_5
new file mode 100644
index 0000000000..b40cfaab24
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/japan_5
@@ -0,0 +1,65 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Japanese Type 5 key layout
+#
+# key 13: ROMAN/KANA
+#
+key 13 all bf(4)
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift '\'' caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift nop caps 0 ctrl 0 altg nop
+key 40 base - shift = caps - ctrl - altg nop
+key 41 base ^ shift ~ caps ^ ctrl ^^ altg nop
+key 42 base ¥ shift | caps ¥ ctrl ¥ altg nop
+key 64 base @ shift ` caps @ ctrl ^@ altg nop
+key 65 base [ shift { caps [ ctrl ^[ altg nop
+key 86 base ; shift + caps ; ctrl ; altg nop
+key 87 base : shift * caps : ctrl : altg nop
+key 88 base ] shift } caps ] ctrl ^] altg nop
+key 111 base '\\' shift _ caps '\\' ctrl ^\ altg nop
+# key 115: KAKUTEI
+key 115 all bf(1)
+# key 116: HENKAN
+key 116 all bf(2)
+# key 117: NIHONGO On/Off
+key 117 all ^@
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/japan_hobo b/usr/src/cmd/loadkeys/type_4/japan_hobo
new file mode 100644
index 0000000000..8b76ab58cf
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/japan_hobo
@@ -0,0 +1,76 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Japanese Hobo key layout
+#
+# key 13: ROMAN/KANA
+#
+key 13 all bf(4)
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift '\'' caps 7 ctrl 7 altg nop numl 7
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop numl 8
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop numl 9
+key 39 base 0 shift nop caps 0 ctrl 0 altg nop numl *
+key 40 base - shift = caps - ctrl - altg nop
+key 41 base ^ shift ~ caps ^ ctrl ^^ altg nop
+key 42 base ¥ shift | caps ¥ ctrl ¥ altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base @ shift ` caps @ ctrl ^@ altg nop
+key 65 base [ shift { caps [ ctrl ^[ altg nop
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ; shift + caps ; ctrl ; altg nop numl +
+key 87 base : shift * caps : ctrl : altg nop
+key 88 base ] shift } caps ] ctrl ^] altg nop
+key 106 numl 0
+key 107 numl ,
+key 108 numl .
+key 109 numl /
+key 111 base '\\' shift _ caps '\\' ctrl ^\ altg nop
+# key 115: KAKUTEI
+key 115 all bf(1)
+# key 116: HENKAN
+key 116 all bf(2)
+# key 117: NIHONGO On/Off
+key 117 all ^@
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/korea b/usr/src/cmd/loadkeys/type_4/korea
new file mode 100644
index 0000000000..a6f6332533
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/korea
@@ -0,0 +1,157 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Korean key layout
+#
+key 0 all hole
+key 1 all buckybits+systembit up buckybits+systembit
+key 2 all hole
+key 3 all lf(2)
+key 4 all hole
+key 5 all tf(1)
+key 6 all tf(2)
+key 7 all tf(10)
+key 8 all tf(3)
+key 9 all tf(11)
+key 10 all tf(4)
+key 11 all tf(12)
+key 12 all tf(5)
+key 13 all '\n'
+key 14 all tf(6)
+key 15 all hole
+key 16 all tf(7)
+key 17 all tf(8)
+key 18 all tf(9)
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 20 all hole
+key 21 all rf(1)
+key 22 all rf(2)
+key 23 all rf(3)
+key 24 all hole
+key 25 all lf(3)
+key 26 all lf(4)
+key 27 all hole
+key 28 all hole
+key 29 all ^[
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 base - shift _ caps - ctrl ^_ altg nop
+key 41 base = shift + caps = ctrl = altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 43 all '\b'
+key 44 all hole
+key 45 all rf(4) numl padequal
+key 46 all rf(5) numl padslash
+key 47 all rf(6) numl padstar
+key 48 all bf(13)
+key 49 all lf(5)
+key 50 all bf(10) numl paddot
+key 51 all lf(6)
+key 52 all hole
+key 53 all '\t'
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 56 base e shift E caps E ctrl ^E altg nop
+key 57 base r shift R caps R ctrl ^R altg nop
+key 58 base t shift T caps T ctrl ^T altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 60 base u shift U caps U ctrl ^U altg nop
+key 61 base i shift I caps I ctrl '\t' altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 66 all '\177'
+key 67 all bf(4)
+key 68 all rf(7) numl pad7
+key 69 all string+uparrow numl pad8
+key 70 all rf(9) numl pad9
+key 71 all bf(15) numl padminus
+key 72 all lf(7)
+key 73 all lf(8)
+key 74 all hole
+key 75 all hole
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 79 base d shift D caps D ctrl ^D altg nop
+key 80 base f shift F caps F ctrl ^F altg nop
+key 81 base g shift G caps G ctrl ^G altg nop
+key 82 base h shift H caps H ctrl '\b' altg nop
+key 83 base j shift J caps J ctrl '\n' altg nop
+key 84 base k shift K caps K ctrl '\v' altg nop
+key 85 base l shift L caps L ctrl ^L altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 89 all '\r'
+key 90 all bf(11) numl padenter
+key 91 all string+leftarrow numl pad4
+key 92 all rf(11) numl pad5
+key 93 all string+rightarrow numl pad6
+key 94 all bf(8) numl pad0
+key 95 all lf(9)
+key 96 all hole
+key 97 all lf(10)
+key 98 all shiftkeys+numlock
+key 99 all shiftkeys+leftshift up shiftkeys+leftshift
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift < caps , ctrl , altg nop
+key 108 base . shift > caps . ctrl . altg nop
+key 109 base / shift ? caps / ctrl ^_ altg nop
+key 110 all shiftkeys+rightshift up shiftkeys+rightshift
+key 111 all bf(3)
+key 112 all rf(13) numl pad1
+key 113 all string+downarrow numl pad2
+key 114 all rf(15) numl pad3
+key 115 all hole
+key 116 all hole
+key 117 all hole
+key 118 all lf(16)
+key 119 all shiftkeys+capslock
+key 120 all buckybits+metabit up buckybits+metabit
+key 121 base ' ' shift ' ' caps ' ' ctrl ^@ altg ' '
+key 122 all buckybits+metabit up buckybits+metabit
+key 123 all hole
+key 124 all hole numl nonl
+key 125 all bf(14) numl padplus
+key 126 all error numl error up hole
+key 127 all idle numl idle up reset
diff --git a/usr/src/cmd/loadkeys/type_4/korea_5 b/usr/src/cmd/loadkeys/type_4/korea_5
new file mode 100644
index 0000000000..d529ba6db8
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/korea_5
@@ -0,0 +1,42 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Korean Type 5 key layout
+#
+#
+key 67 all bf(4)
+key 13 all bf(3)
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/korea_hobo b/usr/src/cmd/loadkeys/type_4/korea_hobo
new file mode 100644
index 0000000000..f4681ec16e
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/korea_hobo
@@ -0,0 +1,58 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Korean Hobo layout
+#
+#
+key 67 all bf(4)
+key 13 all bf(3)
+key 36 numl 7
+key 37 numl 8
+key 38 numl 9
+key 39 numl *
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 numl +
+key 106 numl 0
+key 107 numl ,
+key 108 numl .
+key 109 numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/netherlands b/usr/src/cmd/loadkeys/type_4/netherlands
new file mode 100644
index 0000000000..93bc64d490
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/netherlands
@@ -0,0 +1,72 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Netherlands key layout
+#
+key 88 base @ shift § caps @ ctrl ^@ altg '¬'
+key 15 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg ¹
+key 31 base 2 shift '"' caps 2 ctrl 2 altg ²
+key 32 base 3 shift # caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg ¼
+key 34 base 5 shift % caps 5 ctrl 5 altg ½
+key 35 base 6 shift & caps 6 ctrl 6 altg ¾
+key 36 base 7 shift _ caps 7 ctrl ^_ altg £
+key 37 base 8 shift ( caps 8 ctrl 8 altg {
+key 38 base 9 shift ) caps 9 ctrl ^\ altg }
+key 39 base 0 shift '\'' caps 0 ctrl 0 altg `
+key 40 base / shift ? caps / ctrl / altg nop
+key 41 base ° shift fa_tilde caps ° ctrl ° altg fa_cedilla
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base fa_umlaut shift ^ caps fa_umlaut ctrl ^^ altg fa_cflex
+key 65 base * shift ¦ caps * ctrl * altg ~
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg ß
+key 86 base + shift ± caps + ctrl + altg nop
+key 87 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+#CNTRL [ and ] will be placed on the next two keys
+key 42 base < shift > caps < ctrl ^] altg nop
+key 124 base ] shift [ caps ] ctrl ^[ altg nop numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg «
+key 101 base x shift X caps X ctrl ^X altg »
+key 102 base c shift C caps C ctrl ^C altg ¢
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg µ
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift = caps - ctrl ^_ altg nop
+key 119 all shiftkeys+altgraph up shiftkeys+altgraph
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+capslock
diff --git a/usr/src/cmd/loadkeys/type_4/netherlands_5 b/usr/src/cmd/loadkeys/type_4/netherlands_5
new file mode 100644
index 0000000000..1c17822186
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/netherlands_5
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Dutch Type 5 key layout
+#
+key 42 base @ shift § caps @ ctrl ^@ altg '¬'
+key 30 base 1 shift ! caps 1 ctrl 1 altg ¹
+key 31 base 2 shift '"' caps 2 ctrl 2 altg ²
+key 32 base 3 shift # caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg ¼
+key 34 base 5 shift % caps 5 ctrl 5 altg ½
+key 35 base 6 shift & caps 6 ctrl 6 altg ¾
+key 36 base 7 shift _ caps 7 ctrl ^_ altg £
+key 37 base 8 shift ( caps 8 ctrl 8 altg {
+key 38 base 9 shift ) caps 9 ctrl ^] altg }
+key 39 base 0 shift '\'' caps 0 ctrl 0 altg '`'
+key 40 base / shift ? caps / ctrl ^\ altg '\\'
+key 41 base ° shift fa_tilde caps ° ctrl ° altg fa_cedilla
+key 64 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg nop
+key 65 base * shift | caps * ctrl * altg ~
+key 78 base s shift S caps S ctrl ^S altg ß
+key 86 base + shift ± caps + ctrl + altg nop
+key 87 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 88 base < shift > caps < ctrl ^^ altg ^
+key 124 base ] shift [ caps [ ctrl ^[ altg ¦ numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg «
+key 101 base x shift X caps X ctrl ^X altg »
+key 102 base c shift C caps C ctrl ^C altg ¢
+key 106 base m shift M caps M ctrl '\r' altg µ
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg ·
+key 109 base - shift = caps - ctrl ^_ altg nop
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/netherlands_hobo b/usr/src/cmd/loadkeys/type_4/netherlands_hobo
new file mode 100644
index 0000000000..38e55a9920
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/netherlands_hobo
@@ -0,0 +1,78 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Dutch Hobo key layout
+#
+key 42 base @ shift § caps @ ctrl ^@ altg '¬'
+key 30 base 1 shift ! caps 1 ctrl 1 altg ¹
+key 31 base 2 shift '"' caps 2 ctrl 2 altg ²
+key 32 base 3 shift # caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg ¼
+key 34 base 5 shift % caps 5 ctrl 5 altg ½
+key 35 base 6 shift & caps 6 ctrl 6 altg ¾
+key 36 base 7 shift _ caps 7 ctrl ^_ altg £ numl 7
+key 37 base 8 shift ( caps 8 ctrl 8 altg { numl 8
+key 38 base 9 shift ) caps 9 ctrl ^] altg } numl 9
+key 39 base 0 shift '\'' caps 0 ctrl 0 altg '`' numl *
+key 40 base / shift ? caps / ctrl ^\ altg '\\'
+key 41 base ° shift fa_tilde caps ° ctrl ° altg fa_cedilla
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg nop
+key 65 base * shift | caps * ctrl * altg ~
+key 78 base s shift S caps S ctrl ^S altg ß
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base + shift ± caps + ctrl + altg nop numl +
+key 87 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 88 base < shift > caps < ctrl ^^ altg ^
+key 124 base ] shift [ caps [ ctrl ^[ altg ¦ numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg «
+key 101 base x shift X caps X ctrl ^X altg »
+key 102 base c shift C caps C ctrl ^C altg ¢
+key 106 base m shift M caps M ctrl '\r' altg µ numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg · numl .
+key 109 base - shift = caps - ctrl ^_ altg nop numl /
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/norway b/usr/src/cmd/loadkeys/type_4/norway
new file mode 100644
index 0000000000..c18a4f13b1
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/norway
@@ -0,0 +1,68 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Norwegian key layout
+#
+key 88 base | shift § caps | ctrl | altg nop
+key 15 base ~ shift ^ caps ~ ctrl ^^ altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base + shift ? caps + ctrl + altg nop
+key 41 base '\\' shift fa_grave caps '\\' ctrl ^\ altg fa_acute
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ø shift Ø caps Ø ctrl ø altg nop
+key 87 base æ shift Æ caps Æ ctrl æ altg nop
+key 42 base '\'' shift * caps '\'' ctrl '\'' altg `
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 76 all shiftkeys+capslock
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
diff --git a/usr/src/cmd/loadkeys/type_4/norway_5 b/usr/src/cmd/loadkeys/type_4/norway_5
new file mode 100644
index 0000000000..1364fec8d1
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/norway_5
@@ -0,0 +1,65 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Norwegian Type 5 key layout
+#
+key 42 base | shift § caps | ctrl | altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base + shift ? caps + ctrl + altg nop
+key 41 base '\\' shift fa_grave caps '\\' ctrl ^\ altg fa_acute
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl ^^ altg fa_tilde
+key 86 base ø shift Ø caps Ø ctrl ø altg nop
+key 87 base æ shift Æ caps Æ ctrl æ altg nop
+key 88 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/norway_hobo b/usr/src/cmd/loadkeys/type_4/norway_hobo
new file mode 100644
index 0000000000..2564655e62
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/norway_hobo
@@ -0,0 +1,73 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Norwegian Hobo key layout
+#
+key 42 base | shift § caps | ctrl | altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg { numl 7
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [ numl 8
+key 38 base 9 shift ) caps 9 ctrl ^] altg ] numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg } numl *
+key 40 base + shift ? caps + ctrl + altg nop
+key 41 base '\\' shift fa_grave caps '\\' ctrl ^\ altg fa_acute
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl ^^ altg fa_tilde
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ø shift Ø caps Ø ctrl ø altg nop numl +
+key 87 base æ shift Æ caps Æ ctrl æ altg nop
+key 88 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/poland_5 b/usr/src/cmd/loadkeys/type_4/poland_5
new file mode 100644
index 0000000000..3b428d973b
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/poland_5
@@ -0,0 +1,69 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Polish Type 5 key layout
+#
+key 42 base ` shift ~ caps ` ctrl nop altg nop
+key 30 base 1 shift ! caps 1 ctrl nop altg nop
+key 31 base 2 shift '"' caps 2 ctrl 2 altg @
+key 32 base 3 shift : caps 3 ctrl 3 altg #
+key 33 base 4 shift ? caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl nop altg nop
+key 35 base 6 shift + caps 6 ctrl nop altg ^
+key 36 base 7 shift _ caps 7 ctrl 7 altg &
+key 37 base 8 shift ( caps 8 ctrl 8 altg *
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift = caps 0 ctrl 0 altg nop
+key 40 base nop shift nop caps nop ctrl nop altg nop
+key 41 base nop shift nop caps nop ctrl nop altg nop
+key 43 base '\b'
+key 59 base y shift Y caps Y ctrl nop altg nop
+key 64 base [ shift { caps [ ctrl nop altg [
+key 65 base / shift } caps / ctrl nop altg ]
+key 84 base k shift K caps K ctrl ^K altg &
+key 86 base nop shift nop caps nop ctrl nop altg nop
+key 87 base '\'' shift nop caps nop ctrl nop altg '\''
+key 88 base '\\' shift ; caps '\\' ctrl nop altg |
+key 100 base z shift Z caps Z ctrl nop altg nop
+key 124 base < shift > caps < ctrl nop altg nop
+key 107 base , shift nop caps , ctrl nop altg <
+key 108 base . shift nop caps . ctrl nop altg >
+key 109 base - shift nop caps - ctrl nop altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/portugal b/usr/src/cmd/loadkeys/type_4/portugal
new file mode 100644
index 0000000000..12d99ee23c
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/portugal
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Portuguese key layout
+#
+key 88 base [ shift { caps [ ctrl ^[ altg «
+key 15 base ] shift } caps ] ctrl ^] altg »
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift $ caps 4 ctrl 4 altg §
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg ¬
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl ^\ altg '\\'
+key 39 base 0 shift = caps 0 ctrl 0 altg |
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg `
+key 41 base ¡ shift ¿ caps ¡ ctrl ¡ altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base fa_umlaut shift * caps fa_umlaut ctrl fa_umlaut altg +
+key 65 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg ~
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ç shift Ç caps Ç ctrl ç altg nop
+key 87 base º shift ª caps º ctrl º altg nop
+key 42 base fa_tilde shift fa_cflex caps fa_tilde ctrl ^^ altg ^
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 76 all shiftkeys+capslock
diff --git a/usr/src/cmd/loadkeys/type_4/portugal_5 b/usr/src/cmd/loadkeys/type_4/portugal_5
new file mode 100644
index 0000000000..201e5792bf
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/portugal_5
@@ -0,0 +1,64 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Portuguese Type 5 key layout
+#
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift $ caps 4 ctrl 4 altg §
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 41 base « shift » caps « ctrl « altg nop
+key 64 base + shift * caps + ctrl + altg fa_umlaut
+key 65 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 86 base ç shift Ç caps Ç ctrl ç altg nop
+key 87 base º shift ª caps º ctrl º altg nop
+key 88 base fa_tilde shift fa_cflex caps fa_tilde ctrl ^^ altg nop
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/portugal_hobo b/usr/src/cmd/loadkeys/type_4/portugal_hobo
new file mode 100644
index 0000000000..f671c666a9
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/portugal_hobo
@@ -0,0 +1,72 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Portuguese Hobo key layout
+#
+key 42 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift $ caps 4 ctrl 4 altg §
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg { numl 7
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [ numl 8
+key 38 base 9 shift ) caps 9 ctrl ^] altg ] numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg } numl *
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 41 base « shift » caps « ctrl « altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base + shift * caps + ctrl + altg fa_umlaut
+key 65 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ç shift Ç caps Ç ctrl ç altg nop numl +
+key 87 base º shift ª caps º ctrl º altg nop
+key 88 base fa_tilde shift fa_cflex caps fa_tilde ctrl ^^ altg nop
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/reset b/usr/src/cmd/loadkeys/type_4/reset
new file mode 100644
index 0000000000..e1c0991ccc
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/reset
@@ -0,0 +1,157 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+# Resets every single key on the default type4
+# Useful in returning default type4 to sanity
+#
+key 0 all hole
+key 1 all buckybits+systembit up buckybits+systembit
+key 2 all hole
+key 3 all lf(2)
+key 4 all hole
+key 5 all tf(1)
+key 6 all tf(2)
+key 7 all tf(10)
+key 8 all tf(3)
+key 9 all tf(11)
+key 10 all tf(4)
+key 11 all tf(12)
+key 12 all tf(5)
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
+key 14 all tf(6)
+key 15 all hole
+key 16 all tf(7)
+key 17 all tf(8)
+key 18 all tf(9)
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 20 all hole
+key 21 all rf(1)
+key 22 all rf(2)
+key 23 all rf(3)
+key 24 all hole
+key 25 all lf(3)
+key 26 all lf(4)
+key 27 all hole
+key 28 all hole
+key 29 all ^[
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 base - shift _ caps - ctrl ^_ altg nop
+key 41 base = shift + caps = ctrl = altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 43 all '\b'
+key 44 all hole
+key 45 all rf(4) numl padequal
+key 46 all rf(5) numl padslash
+key 47 all rf(6) numl padstar
+key 48 all bf(13)
+key 49 all lf(5)
+key 50 all bf(10) numl paddot
+key 51 all lf(6)
+key 52 all hole
+key 53 all '\t'
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 56 base e shift E caps E ctrl ^E altg nop
+key 57 base r shift R caps R ctrl ^R altg nop
+key 58 base t shift T caps T ctrl ^T altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 60 base u shift U caps U ctrl ^U altg nop
+key 61 base i shift I caps I ctrl '\t' altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 66 all '\177'
+key 67 all compose
+key 68 all rf(7) numl pad7
+key 69 all string+uparrow numl pad8
+key 70 all rf(9) numl pad9
+key 71 all bf(15) numl padminus
+key 72 all lf(7)
+key 73 all lf(8)
+key 74 all hole
+key 75 all hole
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 79 base d shift D caps D ctrl ^D altg nop
+key 80 base f shift F caps F ctrl ^F altg nop
+key 81 base g shift G caps G ctrl ^G altg nop
+key 82 base h shift H caps H ctrl '\b' altg nop
+key 83 base j shift J caps J ctrl '\n' altg nop
+key 84 base k shift K caps K ctrl '\v' altg nop
+key 85 base l shift L caps L ctrl ^L altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 89 all '\r'
+key 90 all bf(11) numl padenter
+key 91 all string+leftarrow numl pad4
+key 92 all rf(11) numl pad5
+key 93 all string+rightarrow numl pad6
+key 94 all bf(8) numl pad0
+key 95 all lf(9)
+key 96 all hole
+key 97 all lf(10)
+key 98 all shiftkeys+numlock
+key 99 all shiftkeys+leftshift up shiftkeys+leftshift
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift < caps , ctrl , altg nop
+key 108 base . shift > caps . ctrl . altg nop
+key 109 base / shift ? caps / ctrl ^_ altg nop
+key 110 all shiftkeys+rightshift up shiftkeys+rightshift
+key 111 all '\n'
+key 112 all rf(13) numl pad1
+key 113 all string+downarrow numl pad2
+key 114 all rf(15) numl pad3
+key 115 all hole
+key 116 all hole
+key 117 all hole
+key 118 all lf(16)
+key 119 all shiftkeys+capslock
+key 120 all buckybits+metabit up buckybits+metabit
+key 121 base ' ' shift ' ' caps ' ' ctrl ^@ altg ' '
+key 122 all buckybits+metabit up buckybits+metabit
+key 123 all hole
+key 124 all hole
+key 125 all bf(14) numl padplus
+key 126 all error numl error up hole
+key 127 all idle numl idle up reset
diff --git a/usr/src/cmd/loadkeys/type_4/russia_5 b/usr/src/cmd/loadkeys/type_4/russia_5
new file mode 100644
index 0000000000..e02376b3b2
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/russia_5
@@ -0,0 +1,50 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Russian Type 5 key layout
+#
+key 42 base ` shift ~ caps ` ctrl ` altg nop
+key 31 base 2 shift @ caps 2 ctrl 2 altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl ^@ altg nop
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg /
+key 124 base '\\' shift | caps '\\' ctrl ^\ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/spain_5 b/usr/src/cmd/loadkeys/type_4/spain_5
new file mode 100644
index 0000000000..7f34207bd1
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/spain_5
@@ -0,0 +1,65 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Spanish Type 5 key layout
+#
+key 42 base º shift ª caps º ctrl ^\ altg '\\'
+key 30 base 1 shift ! caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift · caps 3 ctrl 3 altg #
+key 33 base 4 shift $ caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg ¬
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift = caps 0 ctrl 0 altg nop
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 41 base ¡ shift ¿ caps ¡ ctrl ¡ altg nop
+key 64 base fa_grave shift fa_cflex caps fa_grave ctrl ^[ altg [
+key 65 base + shift * caps + ctrl ^] altg ]
+key 86 base ñ shift Ñ caps Ñ ctrl ñ altg nop
+key 87 base fa_acute shift fa_umlaut caps fa_acute ctrl fa_acute altg {
+key 88 base ç shift Ç caps Ç ctrl ç altg }
+key 124 base < shift > caps < ctrl ^^ altg nop numl nonl
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/spain_hobo b/usr/src/cmd/loadkeys/type_4/spain_hobo
new file mode 100644
index 0000000000..8a4b008359
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/spain_hobo
@@ -0,0 +1,73 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Spanish Hobo key layout
+#
+key 42 base º shift ª caps º ctrl ^\ altg '\\'
+key 30 base 1 shift ! caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift · caps 3 ctrl 3 altg #
+key 33 base 4 shift $ caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg ¬
+key 36 base 7 shift / caps 7 ctrl 7 altg nop numl 7
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop numl 8
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg nop numl *
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 41 base ¡ shift ¿ caps ¡ ctrl ¡ altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base fa_grave shift fa_cflex caps fa_grave ctrl ^[ altg [
+key 65 base + shift * caps + ctrl ^] altg ]
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ñ shift Ñ caps Ñ ctrl ñ altg nop numl +
+key 87 base fa_acute shift fa_umlaut caps fa_acute ctrl fa_acute altg {
+key 88 base ç shift Ç caps Ç ctrl ç altg }
+key 124 base < shift > caps < ctrl ^^ altg nop numl nonl
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/spain_latin_america b/usr/src/cmd/loadkeys/type_4/spain_latin_america
new file mode 100644
index 0000000000..f0e024d4d7
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/spain_latin_america
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Spanish and Latin American key layout
+#
+key 88 base [ shift { caps [ ctrl ^[ altg «
+key 15 base ] shift } caps ] ctrl ^] altg »
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift · caps 3 ctrl 3 altg #
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg °
+key 35 base 6 shift & caps 6 ctrl 6 altg ¬
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl ^\ altg '\\'
+key 39 base 0 shift = caps 0 ctrl 0 altg |
+key 40 base '\'' shift ? caps '\'' ctrl ^\ altg `
+key 41 base ¡ shift ¿ caps ¡ ctrl ¡ altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg º
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base fa_grave shift fa_cflex caps fa_grave ctrl ^^ altg ^
+key 65 base + shift * caps + ctrl + altg ~
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg ª
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ñ shift Ñ caps Ñ ctrl ñ altg nop
+key 87 base fa_acute shift fa_umlaut caps fa_acute ctrl fa_acute altg nop
+key 42 base ç shift Ç caps Ç ctrl ç altg nop
+key 124 base < shift > caps < ctrl < altg nop numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 76 all shiftkeys+capslock
diff --git a/usr/src/cmd/loadkeys/type_4/sweden_5 b/usr/src/cmd/loadkeys/type_4/sweden_5
new file mode 100644
index 0000000000..97d3dc9718
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/sweden_5
@@ -0,0 +1,65 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swedish Type 5 key layout
+#
+key 42 base § shift ½ caps § ctrl § altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base + shift ? caps + ctrl ^\ altg '\\'
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift ^ caps fa_umlaut ctrl ^^ altg ~
+key 86 base ö shift Ö caps Ö ctrl ö altg nop
+key 87 base ä shift Ä caps Ä ctrl ä altg nop
+key 88 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 15 base ~ shift ^ caps ~ ctrl ^^ altg nop
+key 124 base < shift > caps < ctrl < altg | numl nonl
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/sweden_finland b/usr/src/cmd/loadkeys/type_4/sweden_finland
new file mode 100644
index 0000000000..9b4e72676c
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/sweden_finland
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Swedish/Finnish key layout
+#
+key 88 base § shift ½ caps § ctrl § altg nop
+key 15 base ~ shift ^ caps ~ ctrl ^^ altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 40 base + shift ? caps + ctrl ^\ altg '\\'
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ö shift Ö caps Ö ctrl ö altg nop
+key 87 base ä shift Ä caps Ä ctrl ä altg nop
+key 42 base '\'' shift * caps '\'' ctrl ^^ altg `
+key 124 base < shift > caps < ctrl ^\ altg | numl nonl
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 76 all shiftkeys+capslock
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all shiftkeys+altgraph up shiftkeys+altgraph
+key 13 all compose
diff --git a/usr/src/cmd/loadkeys/type_4/sweden_hobo b/usr/src/cmd/loadkeys/type_4/sweden_hobo
new file mode 100644
index 0000000000..1099c61c83
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/sweden_hobo
@@ -0,0 +1,73 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swedish Hobo key layout
+#
+key 42 base § shift ½ caps § ctrl § altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg { numl 7
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [ numl 8
+key 38 base 9 shift ) caps 9 ctrl ^] altg ] numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg } numl *
+key 40 base + shift ? caps + ctrl ^\ altg '\\'
+key 41 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base å shift Å caps Å ctrl å altg nop
+key 65 base fa_umlaut shift ^ caps fa_umlaut ctrl ^^ altg ~
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ö shift Ö caps Ö ctrl ö altg nop numl +
+key 87 base ä shift Ä caps Ä ctrl ä altg nop
+key 88 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 15 base ~ shift ^ caps ~ ctrl ^^ altg nop
+key 124 base < shift > caps < ctrl < altg | numl nonl
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+key 50 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/swiss_french b/usr/src/cmd/loadkeys/type_4/swiss_french
new file mode 100644
index 0000000000..01f311d037
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/swiss_french
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss French key layout
+#
+key 88 base < shift { caps < ctrl < altg nop
+key 15 base > shift } caps > ctrl > altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg !
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl 4 altg ¢
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg §
+key 36 base 7 shift / caps 7 ctrl 7 altg |
+key 37 base 8 shift ( caps 8 ctrl 8 altg °
+key 38 base 9 shift ) caps 9 ctrl ^\ altg '\\'
+key 39 base 0 shift = caps 0 ctrl ^^ altg ^
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg `
+key 41 base fa_cflex shift fa_grave caps fa_cflex ctrl fa_cflex altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base è shift ü caps E ctrl è altg nop
+key 65 base fa_umlaut shift fa_acute caps fa_umlaut ctrl fa_umlaut altg nop
+key 76 all shiftkeys+capslock
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base é shift ö caps E ctrl é altg nop
+key 87 base à shift ä caps A ctrl à altg nop
+key 42 base $ shift fa_tilde caps $ ctrl $ altg £
+key 124 base ] shift [ caps ] ctrl ^] altg '\\' numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg µ
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all shiftkeys+altgraph up shiftkeys+altgraph
+key 13 all compose
diff --git a/usr/src/cmd/loadkeys/type_4/swiss_french_5 b/usr/src/cmd/loadkeys/type_4/swiss_french_5
new file mode 100644
index 0000000000..c564b3549b
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/swiss_french_5
@@ -0,0 +1,67 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss French Type 5 key layout
+#
+key 42 base § shift ° caps § ctrl § altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift = caps 0 ctrl 0 altg '`'
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg fa_acute
+key 41 base fa_cflex shift fa_grave caps fa_cflex ctrl ^^ altg fa_tilde
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 64 base è shift ü caps È ctrl ^[ altg [
+key 65 base fa_umlaut shift ! caps fa_umlaut ctrl ^] altg ]
+key 86 base é shift ö caps É ctrl é altg nop
+key 87 base à shift ä caps À ctrl à altg {
+key 88 base $ shift £ caps $ ctrl $ altg }
+key 124 base < shift > caps < ctrl ^\ altg '\\' numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/swiss_french_hobo b/usr/src/cmd/loadkeys/type_4/swiss_french_hobo
new file mode 100644
index 0000000000..3b6795ba8c
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/swiss_french_hobo
@@ -0,0 +1,75 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss French Hobo key layout
+#
+key 42 base § shift ° caps § ctrl § altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop numl 7
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop numl 8
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg '`' numl *
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg fa_acute
+key 41 base fa_cflex shift fa_grave caps fa_cflex ctrl ^^ altg fa_tilde
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base è shift ü caps È ctrl ^[ altg [
+key 65 base fa_umlaut shift ! caps fa_umlaut ctrl ^] altg ]
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base é shift ö caps É ctrl é altg nop numl +
+key 87 base à shift ä caps À ctrl à altg {
+key 88 base $ shift £ caps $ ctrl $ altg }
+key 124 base < shift > caps < ctrl ^\ altg '\\' numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/swiss_german b/usr/src/cmd/loadkeys/type_4/swiss_german
new file mode 100644
index 0000000000..b4fa6c8453
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/swiss_german
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss German key layout
+#
+key 88 base < shift { caps < ctrl < altg nop
+key 15 base > shift } caps > ctrl > altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg !
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl 4 altg ¢
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg §
+key 36 base 7 shift / caps 7 ctrl 7 altg |
+key 37 base 8 shift ( caps 8 ctrl 8 altg °
+key 38 base 9 shift ) caps 9 ctrl ^\ altg '\\'
+key 39 base 0 shift = caps 0 ctrl ^^ altg ^
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg `
+key 41 base fa_cflex shift fa_grave caps fa_cflex ctrl fa_cflex altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base ü shift è caps ü ctrl ü altg nop
+key 65 base fa_umlaut shift fa_acute caps fa_umlaut ctrl fa_umlaut altg nop
+key 76 all shiftkeys+capslock
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ö shift é caps ö ctrl ö altg nop
+key 87 base ä shift à caps ä ctrl ä altg nop
+key 42 base $ shift fa_tilde caps $ ctrl $ altg £
+key 124 base ] shift [ caps ] ctrl ^] altg '\\' numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg µ
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+key 119 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all shiftkeys+altgraph up shiftkeys+altgraph
+key 13 all compose
diff --git a/usr/src/cmd/loadkeys/type_4/swiss_german_5 b/usr/src/cmd/loadkeys/type_4/swiss_german_5
new file mode 100644
index 0000000000..b3df4e3693
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/swiss_german_5
@@ -0,0 +1,67 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss German Type 5 key layout
+#
+key 42 base § shift ° caps § ctrl § altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift = caps 0 ctrl 0 altg '`'
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg fa_acute
+key 41 base fa_cflex shift fa_grave caps fa_cflex ctrl ^^ altg fa_tilde
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 64 base ü shift è caps Ü ctrl ^[ altg [
+key 65 base fa_umlaut shift ! caps fa_umlaut ctrl ^] altg ]
+key 86 base ö shift é caps Ö ctrl ö altg nop
+key 87 base ä shift à caps Ä ctrl ä altg {
+key 88 base $ shift £ caps $ ctrl $ altg }
+key 124 base < shift > caps < ctrl ^\ altg '\\' numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 107 base , shift ; caps , ctrl , altg nop
+key 108 base . shift : caps . ctrl . altg nop
+key 109 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/swiss_german_hobo b/usr/src/cmd/loadkeys/type_4/swiss_german_hobo
new file mode 100644
index 0000000000..f3164e1c1d
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/swiss_german_hobo
@@ -0,0 +1,75 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss German Hobo key layout
+#
+key 42 base § shift ° caps § ctrl § altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop numl 7
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop numl 8
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop numl 9
+key 39 base 0 shift = caps 0 ctrl 0 altg '`' numl *
+key 40 base '\'' shift ? caps '\'' ctrl '\'' altg fa_acute
+key 41 base fa_cflex shift fa_grave caps fa_cflex ctrl ^^ altg fa_tilde
+key 59 base z shift Z caps Z ctrl ^Z altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 64 base ü shift è caps Ü ctrl ^[ altg [
+key 65 base fa_umlaut shift ! caps fa_umlaut ctrl ^] altg ]
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ö shift é caps Ö ctrl ö altg nop numl +
+key 87 base ä shift à caps Ä ctrl ä altg {
+key 88 base $ shift £ caps $ ctrl $ altg }
+key 124 base < shift > caps < ctrl ^\ altg '\\' numl nonl
+key 100 base y shift Y caps Y ctrl ^Y altg nop
+key 106 numl 0
+key 107 base , shift ; caps , ctrl , altg nop numl ,
+key 108 base . shift : caps . ctrl . altg nop numl .
+key 109 base - shift _ caps - ctrl ^_ altg nop numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/taiwan b/usr/src/cmd/loadkeys/type_4/taiwan
new file mode 100644
index 0000000000..72d91b2784
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/taiwan
@@ -0,0 +1,154 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Taiwan key layout
+#
+key 0 all hole
+key 1 all buckybits+systembit up buckybits+systembit
+key 2 all hole
+key 3 all lf(2)
+key 4 all hole
+key 5 all tf(1)
+key 6 all tf(2)
+key 7 all tf(10)
+key 8 all tf(3)
+key 9 all tf(11)
+key 10 all tf(4)
+key 11 all tf(12)
+key 12 all tf(5)
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
+key 14 all tf(6)
+key 15 all hole
+key 16 all tf(7)
+key 17 all tf(8)
+key 18 all tf(9)
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 20 all hole
+key 21 all rf(1)
+key 22 all rf(2)
+key 23 all rf(3)
+key 24 all hole
+key 25 all lf(3)
+key 26 all lf(4)
+key 27 all hole
+key 28 all hole
+key 29 all ^[
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 base - shift _ caps - ctrl ^_ altg nop
+key 41 base = shift + caps = ctrl = altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 43 all '\b'
+key 44 all hole
+key 45 all rf(4) numl padequal
+key 46 all rf(5) numl padslash
+key 47 all rf(6) numl padstar
+key 48 all bf(13)
+key 49 all lf(5)
+key 50 all bf(10) numl paddot
+key 51 all lf(6)
+key 52 all hole
+key 53 all '\t'
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 56 base e shift E caps E ctrl ^E altg nop
+key 57 base r shift R caps R ctrl ^R altg nop
+key 58 base t shift T caps T ctrl ^T altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 60 base u shift U caps U ctrl ^U altg nop
+key 61 base i shift I caps I ctrl '\t' altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 66 all '\177'
+key 67 all bf(3)
+key 68 all rf(7) numl pad7
+key 69 all string+uparrow numl pad8
+key 70 all rf(9) numl pad9
+key 71 all bf(15) numl padminus
+key 72 all lf(7)
+key 73 all lf(8)
+key 74 all hole
+key 75 all hole
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 79 base d shift D caps D ctrl ^D altg nop
+key 80 base f shift F caps F ctrl ^F altg nop
+key 81 base g shift G caps G ctrl ^G altg nop
+key 82 base h shift H caps H ctrl '\b' altg nop
+key 83 base j shift J caps J ctrl '\n' altg nop
+key 84 base k shift K caps K ctrl '\v' altg nop
+key 85 base l shift L caps L ctrl ^L altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 89 all '\r'
+key 90 all bf(11) numl padenter
+key 91 all string+leftarrow numl pad4
+key 92 all rf(11) numl pad5
+key 93 all string+rightarrow numl pad6
+key 94 all bf(8) numl pad0
+key 95 all lf(9)
+key 96 all hole
+key 97 all lf(10)
+key 98 all shiftkeys+numlock
+key 99 all shiftkeys+leftshift up shiftkeys+leftshift
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift < caps , ctrl , altg nop
+key 108 base . shift > caps . ctrl . altg nop
+key 109 base / shift ? caps / ctrl ^_ altg nop
+key 110 all shiftkeys+rightshift up shiftkeys+rightshift
+key 111 all '\n'
+key 112 all rf(13) numl pad1
+key 113 all string+downarrow numl pad2
+key 114 all rf(15) numl pad3
+key 115 all hole
+key 116 all hole
+key 117 all hole
+key 118 all lf(16)
+key 119 all shiftkeys+capslock
+key 120 all buckybits+metabit up buckybits+metabit
+key 121 base ' ' shift ' ' caps ' ' ctrl ^@ altg ' '
+key 122 all buckybits+metabit up buckybits+metabit
+key 123 all hole
+key 124 all hole
+key 125 all bf(14) numl padplus
+key 126 all error numl error up hole
+key 127 all idle numl idle up reset
+
diff --git a/usr/src/cmd/loadkeys/type_4/taiwan_5 b/usr/src/cmd/loadkeys/type_4/taiwan_5
new file mode 100644
index 0000000000..3e6771f158
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/taiwan_5
@@ -0,0 +1,41 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Taiwan Type 5 key layout
+#
+#
+key 13 all bf(3)
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/taiwan_hobo b/usr/src/cmd/loadkeys/type_4/taiwan_hobo
new file mode 100644
index 0000000000..4ed4090a62
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/taiwan_hobo
@@ -0,0 +1,57 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Taiwan Hobo key layout
+#
+#
+key 13 all bf(3)
+key 36 numl 7
+key 37 numl 8
+key 38 numl 9
+key 39 numl *
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 numl +
+key 106 numl 0
+key 107 numl ,
+key 108 numl .
+key 109 numl /
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/uk b/usr/src/cmd/loadkeys/type_4/uk
new file mode 100644
index 0000000000..7be58662f9
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/uk
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# UK key layout
+#
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 15 all hole
+key 30 base 1 shift ! caps 1 ctrl 1 altg |
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift £ caps 3 ctrl 3 altg #
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 base - shift _ caps - ctrl ^_ altg ¬
+key 41 base = shift + caps = ctrl = altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 124 all hole
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift < caps , ctrl , altg nop
+key 108 base . shift > caps . ctrl . altg nop
+key 109 base / shift ? caps / ctrl ^_ altg nop
+key 119 all shiftkeys+capslock
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
diff --git a/usr/src/cmd/loadkeys/type_4/uk_5 b/usr/src/cmd/loadkeys/type_4/uk_5
new file mode 100644
index 0000000000..806b4c28cd
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/uk_5
@@ -0,0 +1,49 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# UK Type 5 key layout
+#
+key 42 base ` shift ¬ caps ` ctrl ` altg ¦
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 32 base 3 shift £ caps 3 ctrl 3 altg nop
+key 87 base '\'' shift @ caps '\'' ctrl ^@ altg nop
+key 88 base # shift ~ caps # ctrl # altg nop
+key 124 base '\\' shift | caps '\\' ctrl ^\ altg nop numl nonl
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/uk_hobo b/usr/src/cmd/loadkeys/type_4/uk_hobo
new file mode 100644
index 0000000000..4a20a0d009
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/uk_hobo
@@ -0,0 +1,65 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# UK Hobo key layout
+#
+key 42 base ` shift ¬ caps ` ctrl ` altg ¦
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 32 base 3 shift £ caps 3 ctrl 3 altg nop
+key 36 numl 7
+key 37 numl 8
+key 38 numl 9
+key 39 numl *
+key 60 numl 4
+key 61 numl 5
+key 62 numl 6
+key 63 numl -
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 numl +
+key 87 base '\'' shift @ caps '\'' ctrl ^@ altg nop
+key 88 base # shift ~ caps # ctrl # altg nop
+key 106 numl 0
+key 107 numl ,
+key 108 numl .
+key 109 numl /
+key 124 base '\\' shift | caps '\\' ctrl ^\ altg nop numl nonl
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/us b/usr/src/cmd/loadkeys/type_4/us
new file mode 100644
index 0000000000..f140860ead
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/us
@@ -0,0 +1,71 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#ident "%Z%%M% %I% %E% SMI"
+#
+# US key layout
+#
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 15 all hole
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 base - shift _ caps - ctrl ^_ altg nop
+key 41 base = shift + caps = ctrl = altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 124 all hole
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift < caps , ctrl , altg nop
+key 108 base . shift > caps . ctrl . altg nop
+key 109 base / shift ? caps / ctrl ^_ altg nop
+key 119 all shiftkeys+capslock
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
diff --git a/usr/src/cmd/loadkeys/type_4/us101a_pc b/usr/src/cmd/loadkeys/type_4/us101a_pc
new file mode 100644
index 0000000000..a4b9dd6522
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/us101a_pc
@@ -0,0 +1,99 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# US 101A PC compatible key layout
+#
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 21 all hole
+key 3 all hole
+key 25 all hole
+key 26 all hole
+key 49 all hole
+key 51 all hole
+key 72 all hole
+key 73 all hole
+key 95 all hole
+key 97 all hole
+key 15 all hole
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 base - shift _ caps - ctrl ^_ altg nop
+key 41 base = shift + caps = ctrl = altg nop
+key 43 all hole
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 66 all '\b'
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 124 all hole
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift < caps , ctrl , altg nop
+key 108 base . shift > caps . ctrl . altg nop
+key 109 base / shift ? caps / ctrl ^_ altg nop
+key 118 all '\177'
+key 119 all shiftkeys+capslock
+key 19 all shiftkeys+rightctrl up shiftkeys+rightctrl
+key 67 all hole
+key 13 all hole
+#
+#
+#
+# New function keys assigned old codes
+#
+key 1 all rf(1)
+key 25 all bf(8)
+key 97 all rf(7)
+key 51 all rf(9)
+key 26 all rf(13)
+key 73 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/us_5 b/usr/src/cmd/loadkeys/type_4/us_5
new file mode 100644
index 0000000000..118e395936
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/us_5
@@ -0,0 +1,85 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# US Type 5 key layout
+#
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 15 all hole
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 base - shift _ caps - ctrl ^_ altg nop
+key 41 base = shift + caps = ctrl = altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 62 base o shift O caps O ctrl ^O altg nop
+key 63 base p shift P caps P ctrl ^P altg nop
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 86 base ; shift : caps ; ctrl ; altg nop
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 124 all hole
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop
+key 107 base , shift < caps , ctrl , altg nop
+key 108 base . shift > caps . ctrl . altg nop
+key 109 base / shift ? caps / ctrl ^_ altg nop
+key 119 all shiftkeys+capslock
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_4/us_hobo b/usr/src/cmd/loadkeys/type_4/us_hobo
new file mode 100644
index 0000000000..cc8f539d7f
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_4/us_hobo
@@ -0,0 +1,90 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# US Hobo key layout
+#
+key 88 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 15 all hole
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop numl 7
+key 37 base 8 shift * caps 8 ctrl 8 altg nop numl 8
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop numl 9
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop numl *
+key 40 base - shift _ caps - ctrl ^_ altg nop
+key 41 base = shift + caps = ctrl = altg nop
+key 54 base q shift Q caps Q ctrl ^Q altg nop
+key 55 base w shift W caps W ctrl ^W altg nop
+key 59 base y shift Y caps Y ctrl ^Y altg nop
+key 60 numl 4
+key 61 numl 5
+key 62 base o shift O caps O ctrl ^O altg nop numl 6
+key 63 base p shift P caps P ctrl ^P altg nop numl -
+key 64 base [ shift { caps [ ctrl ^[ altg nop
+key 65 base ] shift } caps ] ctrl ^] altg nop
+key 76 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 77 base a shift A caps A ctrl ^A altg nop
+key 78 base s shift S caps S ctrl ^S altg nop
+key 83 numl 1
+key 84 numl 2
+key 85 numl 3
+key 86 base ; shift : caps ; ctrl ; altg nop numl +
+key 87 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 42 base ` shift ~ caps ` ctrl ^^ altg nop
+key 124 all hole
+key 100 base z shift Z caps Z ctrl ^Z altg nop
+key 101 base x shift X caps X ctrl ^X altg nop
+key 102 base c shift C caps C ctrl ^C altg nop
+key 103 base v shift V caps V ctrl ^V altg nop
+key 104 base b shift B caps B ctrl ^B altg nop
+key 105 base n shift N caps N ctrl ^N altg nop
+key 106 base m shift M caps M ctrl '\r' altg nop numl 0
+key 107 base , shift < caps , ctrl , altg nop numl ,
+key 108 base . shift > caps . ctrl . altg nop numl .
+key 109 base / shift ? caps / ctrl ^_ altg nop numl /
+key 119 all shiftkeys+capslock
+key 19 all shiftkeys+alt up shiftkeys+alt
+key 67 all compose
+key 13 all shiftkeys+altgraph up shiftkeys+altgraph
+#
+#
+#
+# New function keys assigned old codes
+#
+key 44 all bf(8)
+key 52 all rf(7)
+key 96 all rf(9)
+key 74 all rf(13)
+key 123 all rf(15)
+key 20 all string+uparrow
+key 24 all string+leftarrow
+key 27 all string+downarrow
+key 28 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/Makefile b/usr/src/cmd/loadkeys/type_6/Makefile
new file mode 100644
index 0000000000..d8f96cbc05
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/Makefile
@@ -0,0 +1,127 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+#
+# Copyright (c) 1999 by Sun Microsystems, Inc.
+# All rights reserved.
+#
+# cmd/loadkeys/type_6/Makefile
+
+KEYTABLES = \
+ us denmark finnish france germany italy japan korea \
+ netherlands norway portugal reset spain sweden \
+ swiss_french swiss_german taiwan uk
+
+include ../../Makefile.cmd
+
+ROOTKEYTABLESDIR= $(ROOTSHLIB)/keytables
+ROOTKEYDIR= $(ROOTKEYTABLESDIR)/type_6
+ROOTKEYTABLES= $(KEYTABLES:%=$(ROOTKEYDIR)/%)
+
+# there is an install target for each ROOT layout link
+#
+LAYOUTS= \
+ layout_00 layout_06 layout_07 layout_08 layout_09 layout_0e \
+ layout_0f layout_10 layout_12 layout_13 layout_16 layout_19 \
+ layout_1a layout_1b layout_1c layout_1e layout_20 layout_21
+
+ROOTLINKS= $(LAYOUTS:%=$(ROOTKEYDIR)/%)
+
+$(ROOTKEYTABLES) := FILEMODE = 444
+
+# install rule
+$(ROOTKEYDIR)/%: %
+ $(INS.file)
+
+.KEEP_STATE:
+
+all: $(KEYTABLES)
+
+install: all $(ROOTKEYTABLESDIR) $(ROOTKEYDIR) $(ROOTKEYTABLES) $(ROOTLINKS)
+
+clean:
+
+$(ROOTKEYTABLESDIR):
+ $(INS.dir)
+
+$(ROOTKEYDIR): $(ROOTKEYTABLESDIR)
+ $(INS.dir)
+
+# install targets for ROOT layout links
+#
+$(ROOTKEYDIR)/layout_00: $(ROOTKEYDIR)/us
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us $@
+
+$(ROOTKEYDIR)/layout_06: $(ROOTKEYDIR)/denmark
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/denmark $@
+
+$(ROOTKEYDIR)/layout_07: $(ROOTKEYDIR)/finnish
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/finnish $@
+
+$(ROOTKEYDIR)/layout_08: $(ROOTKEYDIR)/france
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/france $@
+
+$(ROOTKEYDIR)/layout_09: $(ROOTKEYDIR)/germany
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/germany $@
+
+$(ROOTKEYDIR)/layout_0e: $(ROOTKEYDIR)/italy
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/italy $@
+
+$(ROOTKEYDIR)/layout_0f: $(ROOTKEYDIR)/japan
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/japan $@
+
+$(ROOTKEYDIR)/layout_10: $(ROOTKEYDIR)/korea
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/korea $@
+
+$(ROOTKEYDIR)/layout_12: $(ROOTKEYDIR)/netherlands
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/netherlands $@
+
+$(ROOTKEYDIR)/layout_13: $(ROOTKEYDIR)/norway
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/norway $@
+
+$(ROOTKEYDIR)/layout_16: $(ROOTKEYDIR)/portugal
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/portugal $@
+
+$(ROOTKEYDIR)/layout_19: $(ROOTKEYDIR)/spain
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/spain $@
+
+$(ROOTKEYDIR)/layout_1a: $(ROOTKEYDIR)/sweden
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/sweden $@
+
+$(ROOTKEYDIR)/layout_1b: $(ROOTKEYDIR)/swiss_french
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_french $@
+
+$(ROOTKEYDIR)/layout_1c: $(ROOTKEYDIR)/swiss_german
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/swiss_german $@
+
+$(ROOTKEYDIR)/layout_1e: $(ROOTKEYDIR)/taiwan
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/taiwan $@
+
+$(ROOTKEYDIR)/layout_20: $(ROOTKEYDIR)/uk
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/uk $@
+
+$(ROOTKEYDIR)/layout_21: $(ROOTKEYDIR)/us
+ $(RM) $@; $(LN) $(ROOTKEYDIR)/us $@
+
+include ../../Makefile.targ
diff --git a/usr/src/cmd/loadkeys/type_6/denmark b/usr/src/cmd/loadkeys/type_6/denmark
new file mode 100644
index 0000000000..35eee3b668
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/denmark
@@ -0,0 +1,65 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Danish Type 6 (USB) key layout
+#
+key 53 base ½ shift § caps ½ ctrl ½ altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 45 base + shift ? caps + ctrl ^_ altg nop
+key 46 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg |
+key 47 base å shift Å caps Å ctrl å altg nop
+key 48 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg fa_tilde
+key 51 base æ shift Æ caps Æ ctrl æ altg nop
+key 52 base ø shift Ø caps Ø ctrl ø altg nop
+key 50 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 49 all hole
+key 100 base < shift > caps < ctrl ^\ altg '\\'
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 99 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/finnish b/usr/src/cmd/loadkeys/type_6/finnish
new file mode 100644
index 0000000000..0bef356fe2
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/finnish
@@ -0,0 +1,65 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Finnish Type 6 (USB) key layout
+#
+key 53 base § shift ½ caps § ctrl § altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 45 base + shift ? caps + ctrl ^_ altg '\\'
+key 46 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 47 base å shift Å caps Å ctrl å altg nop
+key 48 base fa_umlaut shift ^ caps fa_umlaut ctrl fa_umlaut altg ~
+key 51 base ö shift Ö caps Ö ctrl ö altg nop
+key 52 base ä shift Ä caps Ä ctrl ä altg nop
+key 50 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 49 all hole
+key 100 base < shift > caps < ctrl ^| altg |
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 99 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/france b/usr/src/cmd/loadkeys/type_6/france
new file mode 100644
index 0000000000..7b6a7af4e5
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/france
@@ -0,0 +1,73 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# French Type 6 (USB) key layout
+#
+# "caps lock" acts as "shift lock" on this keyboard
+#
+key 53 base ² shift nop caps ² ctrl ² altg nop
+key 30 base & shift 1 caps & ctrl & altg nop
+key 31 base é shift 2 caps é ctrl é altg ~
+key 32 base '"' shift 3 caps '"' ctrl '"' altg #
+key 33 base '\'' shift 4 caps '\'' ctrl '\'' altg {
+key 34 base ( shift 5 caps ( ctrl ^[ altg [
+key 35 base - shift 6 caps - ctrl ^_ altg |
+key 36 base è shift 7 caps è ctrl è altg `
+key 37 base _ shift 8 caps _ ctrl ^\ altg \
+key 38 base ç shift 9 caps ç ctrl ^^ altg ^
+key 39 base à shift 0 caps à ctrl ^@ altg @
+key 45 base ) shift ° caps ) ctrl ^] altg ]
+key 46 base = shift + caps = ctrl = altg }
+key 20 base a shift A caps A ctrl ^A altg nop
+key 26 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base fa_cflex shift fa_umlaut caps fa_cflex ctrl fa_cflex altg nop
+key 48 base $ shift £ caps $ ctrl $ altg ¤
+key 4 base q shift Q caps Q ctrl ^Q altg nop
+key 51 base m shift M caps M ctrl ^M altg nop
+key 52 base ù shift % caps ù ctrl ù altg nop
+key 50 base * shift µ caps * ctrl * altg nop
+key 49 all hole
+key 100 base < shift > caps < ctrl < altg nop
+key 29 base w shift W caps W ctrl ^W altg nop
+key 16 base , shift ? caps , ctrl , altg nop
+key 54 base ; shift . caps ; ctrl ; altg nop
+key 55 base : shift / caps : ctrl : altg nop
+key 56 base ! shift § caps ! ctrl ! altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/germany b/usr/src/cmd/loadkeys/type_6/germany
new file mode 100644
index 0000000000..40a9517340
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/germany
@@ -0,0 +1,73 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# German Type 6 (USB) key layout
+#
+# "caps lock" acts as "shift lock" on this keyboard
+#
+key 53 base ^ shift ° caps ^ ctrl ^^ altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg ²
+key 32 base 3 shift § caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 45 base ß shift ? caps ß ctrl ^\ altg '\\'
+key 46 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 20 base q shift Q caps Q ctrl ^Q altg @
+key 28 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base ü shift Ü caps Ü ctrl ü altg nop
+key 48 base + shift * caps + ctrl + altg ~
+key 51 base ö shift Ö caps Ö ctrl ö altg nop
+key 52 base ä shift Ä caps Ä ctrl ä altg nop
+key 50 base # shift '\'' caps # ctrl # altg '`'
+key 49 all hole
+key 100 base < shift > caps < ctrl < altg |
+key 29 base y shift Y caps Y ctrl ^Y altg nop
+key 16 base m shift M caps M ctrl '\r' altg µ
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 99 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/italy b/usr/src/cmd/loadkeys/type_6/italy
new file mode 100644
index 0000000000..f2136b0dbb
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/italy
@@ -0,0 +1,63 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Italian Type 6 (USB) key layout
+#
+key 53 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 32 base 3 shift £ caps 3 ctrl 3 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg {
+key 38 base 9 shift ) caps 9 ctrl 9 altg }
+key 39 base 0 shift = caps 0 ctrl 0 altg nop
+key 45 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 46 base ì shift ^ caps Ì ctrl ^^ altg nop
+key 47 base è shift é caps È ctrl ^[ altg [
+key 48 base + shift * caps + ctrl ^] altg ]
+key 51 base ò shift ç caps Ò ctrl ^@ altg @
+key 52 base à shift ° caps À ctrl à altg #
+key 50 base ù shift § caps Ù ctrl ù altg ~
+key 49 all hole
+key 100 base < shift > caps < ctrl < altg nop
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/japan b/usr/src/cmd/loadkeys/type_6/japan
new file mode 100644
index 0000000000..b3e563a5d8
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/japan
@@ -0,0 +1,65 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Japanese Type 6 (USB) key layout
+#
+# key 13: ROMAN/KANA
+#
+key 230 all bf(4)
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift '\'' caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift nop caps 0 ctrl 0 altg nop
+key 45 base - shift = caps - ctrl - altg nop
+key 46 base ^ shift ~ caps ^ ctrl ^^ altg nop
+key 137 base ¥ shift | caps ¥ ctrl ¥ altg nop
+key 47 base @ shift ` caps @ ctrl ^@ altg nop
+key 48 base [ shift { caps [ ctrl ^[ altg nop
+key 51 base ; shift + caps ; ctrl ; altg nop
+key 52 base : shift * caps : ctrl : altg nop
+key 50 base ] shift } caps ] ctrl ^] altg nop
+key 49 all hole
+key 135 base '\\' shift _ caps '\\' ctrl ^\ altg nop
+# key 115: KAKUTEI
+key 139 all bf(1)
+# key 116: HENKAN
+key 138 all bf(2)
+# key 117: NIHONGO On/Off
+key 136 all ^@
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/korea b/usr/src/cmd/loadkeys/type_6/korea
new file mode 100644
index 0000000000..2f8df8125f
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/korea
@@ -0,0 +1,47 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Korean Type 6 (USB) key layout
+#
+#
+key 101 all bf(4)
+key 230 all bf(3)
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
+key 49 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 50 all hole
diff --git a/usr/src/cmd/loadkeys/type_6/netherlands b/usr/src/cmd/loadkeys/type_6/netherlands
new file mode 100644
index 0000000000..9f48707488
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/netherlands
@@ -0,0 +1,71 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Dutch Type 6 (USB) key layout
+#
+key 53 base @ shift § caps @ ctrl ^@ altg '¬'
+key 30 base 1 shift ! caps 1 ctrl 1 altg ¹
+key 31 base 2 shift '"' caps 2 ctrl 2 altg ²
+key 32 base 3 shift # caps 3 ctrl 3 altg ³
+key 33 base 4 shift $ caps 4 ctrl 4 altg ¼
+key 34 base 5 shift % caps 5 ctrl 5 altg ½
+key 35 base 6 shift & caps 6 ctrl 6 altg ¾
+key 36 base 7 shift _ caps 7 ctrl ^_ altg £
+key 37 base 8 shift ( caps 8 ctrl 8 altg {
+key 38 base 9 shift ) caps 9 ctrl ^] altg }
+key 39 base 0 shift '\'' caps 0 ctrl 0 altg '`'
+key 45 base / shift ? caps / ctrl ^\ altg '\\'
+key 46 base ° shift fa_tilde caps ° ctrl ° altg fa_cedilla
+key 47 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl fa_umlaut altg nop
+key 48 base * shift | caps * ctrl * altg ~
+key 22 base s shift S caps S ctrl ^S altg ß
+key 51 base + shift ± caps + ctrl + altg nop
+key 52 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 50 base < shift > caps < ctrl ^^ altg ^
+key 49 all hole
+key 100 base ] shift [ caps [ ctrl ^[ altg ¦
+key 29 base z shift Z caps Z ctrl ^Z altg «
+key 27 base x shift X caps X ctrl ^X altg »
+key 6 base c shift C caps C ctrl ^C altg ¢
+key 16 base m shift M caps M ctrl '\r' altg µ
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg ·
+key 56 base - shift = caps - ctrl ^_ altg nop
+#
+#
+key 99 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/norway b/usr/src/cmd/loadkeys/type_6/norway
new file mode 100644
index 0000000000..750bcbbec7
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/norway
@@ -0,0 +1,65 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Norwegian Type 6 (USB) key layout
+#
+key 53 base | shift § caps | ctrl | altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 45 base + shift ? caps + ctrl + altg nop
+key 46 base '\\' shift fa_grave caps '\\' ctrl ^\ altg fa_acute
+key 47 base å shift Å caps Å ctrl å altg nop
+key 48 base fa_umlaut shift fa_cflex caps fa_umlaut ctrl ^^ altg fa_tilde
+key 51 base ø shift Ø caps Ø ctrl ø altg nop
+key 52 base æ shift Æ caps Æ ctrl æ altg nop
+key 50 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 49 all hole
+key 100 base < shift > caps < ctrl < altg nop
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 99 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/portugal b/usr/src/cmd/loadkeys/type_6/portugal
new file mode 100644
index 0000000000..c50186ec25
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/portugal
@@ -0,0 +1,65 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Portuguese Type 6 (USB) key layout
+#
+key 53 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift $ caps 4 ctrl 4 altg §
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl ^^ altg ^
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 45 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 46 base « shift » caps « ctrl « altg nop
+key 47 base + shift * caps + ctrl + altg fa_umlaut
+key 48 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 51 base ç shift Ç caps Ç ctrl ç altg nop
+key 52 base º shift ª caps º ctrl º altg nop
+key 50 base fa_tilde shift fa_cflex caps fa_tilde ctrl ^^ altg nop
+key 49 all hole
+key 100 base < shift > caps < ctrl < altg nop
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/reset b/usr/src/cmd/loadkeys/type_6/reset
new file mode 100644
index 0000000000..9d0fa25093
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/reset
@@ -0,0 +1,284 @@
+#
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Reset Type 6 (USB) key layout
+#
+key 0 all hole
+key 1 all hole
+key 2 all hole
+key 3 all error
+key 4 base a shift A caps A ctrl ^A altg nop
+key 5 base b shift B caps B ctrl ^B altg nop
+key 6 base c shift C caps C ctrl ^C altg nop
+key 7 base d shift D caps D ctrl ^D altg nop
+key 8 base e shift E caps E ctrl ^E altg nop
+key 9 base f shift F caps F ctrl ^F altg nop
+key 10 base g shift G caps G ctrl ^G altg nop
+key 11 base h shift H caps H ctrl '\b' altg nop
+key 12 base i shift I caps I ctrl '\t' altg nop
+key 13 base j shift J caps J ctrl '\n' altg nop
+key 14 base k shift K caps K ctrl '\v' altg nop
+key 15 base l shift L caps L ctrl ^L altg nop
+key 16 base m shift M caps M ctrl '\r' altg nop
+key 17 base n shift N caps N ctrl ^N altg nop
+key 18 base o shift O caps O ctrl ^O altg nop
+key 19 base p shift P caps P ctrl ^P altg nop
+key 20 base q shift Q caps Q ctrl ^Q altg nop
+key 21 base r shift R caps R ctrl ^R altg nop
+key 22 base s shift S caps S ctrl ^S altg nop
+key 23 base t shift T caps T ctrl ^T altg nop
+key 24 base u shift U caps U ctrl ^U altg nop
+key 25 base v shift V caps V ctrl ^V altg nop
+key 26 base w shift W caps W ctrl ^W altg nop
+key 27 base x shift X caps X ctrl ^X altg nop
+key 28 base y shift Y caps Y ctrl ^Y altg nop
+key 29 base z shift Z caps Z ctrl ^Z altg nop
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 40 all '\r'
+key 41 all ^[
+key 42 all '\b'
+key 43 all '\t'
+key 44 base ' ' shift ' ' caps ' ' ctrl ^@ altg ' '
+key 45 base - shift _ caps - ctrl ^_ altg nop
+key 46 base = shift + caps = ctrl = altg nop
+key 47 base [ shift { caps [ ctrl ^[ altg nop
+key 48 base ] shift } caps ] ctrl ^] altg nop
+key 49 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 50 all hole
+key 51 base ; shift : caps ; ctrl ; altg nop
+key 52 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 53 base ` shift ~ caps ` ctrl ^^ altg nop
+key 54 base , shift < caps , ctrl , altg nop
+key 55 base . shift > caps . ctrl . altg nop
+key 56 base / shift ? caps / ctrl ^_ altg nop
+key 57 all shiftkeys+capslock
+key 58 all tf(1)
+key 59 all tf(2)
+key 60 all tf(3)
+key 61 all tf(4)
+key 62 all tf(5)
+key 63 all tf(6)
+key 64 all tf(7)
+key 65 all tf(8)
+key 66 all tf(9)
+key 67 all tf(10)
+key 68 all tf(11)
+key 69 all tf(12)
+key 70 all rf(2)
+key 71 all rf(3)
+key 72 all rf(1)
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 76 all '\177'
+key 77 all rf(13)
+key 78 all rf(15)
+key 79 all string+rightarrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 82 all string+uparrow
+key 83 all shiftkeys+numlock
+key 84 all rf(5) numl padslash
+key 85 all rf(6) numl padstar
+key 86 all bf(15) numl padminus
+key 87 all bf(14) numl padplus
+key 88 all bf(11) numl padenter
+key 89 all rf(13) numl pad1
+key 90 all string+downarrow numl pad2
+key 91 all rf(15) numl pad3
+key 92 all string+leftarrow numl pad4
+key 93 all rf(11) numl pad5
+key 94 all string+rightarrow numl pad6
+key 95 all rf(7) numl pad7
+key 96 all string+uparrow numl pad8
+key 97 all rf(9) numl pad9
+key 98 all bf(8) numl pad0
+key 99 all bf(10) numl paddot
+key 100 all hole
+key 101 all compose
+key 102 all bf(13)
+key 103 all hole
+key 104 all hole
+key 105 all hole
+key 106 all hole
+key 107 all hole
+key 108 all hole
+key 109 all hole
+key 110 all hole
+key 111 all hole
+key 112 all hole
+key 113 all hole
+key 114 all hole
+key 115 all hole
+key 116 all lf(7)
+key 117 all lf(16)
+key 118 all lf(3)
+key 119 all lf(5)
+key 120 all buckybits+systembit up buckybits+systembit
+key 121 all lf(2)
+key 122 all lf(4)
+key 123 all lf(10)
+key 124 all lf(6)
+key 125 all lf(8)
+key 126 all lf(9)
+key 127 all rf(4) numl padequal
+key 128 all hole
+key 129 all hole
+key 130 all hole
+key 131 all hole
+key 132 all hole
+key 133 all hole
+key 134 all hole
+key 135 all hole
+key 136 all hole
+key 137 all hole
+key 138 all hole
+key 139 all hole
+key 140 all hole
+key 141 all hole
+key 142 all hole
+key 143 all hole
+key 144 all hole
+key 145 all hole
+key 146 all hole
+key 147 all hole
+key 148 all hole
+key 149 all hole
+key 150 all hole
+key 151 all hole
+key 152 all hole
+key 153 all hole
+key 154 all hole
+key 155 all hole
+key 156 all hole
+key 157 all hole
+key 158 all '\r'
+key 159 all hole
+key 160 all hole
+key 161 all hole
+key 162 all hole
+key 163 all hole
+key 164 all hole
+key 165 all hole
+key 166 all hole
+key 167 all hole
+key 168 all hole
+key 169 all hole
+key 170 all hole
+key 171 all hole
+key 172 all hole
+key 173 all hole
+key 174 all hole
+key 175 all hole
+key 176 all hole
+key 177 all hole
+key 178 all hole
+key 179 all hole
+key 180 all hole
+key 181 all hole
+key 182 all hole
+key 183 all hole
+key 184 all hole
+key 185 all hole
+key 186 all hole
+key 187 all hole
+key 188 all hole
+key 189 all hole
+key 190 all hole
+key 191 all hole
+key 192 all hole
+key 193 all hole
+key 194 all hole
+key 195 all hole
+key 196 all hole
+key 197 all hole
+key 198 all hole
+key 199 all hole
+key 200 all hole
+key 201 all hole
+key 202 all hole
+key 203 all hole
+key 204 all hole
+key 205 all hole
+key 206 all hole
+key 207 all hole
+key 208 all hole
+key 209 all hole
+key 210 all hole
+key 211 all hole
+key 212 all hole
+key 213 all hole
+key 214 all hole
+key 215 all hole
+key 216 all hole
+key 217 all hole
+key 218 all hole
+key 219 all hole
+key 220 all hole
+key 221 all hole
+key 222 all hole
+key 223 all hole
+key 224 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 225 all shiftkeys+leftshift up shiftkeys+leftshift
+key 226 all shiftkeys+alt up shiftkeys+alt
+key 227 all buckybits+metabit up buckybits+metabit
+key 228 all shiftkeys+rightctrl up shiftkeys+rightctrl
+key 229 all shiftkeys+rightshift up shiftkeys+rightshift
+key 230 all shiftkeys+altgraph up shiftkeys+altgraph
+key 231 all buckybits+metabit up buckybits+metabit
+key 232 all hole
+key 233 all hole
+key 234 all hole
+key 235 all hole
+key 236 all hole
+key 237 all hole
+key 238 all hole
+key 239 all hole
+key 240 all hole
+key 241 all hole
+key 242 all hole
+key 243 all hole
+key 244 all hole
+key 245 all hole
+key 246 all hole
+key 247 all hole
+key 248 all hole
+key 249 all hole
+key 250 all hole
+key 251 all hole
+key 252 all hole
+key 253 all hole
+key 254 all hole
diff --git a/usr/src/cmd/loadkeys/type_6/spain b/usr/src/cmd/loadkeys/type_6/spain
new file mode 100644
index 0000000000..e0e02d0b7c
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/spain
@@ -0,0 +1,65 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Spanish Type 6 (USB) key layout
+#
+key 53 base º shift ª caps º ctrl ^\ altg '\\'
+key 30 base 1 shift ! caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift · caps 3 ctrl 3 altg #
+key 33 base 4 shift $ caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg ¬
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift = caps 0 ctrl 0 altg nop
+key 45 base '\'' shift ? caps '\'' ctrl '\'' altg '`'
+key 46 base ¡ shift ¿ caps ¡ ctrl ¡ altg nop
+key 47 base fa_grave shift fa_cflex caps fa_grave ctrl ^[ altg [
+key 48 base + shift * caps + ctrl ^] altg ]
+key 51 base ñ shift Ñ caps Ñ ctrl ñ altg nop
+key 52 base fa_acute shift fa_umlaut caps fa_acute ctrl fa_acute altg {
+key 50 base ç shift Ç caps Ç ctrl ç altg }
+key 49 all hole
+key 100 base < shift > caps < ctrl ^^ altg nop
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/sweden b/usr/src/cmd/loadkeys/type_6/sweden
new file mode 100644
index 0000000000..63dea5d85e
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/sweden
@@ -0,0 +1,65 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swedish Type 6 (USB) key layout
+#
+key 53 base § shift ½ caps § ctrl § altg nop
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift # caps 3 ctrl 3 altg £
+key 33 base 4 shift ¤ caps 4 ctrl 4 altg $
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg {
+key 37 base 8 shift ( caps 8 ctrl ^[ altg [
+key 38 base 9 shift ) caps 9 ctrl ^] altg ]
+key 39 base 0 shift = caps 0 ctrl 0 altg }
+key 45 base + shift ? caps + ctrl ^_ altg '\\'
+key 46 base fa_acute shift fa_grave caps fa_acute ctrl fa_acute altg nop
+key 47 base å shift Å caps Å ctrl å altg nop
+key 48 base fa_umlaut shift ^ caps fa_umlaut ctrl fa_umlaut altg ~
+key 51 base ö shift Ö caps Ö ctrl ö altg nop
+key 52 base ä shift Ä caps Ä ctrl ä altg nop
+key 50 base '\'' shift * caps '\'' ctrl '\'' altg '`'
+key 49 all hole
+key 100 base < shift > caps < ctrl ^| altg |
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 99 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/swiss_french b/usr/src/cmd/loadkeys/type_6/swiss_french
new file mode 100644
index 0000000000..07fbc26d1e
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/swiss_french
@@ -0,0 +1,67 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss French Type 6 (USB) key layout
+#
+key 53 base § shift ° caps § ctrl § altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift = caps 0 ctrl 0 altg '`'
+key 45 base '\'' shift ? caps '\'' ctrl '\'' altg fa_acute
+key 46 base fa_cflex shift fa_grave caps fa_cflex ctrl ^^ altg fa_tilde
+key 28 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base è shift ü caps È ctrl ^[ altg [
+key 48 base fa_umlaut shift ! caps fa_umlaut ctrl ^] altg ]
+key 51 base é shift ö caps É ctrl é altg nop
+key 52 base à shift ä caps À ctrl à altg {
+key 50 base $ shift £ caps $ ctrl $ altg }
+key 49 all hole
+key 100 base < shift > caps < ctrl ^\ altg '\\'
+key 29 base y shift Y caps Y ctrl ^Y altg nop
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/swiss_german b/usr/src/cmd/loadkeys/type_6/swiss_german
new file mode 100644
index 0000000000..d60e998e90
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/swiss_german
@@ -0,0 +1,68 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Swiss German Type 6 (USB) key layout
+#
+key 53 base § shift ° caps § ctrl § altg nop
+key 30 base 1 shift + caps 1 ctrl 1 altg |
+key 31 base 2 shift '"' caps 2 ctrl ^@ altg @
+key 32 base 3 shift * caps 3 ctrl 3 altg #
+key 33 base 4 shift ç caps 4 ctrl ^^ altg ^
+key 34 base 5 shift % caps 5 ctrl 5 altg ~
+key 35 base 6 shift & caps 6 ctrl 6 altg nop
+key 36 base 7 shift / caps 7 ctrl 7 altg nop
+key 37 base 8 shift ( caps 8 ctrl 8 altg nop
+key 38 base 9 shift ) caps 9 ctrl 9 altg nop
+key 39 base 0 shift = caps 0 ctrl 0 altg '`'
+key 45 base '\'' shift ? caps '\'' ctrl '\'' altg fa_acute
+key 46 base fa_cflex shift fa_grave caps fa_cflex ctrl ^^ altg fa_tilde
+key 28 base z shift Z caps Z ctrl ^Z altg nop
+key 47 base ü shift è caps Ü ctrl ^[ altg [
+key 48 base fa_umlaut shift ! caps fa_umlaut ctrl ^] altg ]
+key 51 base ö shift é caps Ö ctrl ö altg nop
+key 52 base ä shift à caps Ä ctrl ä altg {
+key 50 base $ shift £ caps $ ctrl $ altg }
+key 49 all hole
+key 100 base < shift > caps < ctrl ^\ altg '\\'
+key 29 base y shift Y caps Y ctrl ^Y altg nop
+key 54 base , shift ; caps , ctrl , altg nop
+key 55 base . shift : caps . ctrl . altg nop
+key 56 base - shift _ caps - ctrl ^_ altg nop
+#
+#
+key 99 all bf(10) numl padsep
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/taiwan b/usr/src/cmd/loadkeys/type_6/taiwan
new file mode 100644
index 0000000000..df063283db
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/taiwan
@@ -0,0 +1,46 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# Taiwan Type 6 (USB) key layout
+#
+#
+key 230 all bf(3)
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
+key 49 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 50 all hole
diff --git a/usr/src/cmd/loadkeys/type_6/uk b/usr/src/cmd/loadkeys/type_6/uk
new file mode 100644
index 0000000000..01653bd6b3
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/uk
@@ -0,0 +1,49 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# UK Type 6 (USB) key layout
+#
+key 53 base ` shift ¬ caps ` ctrl ` altg ¦
+key 31 base 2 shift '"' caps 2 ctrl 2 altg nop
+key 32 base 3 shift £ caps 3 ctrl 3 altg nop
+key 52 base '\'' shift @ caps '\'' ctrl ^@ altg nop
+key 50 base # shift ~ caps # ctrl # altg nop
+key 49 all hole
+key 100 base '\\' shift | caps '\\' ctrl ^\ altg nop
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow
diff --git a/usr/src/cmd/loadkeys/type_6/us b/usr/src/cmd/loadkeys/type_6/us
new file mode 100644
index 0000000000..8d66fdadd0
--- /dev/null
+++ b/usr/src/cmd/loadkeys/type_6/us
@@ -0,0 +1,85 @@
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License"). You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+# US Type 6 (USB) key layout
+#
+key 49 base '\\' shift | caps '\\' ctrl ^\ altg nop
+key 50 all hole
+key 103 all hole
+key 30 base 1 shift ! caps 1 ctrl 1 altg nop
+key 31 base 2 shift @ caps 2 ctrl ^@ altg nop
+key 32 base 3 shift # caps 3 ctrl 3 altg nop
+key 33 base 4 shift $ caps 4 ctrl 4 altg nop
+key 34 base 5 shift % caps 5 ctrl 5 altg nop
+key 35 base 6 shift ^ caps 6 ctrl ^^ altg nop
+key 36 base 7 shift & caps 7 ctrl 7 altg nop
+key 37 base 8 shift * caps 8 ctrl 8 altg nop
+key 38 base 9 shift ( caps 9 ctrl 9 altg nop
+key 39 base 0 shift ) caps 0 ctrl 0 altg nop
+key 45 base - shift _ caps - ctrl ^_ altg nop
+key 46 base = shift + caps = ctrl = altg nop
+key 20 base q shift Q caps Q ctrl ^Q altg nop
+key 26 base w shift W caps W ctrl ^W altg nop
+key 28 base y shift Y caps Y ctrl ^Y altg nop
+key 18 base o shift O caps O ctrl ^O altg nop
+key 19 base p shift P caps P ctrl ^P altg nop
+key 47 base [ shift { caps [ ctrl ^[ altg nop
+key 48 base ] shift } caps ] ctrl ^] altg nop
+key 224 all shiftkeys+leftctrl up shiftkeys+leftctrl
+key 4 base a shift A caps A ctrl ^A altg nop
+key 22 base s shift S caps S ctrl ^S altg nop
+key 51 base ; shift : caps ; ctrl ; altg nop
+key 52 base '\'' shift '"' caps '\'' ctrl '\'' altg nop
+key 53 base ` shift ~ caps ` ctrl ^^ altg nop
+key 100 all hole
+key 29 base z shift Z caps Z ctrl ^Z altg nop
+key 27 base x shift X caps X ctrl ^X altg nop
+key 6 base c shift C caps C ctrl ^C altg nop
+key 25 base v shift V caps V ctrl ^V altg nop
+key 5 base b shift B caps B ctrl ^B altg nop
+key 17 base n shift N caps N ctrl ^N altg nop
+key 16 base m shift M caps M ctrl '\r' altg nop
+key 54 base , shift < caps , ctrl , altg nop
+key 55 base . shift > caps . ctrl . altg nop
+key 56 base / shift ? caps / ctrl ^_ altg nop
+key 57 all shiftkeys+capslock
+key 226 all shiftkeys+alt up shiftkeys+alt
+key 101 all compose
+key 230 all shiftkeys+altgraph up shiftkeys+altgraph
+#
+#
+#
+# New function keys assigned old codes
+#
+key 73 all bf(8)
+key 74 all rf(7)
+key 75 all rf(9)
+key 77 all rf(13)
+key 78 all rf(15)
+key 82 all string+uparrow
+key 80 all string+leftarrow
+key 81 all string+downarrow
+key 79 all string+rightarrow