Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm32/shark French/Finnish/German/Norwegian keyboar...



details:   https://anonhg.NetBSD.org/src/rev/478dcd2c1345
branches:  trunk
changeset: 495252:478dcd2c1345
user:      is <is%NetBSD.org@localhost>
date:      Mon Jul 24 21:56:09 2000 +0000

description:
French/Finnish/German/Norwegian keyboard support; ported by Thomas Runge
from the i386 pccons.c. Minus the iso8859-1 to pc437 translation which
isn't needed on the DNARD.

diffstat:

 sys/arch/arm32/shark/pccons.c |  605 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 601 insertions(+), 4 deletions(-)

diffs (truncated from 670 to 300 lines):

diff -r 82d5d0e3c705 -r 478dcd2c1345 sys/arch/arm32/shark/pccons.c
--- a/sys/arch/arm32/shark/pccons.c     Mon Jul 24 21:50:10 2000 +0000
+++ b/sys/arch/arm32/shark/pccons.c     Mon Jul 24 21:56:09 2000 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: pccons.c,v 1.11 2000/06/29 08:53:03 mrg Exp $       */
+/*      $NetBSD: pccons.c,v 1.12 2000/07/24 21:56:09 is Exp $       */
 
 /*
  * Copyright 1997
@@ -178,6 +178,14 @@
 
 #define PCBURST 128
 
+/*
+ * Non-US keyboards definition
+ */
+#if defined(FRENCH_KBD) || defined(GERMAN_KBD) || defined(NORWEGIAN_KBD) || defined(FINNISH_KBD)
+# define NONUS_KBD
+# define NUMERIC_SLASH_FIX
+#endif
+
 /* Macro to extract the minor device number from the device identifier 
 */
 #define PCUNIT(x)       (minor(x))
@@ -213,6 +221,9 @@
 #define FUNC            0x0100  /* function key */
 #define KP              0x0200  /* Keypad keys */
 #define NONE            0x0400  /* no function */
+#ifdef NONUS_KBD
+#define ALTGR           0x0040  /* Alt graphic */
+#endif
 #define BREAKBIT        0x80    /* This bit used in XT scancodes to       */
                                 /* indicate the release of key.           */ 
 
@@ -400,8 +411,6 @@
 **
 **   1  - Keyboard and controller successfully initialised
 **   0  - Failed to initialise keyboard or controller
-**
-**--
 */
 static int 
 kbd_init(bus_space_tag_t     iot, 
@@ -2842,6 +2851,7 @@
 }
 
 #define CODE_SIZE       4               /* Use a max of 4 for now... */
+#ifndef NONUS_KBD
 typedef struct 
 {
     u_short     type;
@@ -2989,7 +2999,557 @@
 { NONE, "",             "",             "" },           /* 127 */
 };
 
+#else /* NONUS_KBD */
+        
+typedef struct {
+        u_short type;
+        char unshift[CODE_SIZE];
+        char shift[CODE_SIZE];
+        char ctl[CODE_SIZE];
+        char altgr[CODE_SIZE];
+} Scan_def;
 
+#ifdef GERMAN_KBD
+        
+static Scan_def scan_codes[] = {
+{ NONE, "",     "",     "",     "" },   /* 0 unused */
+{ ASCII,        "\033", "\033", "\033", "\033"}, /* 1 ESCape */
+{ ASCII,        "1",    "!",    "!",    "" },   /* 2 1 */
+{ ASCII,        "2",    "\"",   "\"",   "\xb2" }, /* 3 2 */
+{ ASCII,        "3",    "\xa7", "\xa7", "\xb3" }, /* 4 3 */
+{ ASCII,        "4",    "$",    "$",    "" },   /* 5 4 */
+{ ASCII,        "5",    "%",    "%",    "" },   /* 6 5 */
+{ ASCII,        "6",    "&",    "&",    "" },   /* 7 6 */
+{ ASCII,        "7",    "/",    "/",    "{" },  /* 8 7 */
+{ ASCII,        "8",    "(",    "(",    "[" },  /* 9 8 */
+{ ASCII,        "9",    ")",    ")",    "]" },  /* 10 9 */
+{ ASCII,        "0",    "=",    "=",    "}" },  /* 11 0 */
+{ ASCII,        "\xdf","?",     "?",    "\\" }, /* 12 - */
+{ ASCII,        "'",    "`",    "`",    "" },   /* 13 = */
+{ ASCII,        "\177", "\177", "\010", "\177" }, /* 14 backspace */
+{ ASCII,        "\t",   "\177\t", "\t", "\t" }, /* 15 tab */
+{ ASCII,        "q",    "Q",    "\021", "@" },  /* 16 q */
+{ ASCII,        "w",    "W",    "\027", "w" },  /* 17 w */
+{ ASCII,        "e",    "E",    "\005", "e" },  /* 18 e */
+{ ASCII,        "r",    "R",    "\022", "r" },  /* 19 r */
+{ ASCII,        "t",    "T",    "\024", "t" },  /* 20 t */
+{ ASCII,        "z",    "Z",    "\032", "z" },  /* 21 y */
+{ ASCII,        "u",    "U",    "\025", "u" },  /* 22 u */
+{ ASCII,        "i",    "I",    "\011", "i" },  /* 23 i */
+{ ASCII,        "o",    "O",    "\017", "o" },  /* 24 o */
+{ ASCII,        "p",    "P",    "\020", "p" },  /* 25 p */
+{ ASCII,        "\xfc", "\xdc", "\xfc", "\xdc" }, /* 26 [ */
+{ ASCII,        "+",    "*",    "+",    "~" },  /* 27 ] */
+{ ASCII,        "\r",   "\r",   "\n",   "\r" }, /* 28 return */
+{ CTL,  "",     "",     "",     "" },   /* 29 control */
+{ ASCII,        "a",    "A",    "\001", "a" },  /* 30 a */
+{ ASCII,        "s",    "S",    "\023", "s" },  /* 31 s */
+{ ASCII,        "d",    "D",    "\004", "d" },  /* 32 d */
+{ ASCII,        "f",    "F",    "\006", "f" },  /* 33 f */
+{ ASCII,        "g",    "G",    "\007", "g" },  /* 34 g */
+{ ASCII,        "h",    "H",    "\010", "h" },  /* 35 h */
+{ ASCII,        "j",    "J",    "\n",   "j" },  /* 36 j */
+{ ASCII,        "k",    "K",    "\013", "k" },  /* 37 k */
+{ ASCII,        "l",    "L",    "\014", "l" },  /* 38 l */
+{ ASCII,        "\xf6", "\xd6", "\xf6", "\xd6" }, /* 39 ; */
+{ ASCII,        "\xe4", "\xc4", "\xe4", "\xc4" }, /* 40 ' */
+{ ASCII,        "\136", "\370", "\136", "\370" }, /* 41 ` */
+{ SHIFT,        "",     "",     "",     "" },   /* 42 shift */
+{ ASCII,        "#",    "'",    "#",    "'" },  /* 43 \ */
+{ ASCII,        "y",    "Y",    "\x19", "y" },  /* 44 z */
+{ ASCII,        "x",    "X",    "\030", "x" },  /* 45 x */
+{ ASCII,        "c",    "C",    "\003", "c" },  /* 46 c */
+{ ASCII,        "v",    "V",    "\026", "v" },  /* 47 v */
+{ ASCII,        "b",    "B",    "\002", "b" },  /* 48 b */
+{ ASCII,        "n",    "N",    "\016", "n" },  /* 49 n */
+{ ASCII,        "m",    "M",    "\r",   "m" },  /* 50 m */
+{ ASCII,        ",",    ";",    ",",    ";" },  /* 51 , */
+{ ASCII,        ".",    ":",    ".",    ":" },  /* 52 . */
+{ ASCII,        "-",    "_",    "-",    "_" },  /* 53 / */
+{ SHIFT,        "",     "",     "",     "" },   /* 54 shift */
+{ KP,   "*",    "*",    "*",    "*" },  /* 55 kp * */
+{ ALT,  "",     "",     "",     "" },   /* 56 alt */
+{ ASCII,        " ",    " ",    "\000", " " },  /* 57 space */
+{ CAPS, "",     "",     "",     "" },   /* 58 caps */
+{ FUNC, "\033[M",       "\033[Y",       "\033[k",       "" }, /* 59 f1 */
+{ FUNC, "\033[N",       "\033[Z",       "\033[l",       "" }, /* 60 f2 */
+{ FUNC, "\033[O",       "\033[a",       "\033[m",       "" }, /* 61 f3 */
+{ FUNC, "\033[P",       "\033[b",       "\033[n",       "" }, /* 62 f4 */
+{ FUNC, "\033[Q",       "\033[c",       "\033[o",       "" }, /* 63 f5 */
+{ FUNC, "\033[R",       "\033[d",       "\033[p",       "" }, /* 64 f6 */
+{ FUNC, "\033[S",       "\033[e",       "\033[q",       "" }, /* 65 f7 */
+{ FUNC, "\033[T",       "\033[f",       "\033[r",       "" }, /* 66 f8 */
+{ FUNC, "\033[U",       "\033[g",       "\033[s",       "" }, /* 67 f9 */
+{ FUNC, "\033[V",       "\033[h",       "\033[t",       "" }, /* 68 f10*/
+{ NUM,  "",             "",             "",             "" }, /* 69 numlock */
+{ SCROLL,       "",             "",             "",     "" }, /*70 scroll lock */
+{ KP,   "7",            "\033[H",       "7",    "" },   /* 71 kp 7 */
+{ KP,   "8",            "\033[A",       "8",    "" },   /* 72 kp 8 */
+{ KP,   "9",            "\033[I",       "9",    "" },   /* 73 kp 9 */
+{ KP,   "-",            "-",            "-",    "" },   /* 74 kp - */
+{ KP,   "4",            "\033[D",       "4",    "" },   /* 75 kp 4 */
+{ KP,   "5",            "\033[E",       "5",    "" },   /* 76 kp 5 */
+{ KP,   "6",            "\033[C",       "6",    "" },   /* 77 kp 6 */
+{ KP,   "+",            "+",            "+",    "" },   /* 78 kp + */
+{ KP,   "1",            "\033[F",       "1",    "" },   /* 79 kp 1 */
+{ KP,   "2",            "\033[B",       "2",    "" },   /* 80 kp 2 */
+{ KP,   "3",            "\033[G",       "3",    "" },   /* 81 kp 3 */
+{ KP,   "0",            "\033[L",       "0",    "" },   /* 82 kp 0 */
+{ KP,   ",",            "\177",         ",",    "" },   /* 83 kp . */
+{ NONE, "",             "",             "",     "" },   /* 84 0 */
+{ NONE, "100",          "",             "",     "" },   /* 85 0 */
+{ ASCII,        "<",            ">",            "<",    "|" },  /* 86 <> */
+{ FUNC, "\033[W",       "\033[i",       "\033[u","" },  /* 87 f11 */
+{ FUNC, "\033[X",       "\033[j",       "\033[v","" },  /* 88 f12 */
+{ NONE, "102",          "",             "",     "" },   /* 89 0 */
+{ NONE, "103",          "",             "",     "" },   /* 90 0 */
+{ NONE, "",             "",             "",     "" },   /* 91 0 */
+{ NONE, "",             "",             "",     "" },   /* 92 0 */
+{ NONE, "",             "",             "",     "" },   /* 93 0 */
+{ NONE, "",             "",             "",     "" },   /* 94 0 */
+{ NONE, "",             "",             "",     "" },   /* 95 0 */
+{ NONE, "",             "",             "",     "" },   /* 96 0 */
+{ NONE, "",             "",             "",     "" },   /* 97 0 */
+{ NONE, "",             "",             "",     "" },   /* 98 0 */
+{ NONE, "",             "",             "",     "" },   /* 99 0 */
+{ NONE, "",             "",             "",     "" },   /* 100 */
+{ NONE, "",             "",             "",     "" },   /* 101 */
+{ NONE, "",             "",             "",     "" },   /* 102 */
+{ NONE, "",             "",             "",     "" },   /* 103 */
+{ NONE, "",             "",             "",     "" },   /* 104 */
+{ NONE, "",             "",             "",     "" },   /* 105 */
+{ NONE, "",             "",             "",     "" },   /* 106 */
+{ NONE, "",             "",             "",     "" },   /* 107 */
+{ NONE, "",             "",             "",     "" },   /* 108 */
+{ NONE, "",             "",             "",     "" },   /* 109 */
+{ NONE, "",             "",             "",     "" },   /* 110 */
+{ NONE, "",             "",             "",     "" },   /* 111 */
+{ NONE, "",             "",             "",     "" },   /* 112 */
+{ NONE, "",             "",             "",     "" },   /* 113 */
+{ NONE, "",             "",             "",     "" },   /* 114 */
+{ NONE, "",             "",             "",     "" },   /* 115 */
+{ NONE, "",             "",             "",     "" },   /* 116 */
+{ NONE, "",             "",             "",     "" },   /* 117 */
+{ NONE, "",             "",             "",     "" },   /* 118 */
+{ NONE, "",             "",             "",     "" },   /* 119 */
+{ NONE, "",             "",             "",     "" },   /* 120 */
+{ NONE, "",             "",             "",     "" },   /* 121 */
+{ NONE, "",             "",             "",     "" },   /* 122 */
+{ NONE, "",             "",             "",     "" },   /* 123 */
+{ NONE, "",             "",             "",     "" },   /* 124 */
+{ NONE, "",             "",             "",     "" },   /* 125 */
+{ NONE, "",             "",             "",     "" },   /* 126 */
+{ NONE, "",             "",             "",     "" }    /* 127 */
+};
+#endif /* GERMAN_KBD */
+
+#ifdef NORWEGIAN_KBD
+static Scan_def scan_codes[] = {
+    { NONE, "", "", "", "" },   /* 0 unused */
+    { ASCII,    "\033", "\033", "\033", "\033" }, /* 1 ESCape */
+    { ASCII,    "1",    "!",    "", "\241" },   /* 2 1 */
+    { ASCII,    "2",    "\"",   "\000", "@" },  /* 3 2 */
+    { ASCII,    "3",    "#",    "", "\243" },   /* 4 3 */
+    { ASCII,    "4",    "$",    "", "$" },  /* 5 4 */
+    { ASCII,    "5",    "%",    "\034", "\\" }, /* 6 5 */
+    { ASCII,    "6",    "&",    "\034", "|" },  /* 7 6 */
+    { ASCII,    "7",    "/",    "\033", "{" },  /* 8 7 */
+    { ASCII,    "8",    "(",    "\033", "[" },  /* 9 8 */
+    { ASCII,    "9",    ")",    "\035", "]" },  /* 10 9 */
+    { ASCII,    "0",    "=",    "\035", "}" },  /* 11 0 */
+    { ASCII,    "+",    "?",    "\037", "\277" },   /* 12 - */
+    { ASCII,    "\\",   "`",    "\034", "'" },  /* 13 = */
+    { ASCII,    "\177", "\177", "\010", "\177" },   /* 14 backspace */
+    { ASCII,    "\t",   "\177\t", "\t", "\t" }, /* 15 tab */
+    { ASCII,    "q",    "Q",    "\021", "q" },  /* 16 q */
+    { ASCII,    "w",    "W",    "\027", "w" },  /* 17 w */
+    { ASCII,    "e",    "E",    "\005", "\353" },   /* 18 e */
+    { ASCII,    "r",    "R",    "\022", "r" },  /* 19 r */
+    { ASCII,    "t",    "T",    "\024", "t" },  /* 20 t */
+    { ASCII,    "y",    "Y",    "\031", "y" },  /* 21 y */
+    { ASCII,    "u",    "U",    "\025", "\374" },   /* 22 u */
+    { ASCII,    "i",    "I",    "\011", "i" },  /* 23 i */
+    { ASCII,    "o",    "O",    "\017", "\366" },   /* 24 o */
+    { ASCII,    "p",    "P",    "\020", "p" },  /* 25 p */
+    { ASCII,    "\345", "\305", "\334", "\374" },   /* 26 [ */
+    { ASCII,    "~",    "^",    "\036", "" },   /* 27 ] */
+    { ASCII,    "\r",   "\r",   "\n",   "\r" }, /* 28 return */
+    { CTL,  "", "", "", "" },   /* 29 control */
+    { ASCII,    "a",    "A",    "\001", "\344" },   /* 30 a */
+    { ASCII,    "s",    "S",    "\023", "\337" },   /* 31 s */
+    { ASCII,    "d",    "D",    "\004", "d" },  /* 32 d */
+    { ASCII,    "f",    "F",    "\006", "f" },  /* 33 f */
+    { ASCII,    "g",    "G",    "\007", "g" },  /* 34 g */
+    { ASCII,    "h",    "H",    "\010", "h" },  /* 35 h */
+    { ASCII,    "j",    "J",    "\n",   "j" },  /* 36 j */
+    { ASCII,    "k",    "K",    "\013", "k" },  /* 37 k */
+    { ASCII,    "l",    "L",    "\014", "l" },  /* 38 l */
+    { ASCII,    "\370", "\330", "\326", "\366" },   /* 39 ; */
+    { ASCII,    "\346", "\306", "\304", "\344" },   /* 40 ' */
+    { ASCII,    "|",    "@",    "\034", "\247" },   /* 41 ` */
+    { SHIFT,    "", "", "", "" },   /* 42 shift */
+    { ASCII,    "'",    "*",    "'",    "'" },  /* 43 \ */
+    { ASCII,    "z",    "Z",    "\032", "z" },  /* 44 z */
+    { ASCII,    "x",    "X",    "\030", "x" },  /* 45 x */
+    { ASCII,    "c",    "C",    "\003", "c" },  /* 46 c */
+    { ASCII,    "v",    "V",    "\026", "v" },  /* 47 v */
+    { ASCII,    "b",    "B",    "\002", "b" },  /* 48 b */
+    { ASCII,    "n",    "N",    "\016", "n" },  /* 49 n */
+    { ASCII,    "m",    "M",    "\015", "m" },  /* 50 m */
+    { ASCII,    ",",    ";",    ",",    "," },  /* 51 , */
+    { ASCII,    ".",    ":",    ".",    "." },  /* 52 . */
+    { ASCII,    "-",    "_",    "\037", "-" },  /* 53 / */
+    { SHIFT,    "", "", "", "" },   /* 54 shift */
+    { KP,   "*",    "*",    "*",    "*" },  /* 55 kp * */
+    { ALT,  "", "", "", "" },   /* 56 alt */
+    { ASCII,    " ",    " ",    "\000", " " },  /* 57 space */
+    { CAPS, "", "", "", "" },   /* 58 caps */
+    { FUNC, "\033[M",   "\033[Y",   "\033[k",   "" }, /* 59 f1 */
+    { FUNC, "\033[N",   "\033[Z",   "\033[l",   "" }, /* 60 f2 */
+    { FUNC, "\033[O",   "\033[a",   "\033[m",   "" }, /* 61 f3 */
+    { FUNC, "\033[P",   "\033[b",   "\033[n",   "" }, /* 62 f4 */
+    { FUNC, "\033[Q",   "\033[c",   "\033[o",   "" }, /* 63 f5 */
+    { FUNC, "\033[R",   "\033[d",   "\033[p",   "" }, /* 64 f6 */
+    { FUNC, "\033[S",   "\033[e",   "\033[q",   "" }, /* 65 f7 */
+    { FUNC, "\033[T",   "\033[f",   "\033[r",   "" }, /* 66 f8 */
+    { FUNC, "\033[U",   "\033[g",   "\033[s",   "" }, /* 67 f9 */
+    { FUNC, "\033[V",   "\033[h",   "\033[t",   "" }, /* 68 f10 */
+    { NUM,  "",     "",     "",     "" }, /* 69 num lock */
+    { SCROLL,   "",     "",     "",     "" }, /* 70 scroll lock */
+    { KP,   "7",        "\033[H",   "7",    "" },   /* 71 kp 7 */
+    { KP,   "8",        "\033[A",   "8",    "" },   /* 72 kp 8 */
+    { KP,   "9",        "\033[I",   "9",    "" },   /* 73 kp 9 */
+    { KP,   "-",        "-",        "-",    "" },   /* 74 kp - */
+    { KP,   "4",        "\033[D",   "4",    "" },   /* 75 kp 4 */
+    { KP,   "5",        "\033[E",   "5",    "" },   /* 76 kp 5 */
+    { KP,   "6",        "\033[C",   "6",    "" },   /* 77 kp 6 */
+    { KP,   "+",        "+",        "+",    "" },   /* 78 kp + */
+    { KP,   "1",        "\033[F",   "1",    "" },   /* 79 kp 1 */
+    { KP,   "2",        "\033[B",   "2",    "" },   /* 80 kp 2 */
+    { KP,   "3",        "\033[G",   "3",    "" },   /* 81 kp 3 */
+    { KP,   "0",        "\033[L",   "0",    "" },   /* 82 kp 0 */
+    { KP,   ".",        "\177",     ".",    "" },   /* 83 kp . */
+    { NONE, "",     "",     "", "" },   /* 84 0 */
+    { NONE, "100",      "",     "", "" },   /* 85 0 */
+    { ASCII,    "<",        ">",        "\273", "\253" },   /* 86 < > */
+    { FUNC, "\033[W",   "\033[i",   "\033[u","" },  /* 87 f11 */
+    { FUNC, "\033[X",   "\033[j",   "\033[v","" },  /* 88 f12 */
+    { NONE, "102",      "",     "", "" },   /* 89 0 */
+    { NONE, "103",      "",     "", "" },   /* 90 0 */
+    { NONE, "",     "",     "", "" },   /* 91 0 */
+    { NONE, "",     "",     "", "" },   /* 92 0 */
+    { NONE, "",     "",     "", "" },   /* 93 0 */
+    { NONE, "",     "",     "", "" },   /* 94 0 */
+    { NONE, "",     "",     "", "" },   /* 95 0 */
+    { NONE, "",     "",     "", "" },   /* 96 0 */
+    { NONE, "",     "",     "", "" },   /* 97 0 */
+    { NONE, "",     "",     "", "" },   /* 98 0 */



Home | Main Index | Thread Index | Old Index