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