f5dd8adb |
1 | /* |
2 | * xkeysym.c: mapping from X keysyms to Unicode values |
3 | * |
4 | * The basic idea of this is shamelessly cribbed from xterm. The |
5 | * actual character data is generated from Markus Kuhn's proposed |
6 | * redraft of the X11 keysym mapping table, using the following |
7 | * piece of Perl/sh code: |
8 | |
9 | wget -q -O - http://www.cl.cam.ac.uk/~mgk25/ucs/X11.keysyms | \ |
10 | perl -ne '/^(\d+)\s+(\d+)\s+[\d\/]+\s+U\+([\dA-Fa-f]+)/ and' \ |
11 | -e ' do { $a{$1 * 256+ $2} = hex $3; };' \ |
12 | -e 'END { foreach $i (sort {$a <=> $b} keys %a) {' \ |
13 | -e ' printf " {0x%x, 0x%x},\n", $i, $a{$i} } }' \ |
14 | -e 'BEGIN { $a{0x13a4} = 0x20ac }' |
15 | |
16 | * (The BEGIN clause inserts a mapping for the Euro sign which for |
17 | * some reason isn't in the list but xterm supports. *shrug*.) |
18 | */ |
19 | |
20 | #include "misc.h" |
21 | |
22 | struct keysym { |
23 | /* |
24 | * Currently nothing in here is above 0xFFFF, so I'll use |
25 | * `unsigned short' to save space. |
26 | */ |
27 | unsigned short keysym; |
28 | unsigned short unicode; |
29 | }; |
30 | |
31 | static struct keysym keysyms[] = { |
32 | {0x20, 0x20}, |
33 | {0x21, 0x21}, |
34 | {0x22, 0x22}, |
35 | {0x23, 0x23}, |
36 | {0x24, 0x24}, |
37 | {0x25, 0x25}, |
38 | {0x26, 0x26}, |
39 | {0x27, 0x27}, |
40 | {0x28, 0x28}, |
41 | {0x29, 0x29}, |
42 | {0x2a, 0x2a}, |
43 | {0x2b, 0x2b}, |
44 | {0x2c, 0x2c}, |
45 | {0x2d, 0x2d}, |
46 | {0x2e, 0x2e}, |
47 | {0x2f, 0x2f}, |
48 | {0x30, 0x30}, |
49 | {0x31, 0x31}, |
50 | {0x32, 0x32}, |
51 | {0x33, 0x33}, |
52 | {0x34, 0x34}, |
53 | {0x35, 0x35}, |
54 | {0x36, 0x36}, |
55 | {0x37, 0x37}, |
56 | {0x38, 0x38}, |
57 | {0x39, 0x39}, |
58 | {0x3a, 0x3a}, |
59 | {0x3b, 0x3b}, |
60 | {0x3c, 0x3c}, |
61 | {0x3d, 0x3d}, |
62 | {0x3e, 0x3e}, |
63 | {0x3f, 0x3f}, |
64 | {0x40, 0x40}, |
65 | {0x41, 0x41}, |
66 | {0x42, 0x42}, |
67 | {0x43, 0x43}, |
68 | {0x44, 0x44}, |
69 | {0x45, 0x45}, |
70 | {0x46, 0x46}, |
71 | {0x47, 0x47}, |
72 | {0x48, 0x48}, |
73 | {0x49, 0x49}, |
74 | {0x4a, 0x4a}, |
75 | {0x4b, 0x4b}, |
76 | {0x4c, 0x4c}, |
77 | {0x4d, 0x4d}, |
78 | {0x4e, 0x4e}, |
79 | {0x4f, 0x4f}, |
80 | {0x50, 0x50}, |
81 | {0x51, 0x51}, |
82 | {0x52, 0x52}, |
83 | {0x53, 0x53}, |
84 | {0x54, 0x54}, |
85 | {0x55, 0x55}, |
86 | {0x56, 0x56}, |
87 | {0x57, 0x57}, |
88 | {0x58, 0x58}, |
89 | {0x59, 0x59}, |
90 | {0x5a, 0x5a}, |
91 | {0x5b, 0x5b}, |
92 | {0x5c, 0x5c}, |
93 | {0x5d, 0x5d}, |
94 | {0x5e, 0x5e}, |
95 | {0x5f, 0x5f}, |
96 | {0x60, 0x60}, |
97 | {0x61, 0x61}, |
98 | {0x62, 0x62}, |
99 | {0x63, 0x63}, |
100 | {0x64, 0x64}, |
101 | {0x65, 0x65}, |
102 | {0x66, 0x66}, |
103 | {0x67, 0x67}, |
104 | {0x68, 0x68}, |
105 | {0x69, 0x69}, |
106 | {0x6a, 0x6a}, |
107 | {0x6b, 0x6b}, |
108 | {0x6c, 0x6c}, |
109 | {0x6d, 0x6d}, |
110 | {0x6e, 0x6e}, |
111 | {0x6f, 0x6f}, |
112 | {0x70, 0x70}, |
113 | {0x71, 0x71}, |
114 | {0x72, 0x72}, |
115 | {0x73, 0x73}, |
116 | {0x74, 0x74}, |
117 | {0x75, 0x75}, |
118 | {0x76, 0x76}, |
119 | {0x77, 0x77}, |
120 | {0x78, 0x78}, |
121 | {0x79, 0x79}, |
122 | {0x7a, 0x7a}, |
123 | {0x7b, 0x7b}, |
124 | {0x7c, 0x7c}, |
125 | {0x7d, 0x7d}, |
126 | {0x7e, 0x7e}, |
127 | {0xa0, 0xa0}, |
128 | {0xa1, 0xa1}, |
129 | {0xa2, 0xa2}, |
130 | {0xa3, 0xa3}, |
131 | {0xa4, 0xa4}, |
132 | {0xa5, 0xa5}, |
133 | {0xa6, 0xa6}, |
134 | {0xa7, 0xa7}, |
135 | {0xa8, 0xa8}, |
136 | {0xa9, 0xa9}, |
137 | {0xaa, 0xaa}, |
138 | {0xab, 0xab}, |
139 | {0xac, 0xac}, |
140 | {0xad, 0xad}, |
141 | {0xae, 0xae}, |
142 | {0xaf, 0xaf}, |
143 | {0xb0, 0xb0}, |
144 | {0xb1, 0xb1}, |
145 | {0xb2, 0xb2}, |
146 | {0xb3, 0xb3}, |
147 | {0xb4, 0xb4}, |
148 | {0xb5, 0xb5}, |
149 | {0xb6, 0xb6}, |
150 | {0xb7, 0xb7}, |
151 | {0xb8, 0xb8}, |
152 | {0xb9, 0xb9}, |
153 | {0xba, 0xba}, |
154 | {0xbb, 0xbb}, |
155 | {0xbc, 0xbc}, |
156 | {0xbd, 0xbd}, |
157 | {0xbe, 0xbe}, |
158 | {0xbf, 0xbf}, |
159 | {0xc0, 0xc0}, |
160 | {0xc1, 0xc1}, |
161 | {0xc2, 0xc2}, |
162 | {0xc3, 0xc3}, |
163 | {0xc4, 0xc4}, |
164 | {0xc5, 0xc5}, |
165 | {0xc6, 0xc6}, |
166 | {0xc7, 0xc7}, |
167 | {0xc8, 0xc8}, |
168 | {0xc9, 0xc9}, |
169 | {0xca, 0xca}, |
170 | {0xcb, 0xcb}, |
171 | {0xcc, 0xcc}, |
172 | {0xcd, 0xcd}, |
173 | {0xce, 0xce}, |
174 | {0xcf, 0xcf}, |
175 | {0xd0, 0xd0}, |
176 | {0xd1, 0xd1}, |
177 | {0xd2, 0xd2}, |
178 | {0xd3, 0xd3}, |
179 | {0xd4, 0xd4}, |
180 | {0xd5, 0xd5}, |
181 | {0xd6, 0xd6}, |
182 | {0xd7, 0xd7}, |
183 | {0xd8, 0xd8}, |
184 | {0xd9, 0xd9}, |
185 | {0xda, 0xda}, |
186 | {0xdb, 0xdb}, |
187 | {0xdc, 0xdc}, |
188 | {0xdd, 0xdd}, |
189 | {0xde, 0xde}, |
190 | {0xdf, 0xdf}, |
191 | {0xe0, 0xe0}, |
192 | {0xe1, 0xe1}, |
193 | {0xe2, 0xe2}, |
194 | {0xe3, 0xe3}, |
195 | {0xe4, 0xe4}, |
196 | {0xe5, 0xe5}, |
197 | {0xe6, 0xe6}, |
198 | {0xe7, 0xe7}, |
199 | {0xe8, 0xe8}, |
200 | {0xe9, 0xe9}, |
201 | {0xea, 0xea}, |
202 | {0xeb, 0xeb}, |
203 | {0xec, 0xec}, |
204 | {0xed, 0xed}, |
205 | {0xee, 0xee}, |
206 | {0xef, 0xef}, |
207 | {0xf0, 0xf0}, |
208 | {0xf1, 0xf1}, |
209 | {0xf2, 0xf2}, |
210 | {0xf3, 0xf3}, |
211 | {0xf4, 0xf4}, |
212 | {0xf5, 0xf5}, |
213 | {0xf6, 0xf6}, |
214 | {0xf7, 0xf7}, |
215 | {0xf8, 0xf8}, |
216 | {0xf9, 0xf9}, |
217 | {0xfa, 0xfa}, |
218 | {0xfb, 0xfb}, |
219 | {0xfc, 0xfc}, |
220 | {0xfd, 0xfd}, |
221 | {0xfe, 0xfe}, |
222 | {0xff, 0xff}, |
223 | {0x1a1, 0x104}, |
224 | {0x1a2, 0x2d8}, |
225 | {0x1a3, 0x141}, |
226 | {0x1a5, 0x13d}, |
227 | {0x1a6, 0x15a}, |
228 | {0x1a9, 0x160}, |
229 | {0x1aa, 0x15e}, |
230 | {0x1ab, 0x164}, |
231 | {0x1ac, 0x179}, |
232 | {0x1ae, 0x17d}, |
233 | {0x1af, 0x17b}, |
234 | {0x1b1, 0x105}, |
235 | {0x1b2, 0x2db}, |
236 | {0x1b3, 0x142}, |
237 | {0x1b5, 0x13e}, |
238 | {0x1b6, 0x15b}, |
239 | {0x1b7, 0x2c7}, |
240 | {0x1b9, 0x161}, |
241 | {0x1ba, 0x15f}, |
242 | {0x1bb, 0x165}, |
243 | {0x1bc, 0x17a}, |
244 | {0x1bd, 0x2dd}, |
245 | {0x1be, 0x17e}, |
246 | {0x1bf, 0x17c}, |
247 | {0x1c0, 0x154}, |
248 | {0x1c3, 0x102}, |
249 | {0x1c5, 0x139}, |
250 | {0x1c6, 0x106}, |
251 | {0x1c8, 0x10c}, |
252 | {0x1ca, 0x118}, |
253 | {0x1cc, 0x11a}, |
254 | {0x1cf, 0x10e}, |
255 | {0x1d0, 0x110}, |
256 | {0x1d1, 0x143}, |
257 | {0x1d2, 0x147}, |
258 | {0x1d5, 0x150}, |
259 | {0x1d8, 0x158}, |
260 | {0x1d9, 0x16e}, |
261 | {0x1db, 0x170}, |
262 | {0x1de, 0x162}, |
263 | {0x1e0, 0x155}, |
264 | {0x1e3, 0x103}, |
265 | {0x1e5, 0x13a}, |
266 | {0x1e6, 0x107}, |
267 | {0x1e8, 0x10d}, |
268 | {0x1ea, 0x119}, |
269 | {0x1ec, 0x11b}, |
270 | {0x1ef, 0x10f}, |
271 | {0x1f0, 0x111}, |
272 | {0x1f1, 0x144}, |
273 | {0x1f2, 0x148}, |
274 | {0x1f5, 0x151}, |
275 | {0x1f8, 0x159}, |
276 | {0x1f9, 0x16f}, |
277 | {0x1fb, 0x171}, |
278 | {0x1fe, 0x163}, |
279 | {0x1ff, 0x2d9}, |
280 | {0x2a1, 0x126}, |
281 | {0x2a6, 0x124}, |
282 | {0x2a9, 0x130}, |
283 | {0x2ab, 0x11e}, |
284 | {0x2ac, 0x134}, |
285 | {0x2b1, 0x127}, |
286 | {0x2b6, 0x125}, |
287 | {0x2b9, 0x131}, |
288 | {0x2bb, 0x11f}, |
289 | {0x2bc, 0x135}, |
290 | {0x2c5, 0x10a}, |
291 | {0x2c6, 0x108}, |
292 | {0x2d5, 0x120}, |
293 | {0x2d8, 0x11c}, |
294 | {0x2dd, 0x16c}, |
295 | {0x2de, 0x15c}, |
296 | {0x2e5, 0x10b}, |
297 | {0x2e6, 0x109}, |
298 | {0x2f5, 0x121}, |
299 | {0x2f8, 0x11d}, |
300 | {0x2fd, 0x16d}, |
301 | {0x2fe, 0x15d}, |
302 | {0x3a2, 0x138}, |
303 | {0x3a3, 0x156}, |
304 | {0x3a5, 0x128}, |
305 | {0x3a6, 0x13b}, |
306 | {0x3aa, 0x112}, |
307 | {0x3ab, 0x122}, |
308 | {0x3ac, 0x166}, |
309 | {0x3b3, 0x157}, |
310 | {0x3b5, 0x129}, |
311 | {0x3b6, 0x13c}, |
312 | {0x3ba, 0x113}, |
313 | {0x3bb, 0x123}, |
314 | {0x3bc, 0x167}, |
315 | {0x3bd, 0x14a}, |
316 | {0x3bf, 0x14b}, |
317 | {0x3c0, 0x100}, |
318 | {0x3c7, 0x12e}, |
319 | {0x3cc, 0x116}, |
320 | {0x3cf, 0x12a}, |
321 | {0x3d1, 0x145}, |
322 | {0x3d2, 0x14c}, |
323 | {0x3d3, 0x136}, |
324 | {0x3d9, 0x172}, |
325 | {0x3dd, 0x168}, |
326 | {0x3de, 0x16a}, |
327 | {0x3e0, 0x101}, |
328 | {0x3e7, 0x12f}, |
329 | {0x3ec, 0x117}, |
330 | {0x3ef, 0x12b}, |
331 | {0x3f1, 0x146}, |
332 | {0x3f2, 0x14d}, |
333 | {0x3f3, 0x137}, |
334 | {0x3f9, 0x173}, |
335 | {0x3fd, 0x169}, |
336 | {0x3fe, 0x16b}, |
337 | {0x47e, 0x203e}, |
338 | {0x4a1, 0x3002}, |
339 | {0x4a2, 0x300c}, |
340 | {0x4a3, 0x300d}, |
341 | {0x4a4, 0x3001}, |
342 | {0x4a5, 0x30fb}, |
343 | {0x4a6, 0x30f2}, |
344 | {0x4a7, 0x30a1}, |
345 | {0x4a8, 0x30a3}, |
346 | {0x4a9, 0x30a5}, |
347 | {0x4aa, 0x30a7}, |
348 | {0x4ab, 0x30a9}, |
349 | {0x4ac, 0x30e3}, |
350 | {0x4ad, 0x30e5}, |
351 | {0x4ae, 0x30e7}, |
352 | {0x4af, 0x30c3}, |
353 | {0x4b0, 0x30fc}, |
354 | {0x4b1, 0x30a2}, |
355 | {0x4b2, 0x30a4}, |
356 | {0x4b3, 0x30a6}, |
357 | {0x4b4, 0x30a8}, |
358 | {0x4b5, 0x30aa}, |
359 | {0x4b6, 0x30ab}, |
360 | {0x4b7, 0x30ad}, |
361 | {0x4b8, 0x30af}, |
362 | {0x4b9, 0x30b1}, |
363 | {0x4ba, 0x30b3}, |
364 | {0x4bb, 0x30b5}, |
365 | {0x4bc, 0x30b7}, |
366 | {0x4bd, 0x30b9}, |
367 | {0x4be, 0x30bb}, |
368 | {0x4bf, 0x30bd}, |
369 | {0x4c0, 0x30bf}, |
370 | {0x4c1, 0x30c1}, |
371 | {0x4c2, 0x30c4}, |
372 | {0x4c3, 0x30c6}, |
373 | {0x4c4, 0x30c8}, |
374 | {0x4c5, 0x30ca}, |
375 | {0x4c6, 0x30cb}, |
376 | {0x4c7, 0x30cc}, |
377 | {0x4c8, 0x30cd}, |
378 | {0x4c9, 0x30ce}, |
379 | {0x4ca, 0x30cf}, |
380 | {0x4cb, 0x30d2}, |
381 | {0x4cc, 0x30d5}, |
382 | {0x4cd, 0x30d8}, |
383 | {0x4ce, 0x30db}, |
384 | {0x4cf, 0x30de}, |
385 | {0x4d0, 0x30df}, |
386 | {0x4d1, 0x30e0}, |
387 | {0x4d2, 0x30e1}, |
388 | {0x4d3, 0x30e2}, |
389 | {0x4d4, 0x30e4}, |
390 | {0x4d5, 0x30e6}, |
391 | {0x4d6, 0x30e8}, |
392 | {0x4d7, 0x30e9}, |
393 | {0x4d8, 0x30ea}, |
394 | {0x4d9, 0x30eb}, |
395 | {0x4da, 0x30ec}, |
396 | {0x4db, 0x30ed}, |
397 | {0x4dc, 0x30ef}, |
398 | {0x4dd, 0x30f3}, |
399 | {0x4de, 0x309b}, |
400 | {0x4df, 0x309c}, |
401 | {0x5ac, 0x60c}, |
402 | {0x5bb, 0x61b}, |
403 | {0x5bf, 0x61f}, |
404 | {0x5c1, 0x621}, |
405 | {0x5c2, 0x622}, |
406 | {0x5c3, 0x623}, |
407 | {0x5c4, 0x624}, |
408 | {0x5c5, 0x625}, |
409 | {0x5c6, 0x626}, |
410 | {0x5c7, 0x627}, |
411 | {0x5c8, 0x628}, |
412 | {0x5c9, 0x629}, |
413 | {0x5ca, 0x62a}, |
414 | {0x5cb, 0x62b}, |
415 | {0x5cc, 0x62c}, |
416 | {0x5cd, 0x62d}, |
417 | {0x5ce, 0x62e}, |
418 | {0x5cf, 0x62f}, |
419 | {0x5d0, 0x630}, |
420 | {0x5d1, 0x631}, |
421 | {0x5d2, 0x632}, |
422 | {0x5d3, 0x633}, |
423 | {0x5d4, 0x634}, |
424 | {0x5d5, 0x635}, |
425 | {0x5d6, 0x636}, |
426 | {0x5d7, 0x637}, |
427 | {0x5d8, 0x638}, |
428 | {0x5d9, 0x639}, |
429 | {0x5da, 0x63a}, |
430 | {0x5e0, 0x640}, |
431 | {0x5e1, 0x641}, |
432 | {0x5e2, 0x642}, |
433 | {0x5e3, 0x643}, |
434 | {0x5e4, 0x644}, |
435 | {0x5e5, 0x645}, |
436 | {0x5e6, 0x646}, |
437 | {0x5e7, 0x647}, |
438 | {0x5e8, 0x648}, |
439 | {0x5e9, 0x649}, |
440 | {0x5ea, 0x64a}, |
441 | {0x5eb, 0x64b}, |
442 | {0x5ec, 0x64c}, |
443 | {0x5ed, 0x64d}, |
444 | {0x5ee, 0x64e}, |
445 | {0x5ef, 0x64f}, |
446 | {0x5f0, 0x650}, |
447 | {0x5f1, 0x651}, |
448 | {0x5f2, 0x652}, |
449 | {0x6a1, 0x452}, |
450 | {0x6a2, 0x453}, |
451 | {0x6a3, 0x451}, |
452 | {0x6a4, 0x454}, |
453 | {0x6a5, 0x455}, |
454 | {0x6a6, 0x456}, |
455 | {0x6a7, 0x457}, |
456 | {0x6a8, 0x458}, |
457 | {0x6a9, 0x459}, |
458 | {0x6aa, 0x45a}, |
459 | {0x6ab, 0x45b}, |
460 | {0x6ac, 0x45c}, |
461 | {0x6ae, 0x45e}, |
462 | {0x6af, 0x45f}, |
463 | {0x6b0, 0x2116}, |
464 | {0x6b1, 0x402}, |
465 | {0x6b2, 0x403}, |
466 | {0x6b3, 0x401}, |
467 | {0x6b4, 0x404}, |
468 | {0x6b5, 0x405}, |
469 | {0x6b6, 0x406}, |
470 | {0x6b7, 0x407}, |
471 | {0x6b8, 0x408}, |
472 | {0x6b9, 0x409}, |
473 | {0x6ba, 0x40a}, |
474 | {0x6bb, 0x40b}, |
475 | {0x6bc, 0x40c}, |
476 | {0x6be, 0x40e}, |
477 | {0x6bf, 0x40f}, |
478 | {0x6c0, 0x44e}, |
479 | {0x6c1, 0x430}, |
480 | {0x6c2, 0x431}, |
481 | {0x6c3, 0x446}, |
482 | {0x6c4, 0x434}, |
483 | {0x6c5, 0x435}, |
484 | {0x6c6, 0x444}, |
485 | {0x6c7, 0x433}, |
486 | {0x6c8, 0x445}, |
487 | {0x6c9, 0x438}, |
488 | {0x6ca, 0x439}, |
489 | {0x6cb, 0x43a}, |
490 | {0x6cc, 0x43b}, |
491 | {0x6cd, 0x43c}, |
492 | {0x6ce, 0x43d}, |
493 | {0x6cf, 0x43e}, |
494 | {0x6d0, 0x43f}, |
495 | {0x6d1, 0x44f}, |
496 | {0x6d2, 0x440}, |
497 | {0x6d3, 0x441}, |
498 | {0x6d4, 0x442}, |
499 | {0x6d5, 0x443}, |
500 | {0x6d6, 0x436}, |
501 | {0x6d7, 0x432}, |
502 | {0x6d8, 0x44c}, |
503 | {0x6d9, 0x44b}, |
504 | {0x6da, 0x437}, |
505 | {0x6db, 0x448}, |
506 | {0x6dc, 0x44d}, |
507 | {0x6dd, 0x449}, |
508 | {0x6de, 0x447}, |
509 | {0x6df, 0x44a}, |
510 | {0x6e0, 0x42e}, |
511 | {0x6e1, 0x410}, |
512 | {0x6e2, 0x411}, |
513 | {0x6e3, 0x426}, |
514 | {0x6e4, 0x414}, |
515 | {0x6e5, 0x415}, |
516 | {0x6e6, 0x424}, |
517 | {0x6e7, 0x413}, |
518 | {0x6e8, 0x425}, |
519 | {0x6e9, 0x418}, |
520 | {0x6ea, 0x419}, |
521 | {0x6eb, 0x41a}, |
522 | {0x6ec, 0x41b}, |
523 | {0x6ed, 0x41c}, |
524 | {0x6ee, 0x41d}, |
525 | {0x6ef, 0x41e}, |
526 | {0x6f0, 0x41f}, |
527 | {0x6f1, 0x42f}, |
528 | {0x6f2, 0x420}, |
529 | {0x6f3, 0x421}, |
530 | {0x6f4, 0x422}, |
531 | {0x6f5, 0x423}, |
532 | {0x6f6, 0x416}, |
533 | {0x6f7, 0x412}, |
534 | {0x6f8, 0x42c}, |
535 | {0x6f9, 0x42b}, |
536 | {0x6fa, 0x417}, |
537 | {0x6fb, 0x428}, |
538 | {0x6fc, 0x42d}, |
539 | {0x6fd, 0x429}, |
540 | {0x6fe, 0x427}, |
541 | {0x6ff, 0x42a}, |
542 | {0x7a1, 0x386}, |
543 | {0x7a2, 0x388}, |
544 | {0x7a3, 0x389}, |
545 | {0x7a4, 0x38a}, |
546 | {0x7a5, 0x3aa}, |
547 | {0x7a7, 0x38c}, |
548 | {0x7a8, 0x38e}, |
549 | {0x7a9, 0x3ab}, |
550 | {0x7ab, 0x38f}, |
551 | {0x7ae, 0x385}, |
552 | {0x7af, 0x2015}, |
553 | {0x7b1, 0x3ac}, |
554 | {0x7b2, 0x3ad}, |
555 | {0x7b3, 0x3ae}, |
556 | {0x7b4, 0x3af}, |
557 | {0x7b5, 0x3ca}, |
558 | {0x7b6, 0x390}, |
559 | {0x7b7, 0x3cc}, |
560 | {0x7b8, 0x3cd}, |
561 | {0x7b9, 0x3cb}, |
562 | {0x7ba, 0x3b0}, |
563 | {0x7bb, 0x3ce}, |
564 | {0x7c1, 0x391}, |
565 | {0x7c2, 0x392}, |
566 | {0x7c3, 0x393}, |
567 | {0x7c4, 0x394}, |
568 | {0x7c5, 0x395}, |
569 | {0x7c6, 0x396}, |
570 | {0x7c7, 0x397}, |
571 | {0x7c8, 0x398}, |
572 | {0x7c9, 0x399}, |
573 | {0x7ca, 0x39a}, |
574 | {0x7cb, 0x39b}, |
575 | {0x7cc, 0x39c}, |
576 | {0x7cd, 0x39d}, |
577 | {0x7ce, 0x39e}, |
578 | {0x7cf, 0x39f}, |
579 | {0x7d0, 0x3a0}, |
580 | {0x7d1, 0x3a1}, |
581 | {0x7d2, 0x3a3}, |
582 | {0x7d4, 0x3a4}, |
583 | {0x7d5, 0x3a5}, |
584 | {0x7d6, 0x3a6}, |
585 | {0x7d7, 0x3a7}, |
586 | {0x7d8, 0x3a8}, |
587 | {0x7d9, 0x3a9}, |
588 | {0x7e1, 0x3b1}, |
589 | {0x7e2, 0x3b2}, |
590 | {0x7e3, 0x3b3}, |
591 | {0x7e4, 0x3b4}, |
592 | {0x7e5, 0x3b5}, |
593 | {0x7e6, 0x3b6}, |
594 | {0x7e7, 0x3b7}, |
595 | {0x7e8, 0x3b8}, |
596 | {0x7e9, 0x3b9}, |
597 | {0x7ea, 0x3ba}, |
598 | {0x7eb, 0x3bb}, |
599 | {0x7ec, 0x3bc}, |
600 | {0x7ed, 0x3bd}, |
601 | {0x7ee, 0x3be}, |
602 | {0x7ef, 0x3bf}, |
603 | {0x7f0, 0x3c0}, |
604 | {0x7f1, 0x3c1}, |
605 | {0x7f2, 0x3c3}, |
606 | {0x7f3, 0x3c2}, |
607 | {0x7f4, 0x3c4}, |
608 | {0x7f5, 0x3c5}, |
609 | {0x7f6, 0x3c6}, |
610 | {0x7f7, 0x3c7}, |
611 | {0x7f8, 0x3c8}, |
612 | {0x7f9, 0x3c9}, |
613 | {0x8a1, 0x23b7}, |
614 | {0x8a2, 0x250c}, |
615 | {0x8a3, 0x2500}, |
616 | {0x8a4, 0x2320}, |
617 | {0x8a5, 0x2321}, |
618 | {0x8a6, 0x2502}, |
619 | {0x8a7, 0x23a1}, |
620 | {0x8a8, 0x23a3}, |
621 | {0x8a9, 0x23a4}, |
622 | {0x8aa, 0x23a6}, |
623 | {0x8ab, 0x239b}, |
624 | {0x8ac, 0x239d}, |
625 | {0x8ad, 0x239e}, |
626 | {0x8ae, 0x23a0}, |
627 | {0x8af, 0x23a8}, |
628 | {0x8b0, 0x23ac}, |
629 | {0x8bc, 0x2264}, |
630 | {0x8bd, 0x2260}, |
631 | {0x8be, 0x2265}, |
632 | {0x8bf, 0x222b}, |
633 | {0x8c0, 0x2234}, |
634 | {0x8c1, 0x221d}, |
635 | {0x8c2, 0x221e}, |
636 | {0x8c5, 0x2207}, |
637 | {0x8c8, 0x223c}, |
638 | {0x8c9, 0x2243}, |
639 | {0x8cd, 0x21d4}, |
640 | {0x8ce, 0x21d2}, |
641 | {0x8cf, 0x2261}, |
642 | {0x8d6, 0x221a}, |
643 | {0x8da, 0x2282}, |
644 | {0x8db, 0x2283}, |
645 | {0x8dc, 0x2229}, |
646 | {0x8dd, 0x222a}, |
647 | {0x8de, 0x2227}, |
648 | {0x8df, 0x2228}, |
649 | {0x8ef, 0x2202}, |
650 | {0x8f6, 0x192}, |
651 | {0x8fb, 0x2190}, |
652 | {0x8fc, 0x2191}, |
653 | {0x8fd, 0x2192}, |
654 | {0x8fe, 0x2193}, |
655 | {0x9e0, 0x25c6}, |
656 | {0x9e1, 0x2592}, |
657 | {0x9e2, 0x2409}, |
658 | {0x9e3, 0x240c}, |
659 | {0x9e4, 0x240d}, |
660 | {0x9e5, 0x240a}, |
661 | {0x9e8, 0x2424}, |
662 | {0x9e9, 0x240b}, |
663 | {0x9ea, 0x2518}, |
664 | {0x9eb, 0x2510}, |
665 | {0x9ec, 0x250c}, |
666 | {0x9ed, 0x2514}, |
667 | {0x9ee, 0x253c}, |
668 | {0x9ef, 0x23ba}, |
669 | {0x9f0, 0x23bb}, |
670 | {0x9f1, 0x2500}, |
671 | {0x9f2, 0x23bc}, |
672 | {0x9f3, 0x23bd}, |
673 | {0x9f4, 0x251c}, |
674 | {0x9f5, 0x2524}, |
675 | {0x9f6, 0x2534}, |
676 | {0x9f7, 0x252c}, |
677 | {0x9f8, 0x2502}, |
678 | {0xaa1, 0x2003}, |
679 | {0xaa2, 0x2002}, |
680 | {0xaa3, 0x2004}, |
681 | {0xaa4, 0x2005}, |
682 | {0xaa5, 0x2007}, |
683 | {0xaa6, 0x2008}, |
684 | {0xaa7, 0x2009}, |
685 | {0xaa8, 0x200a}, |
686 | {0xaa9, 0x2014}, |
687 | {0xaaa, 0x2013}, |
688 | {0xaae, 0x2026}, |
689 | {0xaaf, 0x2025}, |
690 | {0xab0, 0x2153}, |
691 | {0xab1, 0x2154}, |
692 | {0xab2, 0x2155}, |
693 | {0xab3, 0x2156}, |
694 | {0xab4, 0x2157}, |
695 | {0xab5, 0x2158}, |
696 | {0xab6, 0x2159}, |
697 | {0xab7, 0x215a}, |
698 | {0xab8, 0x2105}, |
699 | {0xabb, 0x2012}, |
700 | {0xabc, 0x2329}, |
701 | {0xabe, 0x232a}, |
702 | {0xac3, 0x215b}, |
703 | {0xac4, 0x215c}, |
704 | {0xac5, 0x215d}, |
705 | {0xac6, 0x215e}, |
706 | {0xac9, 0x2122}, |
707 | {0xaca, 0x2613}, |
708 | {0xacc, 0x25c1}, |
709 | {0xacd, 0x25b7}, |
710 | {0xace, 0x25cb}, |
711 | {0xacf, 0x25af}, |
712 | {0xad0, 0x2018}, |
713 | {0xad1, 0x2019}, |
714 | {0xad2, 0x201c}, |
715 | {0xad3, 0x201d}, |
716 | {0xad4, 0x211e}, |
717 | {0xad6, 0x2032}, |
718 | {0xad7, 0x2033}, |
719 | {0xad9, 0x271d}, |
720 | {0xadb, 0x25ac}, |
721 | {0xadc, 0x25c0}, |
722 | {0xadd, 0x25b6}, |
723 | {0xade, 0x25cf}, |
724 | {0xadf, 0x25ae}, |
725 | {0xae0, 0x25e6}, |
726 | {0xae1, 0x25ab}, |
727 | {0xae2, 0x25ad}, |
728 | {0xae3, 0x25b3}, |
729 | {0xae4, 0x25bd}, |
730 | {0xae5, 0x2606}, |
731 | {0xae6, 0x2022}, |
732 | {0xae7, 0x25aa}, |
733 | {0xae8, 0x25b2}, |
734 | {0xae9, 0x25bc}, |
735 | {0xaea, 0x261c}, |
736 | {0xaeb, 0x261e}, |
737 | {0xaec, 0x2663}, |
738 | {0xaed, 0x2666}, |
739 | {0xaee, 0x2665}, |
740 | {0xaf0, 0x2720}, |
741 | {0xaf1, 0x2020}, |
742 | {0xaf2, 0x2021}, |
743 | {0xaf3, 0x2713}, |
744 | {0xaf4, 0x2717}, |
745 | {0xaf5, 0x266f}, |
746 | {0xaf6, 0x266d}, |
747 | {0xaf7, 0x2642}, |
748 | {0xaf8, 0x2640}, |
749 | {0xaf9, 0x260e}, |
750 | {0xafa, 0x2315}, |
751 | {0xafb, 0x2117}, |
752 | {0xafc, 0x2038}, |
753 | {0xafd, 0x201a}, |
754 | {0xafe, 0x201e}, |
755 | {0xba3, 0x3c}, |
756 | {0xba6, 0x3e}, |
757 | {0xba8, 0x2228}, |
758 | {0xba9, 0x2227}, |
759 | {0xbc0, 0xaf}, |
760 | {0xbc2, 0x22a5}, |
761 | {0xbc3, 0x2229}, |
762 | {0xbc4, 0x230a}, |
763 | {0xbc6, 0x5f}, |
764 | {0xbca, 0x2218}, |
765 | {0xbcc, 0x2395}, |
766 | {0xbce, 0x22a4}, |
767 | {0xbcf, 0x25cb}, |
768 | {0xbd3, 0x2308}, |
769 | {0xbd6, 0x222a}, |
770 | {0xbd8, 0x2283}, |
771 | {0xbda, 0x2282}, |
772 | {0xbdc, 0x22a2}, |
773 | {0xbfc, 0x22a3}, |
774 | {0xcdf, 0x2017}, |
775 | {0xce0, 0x5d0}, |
776 | {0xce1, 0x5d1}, |
777 | {0xce2, 0x5d2}, |
778 | {0xce3, 0x5d3}, |
779 | {0xce4, 0x5d4}, |
780 | {0xce5, 0x5d5}, |
781 | {0xce6, 0x5d6}, |
782 | {0xce7, 0x5d7}, |
783 | {0xce8, 0x5d8}, |
784 | {0xce9, 0x5d9}, |
785 | {0xcea, 0x5da}, |
786 | {0xceb, 0x5db}, |
787 | {0xcec, 0x5dc}, |
788 | {0xced, 0x5dd}, |
789 | {0xcee, 0x5de}, |
790 | {0xcef, 0x5df}, |
791 | {0xcf0, 0x5e0}, |
792 | {0xcf1, 0x5e1}, |
793 | {0xcf2, 0x5e2}, |
794 | {0xcf3, 0x5e3}, |
795 | {0xcf4, 0x5e4}, |
796 | {0xcf5, 0x5e5}, |
797 | {0xcf6, 0x5e6}, |
798 | {0xcf7, 0x5e7}, |
799 | {0xcf8, 0x5e8}, |
800 | {0xcf9, 0x5e9}, |
801 | {0xcfa, 0x5ea}, |
802 | {0xda1, 0xe01}, |
803 | {0xda2, 0xe02}, |
804 | {0xda3, 0xe03}, |
805 | {0xda4, 0xe04}, |
806 | {0xda5, 0xe05}, |
807 | {0xda6, 0xe06}, |
808 | {0xda7, 0xe07}, |
809 | {0xda8, 0xe08}, |
810 | {0xda9, 0xe09}, |
811 | {0xdaa, 0xe0a}, |
812 | {0xdab, 0xe0b}, |
813 | {0xdac, 0xe0c}, |
814 | {0xdad, 0xe0d}, |
815 | {0xdae, 0xe0e}, |
816 | {0xdaf, 0xe0f}, |
817 | {0xdb0, 0xe10}, |
818 | {0xdb1, 0xe11}, |
819 | {0xdb2, 0xe12}, |
820 | {0xdb3, 0xe13}, |
821 | {0xdb4, 0xe14}, |
822 | {0xdb5, 0xe15}, |
823 | {0xdb6, 0xe16}, |
824 | {0xdb7, 0xe17}, |
825 | {0xdb8, 0xe18}, |
826 | {0xdb9, 0xe19}, |
827 | {0xdba, 0xe1a}, |
828 | {0xdbb, 0xe1b}, |
829 | {0xdbc, 0xe1c}, |
830 | {0xdbd, 0xe1d}, |
831 | {0xdbe, 0xe1e}, |
832 | {0xdbf, 0xe1f}, |
833 | {0xdc0, 0xe20}, |
834 | {0xdc1, 0xe21}, |
835 | {0xdc2, 0xe22}, |
836 | {0xdc3, 0xe23}, |
837 | {0xdc4, 0xe24}, |
838 | {0xdc5, 0xe25}, |
839 | {0xdc6, 0xe26}, |
840 | {0xdc7, 0xe27}, |
841 | {0xdc8, 0xe28}, |
842 | {0xdc9, 0xe29}, |
843 | {0xdca, 0xe2a}, |
844 | {0xdcb, 0xe2b}, |
845 | {0xdcc, 0xe2c}, |
846 | {0xdcd, 0xe2d}, |
847 | {0xdce, 0xe2e}, |
848 | {0xdcf, 0xe2f}, |
849 | {0xdd0, 0xe30}, |
850 | {0xdd1, 0xe31}, |
851 | {0xdd2, 0xe32}, |
852 | {0xdd3, 0xe33}, |
853 | {0xdd4, 0xe34}, |
854 | {0xdd5, 0xe35}, |
855 | {0xdd6, 0xe36}, |
856 | {0xdd7, 0xe37}, |
857 | {0xdd8, 0xe38}, |
858 | {0xdd9, 0xe39}, |
859 | {0xdda, 0xe3a}, |
860 | {0xddf, 0xe3f}, |
861 | {0xde0, 0xe40}, |
862 | {0xde1, 0xe41}, |
863 | {0xde2, 0xe42}, |
864 | {0xde3, 0xe43}, |
865 | {0xde4, 0xe44}, |
866 | {0xde5, 0xe45}, |
867 | {0xde6, 0xe46}, |
868 | {0xde7, 0xe47}, |
869 | {0xde8, 0xe48}, |
870 | {0xde9, 0xe49}, |
871 | {0xdea, 0xe4a}, |
872 | {0xdeb, 0xe4b}, |
873 | {0xdec, 0xe4c}, |
874 | {0xded, 0xe4d}, |
875 | {0xdf0, 0xe50}, |
876 | {0xdf1, 0xe51}, |
877 | {0xdf2, 0xe52}, |
878 | {0xdf3, 0xe53}, |
879 | {0xdf4, 0xe54}, |
880 | {0xdf5, 0xe55}, |
881 | {0xdf6, 0xe56}, |
882 | {0xdf7, 0xe57}, |
883 | {0xdf8, 0xe58}, |
884 | {0xdf9, 0xe59}, |
885 | {0xea1, 0x3131}, |
886 | {0xea2, 0x3132}, |
887 | {0xea3, 0x3133}, |
888 | {0xea4, 0x3134}, |
889 | {0xea5, 0x3135}, |
890 | {0xea6, 0x3136}, |
891 | {0xea7, 0x3137}, |
892 | {0xea8, 0x3138}, |
893 | {0xea9, 0x3139}, |
894 | {0xeaa, 0x313a}, |
895 | {0xeab, 0x313b}, |
896 | {0xeac, 0x313c}, |
897 | {0xead, 0x313d}, |
898 | {0xeae, 0x313e}, |
899 | {0xeaf, 0x313f}, |
900 | {0xeb0, 0x3140}, |
901 | {0xeb1, 0x3141}, |
902 | {0xeb2, 0x3142}, |
903 | {0xeb3, 0x3143}, |
904 | {0xeb4, 0x3144}, |
905 | {0xeb5, 0x3145}, |
906 | {0xeb6, 0x3146}, |
907 | {0xeb7, 0x3147}, |
908 | {0xeb8, 0x3148}, |
909 | {0xeb9, 0x3149}, |
910 | {0xeba, 0x314a}, |
911 | {0xebb, 0x314b}, |
912 | {0xebc, 0x314c}, |
913 | {0xebd, 0x314d}, |
914 | {0xebe, 0x314e}, |
915 | {0xebf, 0x314f}, |
916 | {0xec0, 0x3150}, |
917 | {0xec1, 0x3151}, |
918 | {0xec2, 0x3152}, |
919 | {0xec3, 0x3153}, |
920 | {0xec4, 0x3154}, |
921 | {0xec5, 0x3155}, |
922 | {0xec6, 0x3156}, |
923 | {0xec7, 0x3157}, |
924 | {0xec8, 0x3158}, |
925 | {0xec9, 0x3159}, |
926 | {0xeca, 0x315a}, |
927 | {0xecb, 0x315b}, |
928 | {0xecc, 0x315c}, |
929 | {0xecd, 0x315d}, |
930 | {0xece, 0x315e}, |
931 | {0xecf, 0x315f}, |
932 | {0xed0, 0x3160}, |
933 | {0xed1, 0x3161}, |
934 | {0xed2, 0x3162}, |
935 | {0xed3, 0x3163}, |
936 | {0xed4, 0x11a8}, |
937 | {0xed5, 0x11a9}, |
938 | {0xed6, 0x11aa}, |
939 | {0xed7, 0x11ab}, |
940 | {0xed8, 0x11ac}, |
941 | {0xed9, 0x11ad}, |
942 | {0xeda, 0x11ae}, |
943 | {0xedb, 0x11af}, |
944 | {0xedc, 0x11b0}, |
945 | {0xedd, 0x11b1}, |
946 | {0xede, 0x11b2}, |
947 | {0xedf, 0x11b3}, |
948 | {0xee0, 0x11b4}, |
949 | {0xee1, 0x11b5}, |
950 | {0xee2, 0x11b6}, |
951 | {0xee3, 0x11b7}, |
952 | {0xee4, 0x11b8}, |
953 | {0xee5, 0x11b9}, |
954 | {0xee6, 0x11ba}, |
955 | {0xee7, 0x11bb}, |
956 | {0xee8, 0x11bc}, |
957 | {0xee9, 0x11bd}, |
958 | {0xeea, 0x11be}, |
959 | {0xeeb, 0x11bf}, |
960 | {0xeec, 0x11c0}, |
961 | {0xeed, 0x11c1}, |
962 | {0xeee, 0x11c2}, |
963 | {0xeef, 0x316d}, |
964 | {0xef0, 0x3171}, |
965 | {0xef1, 0x3178}, |
966 | {0xef2, 0x317f}, |
967 | {0xef3, 0x3181}, |
968 | {0xef4, 0x3184}, |
969 | {0xef5, 0x3186}, |
970 | {0xef6, 0x318d}, |
971 | {0xef7, 0x318e}, |
972 | {0xef8, 0x11eb}, |
973 | {0xef9, 0x11f0}, |
974 | {0xefa, 0x11f9}, |
975 | {0xeff, 0x20a9}, |
976 | {0x13a4, 0x20ac}, |
977 | {0x13bc, 0x152}, |
978 | {0x13bd, 0x153}, |
979 | {0x13be, 0x178}, |
980 | {0x20a0, 0x20a0}, |
981 | {0x20a1, 0x20a1}, |
982 | {0x20a2, 0x20a2}, |
983 | {0x20a3, 0x20a3}, |
984 | {0x20a4, 0x20a4}, |
985 | {0x20a5, 0x20a5}, |
986 | {0x20a6, 0x20a6}, |
987 | {0x20a7, 0x20a7}, |
988 | {0x20a8, 0x20a8}, |
989 | {0x20aa, 0x20aa}, |
990 | {0x20ab, 0x20ab}, |
991 | {0x20ac, 0x20ac}, |
992 | }; |
993 | |
994 | int keysym_to_unicode(int keysym) |
995 | { |
996 | int i, j, k; |
997 | |
998 | i = -1; |
999 | j = lenof(keysyms); |
1000 | |
1001 | while (j - i >= 2) { |
1002 | k = (j + i) / 2; |
1003 | if (keysyms[k].keysym == keysym) |
1004 | return keysyms[k].unicode; |
1005 | else if (keysyms[k].keysym < keysym) |
1006 | i = k; |
1007 | else |
1008 | j = k; |
1009 | } |
1010 | return -1; |
1011 | } |