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