1 /* $NetBSD: kbdmap.c,v 1.3 1999/03/24 14:12:52 minoura Exp $ */ 2 3 /* from: arch/amiga/dev/kbdmap.c */ 4 /* modified for X680x0 by Masaru Oki and Makoto MINOURA */ 5 6 #include "kbdmap.h" 7 8 /* define a default keymap. This can be changed by keyboard ioctl's */ 9 10 /* mode shortcuts: */ 11 #define S KBD_MODE_STRING 12 #define DG (KBD_MODE_DEAD | KBD_MODE_GRAVE) 13 #define DA (KBD_MODE_DEAD | KBD_MODE_ACUTE) 14 #define DC (KBD_MODE_DEAD | KBD_MODE_CIRC) 15 #define DT (KBD_MODE_DEAD | KBD_MODE_TILDE) 16 #define DD (KBD_MODE_DEAD | KBD_MODE_DIER) 17 #define C KBD_MODE_CAPS 18 #define K KBD_MODE_KPAD 19 #define D KBD_MODE_DEAD 20 21 struct kbdmap kbdmap; 22 struct kbdmap ascii_kbdmap = { 23 /* normal map */ 24 { 25 {0, 0}, /* 0x00 */ 26 {0, ESC}, 27 {0, '1'}, 28 {0, '2'}, 29 {0, '3'}, 30 {0, '4'}, 31 {0, '5'}, 32 {0, '6'}, 33 {0, '7'}, /* 0x08 */ 34 {0, '8'}, 35 {0, '9'}, 36 {0, '0'}, 37 {0, '-'}, 38 {0, '^'}, 39 {0, '\\'}, 40 {0, DEL}, /* really BS, DEL & BS swapped */ 41 {0, '\t'}, /* 0x10 */ 42 {C, 'q'}, 43 {C, 'w'}, 44 {C, 'e'}, 45 {C, 'r'}, 46 {C, 't'}, 47 {C, 'y'}, 48 {C, 'u'}, 49 {C, 'i'}, /* 0x18 */ 50 {C, 'o'}, 51 {C, 'p'}, 52 {0, '@'}, 53 {0, '['}, 54 {0, '\r'}, /* return */ 55 {C, 'a'}, 56 {C, 's'}, 57 {C, 'd'}, /* 0x20 */ 58 {C, 'f'}, 59 {C, 'g'}, 60 {C, 'h'}, 61 {C, 'j'}, 62 {C, 'k'}, 63 {C, 'l'}, 64 {0, ';'}, 65 {0, ':'}, /* 0x28 */ 66 {0, ']'}, 67 {C, 'z'}, 68 {C, 'x'}, 69 {C, 'c'}, 70 {C, 'v'}, 71 {C, 'b'}, 72 {C, 'n'}, 73 {C, 'm'}, /* 0x30 */ 74 {0, ','}, 75 {0, '.'}, 76 {0, '/'}, 77 {0, '_'}, 78 {0, ' '}, 79 {S, 0x4a}, /* HOME */ 80 {0, '\b'}, /* really DEL, BS & DEL swapped */ 81 {S, 0x43}, /* 0x38 ROLLUP */ 82 {S, 0x3e}, /* ROLLDOWN */ 83 {S, 0x6a}, /* UNDO */ 84 {S, 0x53}, /* CRSR LEFT */ 85 {S, 0x5b}, /* CRSR UP */ 86 {S, 0x57}, /* CRSR RIGHT */ 87 {S, 0x4f}, /* CRSR DOWN */ 88 {S, 0x5f}, /* CLR */ 89 {K, '/'}, /* 0x40 */ 90 {K, '*'}, 91 {K, '-'}, 92 {K, '7'}, 93 {K, '8'}, 94 {K, '9'}, 95 {K, '+'}, 96 {K, '4'}, 97 {K, '5'}, /* 0x48 */ 98 {K, '6'}, 99 {K, '='}, 100 {K, '1'}, 101 {K, '2'}, 102 {K, '3'}, 103 {K, '\r'}, /* enter */ 104 {K, '0'}, 105 {K, ','}, /* 0x50 */ 106 {K, '.'}, 107 {0, 0}, 108 {0, 0}, 109 {S, 0x64}, /* HELP */ 110 {0, 0}, 111 {0, 0}, 112 {0, 0}, 113 {0, 0}, /* 0x58 */ 114 {0, 0}, 115 {0, 0}, 116 {0, 0}, 117 {0, 0}, 118 {0, 0}, 119 {S,0x39}, /* INS: not used */ 120 {0, 0}, 121 {0, 0}, /* 0x60 */ 122 {0, 0}, 123 {0, 0}, 124 {S, 0x00}, /* F1 */ 125 {S, 0x04}, /* F2 */ 126 {S, 0x08}, /* F3 */ 127 {S, 0x0c}, /* F4 */ 128 {S, 0x10}, /* F5 */ 129 {S, 0x16}, /* F6 */ 130 {S, 0x1c}, /* F7 */ 131 {S, 0x22}, /* 0x68 F8 */ 132 {S, 0x28}, /* F9 */ 133 {S, 0x2e}, /* F10 */ 134 }, 135 136 /* shifted map */ 137 { 138 {0, 0}, /* 0x00 */ 139 {0, ESC}, 140 {0, '!'}, 141 {0, '\"'}, 142 {0, '#'}, 143 {0, '$'}, 144 {0, '%'}, 145 {0, '&'}, 146 {0, '\''}, /* 0x08 */ 147 {0, '('}, 148 {0, ')'}, 149 {0, 0}, 150 {0, '='}, 151 {0, '~'}, 152 {0, '|'}, 153 {0, DEL}, /* really BS, DEL & BS swapped */ 154 {0, '\t'}, /* 0x10 shift TAB */ 155 {C, 'Q'}, 156 {C, 'W'}, 157 {C, 'E'}, 158 {C, 'R'}, 159 {C, 'T'}, 160 {C, 'Y'}, 161 {C, 'U'}, 162 {C, 'I'}, /* 0x18 */ 163 {C, 'O'}, 164 {C, 'P'}, 165 {0, '`'}, 166 {0, '{'}, 167 {0, '\r'}, /* return */ 168 {C, 'A'}, 169 {C, 'S'}, 170 {C, 'D'}, /* 0x20 */ 171 {C, 'F'}, 172 {C, 'G'}, 173 {C, 'H'}, 174 {C, 'J'}, 175 {C, 'K'}, 176 {C, 'L'}, 177 {0, '+'}, 178 {0, '*'}, /* 0x28 */ 179 {0, '}'}, 180 {C, 'Z'}, 181 {C, 'X'}, 182 {C, 'C'}, 183 {C, 'V'}, 184 {C, 'B'}, 185 {C, 'N'}, 186 {C, 'M'}, /* 0x30 */ 187 {0, '<'}, /* 0x38 */ 188 {0, '>'}, 189 {0, '?'}, 190 {0, '_'}, 191 {0, ' '}, 192 {S, 0x4a}, /* HOME */ 193 {0, '\b'}, /* really DEL, BS & DEL swapped */ 194 {S, 0x43}, /* 0x38 ROLLUP */ 195 {S, 0x3e}, /* ROLLDOWN */ 196 {S, 0x6a}, /* UNDO */ 197 {D, 0}, /* shift CRSR LEFT */ 198 {D, 0}, /* shift CRSR UP */ 199 {D, 0}, /* shift CRSR RIGHT */ 200 {D, 0}, /* shift CRSR DOWN */ 201 {D, 0}, /* CLR */ 202 {D, '/'}, /* 0x40 */ 203 {D, '*'}, 204 {D, '-'}, 205 {D, '7'}, 206 {D, '8'}, 207 {D, '9'}, 208 {D, '+'}, 209 {D, '4'}, 210 {D, '5'}, /* 0x48 */ 211 {D, '6'}, 212 {D, '='}, 213 {D, '1'}, 214 {D, '2'}, 215 {D, '3'}, 216 {K, '\r'}, /* enter */ 217 {D, '0'}, 218 {D, ','}, /* 0x50 */ 219 {D, '.'}, 220 {0, 0}, 221 {0, 0}, 222 {S, 0x64}, /* HELP */ 223 {0, 0}, 224 {0, 0}, 225 {0, 0}, 226 {0, 0}, /* 0x58 */ 227 {0, 0}, 228 {0, 0}, 229 {0, 0}, 230 {0, 0}, 231 {0, 0}, 232 {S, 0x39}, /* INS: not used */ 233 {0, 0}, 234 {0, 0}, /* 0x60 */ 235 {0, 0}, 236 {0, 0}, 237 {S, 0x00}, /* shift F1 */ 238 {S, 0x04}, /* shift F2 */ 239 {S, 0x08}, /* shift F3 */ 240 {S, 0x0c}, /* shift F4 */ 241 {S, 0x10}, /* shift F5 */ 242 {S, 0x16}, /* shift F6 */ 243 {S, 0x1c}, /* shift F7 */ 244 {S, 0x22}, /* 0x68 shift F8 */ 245 {S, 0x28}, /* shift F9 */ 246 {S, 0x2e}, /* shift F10 */ 247 }, 248 249 250 /* alt map */ 251 { 252 }, 253 254 /* shift alt map */ 255 { 256 }, 257 258 { 259 /* string table. If there's a better way to get the offsets into the 260 above table, please tell me.. 261 262 NOTE: save yourself and others a lot of grief by *not* using 263 CSI == 0x9b, using the two-character sequence gives 264 much less trouble, especially in GNU-Emacs.. */ 265 266 3, ESC, 'O', 'P', /* 0x00: F1 (k1) */ 267 3, ESC, 'O', 'Q', /* 0x04: F2 (k2) */ 268 3, ESC, 'O', 'R', /* 0x08: F3 (k3) */ 269 3, ESC, 'O', 'S', /* 0x0c: F4 (k4) */ 270 5, ESC, '[', '1', '7', '~', /* 0x10: F5 (k5) */ 271 5, ESC, '[', '1', '8', '~', /* 0x16: F6 (k6) */ 272 5, ESC, '[', '1', '9', '~', /* 0x1c: F7 (k7) */ 273 5, ESC, '[', '2', '0', '~', /* 0x22: F8 (k8) */ 274 5, ESC, '[', '2', '1', '~', /* 0x28: F9 (k9) */ 275 5, ESC, '[', '2', '9', '~', /* 0x2e: F10 (k;) */ 276 277 4, ESC, '[', '3', '~', /* 0x34: DEL (kD) */ 278 4, ESC, '[', '2', '~', /* 0x39: INS (kI) */ 279 4, ESC, '[', '6', '~', /* 0x3e: RDN (kN) */ 280 4, ESC, '[', '5', '~', /* 0x43: RUP (kP) */ 281 1, 8, /* 0x48: BS (kb) */ 282 283 4, ESC, '[', '1', '~', /* 0x4a: HOME (kh) */ 284 3, ESC, '[', 'B', /* 0x4f: down (kd) */ 285 3, ESC, '[', 'D', /* 0x53: left (kl) */ 286 3, ESC, '[', 'C', /* 0x57: right (kr) */ 287 3, ESC, '[', 'A', /* 0x5b: up (ku) */ 288 289 4, ESC, '[', '9', '~', /* 0x5f: CLR (kC) */ 290 5, ESC, '[', '2', '8', '~', /* 0x64: HELP (kq) */ 291 4, ESC, '[', '7', '~', /* 0x6a: UNDO */ 292 }, 293 }; 294 295 unsigned char acctable[KBD_NUM_ACC][64] = { 296 }; 297