us-kbdmap.c revision 1.4 1 /* $NetBSD: us-kbdmap.c,v 1.4 1996/06/08 15:29:04 is Exp $ */
2
3 #include "../../../dev/kbdmap.h"
4
5 /* define a default keymap. This can be changed by keyboard ioctl's
6 (later at least..) */
7
8 /* mode shortcuts: */
9 #define S KBD_MODE_STRING
10 #define DG (KBD_MODE_DEAD | KBD_MODE_GRAVE)
11 #define DA (KBD_MODE_DEAD | KBD_MODE_ACUTE)
12 #define DC (KBD_MODE_DEAD | KBD_MODE_CIRC)
13 #define DT (KBD_MODE_DEAD | KBD_MODE_TILDE)
14 #define DD (KBD_MODE_DEAD | KBD_MODE_DIER)
15 #define C KBD_MODE_CAPS
16 #define K KBD_MODE_KPAD
17
18 struct kbdmap kbdmap = {
19 /* normal map */
20 {
21 0, '`', /* 0x00 */
22 0, '1',
23 0, '2',
24 0, '3',
25 0, '4',
26 0, '5',
27 0, '6',
28 0, '7',
29 0, '8', /* 0x08 */
30 0, '9',
31 0, '0',
32 0, '-',
33 0, '=',
34 0, '\\',
35 0, 0,
36 K, '0',
37 C, 'q', /* 0x10 */
38 C, 'w',
39 C, 'e',
40 C, 'r',
41 C, 't',
42 C, 'y',
43 C, 'u',
44 C, 'i',
45 C, 'o', /* 0x18 */
46 C, 'p',
47 0, '[',
48 0, ']',
49 0, 0,
50 K, '1',
51 K, '2',
52 K, '3',
53 C, 'a', /* 0x20 */
54 C, 's',
55 C, 'd',
56 C, 'f',
57 C, 'g',
58 C, 'h',
59 C, 'j',
60 C, 'k',
61 C, 'l', /* 0x28 */
62 0, ';',
63 0, '\'',
64 0, 0,
65 0, 0,
66 K, '4',
67 K, '5',
68 K, '6',
69 0, 0, /* 0x30 */
70 C, 'z',
71 C, 'x',
72 C, 'c',
73 C, 'v',
74 C, 'b',
75 C, 'n',
76 C, 'm',
77 0, ',', /* 0x38 */
78 0, '.',
79 0, '/',
80 0, 0,
81 K, '.',
82 K, '7',
83 K, '8',
84 K, '9',
85 0, ' ', /* 0x40 */
86 0, DEL, /* really BS, DEL & BS swapped */
87 0, '\t',
88 K, '\r', /* enter */
89 0, '\r', /* return */
90 0, ESC,
91 0, '\b', /* really DEL, BS & DEL swapped */
92 0, 0,
93 0, 0, /* 0x48 */
94 0, 0,
95 K, '-',
96 0, 0,
97 S, 0x00, /* now it gets hairy.. CRSR UP */
98 S, 0x04, /* CRSR DOWN */
99 S, 0x08, /* CRSR RIGHT */
100 S, 0x0C, /* CRSR LEFT */
101 S, 0x10, /* 0x50 F1 */
102 S, 0x15, /* F2 */
103 S, 0x1A, /* F3 */
104 S, 0x1F, /* F4 */
105 S, 0x24, /* F5 */
106 S, 0x29, /* F6 */
107 S, 0x2E, /* F7 */
108 S, 0x33, /* 0x58 F8 */
109 S, 0x38, /* F9 */
110 S, 0x3D, /* F10 */
111 K, '(',
112 K, ')',
113 K, '/',
114 K, '*',
115 S, 0x42, /* HELP */
116 },
117
118 /* shifted map */
119 {
120 0, '~', /* 0x00 */
121 0, '!',
122 0, '@',
123 0, '#',
124 0, '$',
125 0, '%',
126 0, '^',
127 0, '&',
128 0, '*', /* 0x08 */
129 0, '(',
130 0, ')',
131 0, '_',
132 0, '+',
133 0, '|',
134 0, 0,
135 K, '0',
136 C, 'Q', /* 0x10 */
137 C, 'W',
138 C, 'E',
139 C, 'R',
140 C, 'T',
141 C, 'Y',
142 C, 'U',
143 C, 'I',
144 C, 'O', /* 0x18 */
145 C, 'P',
146 0, '{',
147 0, '}',
148 0, 0,
149 K, '1',
150 K, '2',
151 K, '3',
152 C, 'A', /* 0x20 */
153 C, 'S',
154 C, 'D',
155 C, 'F',
156 C, 'G',
157 C, 'H',
158 C, 'J',
159 C, 'K',
160 C, 'L', /* 0x28 */
161 0, ':',
162 0, '\"',
163 0, 0,
164 0, 0,
165 K, '4',
166 K, '5',
167 K, '6',
168 0, 0, /* 0x30 */
169 C, 'Z',
170 C, 'X',
171 C, 'C',
172 C, 'V',
173 C, 'B',
174 C, 'N',
175 C, 'M',
176 0, '<', /* 0x38 */
177 0, '>',
178 0, '?',
179 0, 0,
180 K, '.',
181 K, '7',
182 K, '8',
183 K, '9',
184 0, ' ', /* 0x40 */
185 0, DEL, /* really BS, DEL & BS swapped */
186 S, 0x99, /* shift TAB */
187 K, '\r', /* enter */
188 0, '\r', /* return */
189 0, ESC,
190 0, '\b', /* really DEL, BS & DEL swapped */
191 0, 0,
192 0, 0, /* 0x48 */
193 0, 0,
194 K, '-',
195 0, 0,
196 S, 0x47, /* shift CRSR UP */
197 S, 0x4C, /* shift CRSR DOWN */
198 S, 0x51, /* shift CRSR RIGHT */
199 S, 0x57, /* shift CRSR LEFT */
200 S, 0x5D, /* 0x50 shift F1 */
201 S, 0x63, /* shift F2 */
202 S, 0x69, /* shift F3 */
203 S, 0x6F, /* shift F4 */
204 S, 0x75, /* shift F5 */
205 S, 0x7B, /* shift F6 */
206 S, 0x81, /* shift F7 */
207 S, 0x87, /* 0x58 shift F8 */
208 S, 0x8D, /* shift F9 */
209 S, 0x93, /* shift F10 */
210 K, '(',
211 K, ')',
212 K, '/',
213 K, '*',
214 S, 0x42, /* HELP (no special shift code) */
215 },
216
217
218 /* alt map */
219 {
220 0, '`', /* 0x00 */
221 0, '',
222 0, '',
223 0, '',
224 0, '',
225 0, '',
226 0, '',
227 0, '',
228 0, '', /* 0x08 */
229 0, '',
230 0, '',
231 0, '-',
232 0, '=',
233 0, '\\',
234 0, 0,
235 K, '0',
236 C, '', /* 0x10 */
237 0, '',
238 0, '',
239 0, '',
240 C, '',
241 0, '',
242 0, '',
243 0, '',
244 C, '', /* 0x18 */
245 0, '',
246 0, '[',
247 0, ']',
248 0, 0,
249 K, '1',
250 K, '2',
251 K, '3',
252 C, '', /* 0x20 */
253 0, '',
254 C, '',
255 DA, '',
256 DG, '`',
257 DC, '^',
258 DT, '~',
259 DD, '',
260 0, '', /* 0x28 */
261 0, ';',
262 0, '\'',
263 0, 0,
264 0, 0,
265 K, '4',
266 K, '5',
267 K, '6',
268 0, 0, /* 0x30 */
269 0, '',
270 0, '',
271 C, '',
272 0, '',
273 0, '',
274 0, '',
275 0, '',
276 0, ',', /* 0x38 */
277 0, '.',
278 0, '/',
279 0, 0,
280 K, '.',
281 K, '7',
282 K, '8',
283 K, '9',
284 0, ' ', /* 0x40 */
285 0, DEL, /* really BS, DEL & BS swapped */
286 0, '\t',
287 K, '\r', /* enter */
288 0, '\r', /* return */
289 S, 0x9d, /* CSI */
290 0, '\b', /* really DEL, BS & DEL swapped */
291 0, 0,
292 0, 0, /* 0x48 */
293 0, 0,
294 K, '-',
295 0, 0,
296 S, 0x00, /* now it gets hairy.. CRSR UP */
297 S, 0x04, /* CRSR DOWN */
298 S, 0x08, /* CRSR RIGHT */
299 S, 0x0C, /* CRSR LEFT */
300 S, 0x10, /* 0x50 F1 */
301 S, 0x15, /* F2 */
302 S, 0x1A, /* F3 */
303 S, 0x1F, /* F4 */
304 S, 0x24, /* F5 */
305 S, 0x29, /* F6 */
306 S, 0x2E, /* F7 */
307 S, 0x33, /* 0x58 F8 */
308 S, 0x38, /* F9 */
309 S, 0x3D, /* F10 */
310 K, '(',
311 K, ')',
312 K, '/',
313 K, '*',
314 S, 0x42, /* HELP */
315 },
316
317 /* shift alt map */
318 {
319 0, '~', /* 0x00 */
320 0, '!',
321 0, '@',
322 0, '#',
323 0, '$',
324 0, '%',
325 0, '^',
326 0, '&',
327 0, '*', /* 0x08 */
328 0, '(',
329 0, ')',
330 0, '_',
331 0, '+',
332 0, '|',
333 0, 0,
334 K, '0',
335 C, '', /* 0x10 */
336 0, '',
337 0, '',
338 0, '',
339 C, '',
340 0, '',
341 0, '',
342 0, '',
343 C, '', /* 0x18 */
344 0, '',
345 0, '[',
346 0, ']',
347 0, 0,
348 K, '1',
349 K, '2',
350 K, '3',
351 C, '', /* 0x20 */
352 0, '',
353 C, '',
354 DA, '',
355 DG, '`',
356 DC, '^',
357 DT, '~',
358 DD, '',
359 0, '', /* 0x28 */
360 0, ';',
361 0, '\'',
362 0, 0,
363 0, 0,
364 K, '4',
365 K, '5',
366 K, '6',
367 0, 0, /* 0x30 */
368 0, '',
369 0, '',
370 C, '',
371 0, '',
372 0, '',
373 0, '',
374 0, '',
375 0, ',', /* 0x38 */
376 0, '.',
377 0, '/',
378 0, 0,
379 K, '.',
380 K, '7',
381 K, '8',
382 K, '9',
383 0, ' ', /* 0x40 */
384 0, DEL, /* really BS, DEL & BS swapped */
385 0, '\t',
386 K, '\r', /* enter */
387 0, '\r', /* return */
388 S, 0x9d, /* CSI */
389 0, '\b', /* really DEL, BS & DEL swapped */
390 0, 0,
391 0, 0, /* 0x48 */
392 0, 0,
393 K, '-',
394 0, 0,
395 S, 0x00, /* now it gets hairy.. CRSR UP */
396 S, 0x04, /* CRSR DOWN */
397 S, 0x08, /* CRSR RIGHT */
398 S, 0x0C, /* CRSR LEFT */
399 S, 0x10, /* 0x50 F1 */
400 S, 0x15, /* F2 */
401 S, 0x1A, /* F3 */
402 S, 0x1F, /* F4 */
403 S, 0x24, /* F5 */
404 S, 0x29, /* F6 */
405 S, 0x2E, /* F7 */
406 S, 0x33, /* 0x58 F8 */
407 S, 0x38, /* F9 */
408 S, 0x3D, /* F10 */
409 K, '(',
410 K, ')',
411 K, '/',
412 K, '*',
413 S, 0x42, /* HELP */
414 },
415
416 {
417 /* string table. If there's a better way to get the offsets into the
418 above table, please tell me..
419
420 NOTE: save yourself and others a lot of grief by *not* using
421 CSI == 0x9b, using the two-character sequence gives
422 much less trouble, especially in GNU-Emacs.. */
423
424 3, ESC, '[', 'A', /* 0x00: CRSR UP */
425 3, ESC, '[', 'B', /* 0x04: CRSR DOWN */
426 3, ESC, '[', 'C', /* 0x08: CRSR RIGHT */
427 3, ESC, '[', 'D', /* 0x0C: CRSR LEFT */
428 4, ESC, '[', '0', '~', /* 0x10: F1 */
429 4, ESC, '[', '1', '~', /* 0x15: F2 */
430 4, ESC, '[', '2', '~', /* 0x1A: F3 */
431 4, ESC, '[', '3', '~', /* 0x1F: F4 */
432 4, ESC, '[', '4', '~', /* 0x24: F5 */
433 4, ESC, '[', '5', '~', /* 0x29: F6 */
434 4, ESC, '[', '6', '~', /* 0x2E: F7 */
435 4, ESC, '[', '7', '~', /* 0x33: F8 */
436 4, ESC, '[', '8', '~', /* 0x38: F9 */
437 4, ESC, '[', '9', '~', /* 0x3D: F10 */
438 4, ESC, '[', '?', '~', /* 0x42: HELP */
439
440 4, ESC, '[', 'T', '~', /* 0x47: shift CRSR UP */
441 4, ESC, '[', 'S', '~', /* 0x4C: shift CRSR DOWN */
442 5, ESC, '[', ' ', '@', '~', /* 0x51: shift CRSR RIGHT */
443 5, ESC, '[', ' ', 'A', '~', /* 0x57: shift CRSR LEFT */
444 5, ESC, '[', '1', '0', '~', /* 0x5D: shift F1 */
445 5, ESC, '[', '1', '1', '~', /* 0x63: shift F2 */
446 5, ESC, '[', '1', '2', '~', /* 0x69: shift F3 */
447 5, ESC, '[', '1', '3', '~', /* 0x6F: shift F4 */
448 5, ESC, '[', '1', '4', '~', /* 0x75: shift F5 */
449 5, ESC, '[', '1', '5', '~', /* 0x7B: shift F6 */
450 5, ESC, '[', '1', '6', '~', /* 0x81: shift F7 */
451 5, ESC, '[', '1', '7', '~', /* 0x87: shift F8 */
452 5, ESC, '[', '1', '8', '~', /* 0x8D: shift F9 */
453 5, ESC, '[', '1', '9', '~', /* 0x93: shift F10 */
454 3, ESC, '[', 'Z', /* 0x99: shift TAB */
455 2, ESC, '[', /* 0x9d: alt ESC == CSI */
456 },
457 };
458
459 unsigned char acctable[KBD_NUM_ACC][64] = {
460 { "@BCDFGHJKLMNPQRSTVWXYZ[\\]^_"
461 "`bcdfghjklmnpqrstvwxyz{|}~\177"}, /* KBD_ACC_GRAVE */
462
463 { "@BCDFGHJKLMNPQRSTVWXYZ[\\]^_"
464 "`bcdfghjklmnpqrstvwxyz{|}~\177"}, /* KBD_ACC_ACUTE */
465
466 { "@BCDFGHJKLMNPQRSTVWXYZ[\\]^_"
467 "`bcdfghjklmnpqrstvwxyz{|}~\177"}, /* KBD_ACC_CIRC */
468
469 { "@BCDEFGHIJKLMPQRSTUVWXYZ[\\]^_"
470 "`bcdefghijklmpqrstuvwxyz{|}~\177"}, /* KBD_ACC_TILDE */
471
472 { "@BCDFGHJKLMNPQRSTVWXYZ[\\]^_"
473 "`bcdfghjklmnpqrstvwxyz{|}~\177"}, /* KBD_ACC_DIER */
474 };
475
476
477
478 main()
479 {
480 write (1, &kbdmap, sizeof (kbdmap));
481 }
482