summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMats O Jansson <maja@cvs.openbsd.org>1999-07-20 21:02:32 +0000
committerMats O Jansson <maja@cvs.openbsd.org>1999-07-20 21:02:32 +0000
commit651c0c4fd14d4016d3374dbedd7a1adcef297a7c (patch)
tree7855100bbe9b6834134e4518775691b29a905e2e
parent3298e9b2dc84b04584f33f4882edf1ef41c3a14d (diff)
Add some more keyboards. -moj
-rw-r--r--sbin/kbd/kbd_sparc.c41
-rw-r--r--sbin/kbd/tables/sparc/be_fr163
-rw-r--r--sbin/kbd/tables/sparc/ca163
-rw-r--r--sbin/kbd/tables/sparc/ca_fr_5163
-rw-r--r--sbin/kbd/tables/sparc/ch_de163
-rw-r--r--sbin/kbd/tables/sparc/ch_de_5163
-rw-r--r--sbin/kbd/tables/sparc/ch_fr163
-rw-r--r--sbin/kbd/tables/sparc/ch_fr_5163
-rw-r--r--sbin/kbd/tables/sparc/es163
-rw-r--r--sbin/kbd/tables/sparc/es_5163
-rw-r--r--sbin/kbd/tables/sparc/fr_5163
-rw-r--r--sbin/kbd/tables/sparc/it163
-rw-r--r--sbin/kbd/tables/sparc/it_5163
-rw-r--r--sbin/kbd/tables/sparc/pt163
-rw-r--r--sbin/kbd/tables/sparc/pt_5163
15 files changed, 2322 insertions, 1 deletions
diff --git a/sbin/kbd/kbd_sparc.c b/sbin/kbd/kbd_sparc.c
index 935d1205be2..8ee71e51472 100644
--- a/sbin/kbd/kbd_sparc.c
+++ b/sbin/kbd/kbd_sparc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kbd_sparc.c,v 1.2 1999/07/18 18:30:11 deraadt Exp $ */
+/* $OpenBSD: kbd_sparc.c,v 1.3 1999/07/20 21:02:25 maja Exp $ */
/*
* Copyright (c) 1999 Mats O Jansson. All rights reserved.
@@ -65,42 +65,81 @@ struct {
#include "tables/sparc/us"
},
{
+#include "tables/sparc/be_fr"
+ },
+ {
+#include "tables/sparc/ca"
+ },
+ {
#include "tables/sparc/dk"
},
{
#include "tables/sparc/de"
},
{
+#include "tables/sparc/it"
+ },
+ {
#include "tables/sparc/nl"
},
{
#include "tables/sparc/no"
},
{
+#include "tables/sparc/pt"
+ },
+ {
+#include "tables/sparc/es"
+ },
+ {
#include "tables/sparc/se_fi"
},
{
+#include "tables/sparc/ch_fr"
+ },
+ {
+#include "tables/sparc/ch_de"
+ },
+ {
#include "tables/sparc/uk"
},
{
#include "tables/sparc/us_5"
},
{
+#include "tables/sparc/fr_5"
+ },
+ {
#include "tables/sparc/dk_5"
},
{
#include "tables/sparc/de_5"
},
{
+#include "tables/sparc/it_5"
+ },
+ {
#include "tables/sparc/nl_5"
},
{
#include "tables/sparc/no_5"
},
{
+#include "tables/sparc/pt_5"
+ },
+ {
+#include "tables/sparc/es_5"
+ },
+ {
#include "tables/sparc/se_5"
},
{
+#include "tables/sparc/ch_fr_5"
+ },
+ {
+#include "tables/sparc/ch_de_5"
+ },
+ {
#include "tables/sparc/uk_5"
},
{
diff --git a/sbin/kbd/tables/sparc/be_fr b/sbin/kbd/tables/sparc/be_fr
new file mode 100644
index 00000000000..fed5e210308
--- /dev/null
+++ b/sbin/kbd/tables/sparc/be_fr
@@ -0,0 +1,163 @@
+/* $OpenBSD: be_fr,v 1.1 1999/07/20 21:02:26 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "be_fr", "belgium", "france", "type_4_layout_02" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(CAPSLOCK)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ']', '}', C8('»'),'\035', /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(HOLE) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(HOLE) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(HOLE) /* 27 */
+ ALL(HOLE) /* 28 */
+ ALL('\033') /* 29 */
+ '&', '1', NOP, '&', /* 30 */
+ C8('é'),'2', C8('²'),C8('É'), /* 31 */
+ '"', '3', C8('³'),'"', /* 32 */
+ '\'', '4', NOP, '\'', /* 33 */
+ '(', '5', NOP, '(', /* 34 */
+ C8('§'),'6', '^', '\036', /* 35 */
+ C8('è'),'7', NOP, C8('è'), /* 36 */
+ '!', '8', C8('£'),'!', /* 37 */
+ C8('ç'),'9', '\\', '\034', /* 38 */
+ C8('à'),'0', NOP, C8('à'), /* 39 */
+ ')', C8('°'),'~', ')', /* 40 */
+ '-', '_', '#', '\037', /* 41 */
+ '*', '|', C8('¤'),'\034', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(HOLE) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(HOLE) /* 52 */
+ ALL('\t') /* 53 */
+ 'a', 'A', NOP, '\001', /* 54 */
+ 'z', 'Z', NOP, '\032', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ GR(1), GR(0), NOP, GR(1), /* 64 */
+ '`', '$', '@', '\000', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(HOLE) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'q', 'Q', NOP, '\021', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ 'm', 'M', C8('µ'),'\r', /* 86 */
+ C8('ù'),'%', NOP, C8('ù'), /* 87 */
+ '[', '{', C8('«'),'\033', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(HOLE) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'w', 'W', NOP, '\027', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ ',', '?', NOP, ',', /* 106 */
+ ';', '.', NOP, ';', /* 107 */
+ ':', '/', NOP, ':', /* 108 */
+ '=', '+', NOP, '=', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(ALTGRAPH)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(HOLE) /* 123 */
+ '<', '>', NOP, '<', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/ca b/sbin/kbd/tables/sparc/ca
new file mode 100644
index 00000000000..bd5a91f1bb7
--- /dev/null
+++ b/sbin/kbd/tables/sparc/ca
@@ -0,0 +1,163 @@
+/* $OpenBSD: ca,v 1.1 1999/07/20 21:02:26 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "ca", "canada", "type_4_layout_03" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(CAPSLOCK)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(HOLE) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(HOLE) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(HOLE) /* 27 */
+ ALL(HOLE) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', C8('±'),'1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', '/', C8('£'),'3', /* 32 */
+ '4', '$', C8('¢'),'4', /* 33 */
+ '5', '%', C8('¤'),'5', /* 34 */
+ '6', '?', C8('¬'),'6', /* 35 */
+ '7', '&', '|', '7', /* 36 */
+ '8', '*', C8('²'),'8', /* 37 */
+ '9', '(', C8('³'),'9', /* 38 */
+ '0', ')', C8('¼'),'0', /* 39 */
+ '-', '_', C8('½'),'\037', /* 40 */
+ '=', '+', C8('¾'),'=', /* 41 */
+ '<', '>', '}', '\033', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(HOLE) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(HOLE) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', C8('§'),'\017', /* 62 */
+ 'p', 'P', C8('¶'),'\020', /* 63 */
+ GR(1), '^', '[', '\036', /* 64 */
+ GR(3), GR(0), ']', '\035', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(HOLE) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ ';', ':', '~', ';', /* 86 */
+ GR(5), '`', '{', '`', /* 87 */
+ '#', '|', '\\', '\034', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(HOLE) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', NOP, '\032', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', C8('«'),'\026', /* 103 */
+ 'b', 'B', C8('»'),'\002', /* 104 */
+ 'n', 'N', C8('°'),'\016', /* 105 */
+ 'm', 'M', C8('µ'),'\r', /* 106 */
+ ',', '\'', C8('¯'),',', /* 107 */
+ '.', '.', NOP, '.', /* 108 */
+ C8('é'),C8('É'),GR(4), C8('é'), /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(ALTGRAPH)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(HOLE) /* 123 */
+ C8('«'),C8('»'),C8('°'),C8('«'), /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/ca_fr_5 b/sbin/kbd/tables/sparc/ca_fr_5
new file mode 100644
index 00000000000..ccdbeb756ca
--- /dev/null
+++ b/sbin/kbd/tables/sparc/ca_fr_5
@@ -0,0 +1,163 @@
+/* $OpenBSD: ca_fr_5,v 1.1 1999/07/20 21:02:27 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "ca_fr_5", "canada_french_5", "type_4_layout_32" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(ST(1)) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(ST(3)) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(ST(2)) /* 27 */
+ ALL(ST(4)) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', C8('±'),'1', /* 30 */
+ '2', '@', NOP, '\000', /* 31 */
+ '3', '#', C8('£'),'3', /* 32 */
+ '4', '$', C8('¢'),'4', /* 33 */
+ '5', '%', C8('¤'),'5', /* 34 */
+ '6', '?', NOP, '6', /* 35 */
+ '7', '&', NOP, '7', /* 36 */
+ '8', '*', NOP, '8', /* 37 */
+ '9', '(', '[', '9', /* 38 */
+ '0', ')', ']', '0', /* 39 */
+ '-', '_', NOP, '-', /* 40 */
+ '=', '+', C8('¬'),'=', /* 41 */
+ '/', '\\', '|', '/', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(BF(8)) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(RF(7)) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', C8('¶'),'\020', /* 63 */
+ GR(1), GR(0), GR(5), '\036', /* 64 */
+ C8('ç'),C8('Ç'),'~', C8('ç'), /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(RF(13)) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ ';', ':', C8('°'),';', /* 86 */
+ C8('è'),C8('È'),NOP, C8('è'), /* 87 */
+ C8('à'),C8('À'),NOP, C8('à'), /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(RF(9)) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', C8('«'),'\032', /* 100 */
+ 'x', 'X', C8('»'),'\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', '\'', '<', ',', /* 107 */
+ '.', '"', '>', '.', /* 108 */
+ C8('é'),C8('É'),'`', C8('é'), /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(CAPSLOCK)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(RF(15)) /* 123 */
+ C8('ù'),C8('Ù'),NOP, C8('ù'), /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/ch_de b/sbin/kbd/tables/sparc/ch_de
new file mode 100644
index 00000000000..bbdefe9ae13
--- /dev/null
+++ b/sbin/kbd/tables/sparc/ch_de
@@ -0,0 +1,163 @@
+/* $OpenBSD: ch_de,v 1.1 1999/07/20 21:02:28 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "ch_de", "swiss_german", "type_4_layout_0d" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(COMPOSE) /* 13 */
+ ALL(TF(6)) /* 14 */
+ '>', '}', NOP, '>', /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(HOLE) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(HOLE) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(HOLE) /* 27 */
+ ALL(HOLE) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '+', '!', '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', '*', '#', '3', /* 32 */
+ '4', C8('ç'),C8('¢'),'4', /* 33 */
+ '5', '%', '~', '5', /* 34 */
+ '6', '&', C8('§'),'6', /* 35 */
+ '7', '/', '|', '7', /* 36 */
+ '8', '(', C8('°'),'8', /* 37 */
+ '9', ')', '\\', '\034', /* 38 */
+ '0', '=', '^', '\036', /* 39 */
+ '\'', '?', '`', '\'', /* 40 */
+ GR(1), GR(5), NOP, GR(1), /* 41 */
+ '$', GR(2), C8('£'),'$', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(HOLE) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(HOLE) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'z', 'Z', NOP, '\032', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ C8('ü'),C8('è'),NOP, C8('ü'), /* 64 */
+ GR(0), GR(4), NOP, GR(0), /* 65 */
+ ALL('\177') /* 66 */
+ ALL(SK(ALTGRAPH)) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(HOLE) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(CAPSLOCK)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ö'),C8('é'),NOP, C8('ö'), /* 86 */
+ C8('ä'),C8('à'),NOP, C8('ä'), /* 87 */
+ '<', '{', NOP, '<', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(HOLE) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'y', 'Y', NOP, '\031', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', C8('µ'),'\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(LEFTCTRL)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(HOLE) /* 123 */
+ ']', '[', '\\', '\035', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/ch_de_5 b/sbin/kbd/tables/sparc/ch_de_5
new file mode 100644
index 00000000000..c7738e95022
--- /dev/null
+++ b/sbin/kbd/tables/sparc/ch_de_5
@@ -0,0 +1,163 @@
+/* $OpenBSD: ch_de_5,v 1.1 1999/07/20 21:02:28 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "ch_de_5", "swiss_german_5", "type_4_layout_2d" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(ST(1)) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(ST(3)) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(ST(2)) /* 27 */
+ ALL(ST(4)) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '+', '|', '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', '*', '#', '3', /* 32 */
+ '4', C8('ç'),'^', '\036', /* 33 */
+ '5', '%', '~', '5', /* 34 */
+ '6', '&', NOP, '6', /* 35 */
+ '7', '/', NOP, '7', /* 36 */
+ '8', '(', NOP, '8', /* 37 */
+ '9', ')', NOP, '9', /* 38 */
+ '0', '=', '`', '0', /* 39 */
+ '\'', '?', GR(4), '\'', /* 40 */
+ GR(1), GR(5), GR(2), '\036', /* 41 */
+ C8('§'),C8('°'),NOP, C8('§'), /* 42 */
+ ALL('\b') /* 43 */
+ ALL(BF(8)) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(RF(7)) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'z', 'Z', NOP, '\032', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ C8('ü'),C8('è'),'[', '\033', /* 64 */
+ GR(0), '!', ']', '\035', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(RF(13)) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ö'),C8('é'),NOP, C8('ö'), /* 86 */
+ C8('ä'),C8('à'),'{', C8('ä'), /* 87 */
+ '$', C8('£'),'}', '$', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(RF(9)) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'y', 'Y', NOP, '\031', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(CAPSLOCK)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(RF(15)) /* 123 */
+ '<', '>', '\\', '\034', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/ch_fr b/sbin/kbd/tables/sparc/ch_fr
new file mode 100644
index 00000000000..d484bf4a400
--- /dev/null
+++ b/sbin/kbd/tables/sparc/ch_fr
@@ -0,0 +1,163 @@
+/* $OpenBSD: ch_fr,v 1.1 1999/07/20 21:02:29 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "ch_fr", "swiss_french", "type_4_layout_0c" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(COMPOSE) /* 13 */
+ ALL(TF(6)) /* 14 */
+ '>', '}', NOP, '>', /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(HOLE) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(HOLE) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(HOLE) /* 27 */
+ ALL(HOLE) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '+', '!', '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', '*', '#', '3', /* 32 */
+ '4', C8('ç'),C8('¢'),'4', /* 33 */
+ '5', '%', '~', '5', /* 34 */
+ '6', '&', C8('§'),'6', /* 35 */
+ '7', '/', '|', '7', /* 36 */
+ '8', '(', C8('°'),'8', /* 37 */
+ '9', ')', '\\', '\034', /* 38 */
+ '0', '=', '^', '\036', /* 39 */
+ '\'', '?', '`', '\'', /* 40 */
+ GR(1), GR(5), NOP, GR(1), /* 41 */
+ '$', GR(2), C8('£'),'$', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(HOLE) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(HOLE) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'z', 'Z', NOP, '\032', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ C8('è'),C8('ü'),NOP, C8('è'), /* 64 */
+ GR(0), GR(4), NOP, GR(0), /* 65 */
+ ALL('\177') /* 66 */
+ ALL(SK(ALTGRAPH)) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(HOLE) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(CAPSLOCK)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('é'),C8('ö'),NOP, C8('é'), /* 86 */
+ C8('à'),C8('ä'),NOP, C8('à'), /* 87 */
+ '<', '{', NOP, '<', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(HOLE) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'y', 'Y', NOP, '\031', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', C8('µ'),'\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(LEFTCTRL)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(HOLE) /* 123 */
+ ']', '[', '\\', '\035', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/ch_fr_5 b/sbin/kbd/tables/sparc/ch_fr_5
new file mode 100644
index 00000000000..c90da0f8cbf
--- /dev/null
+++ b/sbin/kbd/tables/sparc/ch_fr_5
@@ -0,0 +1,163 @@
+/* $OpenBSD: ch_fr_5,v 1.1 1999/07/20 21:02:29 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "ch_fr_5", "swiss_french_5", "type_4_layout_2c" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(ST(1)) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(ST(3)) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(ST(2)) /* 27 */
+ ALL(ST(4)) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '+', '|', '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', '*', '#', '3', /* 32 */
+ '4', C8('ç'),'^', '\036', /* 33 */
+ '5', '%', '~', '5', /* 34 */
+ '6', '&', NOP, '6', /* 35 */
+ '7', '/', NOP, '7', /* 36 */
+ '8', '(', NOP, '8', /* 37 */
+ '9', ')', NOP, '9', /* 38 */
+ '0', '=', '`', '0', /* 39 */
+ '\'', '?', GR(4), '\'', /* 40 */
+ GR(1), GR(5), GR(2), '\036', /* 41 */
+ C8('§'),C8('°'),NOP, C8('§'), /* 42 */
+ ALL('\b') /* 43 */
+ ALL(BF(8)) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(RF(7)) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'z', 'Z', NOP, '\032', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ C8('è'),C8('ü'),'[', '\033', /* 64 */
+ GR(0), '!', ']', '\035', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(RF(13)) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('é'),C8('ö'),NOP, C8('é'), /* 86 */
+ C8('à'),C8('ä'),'{', C8('à'), /* 87 */
+ '$', C8('£'),'}', '$', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(RF(9)) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'y', 'Y', NOP, '\031', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(CAPSLOCK)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(RF(15)) /* 123 */
+ '<', '>', '\\', '\034', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/es b/sbin/kbd/tables/sparc/es
new file mode 100644
index 00000000000..296fd95c038
--- /dev/null
+++ b/sbin/kbd/tables/sparc/es
@@ -0,0 +1,163 @@
+/* $OpenBSD: es,v 1.1 1999/07/20 21:02:29 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "es", "spain", "latin_america", "type_4_layout_0a" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ']', '}', C8('»'),'\035', /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(HOLE) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(HOLE) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(HOLE) /* 27 */
+ ALL(HOLE) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', NOP, '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', C8('·'),'#', '3', /* 32 */
+ '4', '$', NOP, '4', /* 33 */
+ '5', '%', C8('°'),'5', /* 34 */
+ '6', '&', C8('¬'),'6', /* 35 */
+ '7', '/', NOP, '7', /* 36 */
+ '8', '(', NOP, '8', /* 37 */
+ '9', ')', '\\', '\034', /* 38 */
+ '0', '=', '|', '0', /* 39 */
+ '\'', '?', '`', '\034', /* 40 */
+ C8('¡'),C8('¿'),NOP, C8('¡'), /* 41 */
+ C8('ç'),C8('Ç'),NOP, C8('ç'), /* 42 */
+ ALL('\b') /* 43 */
+ ALL(HOLE) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(HOLE) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', C8('º'),'\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ GR(5), GR(1), '^', '\036', /* 64 */
+ '+', '*', '~', '+', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(HOLE) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(CAPSLOCK)) /* 76 */
+ 'a', 'A', C8('ª'),'\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ñ'),C8('Ñ'),NOP, C8('ñ'), /* 86 */
+ GR(4), GR(0), NOP, GR(4), /* 87 */
+ '[', '{', C8('«'),'\033', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(HOLE) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', NOP, '\032', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(LEFTCTRL)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(HOLE) /* 123 */
+ '<', '>', NOP, '<', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/es_5 b/sbin/kbd/tables/sparc/es_5
new file mode 100644
index 00000000000..37afa4e370b
--- /dev/null
+++ b/sbin/kbd/tables/sparc/es_5
@@ -0,0 +1,163 @@
+/* $OpenBSD: es_5,v 1.1 1999/07/20 21:02:29 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "es_5", "spain_5", "type_4_layout_2a" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(ST(1)) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(ST(3)) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(ST(2)) /* 27 */
+ ALL(ST(4)) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', '|', '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', C8('·'),'#', '3', /* 32 */
+ '4', '$', '^', '\036', /* 33 */
+ '5', '%', '~', '5', /* 34 */
+ '6', '&', C8('¬'),'6', /* 35 */
+ '7', '/', NOP, '7', /* 36 */
+ '8', '(', NOP, '8', /* 37 */
+ '9', ')', NOP, '9', /* 38 */
+ '0', '=', NOP, '0', /* 39 */
+ '\'', '?', '`', '\'', /* 40 */
+ C8('¡'),C8('¿'),NOP, C8('¡'), /* 41 */
+ C8('º'),C8('ª'),'\\', '\034', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(BF(8)) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(RF(7)) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ GR(5), GR(1), '[', '\033', /* 64 */
+ '+', '*', ']', '\035', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(RF(13)) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ñ'),C8('Ñ'),NOP, C8('ñ'), /* 86 */
+ GR(4), GR(0), '{', GR(4), /* 87 */
+ C8('ç'),C8('Ç'),'}', C8('ç'), /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(RF(9)) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', NOP, '\032', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(CAPSLOCK)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(RF(15)) /* 123 */
+ '<', '>', NOP, '\036', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/fr_5 b/sbin/kbd/tables/sparc/fr_5
new file mode 100644
index 00000000000..7d131472a98
--- /dev/null
+++ b/sbin/kbd/tables/sparc/fr_5
@@ -0,0 +1,163 @@
+/* $OpenBSD: fr_5,v 1.1 1999/07/20 21:02:30 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "fr_5", "france_5", "type_4_layout_23" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(ST(1)) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(ST(3)) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(ST(2)) /* 27 */
+ ALL(ST(4)) /* 28 */
+ ALL('\033') /* 29 */
+ '&', '1', NOP, '&', /* 30 */
+ C8('é'),'2', '~', C8('é'), /* 31 */
+ '"', '3', '#', '"', /* 32 */
+ '\'', '4', '{', '\'', /* 33 */
+ '(', '5', '[', '\033', /* 34 */
+ '-', '6', '|', '\037', /* 35 */
+ C8('è'),'7', '`', C8('è'), /* 36 */
+ '_', '8', '\\', '\034', /* 37 */
+ C8('ç'),'9', '^', '\036', /* 38 */
+ C8('à'),'0', '@', '\000', /* 39 */
+ ')', C8('°'),']', '\035', /* 40 */
+ '=', '+', '}', '=', /* 41 */
+ C8('²'),NOP, NOP, C8('²'), /* 42 */
+ ALL('\b') /* 43 */
+ ALL(BF(8)) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(RF(7)) /* 52 */
+ ALL('\t') /* 53 */
+ 'a', 'A', NOP, '\001', /* 54 */
+ 'z', 'Z', NOP, '\032', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ GR(1), GR(0), NOP, GR(1), /* 64 */
+ '$', C8('£'),C8('¤'),'$', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(RF(13)) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'q', 'Q', NOP, '\021', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ 'm', 'M', NOP, '\r', /* 86 */
+ C8('ù'),'%', NOP, C8('ù'), /* 87 */
+ '*', C8('µ'),NOP, '*', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(RF(9)) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'w', 'W', NOP, '\027', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ ',', '?', NOP, ',', /* 106 */
+ ';', '.', NOP, ';', /* 107 */
+ ':', '/', NOP, ':', /* 108 */
+ '!', C8('§'),NOP, '!', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(CAPSLOCK)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(RF(15)) /* 123 */
+ '<', '>', NOP, '<', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/it b/sbin/kbd/tables/sparc/it
new file mode 100644
index 00000000000..ec2c8a2b1e5
--- /dev/null
+++ b/sbin/kbd/tables/sparc/it
@@ -0,0 +1,163 @@
+/* $OpenBSD: it,v 1.1 1999/07/20 21:02:30 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "it", "italy", "type_4_layout_06" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ']', '}', C8('»'),'\035', /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(HOLE) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(HOLE) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(HOLE) /* 27 */
+ ALL(HOLE) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', NOP, '1', /* 30 */
+ '2', '"', C8('²'),'2', /* 31 */
+ '3', C8('£'),C8('³'),'3', /* 32 */
+ '4', '$', NOP, '4', /* 33 */
+ '5', '%', NOP, '5', /* 34 */
+ '6', '&', C8('¬'),'6', /* 35 */
+ '7', '/', NOP, '7', /* 36 */
+ '8', '(', NOP, '8', /* 37 */
+ '9', ')', '\\', '\034', /* 38 */
+ '0', '=', '|', '0', /* 39 */
+ '\'', '?', '`', '\'', /* 40 */
+ C8('ì'),'^', NOP, '\036', /* 41 */
+ C8('ù'),C8('§'),NOP, C8('ù'), /* 42 */
+ ALL('\b') /* 43 */
+ ALL(HOLE) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(HOLE) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ C8('è'),C8('é'),NOP, C8('è'), /* 64 */
+ '+', '*', '~', '+', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(HOLE) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(CAPSLOCK)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ò'),C8('ç'),'@', '\000', /* 86 */
+ C8('à'),C8('°'),'#', C8('à'), /* 87 */
+ '[', '{', C8('«'),'\033', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(HOLE) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', NOP, '\032', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(LEFTCTRL)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(HOLE) /* 123 */
+ '<', '>', NOP, '<', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/it_5 b/sbin/kbd/tables/sparc/it_5
new file mode 100644
index 00000000000..8c6023f9819
--- /dev/null
+++ b/sbin/kbd/tables/sparc/it_5
@@ -0,0 +1,163 @@
+/* $OpenBSD: it_5,v 1.1 1999/07/20 21:02:30 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "it_5", "italy_5", "type_4_layout_26" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(ST(1)) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(ST(3)) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(ST(2)) /* 27 */
+ ALL(ST(4)) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', NOP, '1', /* 30 */
+ '2', '"', NOP, '2', /* 31 */
+ '3', C8('£'),NOP, '3', /* 32 */
+ '4', '$', NOP, '4', /* 33 */
+ '5', '%', NOP, '5', /* 34 */
+ '6', '&', NOP, '6', /* 35 */
+ '7', '/', NOP, '7', /* 36 */
+ '8', '(', '{', '8', /* 37 */
+ '9', ')', '}', '9', /* 38 */
+ '0', '=', NOP, '0', /* 39 */
+ '\'', '?', '`', '\'', /* 40 */
+ C8('ì'),'^', NOP, '\036', /* 41 */
+ '\\', '|', NOP, '\034', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(BF(8)) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(RF(7)) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ C8('è'),C8('é'),'[', '\033', /* 64 */
+ '+', '*', ']', '\035', /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(RF(13)) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ò'),C8('ç'),'@', '\000', /* 86 */
+ C8('à'),C8('°'),'#', C8('à'), /* 87 */
+ C8('ù'),C8('§'),'~', C8('ù'), /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(RF(9)) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', NOP, '\032', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(CAPSLOCK)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(RF(15)) /* 123 */
+ '<', '>', NOP, '<', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/pt b/sbin/kbd/tables/sparc/pt
new file mode 100644
index 00000000000..2577797fe3e
--- /dev/null
+++ b/sbin/kbd/tables/sparc/pt
@@ -0,0 +1,163 @@
+/* $OpenBSD: pt,v 1.1 1999/07/20 21:02:31 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "pt", "portugal", "type_4_layout_09" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ']', '}', C8('»'),'\035', /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(HOLE) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(HOLE) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(HOLE) /* 27 */
+ ALL(HOLE) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', NOP, '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', '#', C8('£'),'3', /* 32 */
+ '4', '$', C8('§'),'4', /* 33 */
+ '5', '%', NOP, '5', /* 34 */
+ '6', '&', C8('¬'),'6', /* 35 */
+ '7', '/', NOP, '7', /* 36 */
+ '8', '(', NOP, '8', /* 37 */
+ '9', ')', '\\', '\034', /* 38 */
+ '0', '=', '|', '0', /* 39 */
+ '\'', '?', '`', '\'', /* 40 */
+ C8('¡'),C8('¿'),NOP, C8('¡'), /* 41 */
+ GR(2), GR(1), '^', '\036', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(HOLE) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(HOLE) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ GR(0), '*', '+', GR(0), /* 64 */
+ GR(4), GR(5), '~', GR(4), /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(HOLE) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(CAPSLOCK)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ç'),C8('Ç'),NOP, C8('ç'), /* 86 */
+ C8('º'),C8('ª'),NOP, C8('º'), /* 87 */
+ '[', '{', C8('«'),'\033', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(HOLE) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', NOP, '\032', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(LEFTCTRL)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(HOLE) /* 123 */
+ '<', '>', NOP, '<', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */
diff --git a/sbin/kbd/tables/sparc/pt_5 b/sbin/kbd/tables/sparc/pt_5
new file mode 100644
index 00000000000..946e7899d33
--- /dev/null
+++ b/sbin/kbd/tables/sparc/pt_5
@@ -0,0 +1,163 @@
+/* $OpenBSD: pt_5,v 1.1 1999/07/20 21:02:31 maja Exp $ */
+
+/*
+ * Copyright (c) 1999 Mats O Jansson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mats O Jansson.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+ { "pt_5", "portugal_5", "type_4_layout_29" },
+/* unshift shift alt gr control */
+ ALL(HOLE) /* 0 */
+ ALL(BB(SYSTEMBIT)) /* 1 */
+ ALL(HOLE) /* 2 */
+ ALL(LF(2)) /* 3 */
+ ALL(HOLE) /* 4 */
+ ALL(TF(1)) /* 5 */
+ ALL(TF(2)) /* 6 */
+ ALL(TF(10)) /* 7 */
+ ALL(TF(3)) /* 8 */
+ ALL(TF(11)) /* 9 */
+ ALL(TF(4)) /* 10 */
+ ALL(TF(12)) /* 11 */
+ ALL(TF(5)) /* 12 */
+ ALL(SK(ALTGRAPH)) /* 13 */
+ ALL(TF(6)) /* 14 */
+ ALL(HOLE) /* 15 */
+ ALL(TF(7)) /* 16 */
+ ALL(TF(8)) /* 17 */
+ ALL(TF(9)) /* 18 */
+ ALL(SK(ALT)) /* 19 */
+ ALL(ST(1)) /* 20 */
+ ALL(RF(1)) /* 21 */
+ ALL(RF(2)) /* 22 */
+ ALL(RF(3)) /* 23 */
+ ALL(ST(3)) /* 24 */
+ ALL(LF(3)) /* 25 */
+ ALL(LF(4)) /* 26 */
+ ALL(ST(2)) /* 27 */
+ ALL(ST(4)) /* 28 */
+ ALL('\033') /* 29 */
+ '1', '!', NOP, '1', /* 30 */
+ '2', '"', '@', '\000', /* 31 */
+ '3', '#', C8('£'),'3', /* 32 */
+ '4', '$', C8('§'),'4', /* 33 */
+ '5', '%', '~', '5', /* 34 */
+ '6', '&', '^', '\036', /* 35 */
+ '7', '/', '{', '7', /* 36 */
+ '8', '(', '[', '\033', /* 37 */
+ '9', ')', ']', '\035', /* 38 */
+ '0', '=', '}', '0', /* 39 */
+ '\'', '?', '`', '\'', /* 40 */
+ C8('«'),C8('»'),NOP, C8('«'), /* 41 */
+ '\\', '|', NOP, '\034', /* 42 */
+ ALL('\b') /* 43 */
+ ALL(BF(8)) /* 44 */
+ ALL(RF(4)) /* 45 */
+ ALL(RF(5)) /* 46 */
+ ALL(RF(6)) /* 47 */
+ ALL(BF(13)) /* 48 */
+ ALL(LF(5)) /* 49 */
+ ALL(BF(10)) /* 50 */
+ ALL(LF(6)) /* 51 */
+ ALL(RF(7)) /* 52 */
+ ALL('\t') /* 53 */
+ 'q', 'Q', NOP, '\021', /* 54 */
+ 'w', 'W', NOP, '\027', /* 55 */
+ 'e', 'E', NOP, '\005', /* 56 */
+ 'r', 'R', NOP, '\022', /* 57 */
+ 't', 'T', NOP, '\024', /* 58 */
+ 'y', 'Y', NOP, '\031', /* 59 */
+ 'u', 'U', NOP, '\025', /* 60 */
+ 'i', 'I', NOP, '\t', /* 61 */
+ 'o', 'O', NOP, '\017', /* 62 */
+ 'p', 'P', NOP, '\020', /* 63 */
+ '+', '*', GR(0), '+', /* 64 */
+ GR(4), GR(5), NOP, GR(4), /* 65 */
+ ALL('\177') /* 66 */
+ ALL(COMPOSE) /* 67 */
+ ALL(RF(7)) /* 68 */
+ ALL(ST(1)) /* 69 */
+ ALL(RF(9)) /* 70 */
+ ALL(BF(15)) /* 71 */
+ ALL(LF(7)) /* 72 */
+ ALL(LF(8)) /* 73 */
+ ALL(RF(13)) /* 74 */
+ ALL(HOLE) /* 75 */
+ ALL(SK(LEFTCTRL)) /* 76 */
+ 'a', 'A', NOP, '\001', /* 77 */
+ 's', 'S', NOP, '\023', /* 78 */
+ 'd', 'D', NOP, '\004', /* 79 */
+ 'f', 'F', NOP, '\006', /* 80 */
+ 'g', 'G', NOP, '\007', /* 81 */
+ 'h', 'H', NOP, '\b', /* 82 */
+ 'j', 'J', NOP, '\n', /* 83 */
+ 'k', 'K', NOP, '\013', /* 84 */
+ 'l', 'L', NOP, '\014', /* 85 */
+ C8('ç'),C8('Ç'),NOP, C8('ç'), /* 86 */
+ C8('º'),C8('ª'),NOP, C8('º'), /* 87 */
+ GR(2), GR(1), NOP, '\036', /* 88 */
+ ALL('\r') /* 89 */
+ ALL(BF(11)) /* 90 */
+ ALL(ST(3)) /* 91 */
+ ALL(RF(11)) /* 92 */
+ ALL(ST(4)) /* 93 */
+ ALL(BF(8)) /* 94 */
+ ALL(LF(9)) /* 95 */
+ ALL(RF(9)) /* 96 */
+ ALL(LF(10)) /* 97 */
+ ALL(SK(NUMLOCK)) /* 98 */
+ ALL(SK(LEFTSHIFT)) /* 99 */
+ 'z', 'Z', NOP, '\032', /* 100 */
+ 'x', 'X', NOP, '\030', /* 101 */
+ 'c', 'C', NOP, '\003', /* 102 */
+ 'v', 'V', NOP, '\026', /* 103 */
+ 'b', 'B', NOP, '\002', /* 104 */
+ 'n', 'N', NOP, '\016', /* 105 */
+ 'm', 'M', NOP, '\r', /* 106 */
+ ',', ';', NOP, ',', /* 107 */
+ '.', ':', NOP, '.', /* 108 */
+ '-', '_', NOP, '\037', /* 109 */
+ ALL(SK(RIGHTSHIFT)) /* 110 */
+ ALL('\n') /* 111 */
+ ALL(RF(13)) /* 112 */
+ ALL(ST(2)) /* 113 */
+ ALL(RF(15)) /* 114 */
+ ALL(HOLE) /* 115 */
+ ALL(HOLE) /* 116 */
+ ALL(HOLE) /* 117 */
+ ALL(LF(16)) /* 118 */
+ ALL(SK(CAPSLOCK)) /* 119 */
+ ALL(BB(0)) /* 120 */
+ ' ', ' ', ' ', '\000', /* 121 */
+ ALL(BB(0)) /* 122 */
+ ALL(RF(15)) /* 123 */
+ '<', '>', NOP, '<', /* 124 */
+ ALL(BF(14)) /* 125 */
+ ALL(ERROR) /* 126 */
+ ALL(IDLE) /* 127 */