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