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