1 /*
2 
3 This file fakes some of X11's key handling for the special purpose of running
4 a standalone rdp2vnc (without linking to X11)
5 
6 */
7 
8 #include "x11stubs.h"
9 #include <string.h>
10 
11 /* ignored */
12 int *display;
13 
14 typedef struct
15 {
16 	const char *string;
17 	KeySym keysym;
18 }
19 StringToKeysym_t;
20 
21 StringToKeysym_t StringToKeysym[] = {
22 #ifndef KEYSYMFAKE_H
23 	{"VoidSymbol", XK_VoidSymbol},
24 #ifdef XK_MISCELLANY
25 	{"BackSpace", XK_BackSpace},
26 	{"Tab", XK_Tab},
27 	{"Linefeed", XK_Linefeed},
28 	{"Clear", XK_Clear},
29 	{"Return", XK_Return},
30 	{"Pause", XK_Pause},
31 	{"Scroll_Lock", XK_Scroll_Lock},
32 	{"Sys_Req", XK_Sys_Req},
33 	{"Escape", XK_Escape},
34 	{"Delete", XK_Delete},
35 	{"Multi_key", XK_Multi_key},
36 	{"SingleCandidate", XK_SingleCandidate},
37 	{"MultipleCandidate", XK_MultipleCandidate},
38 	{"PreviousCandidate", XK_PreviousCandidate},
39 	{"Kanji", XK_Kanji},
40 	{"Muhenkan", XK_Muhenkan},
41 	{"Henkan_Mode", XK_Henkan_Mode},
42 	{"Henkan", XK_Henkan},
43 	{"Romaji", XK_Romaji},
44 	{"Hiragana", XK_Hiragana},
45 	{"Katakana", XK_Katakana},
46 	{"Hiragana_Katakana", XK_Hiragana_Katakana},
47 	{"Zenkaku", XK_Zenkaku},
48 	{"Hankaku", XK_Hankaku},
49 	{"Zenkaku_Hankaku", XK_Zenkaku_Hankaku},
50 	{"Touroku", XK_Touroku},
51 	{"Massyo", XK_Massyo},
52 	{"Kana_Lock", XK_Kana_Lock},
53 	{"Kana_Shift", XK_Kana_Shift},
54 	{"Eisu_Shift", XK_Eisu_Shift},
55 	{"Eisu_toggle", XK_Eisu_toggle},
56 	{"Zen_Koho", XK_Zen_Koho},
57 	{"Mae_Koho", XK_Mae_Koho},
58 	{"Home", XK_Home},
59 	{"Left", XK_Left},
60 	{"Up", XK_Up},
61 	{"Right", XK_Right},
62 	{"Down", XK_Down},
63 	{"Prior", XK_Prior},
64 	{"Page_Up", XK_Page_Up},
65 	{"Next", XK_Next},
66 	{"Page_Down", XK_Page_Down},
67 	{"End", XK_End},
68 	{"Begin", XK_Begin},
69 	{"Select", XK_Select},
70 	{"Print", XK_Print},
71 	{"Execute", XK_Execute},
72 	{"Insert", XK_Insert},
73 	{"Undo", XK_Undo},
74 	{"Redo", XK_Redo},
75 	{"Menu", XK_Menu},
76 	{"Find", XK_Find},
77 	{"Cancel", XK_Cancel},
78 	{"Help", XK_Help},
79 	{"Break", XK_Break},
80 	{"Mode_switch", XK_Mode_switch},
81 	{"script_switch", XK_script_switch},
82 	{"Num_Lock", XK_Num_Lock},
83 	{"KP_Space", XK_KP_Space},
84 	{"KP_Tab", XK_KP_Tab},
85 	{"KP_Enter", XK_KP_Enter},
86 	{"KP_F1", XK_KP_F1},
87 	{"KP_F2", XK_KP_F2},
88 	{"KP_F3", XK_KP_F3},
89 	{"KP_F4", XK_KP_F4},
90 	{"KP_Home", XK_KP_Home},
91 	{"KP_Left", XK_KP_Left},
92 	{"KP_Up", XK_KP_Up},
93 	{"KP_Right", XK_KP_Right},
94 	{"KP_Down", XK_KP_Down},
95 	{"KP_Prior", XK_KP_Prior},
96 	{"KP_Page_Up", XK_KP_Page_Up},
97 	{"KP_Next", XK_KP_Next},
98 	{"KP_Page_Down", XK_KP_Page_Down},
99 	{"KP_End", XK_KP_End},
100 	{"KP_Begin", XK_KP_Begin},
101 	{"KP_Insert", XK_KP_Insert},
102 	{"KP_Delete", XK_KP_Delete},
103 	{"KP_Equal", XK_KP_Equal},
104 	{"KP_Multiply", XK_KP_Multiply},
105 	{"KP_Add", XK_KP_Add},
106 	{"KP_Separator", XK_KP_Separator},
107 	{"KP_Subtract", XK_KP_Subtract},
108 	{"KP_Decimal", XK_KP_Decimal},
109 	{"KP_Divide", XK_KP_Divide},
110 	{"KP_0", XK_KP_0},
111 	{"KP_1", XK_KP_1},
112 	{"KP_2", XK_KP_2},
113 	{"KP_3", XK_KP_3},
114 	{"KP_4", XK_KP_4},
115 	{"KP_5", XK_KP_5},
116 	{"KP_6", XK_KP_6},
117 	{"KP_7", XK_KP_7},
118 	{"KP_8", XK_KP_8},
119 	{"KP_9", XK_KP_9},
120 	{"F1", XK_F1},
121 	{"F2", XK_F2},
122 	{"F3", XK_F3},
123 	{"F4", XK_F4},
124 	{"F5", XK_F5},
125 	{"F6", XK_F6},
126 	{"F7", XK_F7},
127 	{"F8", XK_F8},
128 	{"F9", XK_F9},
129 	{"F10", XK_F10},
130 	{"F11", XK_F11},
131 	{"L1", XK_L1},
132 	{"F12", XK_F12},
133 	{"L2", XK_L2},
134 	{"F13", XK_F13},
135 	{"L3", XK_L3},
136 	{"F14", XK_F14},
137 	{"L4", XK_L4},
138 	{"F15", XK_F15},
139 	{"L5", XK_L5},
140 	{"F16", XK_F16},
141 	{"L6", XK_L6},
142 	{"F17", XK_F17},
143 	{"L7", XK_L7},
144 	{"F18", XK_F18},
145 	{"L8", XK_L8},
146 	{"F19", XK_F19},
147 	{"L9", XK_L9},
148 	{"F20", XK_F20},
149 	{"L10", XK_L10},
150 	{"F21", XK_F21},
151 	{"R1", XK_R1},
152 	{"F22", XK_F22},
153 	{"R2", XK_R2},
154 	{"F23", XK_F23},
155 	{"R3", XK_R3},
156 	{"F24", XK_F24},
157 	{"R4", XK_R4},
158 	{"F25", XK_F25},
159 	{"R5", XK_R5},
160 	{"F26", XK_F26},
161 	{"R6", XK_R6},
162 	{"F27", XK_F27},
163 	{"R7", XK_R7},
164 	{"F28", XK_F28},
165 	{"R8", XK_R8},
166 	{"F29", XK_F29},
167 	{"R9", XK_R9},
168 	{"F30", XK_F30},
169 	{"R10", XK_R10},
170 	{"F31", XK_F31},
171 	{"R11", XK_R11},
172 	{"F32", XK_F32},
173 	{"R12", XK_R12},
174 	{"F33", XK_F33},
175 	{"R13", XK_R13},
176 	{"F34", XK_F34},
177 	{"R14", XK_R14},
178 	{"F35", XK_F35},
179 	{"R15", XK_R15},
180 	{"Shift_L", XK_Shift_L},
181 	{"Shift_R", XK_Shift_R},
182 	{"Control_L", XK_Control_L},
183 	{"Control_R", XK_Control_R},
184 	{"Caps_Lock", XK_Caps_Lock},
185 	{"Shift_Lock", XK_Shift_Lock},
186 	{"Meta_L", XK_Meta_L},
187 	{"Meta_R", XK_Meta_R},
188 	{"Alt_L", XK_Alt_L},
189 	{"Alt_R", XK_Alt_R},
190 	{"Super_L", XK_Super_L},
191 	{"Super_R", XK_Super_R},
192 	{"Hyper_L", XK_Hyper_L},
193 	{"Hyper_R", XK_Hyper_R},
194 #endif /* XK_MISCELLANY */
195 #ifdef XK_XKB_KEYS
196 	{"ISO_Lock", XK_ISO_Lock},
197 	{"ISO_Level2_Latch", XK_ISO_Level2_Latch},
198 	{"ISO_Level3_Shift", XK_ISO_Level3_Shift},
199 	{"ISO_Level3_Latch", XK_ISO_Level3_Latch},
200 	{"ISO_Level3_Lock", XK_ISO_Level3_Lock},
201 	{"ISO_Group_Shift", XK_ISO_Group_Shift},
202 	{"ISO_Group_Latch", XK_ISO_Group_Latch},
203 	{"ISO_Group_Lock", XK_ISO_Group_Lock},
204 	{"ISO_Next_Group", XK_ISO_Next_Group},
205 	{"ISO_Next_Group_Lock", XK_ISO_Next_Group_Lock},
206 	{"ISO_Prev_Group", XK_ISO_Prev_Group},
207 	{"ISO_Prev_Group_Lock", XK_ISO_Prev_Group_Lock},
208 	{"ISO_First_Group", XK_ISO_First_Group},
209 	{"ISO_First_Group_Lock", XK_ISO_First_Group_Lock},
210 	{"ISO_Last_Group", XK_ISO_Last_Group},
211 	{"ISO_Last_Group_Lock", XK_ISO_Last_Group_Lock},
212 	{"ISO_Left_Tab", XK_ISO_Left_Tab},
213 	{"ISO_Move_Line_Up", XK_ISO_Move_Line_Up},
214 	{"ISO_Move_Line_Down", XK_ISO_Move_Line_Down},
215 	{"ISO_Partial_Line_Up", XK_ISO_Partial_Line_Up},
216 	{"ISO_Partial_Line_Down", XK_ISO_Partial_Line_Down},
217 	{"ISO_Partial_Space_Left", XK_ISO_Partial_Space_Left},
218 	{"ISO_Partial_Space_Right", XK_ISO_Partial_Space_Right},
219 	{"ISO_Set_Margin_Left", XK_ISO_Set_Margin_Left},
220 	{"ISO_Set_Margin_Right", XK_ISO_Set_Margin_Right},
221 	{"ISO_Release_Margin_Left", XK_ISO_Release_Margin_Left},
222 	{"ISO_Release_Margin_Right", XK_ISO_Release_Margin_Right},
223 	{"ISO_Release_Both_Margins", XK_ISO_Release_Both_Margins},
224 	{"ISO_Fast_Cursor_Left", XK_ISO_Fast_Cursor_Left},
225 	{"ISO_Fast_Cursor_Right", XK_ISO_Fast_Cursor_Right},
226 	{"ISO_Fast_Cursor_Up", XK_ISO_Fast_Cursor_Up},
227 	{"ISO_Fast_Cursor_Down", XK_ISO_Fast_Cursor_Down},
228 	{"ISO_Continuous_Underline", XK_ISO_Continuous_Underline},
229 	{"ISO_Discontinuous_Underline", XK_ISO_Discontinuous_Underline},
230 	{"ISO_Emphasize", XK_ISO_Emphasize},
231 	{"ISO_Center_Object", XK_ISO_Center_Object},
232 	{"ISO_Enter", XK_ISO_Enter},
233 	{"dead_grave", XK_dead_grave},
234 	{"dead_acute", XK_dead_acute},
235 	{"dead_circumflex", XK_dead_circumflex},
236 	{"dead_tilde", XK_dead_tilde},
237 	{"dead_macron", XK_dead_macron},
238 	{"dead_breve", XK_dead_breve},
239 	{"dead_abovedot", XK_dead_abovedot},
240 	{"dead_diaeresis", XK_dead_diaeresis},
241 	{"dead_abovering", XK_dead_abovering},
242 	{"dead_doubleacute", XK_dead_doubleacute},
243 	{"dead_caron", XK_dead_caron},
244 	{"dead_cedilla", XK_dead_cedilla},
245 	{"dead_ogonek", XK_dead_ogonek},
246 	{"dead_iota", XK_dead_iota},
247 	{"dead_voiced_sound", XK_dead_voiced_sound},
248 	{"dead_semivoiced_sound", XK_dead_semivoiced_sound},
249 	{"dead_belowdot", XK_dead_belowdot},
250 	{"First_Virtual_Screen", XK_First_Virtual_Screen},
251 	{"Prev_Virtual_Screen", XK_Prev_Virtual_Screen},
252 	{"Next_Virtual_Screen", XK_Next_Virtual_Screen},
253 	{"Last_Virtual_Screen", XK_Last_Virtual_Screen},
254 	{"Terminate_Server", XK_Terminate_Server},
255 	{"AccessX_Enable", XK_AccessX_Enable},
256 	{"AccessX_Feedback_Enable", XK_AccessX_Feedback_Enable},
257 	{"RepeatKeys_Enable", XK_RepeatKeys_Enable},
258 	{"SlowKeys_Enable", XK_SlowKeys_Enable},
259 	{"BounceKeys_Enable", XK_BounceKeys_Enable},
260 	{"StickyKeys_Enable", XK_StickyKeys_Enable},
261 	{"MouseKeys_Enable", XK_MouseKeys_Enable},
262 	{"MouseKeys_Accel_Enable", XK_MouseKeys_Accel_Enable},
263 	{"Overlay1_Enable", XK_Overlay1_Enable},
264 	{"Overlay2_Enable", XK_Overlay2_Enable},
265 	{"AudibleBell_Enable", XK_AudibleBell_Enable},
266 	{"Pointer_Left", XK_Pointer_Left},
267 	{"Pointer_Right", XK_Pointer_Right},
268 	{"Pointer_Up", XK_Pointer_Up},
269 	{"Pointer_Down", XK_Pointer_Down},
270 	{"Pointer_UpLeft", XK_Pointer_UpLeft},
271 	{"Pointer_UpRight", XK_Pointer_UpRight},
272 	{"Pointer_DownLeft", XK_Pointer_DownLeft},
273 	{"Pointer_DownRight", XK_Pointer_DownRight},
274 	{"Pointer_Button_Dflt", XK_Pointer_Button_Dflt},
275 	{"Pointer_Button1", XK_Pointer_Button1},
276 	{"Pointer_Button2", XK_Pointer_Button2},
277 	{"Pointer_Button3", XK_Pointer_Button3},
278 	{"Pointer_Button4", XK_Pointer_Button4},
279 	{"Pointer_Button5", XK_Pointer_Button5},
280 	{"Pointer_DblClick_Dflt", XK_Pointer_DblClick_Dflt},
281 	{"Pointer_DblClick1", XK_Pointer_DblClick1},
282 	{"Pointer_DblClick2", XK_Pointer_DblClick2},
283 	{"Pointer_DblClick3", XK_Pointer_DblClick3},
284 	{"Pointer_DblClick4", XK_Pointer_DblClick4},
285 	{"Pointer_DblClick5", XK_Pointer_DblClick5},
286 	{"Pointer_Drag_Dflt", XK_Pointer_Drag_Dflt},
287 	{"Pointer_Drag1", XK_Pointer_Drag1},
288 	{"Pointer_Drag2", XK_Pointer_Drag2},
289 	{"Pointer_Drag3", XK_Pointer_Drag3},
290 	{"Pointer_Drag4", XK_Pointer_Drag4},
291 	{"Pointer_Drag5", XK_Pointer_Drag5},
292 	{"Pointer_EnableKeys", XK_Pointer_EnableKeys},
293 	{"Pointer_Accelerate", XK_Pointer_Accelerate},
294 	{"Pointer_DfltBtnNext", XK_Pointer_DfltBtnNext},
295 	{"Pointer_DfltBtnPrev", XK_Pointer_DfltBtnPrev},
296 #endif
297 #ifdef XK_3270
298 	{"3270_Duplicate", XK_3270_Duplicate},
299 	{"3270_FieldMark", XK_3270_FieldMark},
300 	{"3270_Right2", XK_3270_Right2},
301 	{"3270_Left2", XK_3270_Left2},
302 	{"3270_BackTab", XK_3270_BackTab},
303 	{"3270_EraseEOF", XK_3270_EraseEOF},
304 	{"3270_EraseInput", XK_3270_EraseInput},
305 	{"3270_Reset", XK_3270_Reset},
306 	{"3270_Quit", XK_3270_Quit},
307 	{"3270_PA1", XK_3270_PA1},
308 	{"3270_PA2", XK_3270_PA2},
309 	{"3270_PA3", XK_3270_PA3},
310 	{"3270_Test", XK_3270_Test},
311 	{"3270_Attn", XK_3270_Attn},
312 	{"3270_CursorBlink", XK_3270_CursorBlink},
313 	{"3270_AltCursor", XK_3270_AltCursor},
314 	{"3270_KeyClick", XK_3270_KeyClick},
315 	{"3270_Jump", XK_3270_Jump},
316 	{"3270_Ident", XK_3270_Ident},
317 	{"3270_Rule", XK_3270_Rule},
318 	{"3270_Copy", XK_3270_Copy},
319 	{"3270_Play", XK_3270_Play},
320 	{"3270_Setup", XK_3270_Setup},
321 	{"3270_Record", XK_3270_Record},
322 	{"3270_ChangeScreen", XK_3270_ChangeScreen},
323 	{"3270_DeleteWord", XK_3270_DeleteWord},
324 	{"3270_ExSelect", XK_3270_ExSelect},
325 	{"3270_CursorSelect", XK_3270_CursorSelect},
326 	{"3270_PrintScreen", XK_3270_PrintScreen},
327 	{"3270_Enter", XK_3270_Enter},
328 #endif
329 #ifdef XK_LATIN1
330 	{"space", XK_space},
331 	{"exclam", XK_exclam},
332 	{"quotedbl", XK_quotedbl},
333 	{"numbersign", XK_numbersign},
334 	{"dollar", XK_dollar},
335 	{"percent", XK_percent},
336 	{"ampersand", XK_ampersand},
337 	{"apostrophe", XK_apostrophe},
338 	{"quoteright", XK_quoteright},
339 	{"parenleft", XK_parenleft},
340 	{"parenright", XK_parenright},
341 	{"asterisk", XK_asterisk},
342 	{"plus", XK_plus},
343 	{"comma", XK_comma},
344 	{"minus", XK_minus},
345 	{"period", XK_period},
346 	{"slash", XK_slash},
347 	{"0", XK_0},
348 	{"1", XK_1},
349 	{"2", XK_2},
350 	{"3", XK_3},
351 	{"4", XK_4},
352 	{"5", XK_5},
353 	{"6", XK_6},
354 	{"7", XK_7},
355 	{"8", XK_8},
356 	{"9", XK_9},
357 	{"colon", XK_colon},
358 	{"semicolon", XK_semicolon},
359 	{"less", XK_less},
360 	{"equal", XK_equal},
361 	{"greater", XK_greater},
362 	{"question", XK_question},
363 	{"at", XK_at},
364 	{"A", XK_A},
365 	{"B", XK_B},
366 	{"C", XK_C},
367 	{"D", XK_D},
368 	{"E", XK_E},
369 	{"F", XK_F},
370 	{"G", XK_G},
371 	{"H", XK_H},
372 	{"I", XK_I},
373 	{"J", XK_J},
374 	{"K", XK_K},
375 	{"L", XK_L},
376 	{"M", XK_M},
377 	{"N", XK_N},
378 	{"O", XK_O},
379 	{"P", XK_P},
380 	{"Q", XK_Q},
381 	{"R", XK_R},
382 	{"S", XK_S},
383 	{"T", XK_T},
384 	{"U", XK_U},
385 	{"V", XK_V},
386 	{"W", XK_W},
387 	{"X", XK_X},
388 	{"Y", XK_Y},
389 	{"Z", XK_Z},
390 	{"bracketleft", XK_bracketleft},
391 	{"backslash", XK_backslash},
392 	{"bracketright", XK_bracketright},
393 	{"asciicircum", XK_asciicircum},
394 	{"underscore", XK_underscore},
395 	{"grave", XK_grave},
396 	{"quoteleft", XK_quoteleft},
397 	{"a", XK_a},
398 	{"b", XK_b},
399 	{"c", XK_c},
400 	{"d", XK_d},
401 	{"e", XK_e},
402 	{"f", XK_f},
403 	{"g", XK_g},
404 	{"h", XK_h},
405 	{"i", XK_i},
406 	{"j", XK_j},
407 	{"k", XK_k},
408 	{"l", XK_l},
409 	{"m", XK_m},
410 	{"n", XK_n},
411 	{"o", XK_o},
412 	{"p", XK_p},
413 	{"q", XK_q},
414 	{"r", XK_r},
415 	{"s", XK_s},
416 	{"t", XK_t},
417 	{"u", XK_u},
418 	{"v", XK_v},
419 	{"w", XK_w},
420 	{"x", XK_x},
421 	{"y", XK_y},
422 	{"z", XK_z},
423 	{"braceleft", XK_braceleft},
424 	{"bar", XK_bar},
425 	{"braceright", XK_braceright},
426 	{"asciitilde", XK_asciitilde},
427 	{"nobreakspace", XK_nobreakspace},
428 	{"exclamdown", XK_exclamdown},
429 	{"cent", XK_cent},
430 	{"sterling", XK_sterling},
431 	{"currency", XK_currency},
432 	{"yen", XK_yen},
433 	{"brokenbar", XK_brokenbar},
434 	{"section", XK_section},
435 	{"diaeresis", XK_diaeresis},
436 	{"copyright", XK_copyright},
437 	{"ordfeminine", XK_ordfeminine},
438 	{"guillemotleft", XK_guillemotleft},
439 	{"notsign", XK_notsign},
440 	{"hyphen", XK_hyphen},
441 	{"registered", XK_registered},
442 	{"macron", XK_macron},
443 	{"degree", XK_degree},
444 	{"plusminus", XK_plusminus},
445 	{"twosuperior", XK_twosuperior},
446 	{"threesuperior", XK_threesuperior},
447 	{"acute", XK_acute},
448 	{"mu", XK_mu},
449 	{"paragraph", XK_paragraph},
450 	{"periodcentered", XK_periodcentered},
451 	{"cedilla", XK_cedilla},
452 	{"onesuperior", XK_onesuperior},
453 	{"masculine", XK_masculine},
454 	{"guillemotright", XK_guillemotright},
455 	{"onequarter", XK_onequarter},
456 	{"onehalf", XK_onehalf},
457 	{"threequarters", XK_threequarters},
458 	{"questiondown", XK_questiondown},
459 	{"Agrave", XK_Agrave},
460 	{"Aacute", XK_Aacute},
461 	{"Acircumflex", XK_Acircumflex},
462 	{"Atilde", XK_Atilde},
463 	{"Adiaeresis", XK_Adiaeresis},
464 	{"Aring", XK_Aring},
465 	{"AE", XK_AE},
466 	{"Ccedilla", XK_Ccedilla},
467 	{"Egrave", XK_Egrave},
468 	{"Eacute", XK_Eacute},
469 	{"Ecircumflex", XK_Ecircumflex},
470 	{"Ediaeresis", XK_Ediaeresis},
471 	{"Igrave", XK_Igrave},
472 	{"Iacute", XK_Iacute},
473 	{"Icircumflex", XK_Icircumflex},
474 	{"Idiaeresis", XK_Idiaeresis},
475 	{"ETH", XK_ETH},
476 	{"Eth", XK_Eth},
477 	{"Ntilde", XK_Ntilde},
478 	{"Ograve", XK_Ograve},
479 	{"Oacute", XK_Oacute},
480 	{"Ocircumflex", XK_Ocircumflex},
481 	{"Otilde", XK_Otilde},
482 	{"Odiaeresis", XK_Odiaeresis},
483 	{"multiply", XK_multiply},
484 	{"Ooblique", XK_Ooblique},
485 	{"Ugrave", XK_Ugrave},
486 	{"Uacute", XK_Uacute},
487 	{"Ucircumflex", XK_Ucircumflex},
488 	{"Udiaeresis", XK_Udiaeresis},
489 	{"Yacute", XK_Yacute},
490 	{"THORN", XK_THORN},
491 	{"Thorn", XK_Thorn},
492 	{"ssharp", XK_ssharp},
493 	{"agrave", XK_agrave},
494 	{"aacute", XK_aacute},
495 	{"acircumflex", XK_acircumflex},
496 	{"atilde", XK_atilde},
497 	{"adiaeresis", XK_adiaeresis},
498 	{"aring", XK_aring},
499 	{"ae", XK_ae},
500 	{"ccedilla", XK_ccedilla},
501 	{"egrave", XK_egrave},
502 	{"eacute", XK_eacute},
503 	{"ecircumflex", XK_ecircumflex},
504 	{"ediaeresis", XK_ediaeresis},
505 	{"igrave", XK_igrave},
506 	{"iacute", XK_iacute},
507 	{"icircumflex", XK_icircumflex},
508 	{"idiaeresis", XK_idiaeresis},
509 	{"eth", XK_eth},
510 	{"ntilde", XK_ntilde},
511 	{"ograve", XK_ograve},
512 	{"oacute", XK_oacute},
513 	{"ocircumflex", XK_ocircumflex},
514 	{"otilde", XK_otilde},
515 	{"odiaeresis", XK_odiaeresis},
516 	{"division", XK_division},
517 	{"oslash", XK_oslash},
518 	{"ugrave", XK_ugrave},
519 	{"uacute", XK_uacute},
520 	{"ucircumflex", XK_ucircumflex},
521 	{"udiaeresis", XK_udiaeresis},
522 	{"yacute", XK_yacute},
523 	{"thorn", XK_thorn},
524 	{"ydiaeresis", XK_ydiaeresis},
525 #endif /* XK_LATIN1 */
526 #ifdef XK_LATIN2
527 	{"Aogonek", XK_Aogonek},
528 	{"breve", XK_breve},
529 	{"Lstroke", XK_Lstroke},
530 	{"Lcaron", XK_Lcaron},
531 	{"Sacute", XK_Sacute},
532 	{"Scaron", XK_Scaron},
533 	{"Scedilla", XK_Scedilla},
534 	{"Tcaron", XK_Tcaron},
535 	{"Zacute", XK_Zacute},
536 	{"Zcaron", XK_Zcaron},
537 	{"Zabovedot", XK_Zabovedot},
538 	{"aogonek", XK_aogonek},
539 	{"ogonek", XK_ogonek},
540 	{"lstroke", XK_lstroke},
541 	{"lcaron", XK_lcaron},
542 	{"sacute", XK_sacute},
543 	{"caron", XK_caron},
544 	{"scaron", XK_scaron},
545 	{"scedilla", XK_scedilla},
546 	{"tcaron", XK_tcaron},
547 	{"zacute", XK_zacute},
548 	{"doubleacute", XK_doubleacute},
549 	{"zcaron", XK_zcaron},
550 	{"zabovedot", XK_zabovedot},
551 	{"Racute", XK_Racute},
552 	{"Abreve", XK_Abreve},
553 	{"Lacute", XK_Lacute},
554 	{"Cacute", XK_Cacute},
555 	{"Ccaron", XK_Ccaron},
556 	{"Eogonek", XK_Eogonek},
557 	{"Ecaron", XK_Ecaron},
558 	{"Dcaron", XK_Dcaron},
559 	{"Dstroke", XK_Dstroke},
560 	{"Nacute", XK_Nacute},
561 	{"Ncaron", XK_Ncaron},
562 	{"Odoubleacute", XK_Odoubleacute},
563 	{"Rcaron", XK_Rcaron},
564 	{"Uring", XK_Uring},
565 	{"Udoubleacute", XK_Udoubleacute},
566 	{"Tcedilla", XK_Tcedilla},
567 	{"racute", XK_racute},
568 	{"abreve", XK_abreve},
569 	{"lacute", XK_lacute},
570 	{"cacute", XK_cacute},
571 	{"ccaron", XK_ccaron},
572 	{"eogonek", XK_eogonek},
573 	{"ecaron", XK_ecaron},
574 	{"dcaron", XK_dcaron},
575 	{"dstroke", XK_dstroke},
576 	{"nacute", XK_nacute},
577 	{"ncaron", XK_ncaron},
578 	{"odoubleacute", XK_odoubleacute},
579 	{"udoubleacute", XK_udoubleacute},
580 	{"rcaron", XK_rcaron},
581 	{"uring", XK_uring},
582 	{"tcedilla", XK_tcedilla},
583 	{"abovedot", XK_abovedot},
584 #endif /* XK_LATIN2 */
585 #ifdef XK_LATIN3
586 	{"Hstroke", XK_Hstroke},
587 	{"Hcircumflex", XK_Hcircumflex},
588 	{"Iabovedot", XK_Iabovedot},
589 	{"Gbreve", XK_Gbreve},
590 	{"Jcircumflex", XK_Jcircumflex},
591 	{"hstroke", XK_hstroke},
592 	{"hcircumflex", XK_hcircumflex},
593 	{"idotless", XK_idotless},
594 	{"gbreve", XK_gbreve},
595 	{"jcircumflex", XK_jcircumflex},
596 	{"Cabovedot", XK_Cabovedot},
597 	{"Ccircumflex", XK_Ccircumflex},
598 	{"Gabovedot", XK_Gabovedot},
599 	{"Gcircumflex", XK_Gcircumflex},
600 	{"Ubreve", XK_Ubreve},
601 	{"Scircumflex", XK_Scircumflex},
602 	{"cabovedot", XK_cabovedot},
603 	{"ccircumflex", XK_ccircumflex},
604 	{"gabovedot", XK_gabovedot},
605 	{"gcircumflex", XK_gcircumflex},
606 	{"ubreve", XK_ubreve},
607 	{"scircumflex", XK_scircumflex},
608 #endif /* XK_LATIN3 */
609 #ifdef XK_LATIN4
610 	{"kra", XK_kra},
611 	{"kappa", XK_kappa},
612 	{"Rcedilla", XK_Rcedilla},
613 	{"Itilde", XK_Itilde},
614 	{"Lcedilla", XK_Lcedilla},
615 	{"Emacron", XK_Emacron},
616 	{"Gcedilla", XK_Gcedilla},
617 	{"Tslash", XK_Tslash},
618 	{"rcedilla", XK_rcedilla},
619 	{"itilde", XK_itilde},
620 	{"lcedilla", XK_lcedilla},
621 	{"emacron", XK_emacron},
622 	{"gcedilla", XK_gcedilla},
623 	{"tslash", XK_tslash},
624 	{"ENG", XK_ENG},
625 	{"eng", XK_eng},
626 	{"Amacron", XK_Amacron},
627 	{"Iogonek", XK_Iogonek},
628 	{"Eabovedot", XK_Eabovedot},
629 	{"Imacron", XK_Imacron},
630 	{"Ncedilla", XK_Ncedilla},
631 	{"Omacron", XK_Omacron},
632 	{"Kcedilla", XK_Kcedilla},
633 	{"Uogonek", XK_Uogonek},
634 	{"Utilde", XK_Utilde},
635 	{"Umacron", XK_Umacron},
636 	{"amacron", XK_amacron},
637 	{"iogonek", XK_iogonek},
638 	{"eabovedot", XK_eabovedot},
639 	{"imacron", XK_imacron},
640 	{"ncedilla", XK_ncedilla},
641 	{"omacron", XK_omacron},
642 	{"kcedilla", XK_kcedilla},
643 	{"uogonek", XK_uogonek},
644 	{"utilde", XK_utilde},
645 	{"umacron", XK_umacron},
646 #endif /* XK_LATIN4 */
647 #ifdef XK_KATAKANA
648 	{"overline", XK_overline},
649 	{"kana_fullstop", XK_kana_fullstop},
650 	{"kana_openingbracket", XK_kana_openingbracket},
651 	{"kana_closingbracket", XK_kana_closingbracket},
652 	{"kana_comma", XK_kana_comma},
653 	{"kana_conjunctive", XK_kana_conjunctive},
654 	{"kana_middledot", XK_kana_middledot},
655 	{"kana_WO", XK_kana_WO},
656 	{"kana_a", XK_kana_a},
657 	{"kana_i", XK_kana_i},
658 	{"kana_u", XK_kana_u},
659 	{"kana_e", XK_kana_e},
660 	{"kana_o", XK_kana_o},
661 	{"kana_ya", XK_kana_ya},
662 	{"kana_yu", XK_kana_yu},
663 	{"kana_yo", XK_kana_yo},
664 	{"kana_tsu", XK_kana_tsu},
665 	{"kana_tu", XK_kana_tu},
666 	{"prolongedsound", XK_prolongedsound},
667 	{"kana_A", XK_kana_A},
668 	{"kana_I", XK_kana_I},
669 	{"kana_U", XK_kana_U},
670 	{"kana_E", XK_kana_E},
671 	{"kana_O", XK_kana_O},
672 	{"kana_KA", XK_kana_KA},
673 	{"kana_KI", XK_kana_KI},
674 	{"kana_KU", XK_kana_KU},
675 	{"kana_KE", XK_kana_KE},
676 	{"kana_KO", XK_kana_KO},
677 	{"kana_SA", XK_kana_SA},
678 	{"kana_SHI", XK_kana_SHI},
679 	{"kana_SU", XK_kana_SU},
680 	{"kana_SE", XK_kana_SE},
681 	{"kana_SO", XK_kana_SO},
682 	{"kana_TA", XK_kana_TA},
683 	{"kana_CHI", XK_kana_CHI},
684 	{"kana_TI", XK_kana_TI},
685 	{"kana_TSU", XK_kana_TSU},
686 	{"kana_TU", XK_kana_TU},
687 	{"kana_TE", XK_kana_TE},
688 	{"kana_TO", XK_kana_TO},
689 	{"kana_NA", XK_kana_NA},
690 	{"kana_NI", XK_kana_NI},
691 	{"kana_NU", XK_kana_NU},
692 	{"kana_NE", XK_kana_NE},
693 	{"kana_NO", XK_kana_NO},
694 	{"kana_HA", XK_kana_HA},
695 	{"kana_HI", XK_kana_HI},
696 	{"kana_FU", XK_kana_FU},
697 	{"kana_HU", XK_kana_HU},
698 	{"kana_HE", XK_kana_HE},
699 	{"kana_HO", XK_kana_HO},
700 	{"kana_MA", XK_kana_MA},
701 	{"kana_MI", XK_kana_MI},
702 	{"kana_MU", XK_kana_MU},
703 	{"kana_ME", XK_kana_ME},
704 	{"kana_MO", XK_kana_MO},
705 	{"kana_YA", XK_kana_YA},
706 	{"kana_YU", XK_kana_YU},
707 	{"kana_YO", XK_kana_YO},
708 	{"kana_RA", XK_kana_RA},
709 	{"kana_RI", XK_kana_RI},
710 	{"kana_RU", XK_kana_RU},
711 	{"kana_RE", XK_kana_RE},
712 	{"kana_RO", XK_kana_RO},
713 	{"kana_WA", XK_kana_WA},
714 	{"kana_N", XK_kana_N},
715 	{"voicedsound", XK_voicedsound},
716 	{"semivoicedsound", XK_semivoicedsound},
717 	{"kana_switch", XK_kana_switch},
718 #endif /* XK_KATAKANA */
719 #ifdef XK_ARABIC
720 	{"Arabic_comma", XK_Arabic_comma},
721 	{"Arabic_semicolon", XK_Arabic_semicolon},
722 	{"Arabic_question_mark", XK_Arabic_question_mark},
723 	{"Arabic_hamza", XK_Arabic_hamza},
724 	{"Arabic_maddaonalef", XK_Arabic_maddaonalef},
725 	{"Arabic_hamzaonalef", XK_Arabic_hamzaonalef},
726 	{"Arabic_hamzaonwaw", XK_Arabic_hamzaonwaw},
727 	{"Arabic_hamzaunderalef", XK_Arabic_hamzaunderalef},
728 	{"Arabic_hamzaonyeh", XK_Arabic_hamzaonyeh},
729 	{"Arabic_alef", XK_Arabic_alef},
730 	{"Arabic_beh", XK_Arabic_beh},
731 	{"Arabic_tehmarbuta", XK_Arabic_tehmarbuta},
732 	{"Arabic_teh", XK_Arabic_teh},
733 	{"Arabic_theh", XK_Arabic_theh},
734 	{"Arabic_jeem", XK_Arabic_jeem},
735 	{"Arabic_hah", XK_Arabic_hah},
736 	{"Arabic_khah", XK_Arabic_khah},
737 	{"Arabic_dal", XK_Arabic_dal},
738 	{"Arabic_thal", XK_Arabic_thal},
739 	{"Arabic_ra", XK_Arabic_ra},
740 	{"Arabic_zain", XK_Arabic_zain},
741 	{"Arabic_seen", XK_Arabic_seen},
742 	{"Arabic_sheen", XK_Arabic_sheen},
743 	{"Arabic_sad", XK_Arabic_sad},
744 	{"Arabic_dad", XK_Arabic_dad},
745 	{"Arabic_tah", XK_Arabic_tah},
746 	{"Arabic_zah", XK_Arabic_zah},
747 	{"Arabic_ain", XK_Arabic_ain},
748 	{"Arabic_ghain", XK_Arabic_ghain},
749 	{"Arabic_tatweel", XK_Arabic_tatweel},
750 	{"Arabic_feh", XK_Arabic_feh},
751 	{"Arabic_qaf", XK_Arabic_qaf},
752 	{"Arabic_kaf", XK_Arabic_kaf},
753 	{"Arabic_lam", XK_Arabic_lam},
754 	{"Arabic_meem", XK_Arabic_meem},
755 	{"Arabic_noon", XK_Arabic_noon},
756 	{"Arabic_ha", XK_Arabic_ha},
757 	{"Arabic_heh", XK_Arabic_heh},
758 	{"Arabic_waw", XK_Arabic_waw},
759 	{"Arabic_alefmaksura", XK_Arabic_alefmaksura},
760 	{"Arabic_yeh", XK_Arabic_yeh},
761 	{"Arabic_fathatan", XK_Arabic_fathatan},
762 	{"Arabic_dammatan", XK_Arabic_dammatan},
763 	{"Arabic_kasratan", XK_Arabic_kasratan},
764 	{"Arabic_fatha", XK_Arabic_fatha},
765 	{"Arabic_damma", XK_Arabic_damma},
766 	{"Arabic_kasra", XK_Arabic_kasra},
767 	{"Arabic_shadda", XK_Arabic_shadda},
768 	{"Arabic_sukun", XK_Arabic_sukun},
769 	{"Arabic_switch", XK_Arabic_switch},
770 #endif /* XK_ARABIC */
771 #ifdef XK_CYRILLIC
772 	{"Serbian_dje", XK_Serbian_dje},
773 	{"Macedonia_gje", XK_Macedonia_gje},
774 	{"Cyrillic_io", XK_Cyrillic_io},
775 	{"Ukrainian_ie", XK_Ukrainian_ie},
776 	{"Ukranian_je", XK_Ukranian_je},
777 	{"Macedonia_dse", XK_Macedonia_dse},
778 	{"Ukrainian_i", XK_Ukrainian_i},
779 	{"Ukranian_i", XK_Ukranian_i},
780 	{"Ukrainian_yi", XK_Ukrainian_yi},
781 	{"Ukranian_yi", XK_Ukranian_yi},
782 	{"Cyrillic_je", XK_Cyrillic_je},
783 	{"Serbian_je", XK_Serbian_je},
784 	{"Cyrillic_lje", XK_Cyrillic_lje},
785 	{"Serbian_lje", XK_Serbian_lje},
786 	{"Cyrillic_nje", XK_Cyrillic_nje},
787 	{"Serbian_nje", XK_Serbian_nje},
788 	{"Serbian_tshe", XK_Serbian_tshe},
789 	{"Macedonia_kje", XK_Macedonia_kje},
790 	{"Byelorussian_shortu", XK_Byelorussian_shortu},
791 	{"Cyrillic_dzhe", XK_Cyrillic_dzhe},
792 	{"Serbian_dze", XK_Serbian_dze},
793 	{"numerosign", XK_numerosign},
794 	{"Serbian_DJE", XK_Serbian_DJE},
795 	{"Macedonia_GJE", XK_Macedonia_GJE},
796 	{"Cyrillic_IO", XK_Cyrillic_IO},
797 	{"Ukrainian_IE", XK_Ukrainian_IE},
798 	{"Ukranian_JE", XK_Ukranian_JE},
799 	{"Macedonia_DSE", XK_Macedonia_DSE},
800 	{"Ukrainian_I", XK_Ukrainian_I},
801 	{"Ukranian_I", XK_Ukranian_I},
802 	{"Ukrainian_YI", XK_Ukrainian_YI},
803 	{"Ukranian_YI", XK_Ukranian_YI},
804 	{"Cyrillic_JE", XK_Cyrillic_JE},
805 	{"Serbian_JE", XK_Serbian_JE},
806 	{"Cyrillic_LJE", XK_Cyrillic_LJE},
807 	{"Serbian_LJE", XK_Serbian_LJE},
808 	{"Cyrillic_NJE", XK_Cyrillic_NJE},
809 	{"Serbian_NJE", XK_Serbian_NJE},
810 	{"Serbian_TSHE", XK_Serbian_TSHE},
811 	{"Macedonia_KJE", XK_Macedonia_KJE},
812 	{"Byelorussian_SHORTU", XK_Byelorussian_SHORTU},
813 	{"Cyrillic_DZHE", XK_Cyrillic_DZHE},
814 	{"Serbian_DZE", XK_Serbian_DZE},
815 	{"Cyrillic_yu", XK_Cyrillic_yu},
816 	{"Cyrillic_a", XK_Cyrillic_a},
817 	{"Cyrillic_be", XK_Cyrillic_be},
818 	{"Cyrillic_tse", XK_Cyrillic_tse},
819 	{"Cyrillic_de", XK_Cyrillic_de},
820 	{"Cyrillic_ie", XK_Cyrillic_ie},
821 	{"Cyrillic_ef", XK_Cyrillic_ef},
822 	{"Cyrillic_ghe", XK_Cyrillic_ghe},
823 	{"Cyrillic_ha", XK_Cyrillic_ha},
824 	{"Cyrillic_i", XK_Cyrillic_i},
825 	{"Cyrillic_shorti", XK_Cyrillic_shorti},
826 	{"Cyrillic_ka", XK_Cyrillic_ka},
827 	{"Cyrillic_el", XK_Cyrillic_el},
828 	{"Cyrillic_em", XK_Cyrillic_em},
829 	{"Cyrillic_en", XK_Cyrillic_en},
830 	{"Cyrillic_o", XK_Cyrillic_o},
831 	{"Cyrillic_pe", XK_Cyrillic_pe},
832 	{"Cyrillic_ya", XK_Cyrillic_ya},
833 	{"Cyrillic_er", XK_Cyrillic_er},
834 	{"Cyrillic_es", XK_Cyrillic_es},
835 	{"Cyrillic_te", XK_Cyrillic_te},
836 	{"Cyrillic_u", XK_Cyrillic_u},
837 	{"Cyrillic_zhe", XK_Cyrillic_zhe},
838 	{"Cyrillic_ve", XK_Cyrillic_ve},
839 	{"Cyrillic_softsign", XK_Cyrillic_softsign},
840 	{"Cyrillic_yeru", XK_Cyrillic_yeru},
841 	{"Cyrillic_ze", XK_Cyrillic_ze},
842 	{"Cyrillic_sha", XK_Cyrillic_sha},
843 	{"Cyrillic_e", XK_Cyrillic_e},
844 	{"Cyrillic_shcha", XK_Cyrillic_shcha},
845 	{"Cyrillic_che", XK_Cyrillic_che},
846 	{"Cyrillic_hardsign", XK_Cyrillic_hardsign},
847 	{"Cyrillic_YU", XK_Cyrillic_YU},
848 	{"Cyrillic_A", XK_Cyrillic_A},
849 	{"Cyrillic_BE", XK_Cyrillic_BE},
850 	{"Cyrillic_TSE", XK_Cyrillic_TSE},
851 	{"Cyrillic_DE", XK_Cyrillic_DE},
852 	{"Cyrillic_IE", XK_Cyrillic_IE},
853 	{"Cyrillic_EF", XK_Cyrillic_EF},
854 	{"Cyrillic_GHE", XK_Cyrillic_GHE},
855 	{"Cyrillic_HA", XK_Cyrillic_HA},
856 	{"Cyrillic_I", XK_Cyrillic_I},
857 	{"Cyrillic_SHORTI", XK_Cyrillic_SHORTI},
858 	{"Cyrillic_KA", XK_Cyrillic_KA},
859 	{"Cyrillic_EL", XK_Cyrillic_EL},
860 	{"Cyrillic_EM", XK_Cyrillic_EM},
861 	{"Cyrillic_EN", XK_Cyrillic_EN},
862 	{"Cyrillic_O", XK_Cyrillic_O},
863 	{"Cyrillic_PE", XK_Cyrillic_PE},
864 	{"Cyrillic_YA", XK_Cyrillic_YA},
865 	{"Cyrillic_ER", XK_Cyrillic_ER},
866 	{"Cyrillic_ES", XK_Cyrillic_ES},
867 	{"Cyrillic_TE", XK_Cyrillic_TE},
868 	{"Cyrillic_U", XK_Cyrillic_U},
869 	{"Cyrillic_ZHE", XK_Cyrillic_ZHE},
870 	{"Cyrillic_VE", XK_Cyrillic_VE},
871 	{"Cyrillic_SOFTSIGN", XK_Cyrillic_SOFTSIGN},
872 	{"Cyrillic_YERU", XK_Cyrillic_YERU},
873 	{"Cyrillic_ZE", XK_Cyrillic_ZE},
874 	{"Cyrillic_SHA", XK_Cyrillic_SHA},
875 	{"Cyrillic_E", XK_Cyrillic_E},
876 	{"Cyrillic_SHCHA", XK_Cyrillic_SHCHA},
877 	{"Cyrillic_CHE", XK_Cyrillic_CHE},
878 	{"Cyrillic_HARDSIGN", XK_Cyrillic_HARDSIGN},
879 #endif /* XK_CYRILLIC */
880 #ifdef XK_GREEK
881 	{"Greek_ALPHAaccent", XK_Greek_ALPHAaccent},
882 	{"Greek_EPSILONaccent", XK_Greek_EPSILONaccent},
883 	{"Greek_ETAaccent", XK_Greek_ETAaccent},
884 	{"Greek_IOTAaccent", XK_Greek_IOTAaccent},
885 	{"Greek_IOTAdieresis", XK_Greek_IOTAdieresis},
886 	{"Greek_OMICRONaccent", XK_Greek_OMICRONaccent},
887 	{"Greek_UPSILONaccent", XK_Greek_UPSILONaccent},
888 	{"Greek_UPSILONdieresis", XK_Greek_UPSILONdieresis},
889 	{"Greek_OMEGAaccent", XK_Greek_OMEGAaccent},
890 	{"Greek_accentdieresis", XK_Greek_accentdieresis},
891 	{"Greek_horizbar", XK_Greek_horizbar},
892 	{"Greek_alphaaccent", XK_Greek_alphaaccent},
893 	{"Greek_epsilonaccent", XK_Greek_epsilonaccent},
894 	{"Greek_etaaccent", XK_Greek_etaaccent},
895 	{"Greek_iotaaccent", XK_Greek_iotaaccent},
896 	{"Greek_iotadieresis", XK_Greek_iotadieresis},
897 	{"Greek_iotaaccentdieresis", XK_Greek_iotaaccentdieresis},
898 	{"Greek_omicronaccent", XK_Greek_omicronaccent},
899 	{"Greek_upsilonaccent", XK_Greek_upsilonaccent},
900 	{"Greek_upsilondieresis", XK_Greek_upsilondieresis},
901 	{"Greek_upsilonaccentdieresis", XK_Greek_upsilonaccentdieresis},
902 	{"Greek_omegaaccent", XK_Greek_omegaaccent},
903 	{"Greek_ALPHA", XK_Greek_ALPHA},
904 	{"Greek_BETA", XK_Greek_BETA},
905 	{"Greek_GAMMA", XK_Greek_GAMMA},
906 	{"Greek_DELTA", XK_Greek_DELTA},
907 	{"Greek_EPSILON", XK_Greek_EPSILON},
908 	{"Greek_ZETA", XK_Greek_ZETA},
909 	{"Greek_ETA", XK_Greek_ETA},
910 	{"Greek_THETA", XK_Greek_THETA},
911 	{"Greek_IOTA", XK_Greek_IOTA},
912 	{"Greek_KAPPA", XK_Greek_KAPPA},
913 	{"Greek_LAMDA", XK_Greek_LAMDA},
914 	{"Greek_LAMBDA", XK_Greek_LAMBDA},
915 	{"Greek_MU", XK_Greek_MU},
916 	{"Greek_NU", XK_Greek_NU},
917 	{"Greek_XI", XK_Greek_XI},
918 	{"Greek_OMICRON", XK_Greek_OMICRON},
919 	{"Greek_PI", XK_Greek_PI},
920 	{"Greek_RHO", XK_Greek_RHO},
921 	{"Greek_SIGMA", XK_Greek_SIGMA},
922 	{"Greek_TAU", XK_Greek_TAU},
923 	{"Greek_UPSILON", XK_Greek_UPSILON},
924 	{"Greek_PHI", XK_Greek_PHI},
925 	{"Greek_CHI", XK_Greek_CHI},
926 	{"Greek_PSI", XK_Greek_PSI},
927 	{"Greek_OMEGA", XK_Greek_OMEGA},
928 	{"Greek_alpha", XK_Greek_alpha},
929 	{"Greek_beta", XK_Greek_beta},
930 	{"Greek_gamma", XK_Greek_gamma},
931 	{"Greek_delta", XK_Greek_delta},
932 	{"Greek_epsilon", XK_Greek_epsilon},
933 	{"Greek_zeta", XK_Greek_zeta},
934 	{"Greek_eta", XK_Greek_eta},
935 	{"Greek_theta", XK_Greek_theta},
936 	{"Greek_iota", XK_Greek_iota},
937 	{"Greek_kappa", XK_Greek_kappa},
938 	{"Greek_lamda", XK_Greek_lamda},
939 	{"Greek_lambda", XK_Greek_lambda},
940 	{"Greek_mu", XK_Greek_mu},
941 	{"Greek_nu", XK_Greek_nu},
942 	{"Greek_xi", XK_Greek_xi},
943 	{"Greek_omicron", XK_Greek_omicron},
944 	{"Greek_pi", XK_Greek_pi},
945 	{"Greek_rho", XK_Greek_rho},
946 	{"Greek_sigma", XK_Greek_sigma},
947 	{"Greek_finalsmallsigma", XK_Greek_finalsmallsigma},
948 	{"Greek_tau", XK_Greek_tau},
949 	{"Greek_upsilon", XK_Greek_upsilon},
950 	{"Greek_phi", XK_Greek_phi},
951 	{"Greek_chi", XK_Greek_chi},
952 	{"Greek_psi", XK_Greek_psi},
953 	{"Greek_omega", XK_Greek_omega},
954 	{"Greek_switch", XK_Greek_switch},
955 #endif /* XK_GREEK */
956 #ifdef XK_TECHNICAL
957 	{"leftradical", XK_leftradical},
958 	{"topleftradical", XK_topleftradical},
959 	{"horizconnector", XK_horizconnector},
960 	{"topintegral", XK_topintegral},
961 	{"botintegral", XK_botintegral},
962 	{"vertconnector", XK_vertconnector},
963 	{"topleftsqbracket", XK_topleftsqbracket},
964 	{"botleftsqbracket", XK_botleftsqbracket},
965 	{"toprightsqbracket", XK_toprightsqbracket},
966 	{"botrightsqbracket", XK_botrightsqbracket},
967 	{"topleftparens", XK_topleftparens},
968 	{"botleftparens", XK_botleftparens},
969 	{"toprightparens", XK_toprightparens},
970 	{"botrightparens", XK_botrightparens},
971 	{"leftmiddlecurlybrace", XK_leftmiddlecurlybrace},
972 	{"rightmiddlecurlybrace", XK_rightmiddlecurlybrace},
973 	{"topleftsummation", XK_topleftsummation},
974 	{"botleftsummation", XK_botleftsummation},
975 	{"topvertsummationconnector", XK_topvertsummationconnector},
976 	{"botvertsummationconnector", XK_botvertsummationconnector},
977 	{"toprightsummation", XK_toprightsummation},
978 	{"botrightsummation", XK_botrightsummation},
979 	{"rightmiddlesummation", XK_rightmiddlesummation},
980 	{"lessthanequal", XK_lessthanequal},
981 	{"notequal", XK_notequal},
982 	{"greaterthanequal", XK_greaterthanequal},
983 	{"integral", XK_integral},
984 	{"therefore", XK_therefore},
985 	{"variation", XK_variation},
986 	{"infinity", XK_infinity},
987 	{"nabla", XK_nabla},
988 	{"approximate", XK_approximate},
989 	{"similarequal", XK_similarequal},
990 	{"ifonlyif", XK_ifonlyif},
991 	{"implies", XK_implies},
992 	{"identical", XK_identical},
993 	{"radical", XK_radical},
994 	{"includedin", XK_includedin},
995 	{"includes", XK_includes},
996 	{"intersection", XK_intersection},
997 	{"union", XK_union},
998 	{"logicaland", XK_logicaland},
999 	{"logicalor", XK_logicalor},
1000 	{"partialderivative", XK_partialderivative},
1001 	{"function", XK_function},
1002 	{"leftarrow", XK_leftarrow},
1003 	{"uparrow", XK_uparrow},
1004 	{"rightarrow", XK_rightarrow},
1005 	{"downarrow", XK_downarrow},
1006 #endif /* XK_TECHNICAL */
1007 #ifdef XK_SPECIAL
1008 	{"blank", XK_blank},
1009 	{"soliddiamond", XK_soliddiamond},
1010 	{"checkerboard", XK_checkerboard},
1011 	{"ht", XK_ht},
1012 	{"ff", XK_ff},
1013 	{"cr", XK_cr},
1014 	{"lf", XK_lf},
1015 	{"nl", XK_nl},
1016 	{"vt", XK_vt},
1017 	{"lowrightcorner", XK_lowrightcorner},
1018 	{"uprightcorner", XK_uprightcorner},
1019 	{"upleftcorner", XK_upleftcorner},
1020 	{"lowleftcorner", XK_lowleftcorner},
1021 	{"crossinglines", XK_crossinglines},
1022 	{"horizlinescan1", XK_horizlinescan1},
1023 	{"horizlinescan3", XK_horizlinescan3},
1024 	{"horizlinescan5", XK_horizlinescan5},
1025 	{"horizlinescan7", XK_horizlinescan7},
1026 	{"horizlinescan9", XK_horizlinescan9},
1027 	{"leftt", XK_leftt},
1028 	{"rightt", XK_rightt},
1029 	{"bott", XK_bott},
1030 	{"topt", XK_topt},
1031 	{"vertbar", XK_vertbar},
1032 #endif /* XK_SPECIAL */
1033 #ifdef XK_PUBLISHING
1034 	{"emspace", XK_emspace},
1035 	{"enspace", XK_enspace},
1036 	{"em3space", XK_em3space},
1037 	{"em4space", XK_em4space},
1038 	{"digitspace", XK_digitspace},
1039 	{"punctspace", XK_punctspace},
1040 	{"thinspace", XK_thinspace},
1041 	{"hairspace", XK_hairspace},
1042 	{"emdash", XK_emdash},
1043 	{"endash", XK_endash},
1044 	{"signifblank", XK_signifblank},
1045 	{"ellipsis", XK_ellipsis},
1046 	{"doubbaselinedot", XK_doubbaselinedot},
1047 	{"onethird", XK_onethird},
1048 	{"twothirds", XK_twothirds},
1049 	{"onefifth", XK_onefifth},
1050 	{"twofifths", XK_twofifths},
1051 	{"threefifths", XK_threefifths},
1052 	{"fourfifths", XK_fourfifths},
1053 	{"onesixth", XK_onesixth},
1054 	{"fivesixths", XK_fivesixths},
1055 	{"careof", XK_careof},
1056 	{"figdash", XK_figdash},
1057 	{"leftanglebracket", XK_leftanglebracket},
1058 	{"decimalpoint", XK_decimalpoint},
1059 	{"rightanglebracket", XK_rightanglebracket},
1060 	{"marker", XK_marker},
1061 	{"oneeighth", XK_oneeighth},
1062 	{"threeeighths", XK_threeeighths},
1063 	{"fiveeighths", XK_fiveeighths},
1064 	{"seveneighths", XK_seveneighths},
1065 	{"trademark", XK_trademark},
1066 	{"signaturemark", XK_signaturemark},
1067 	{"trademarkincircle", XK_trademarkincircle},
1068 	{"leftopentriangle", XK_leftopentriangle},
1069 	{"rightopentriangle", XK_rightopentriangle},
1070 	{"emopencircle", XK_emopencircle},
1071 	{"emopenrectangle", XK_emopenrectangle},
1072 	{"leftsinglequotemark", XK_leftsinglequotemark},
1073 	{"rightsinglequotemark", XK_rightsinglequotemark},
1074 	{"leftdoublequotemark", XK_leftdoublequotemark},
1075 	{"rightdoublequotemark", XK_rightdoublequotemark},
1076 	{"prescription", XK_prescription},
1077 	{"minutes", XK_minutes},
1078 	{"seconds", XK_seconds},
1079 	{"latincross", XK_latincross},
1080 	{"hexagram", XK_hexagram},
1081 	{"filledrectbullet", XK_filledrectbullet},
1082 	{"filledlefttribullet", XK_filledlefttribullet},
1083 	{"filledrighttribullet", XK_filledrighttribullet},
1084 	{"emfilledcircle", XK_emfilledcircle},
1085 	{"emfilledrect", XK_emfilledrect},
1086 	{"enopencircbullet", XK_enopencircbullet},
1087 	{"enopensquarebullet", XK_enopensquarebullet},
1088 	{"openrectbullet", XK_openrectbullet},
1089 	{"opentribulletup", XK_opentribulletup},
1090 	{"opentribulletdown", XK_opentribulletdown},
1091 	{"openstar", XK_openstar},
1092 	{"enfilledcircbullet", XK_enfilledcircbullet},
1093 	{"enfilledsqbullet", XK_enfilledsqbullet},
1094 	{"filledtribulletup", XK_filledtribulletup},
1095 	{"filledtribulletdown", XK_filledtribulletdown},
1096 	{"leftpointer", XK_leftpointer},
1097 	{"rightpointer", XK_rightpointer},
1098 	{"club", XK_club},
1099 	{"diamond", XK_diamond},
1100 	{"heart", XK_heart},
1101 	{"maltesecross", XK_maltesecross},
1102 	{"dagger", XK_dagger},
1103 	{"doubledagger", XK_doubledagger},
1104 	{"checkmark", XK_checkmark},
1105 	{"ballotcross", XK_ballotcross},
1106 	{"musicalsharp", XK_musicalsharp},
1107 	{"musicalflat", XK_musicalflat},
1108 	{"malesymbol", XK_malesymbol},
1109 	{"femalesymbol", XK_femalesymbol},
1110 	{"telephone", XK_telephone},
1111 	{"telephonerecorder", XK_telephonerecorder},
1112 	{"phonographcopyright", XK_phonographcopyright},
1113 	{"caret", XK_caret},
1114 	{"singlelowquotemark", XK_singlelowquotemark},
1115 	{"doublelowquotemark", XK_doublelowquotemark},
1116 	{"cursor", XK_cursor},
1117 #endif /* XK_PUBLISHING */
1118 #ifdef XK_APL
1119 	{"leftcaret", XK_leftcaret},
1120 	{"rightcaret", XK_rightcaret},
1121 	{"downcaret", XK_downcaret},
1122 	{"upcaret", XK_upcaret},
1123 	{"overbar", XK_overbar},
1124 	{"downtack", XK_downtack},
1125 	{"upshoe", XK_upshoe},
1126 	{"downstile", XK_downstile},
1127 	{"underbar", XK_underbar},
1128 	{"jot", XK_jot},
1129 	{"quad", XK_quad},
1130 	{"uptack", XK_uptack},
1131 	{"circle", XK_circle},
1132 	{"upstile", XK_upstile},
1133 	{"downshoe", XK_downshoe},
1134 	{"rightshoe", XK_rightshoe},
1135 	{"leftshoe", XK_leftshoe},
1136 	{"lefttack", XK_lefttack},
1137 	{"righttack", XK_righttack},
1138 #endif /* XK_APL */
1139 #ifdef XK_HEBREW
1140 	{"hebrew_doublelowline", XK_hebrew_doublelowline},
1141 	{"hebrew_aleph", XK_hebrew_aleph},
1142 	{"hebrew_bet", XK_hebrew_bet},
1143 	{"hebrew_beth", XK_hebrew_beth},
1144 	{"hebrew_gimel", XK_hebrew_gimel},
1145 	{"hebrew_gimmel", XK_hebrew_gimmel},
1146 	{"hebrew_dalet", XK_hebrew_dalet},
1147 	{"hebrew_daleth", XK_hebrew_daleth},
1148 	{"hebrew_he", XK_hebrew_he},
1149 	{"hebrew_waw", XK_hebrew_waw},
1150 	{"hebrew_zain", XK_hebrew_zain},
1151 	{"hebrew_zayin", XK_hebrew_zayin},
1152 	{"hebrew_chet", XK_hebrew_chet},
1153 	{"hebrew_het", XK_hebrew_het},
1154 	{"hebrew_tet", XK_hebrew_tet},
1155 	{"hebrew_teth", XK_hebrew_teth},
1156 	{"hebrew_yod", XK_hebrew_yod},
1157 	{"hebrew_finalkaph", XK_hebrew_finalkaph},
1158 	{"hebrew_kaph", XK_hebrew_kaph},
1159 	{"hebrew_lamed", XK_hebrew_lamed},
1160 	{"hebrew_finalmem", XK_hebrew_finalmem},
1161 	{"hebrew_mem", XK_hebrew_mem},
1162 	{"hebrew_finalnun", XK_hebrew_finalnun},
1163 	{"hebrew_nun", XK_hebrew_nun},
1164 	{"hebrew_samech", XK_hebrew_samech},
1165 	{"hebrew_samekh", XK_hebrew_samekh},
1166 	{"hebrew_ayin", XK_hebrew_ayin},
1167 	{"hebrew_finalpe", XK_hebrew_finalpe},
1168 	{"hebrew_pe", XK_hebrew_pe},
1169 	{"hebrew_finalzade", XK_hebrew_finalzade},
1170 	{"hebrew_finalzadi", XK_hebrew_finalzadi},
1171 	{"hebrew_zade", XK_hebrew_zade},
1172 	{"hebrew_zadi", XK_hebrew_zadi},
1173 	{"hebrew_qoph", XK_hebrew_qoph},
1174 	{"hebrew_kuf", XK_hebrew_kuf},
1175 	{"hebrew_resh", XK_hebrew_resh},
1176 	{"hebrew_shin", XK_hebrew_shin},
1177 	{"hebrew_taw", XK_hebrew_taw},
1178 	{"hebrew_taf", XK_hebrew_taf},
1179 	{"Hebrew_switch", XK_Hebrew_switch},
1180 #endif /* XK_HEBREW */
1181 #ifdef XK_THAI
1182 	{"Thai_kokai", XK_Thai_kokai},
1183 	{"Thai_khokhai", XK_Thai_khokhai},
1184 	{"Thai_khokhuat", XK_Thai_khokhuat},
1185 	{"Thai_khokhwai", XK_Thai_khokhwai},
1186 	{"Thai_khokhon", XK_Thai_khokhon},
1187 	{"Thai_khorakhang", XK_Thai_khorakhang},
1188 	{"Thai_ngongu", XK_Thai_ngongu},
1189 	{"Thai_chochan", XK_Thai_chochan},
1190 	{"Thai_choching", XK_Thai_choching},
1191 	{"Thai_chochang", XK_Thai_chochang},
1192 	{"Thai_soso", XK_Thai_soso},
1193 	{"Thai_chochoe", XK_Thai_chochoe},
1194 	{"Thai_yoying", XK_Thai_yoying},
1195 	{"Thai_dochada", XK_Thai_dochada},
1196 	{"Thai_topatak", XK_Thai_topatak},
1197 	{"Thai_thothan", XK_Thai_thothan},
1198 	{"Thai_thonangmontho", XK_Thai_thonangmontho},
1199 	{"Thai_thophuthao", XK_Thai_thophuthao},
1200 	{"Thai_nonen", XK_Thai_nonen},
1201 	{"Thai_dodek", XK_Thai_dodek},
1202 	{"Thai_totao", XK_Thai_totao},
1203 	{"Thai_thothung", XK_Thai_thothung},
1204 	{"Thai_thothahan", XK_Thai_thothahan},
1205 	{"Thai_thothong", XK_Thai_thothong},
1206 	{"Thai_nonu", XK_Thai_nonu},
1207 	{"Thai_bobaimai", XK_Thai_bobaimai},
1208 	{"Thai_popla", XK_Thai_popla},
1209 	{"Thai_phophung", XK_Thai_phophung},
1210 	{"Thai_fofa", XK_Thai_fofa},
1211 	{"Thai_phophan", XK_Thai_phophan},
1212 	{"Thai_fofan", XK_Thai_fofan},
1213 	{"Thai_phosamphao", XK_Thai_phosamphao},
1214 	{"Thai_moma", XK_Thai_moma},
1215 	{"Thai_yoyak", XK_Thai_yoyak},
1216 	{"Thai_rorua", XK_Thai_rorua},
1217 	{"Thai_ru", XK_Thai_ru},
1218 	{"Thai_loling", XK_Thai_loling},
1219 	{"Thai_lu", XK_Thai_lu},
1220 	{"Thai_wowaen", XK_Thai_wowaen},
1221 	{"Thai_sosala", XK_Thai_sosala},
1222 	{"Thai_sorusi", XK_Thai_sorusi},
1223 	{"Thai_sosua", XK_Thai_sosua},
1224 	{"Thai_hohip", XK_Thai_hohip},
1225 	{"Thai_lochula", XK_Thai_lochula},
1226 	{"Thai_oang", XK_Thai_oang},
1227 	{"Thai_honokhuk", XK_Thai_honokhuk},
1228 	{"Thai_paiyannoi", XK_Thai_paiyannoi},
1229 	{"Thai_saraa", XK_Thai_saraa},
1230 	{"Thai_maihanakat", XK_Thai_maihanakat},
1231 	{"Thai_saraaa", XK_Thai_saraaa},
1232 	{"Thai_saraam", XK_Thai_saraam},
1233 	{"Thai_sarai", XK_Thai_sarai},
1234 	{"Thai_saraii", XK_Thai_saraii},
1235 	{"Thai_saraue", XK_Thai_saraue},
1236 	{"Thai_sarauee", XK_Thai_sarauee},
1237 	{"Thai_sarau", XK_Thai_sarau},
1238 	{"Thai_sarauu", XK_Thai_sarauu},
1239 	{"Thai_phinthu", XK_Thai_phinthu},
1240 	{"Thai_maihanakat_maitho", XK_Thai_maihanakat_maitho},
1241 	{"Thai_baht", XK_Thai_baht},
1242 	{"Thai_sarae", XK_Thai_sarae},
1243 	{"Thai_saraae", XK_Thai_saraae},
1244 	{"Thai_sarao", XK_Thai_sarao},
1245 	{"Thai_saraaimaimuan", XK_Thai_saraaimaimuan},
1246 	{"Thai_saraaimaimalai", XK_Thai_saraaimaimalai},
1247 	{"Thai_lakkhangyao", XK_Thai_lakkhangyao},
1248 	{"Thai_maiyamok", XK_Thai_maiyamok},
1249 	{"Thai_maitaikhu", XK_Thai_maitaikhu},
1250 	{"Thai_maiek", XK_Thai_maiek},
1251 	{"Thai_maitho", XK_Thai_maitho},
1252 	{"Thai_maitri", XK_Thai_maitri},
1253 	{"Thai_maichattawa", XK_Thai_maichattawa},
1254 	{"Thai_thanthakhat", XK_Thai_thanthakhat},
1255 	{"Thai_nikhahit", XK_Thai_nikhahit},
1256 	{"Thai_leksun", XK_Thai_leksun},
1257 	{"Thai_leknung", XK_Thai_leknung},
1258 	{"Thai_leksong", XK_Thai_leksong},
1259 	{"Thai_leksam", XK_Thai_leksam},
1260 	{"Thai_leksi", XK_Thai_leksi},
1261 	{"Thai_lekha", XK_Thai_lekha},
1262 	{"Thai_lekhok", XK_Thai_lekhok},
1263 	{"Thai_lekchet", XK_Thai_lekchet},
1264 	{"Thai_lekpaet", XK_Thai_lekpaet},
1265 	{"Thai_lekkao", XK_Thai_lekkao},
1266 #endif /* XK_THAI */
1267 #ifdef XK_KOREAN
1268 	{"Hangul", XK_Hangul},
1269 	{"Hangul_Start", XK_Hangul_Start},
1270 	{"Hangul_End", XK_Hangul_End},
1271 	{"Hangul_Hanja", XK_Hangul_Hanja},
1272 	{"Hangul_Jamo", XK_Hangul_Jamo},
1273 	{"Hangul_Romaja", XK_Hangul_Romaja},
1274 	{"Hangul_Codeinput", XK_Hangul_Codeinput},
1275 	{"Hangul_Jeonja", XK_Hangul_Jeonja},
1276 	{"Hangul_Banja", XK_Hangul_Banja},
1277 	{"Hangul_PreHanja", XK_Hangul_PreHanja},
1278 	{"Hangul_PostHanja", XK_Hangul_PostHanja},
1279 	{"Hangul_SingleCandidate", XK_Hangul_SingleCandidate},
1280 	{"Hangul_MultipleCandidate", XK_Hangul_MultipleCandidate},
1281 	{"Hangul_PreviousCandidate", XK_Hangul_PreviousCandidate},
1282 	{"Hangul_Special", XK_Hangul_Special},
1283 	{"Hangul_switch", XK_Hangul_switch},
1284 	{"Hangul_Kiyeog", XK_Hangul_Kiyeog},
1285 	{"Hangul_SsangKiyeog", XK_Hangul_SsangKiyeog},
1286 	{"Hangul_KiyeogSios", XK_Hangul_KiyeogSios},
1287 	{"Hangul_Nieun", XK_Hangul_Nieun},
1288 	{"Hangul_NieunJieuj", XK_Hangul_NieunJieuj},
1289 	{"Hangul_NieunHieuh", XK_Hangul_NieunHieuh},
1290 	{"Hangul_Dikeud", XK_Hangul_Dikeud},
1291 	{"Hangul_SsangDikeud", XK_Hangul_SsangDikeud},
1292 	{"Hangul_Rieul", XK_Hangul_Rieul},
1293 	{"Hangul_RieulKiyeog", XK_Hangul_RieulKiyeog},
1294 	{"Hangul_RieulMieum", XK_Hangul_RieulMieum},
1295 	{"Hangul_RieulPieub", XK_Hangul_RieulPieub},
1296 	{"Hangul_RieulSios", XK_Hangul_RieulSios},
1297 	{"Hangul_RieulTieut", XK_Hangul_RieulTieut},
1298 	{"Hangul_RieulPhieuf", XK_Hangul_RieulPhieuf},
1299 	{"Hangul_RieulHieuh", XK_Hangul_RieulHieuh},
1300 	{"Hangul_Mieum", XK_Hangul_Mieum},
1301 	{"Hangul_Pieub", XK_Hangul_Pieub},
1302 	{"Hangul_SsangPieub", XK_Hangul_SsangPieub},
1303 	{"Hangul_PieubSios", XK_Hangul_PieubSios},
1304 	{"Hangul_Sios", XK_Hangul_Sios},
1305 	{"Hangul_SsangSios", XK_Hangul_SsangSios},
1306 	{"Hangul_Ieung", XK_Hangul_Ieung},
1307 	{"Hangul_Jieuj", XK_Hangul_Jieuj},
1308 	{"Hangul_SsangJieuj", XK_Hangul_SsangJieuj},
1309 	{"Hangul_Cieuc", XK_Hangul_Cieuc},
1310 	{"Hangul_Khieuq", XK_Hangul_Khieuq},
1311 	{"Hangul_Tieut", XK_Hangul_Tieut},
1312 	{"Hangul_Phieuf", XK_Hangul_Phieuf},
1313 	{"Hangul_Hieuh", XK_Hangul_Hieuh},
1314 	{"Hangul_A", XK_Hangul_A},
1315 	{"Hangul_AE", XK_Hangul_AE},
1316 	{"Hangul_YA", XK_Hangul_YA},
1317 	{"Hangul_YAE", XK_Hangul_YAE},
1318 	{"Hangul_EO", XK_Hangul_EO},
1319 	{"Hangul_E", XK_Hangul_E},
1320 	{"Hangul_YEO", XK_Hangul_YEO},
1321 	{"Hangul_YE", XK_Hangul_YE},
1322 	{"Hangul_O", XK_Hangul_O},
1323 	{"Hangul_WA", XK_Hangul_WA},
1324 	{"Hangul_WAE", XK_Hangul_WAE},
1325 	{"Hangul_OE", XK_Hangul_OE},
1326 	{"Hangul_YO", XK_Hangul_YO},
1327 	{"Hangul_U", XK_Hangul_U},
1328 	{"Hangul_WEO", XK_Hangul_WEO},
1329 	{"Hangul_WE", XK_Hangul_WE},
1330 	{"Hangul_WI", XK_Hangul_WI},
1331 	{"Hangul_YU", XK_Hangul_YU},
1332 	{"Hangul_EU", XK_Hangul_EU},
1333 	{"Hangul_YI", XK_Hangul_YI},
1334 	{"Hangul_I", XK_Hangul_I},
1335 	{"Hangul_J_Kiyeog", XK_Hangul_J_Kiyeog},
1336 	{"Hangul_J_SsangKiyeog", XK_Hangul_J_SsangKiyeog},
1337 	{"Hangul_J_KiyeogSios", XK_Hangul_J_KiyeogSios},
1338 	{"Hangul_J_Nieun", XK_Hangul_J_Nieun},
1339 	{"Hangul_J_NieunJieuj", XK_Hangul_J_NieunJieuj},
1340 	{"Hangul_J_NieunHieuh", XK_Hangul_J_NieunHieuh},
1341 	{"Hangul_J_Dikeud", XK_Hangul_J_Dikeud},
1342 	{"Hangul_J_Rieul", XK_Hangul_J_Rieul},
1343 	{"Hangul_J_RieulKiyeog", XK_Hangul_J_RieulKiyeog},
1344 	{"Hangul_J_RieulMieum", XK_Hangul_J_RieulMieum},
1345 	{"Hangul_J_RieulPieub", XK_Hangul_J_RieulPieub},
1346 	{"Hangul_J_RieulSios", XK_Hangul_J_RieulSios},
1347 	{"Hangul_J_RieulTieut", XK_Hangul_J_RieulTieut},
1348 	{"Hangul_J_RieulPhieuf", XK_Hangul_J_RieulPhieuf},
1349 	{"Hangul_J_RieulHieuh", XK_Hangul_J_RieulHieuh},
1350 	{"Hangul_J_Mieum", XK_Hangul_J_Mieum},
1351 	{"Hangul_J_Pieub", XK_Hangul_J_Pieub},
1352 	{"Hangul_J_PieubSios", XK_Hangul_J_PieubSios},
1353 	{"Hangul_J_Sios", XK_Hangul_J_Sios},
1354 	{"Hangul_J_SsangSios", XK_Hangul_J_SsangSios},
1355 	{"Hangul_J_Ieung", XK_Hangul_J_Ieung},
1356 	{"Hangul_J_Jieuj", XK_Hangul_J_Jieuj},
1357 	{"Hangul_J_Cieuc", XK_Hangul_J_Cieuc},
1358 	{"Hangul_J_Khieuq", XK_Hangul_J_Khieuq},
1359 	{"Hangul_J_Tieut", XK_Hangul_J_Tieut},
1360 	{"Hangul_J_Phieuf", XK_Hangul_J_Phieuf},
1361 	{"Hangul_J_Hieuh", XK_Hangul_J_Hieuh},
1362 	{"Hangul_RieulYeorinHieuh", XK_Hangul_RieulYeorinHieuh},
1363 	{"Hangul_SunkyeongeumMieum", XK_Hangul_SunkyeongeumMieum},
1364 	{"Hangul_SunkyeongeumPieub", XK_Hangul_SunkyeongeumPieub},
1365 	{"Hangul_PanSios", XK_Hangul_PanSios},
1366 	{"Hangul_KkogjiDalrinIeung", XK_Hangul_KkogjiDalrinIeung},
1367 	{"Hangul_SunkyeongeumPhieuf", XK_Hangul_SunkyeongeumPhieuf},
1368 	{"Hangul_YeorinHieuh", XK_Hangul_YeorinHieuh},
1369 	{"Hangul_AraeA", XK_Hangul_AraeA},
1370 	{"Hangul_AraeAE", XK_Hangul_AraeAE},
1371 	{"Hangul_J_PanSios", XK_Hangul_J_PanSios},
1372 	{"Hangul_J_KkogjiDalrinIeung", XK_Hangul_J_KkogjiDalrinIeung},
1373 	{"Hangul_J_YeorinHieuh", XK_Hangul_J_YeorinHieuh},
1374 	{"Korean_Won", XK_Korean_Won},
1375 #endif /* XK_KOREAN */
1376 	{"EuroSign", XK_EuroSign},
1377 #endif
1378 	{"NoSymbol", NoSymbol}
1379 };
1380 
1381 KeySym
XStringToKeysym(const char * str)1382 XStringToKeysym(const char *str)
1383 {
1384 	int i;
1385 	for (i = 0; StringToKeysym[i].keysym != NoSymbol
1386 	     && strcmp(StringToKeysym[i].string, str); i++);
1387 	return StringToKeysym[i].keysym;
1388 }
1389 
1390 const char *
XKeysymToString(KeySym keysym)1391 XKeysymToString(KeySym keysym)
1392 {
1393 	int i;
1394 	for (i = 0; StringToKeysym[i].keysym != NoSymbol
1395 	     && StringToKeysym[i].keysym != keysym; i++);
1396 	return StringToKeysym[i].string;
1397 }
1398 
1399 void
XDisplayKeycodes(Display * display,int * min_keycode,int * max_keycode)1400 XDisplayKeycodes(Display * display, int *min_keycode, int *max_keycode)
1401 {
1402 	/* VNC keycodes are non-existant */
1403 	*min_keycode = 0xffff;
1404 	*max_keycode = 0;
1405 }
1406