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