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