1 #if 0
2 generated by util script makekeysyms.pl:
3 
4 -----
5 #!/usr/bin/perl
6 
7 print "#if 0\n";
8 print "generated by util script makekeysyms.pl:\n\n";
9 print "-----\n";
10 system("cat $0");
11 print "-----\n";
12 print "#endif\n\n";
13 
14 # probably should use rfb/keysym.h:
15 $file = shift;
16 $file = "/usr/X11R6/include/X11/keysymdef.h" unless $file;
17 
18 open(KS, "<$file") || die "$file: $!";
19 
20 while (<KS>) {
21 	chomp;
22 	next if /^#define (XK_MISCELLANY|XK_XKB_KEYS|XK_LATIN1|XK_LATIN2|XK_LATIN3|XK_LATIN4|XK_GREEK)/;
23 	next if /^#define (XK_LATIN8|XK_LATIN9|XK_CAUCASUS|XK_KATAKANA|XK_ARABIC|XK_CYRILLIC|XK_HEBREW|XK_THAI|XK_KOREAN|XK_ARMENIAN|XK_GEORGIAN|XK_VIETNAMESE|XK_CURRENCY)/;
24 	if (/^#define\s+(XK_\w+)/) {
25 		push @xk, $1;
26 	} elsif (/^#(ifdef|ifndef|endif)/) {
27 		$_ =~ s/ifndef XK_0/ifndef XK_0_nosuch/;
28 		push @xk, $_;
29 	}
30 }
31 close(KS);
32 
33 print <<"END";
34 
35 KeySym XStringToKeysym(char *s) {
36 END
37 foreach $ks (@xk) {
38 	$s = $ks;
39 	if ($ks =~ /#/) {
40 		print "$ks\n";
41 		next;
42 	}
43 	$s =~ s/^XK_//;
44 	print "	if (!strcmp(s, \"$s\")) return $ks;\n";
45 }
46 print <<"END";
47 	return NoSymbol;
48 }
49 
50 END
51 
52 print <<"END";
53 
54 char *XKeysymToString(KeySym k) {
55 END
56 foreach $ks (@xk) {
57 	$s = $ks;
58 	if ($ks =~ /#/) {
59 		print "$ks\n";
60 		next;
61 	}
62 	$s =~ s/^XK_//;
63 	print "	if (k == $ks) return \"$s\";\n";
64 }
65 print <<"END";
66 	return NULL;
67 }
68 
69 KeySym XKeycodeToKeysym(Display *display, KeyCode keycode, int index) {
70 	return NoSymbol;
71 }
72 
73 KeyCode XKeysymToKeycode(Display *display, KeySym keysym) {
74 	return NoSymbol;
75 }
76 
77 XErrorHandler XSetErrorHandler (XErrorHandler h) {
78 	return h;
79 }
80 
81 END
82 
83 exit 0;
84 -----
85 #endif
86 
87 
XStringToKeysym(char * s)88 KeySym XStringToKeysym(char *s) {
89 #ifndef XK_0_nosuch
90 	if (!strcmp(s, "VoidSymbol")) return XK_VoidSymbol;
91 #ifdef XK_MISCELLANY
92 	if (!strcmp(s, "BackSpace")) return XK_BackSpace;
93 	if (!strcmp(s, "Tab")) return XK_Tab;
94 	if (!strcmp(s, "Linefeed")) return XK_Linefeed;
95 	if (!strcmp(s, "Clear")) return XK_Clear;
96 	if (!strcmp(s, "Return")) return XK_Return;
97 	if (!strcmp(s, "Pause")) return XK_Pause;
98 	if (!strcmp(s, "Scroll_Lock")) return XK_Scroll_Lock;
99 	if (!strcmp(s, "Sys_Req")) return XK_Sys_Req;
100 	if (!strcmp(s, "Escape")) return XK_Escape;
101 	if (!strcmp(s, "Delete")) return XK_Delete;
102 	if (!strcmp(s, "Multi_key")) return XK_Multi_key;
103 	if (!strcmp(s, "SingleCandidate")) return XK_SingleCandidate;
104 	if (!strcmp(s, "MultipleCandidate")) return XK_MultipleCandidate;
105 	if (!strcmp(s, "PreviousCandidate")) return XK_PreviousCandidate;
106 	if (!strcmp(s, "Kanji")) return XK_Kanji;
107 	if (!strcmp(s, "Muhenkan")) return XK_Muhenkan;
108 	if (!strcmp(s, "Henkan_Mode")) return XK_Henkan_Mode;
109 	if (!strcmp(s, "Henkan")) return XK_Henkan;
110 	if (!strcmp(s, "Romaji")) return XK_Romaji;
111 	if (!strcmp(s, "Hiragana")) return XK_Hiragana;
112 	if (!strcmp(s, "Katakana")) return XK_Katakana;
113 	if (!strcmp(s, "Hiragana_Katakana")) return XK_Hiragana_Katakana;
114 	if (!strcmp(s, "Zenkaku")) return XK_Zenkaku;
115 	if (!strcmp(s, "Hankaku")) return XK_Hankaku;
116 	if (!strcmp(s, "Zenkaku_Hankaku")) return XK_Zenkaku_Hankaku;
117 	if (!strcmp(s, "Touroku")) return XK_Touroku;
118 	if (!strcmp(s, "Massyo")) return XK_Massyo;
119 	if (!strcmp(s, "Kana_Lock")) return XK_Kana_Lock;
120 	if (!strcmp(s, "Kana_Shift")) return XK_Kana_Shift;
121 	if (!strcmp(s, "Eisu_Shift")) return XK_Eisu_Shift;
122 	if (!strcmp(s, "Eisu_toggle")) return XK_Eisu_toggle;
123 	if (!strcmp(s, "Zen_Koho")) return XK_Zen_Koho;
124 	if (!strcmp(s, "Mae_Koho")) return XK_Mae_Koho;
125 	if (!strcmp(s, "Home")) return XK_Home;
126 	if (!strcmp(s, "Left")) return XK_Left;
127 	if (!strcmp(s, "Up")) return XK_Up;
128 	if (!strcmp(s, "Right")) return XK_Right;
129 	if (!strcmp(s, "Down")) return XK_Down;
130 	if (!strcmp(s, "Prior")) return XK_Prior;
131 	if (!strcmp(s, "Page_Up")) return XK_Page_Up;
132 	if (!strcmp(s, "Next")) return XK_Next;
133 	if (!strcmp(s, "Page_Down")) return XK_Page_Down;
134 	if (!strcmp(s, "End")) return XK_End;
135 	if (!strcmp(s, "Begin")) return XK_Begin;
136 	if (!strcmp(s, "Select")) return XK_Select;
137 	if (!strcmp(s, "Print")) return XK_Print;
138 	if (!strcmp(s, "Execute")) return XK_Execute;
139 	if (!strcmp(s, "Insert")) return XK_Insert;
140 	if (!strcmp(s, "Undo")) return XK_Undo;
141 	if (!strcmp(s, "Redo")) return XK_Redo;
142 	if (!strcmp(s, "Menu")) return XK_Menu;
143 	if (!strcmp(s, "Find")) return XK_Find;
144 	if (!strcmp(s, "Cancel")) return XK_Cancel;
145 	if (!strcmp(s, "Help")) return XK_Help;
146 	if (!strcmp(s, "Break")) return XK_Break;
147 	if (!strcmp(s, "Mode_switch")) return XK_Mode_switch;
148 	if (!strcmp(s, "script_switch")) return XK_script_switch;
149 	if (!strcmp(s, "Num_Lock")) return XK_Num_Lock;
150 	if (!strcmp(s, "KP_Space")) return XK_KP_Space;
151 	if (!strcmp(s, "KP_Tab")) return XK_KP_Tab;
152 	if (!strcmp(s, "KP_Enter")) return XK_KP_Enter;
153 	if (!strcmp(s, "KP_F1")) return XK_KP_F1;
154 	if (!strcmp(s, "KP_F2")) return XK_KP_F2;
155 	if (!strcmp(s, "KP_F3")) return XK_KP_F3;
156 	if (!strcmp(s, "KP_F4")) return XK_KP_F4;
157 	if (!strcmp(s, "KP_Home")) return XK_KP_Home;
158 	if (!strcmp(s, "KP_Left")) return XK_KP_Left;
159 	if (!strcmp(s, "KP_Up")) return XK_KP_Up;
160 	if (!strcmp(s, "KP_Right")) return XK_KP_Right;
161 	if (!strcmp(s, "KP_Down")) return XK_KP_Down;
162 	if (!strcmp(s, "KP_Prior")) return XK_KP_Prior;
163 	if (!strcmp(s, "KP_Page_Up")) return XK_KP_Page_Up;
164 	if (!strcmp(s, "KP_Next")) return XK_KP_Next;
165 	if (!strcmp(s, "KP_Page_Down")) return XK_KP_Page_Down;
166 	if (!strcmp(s, "KP_End")) return XK_KP_End;
167 	if (!strcmp(s, "KP_Begin")) return XK_KP_Begin;
168 	if (!strcmp(s, "KP_Insert")) return XK_KP_Insert;
169 	if (!strcmp(s, "KP_Delete")) return XK_KP_Delete;
170 	if (!strcmp(s, "KP_Equal")) return XK_KP_Equal;
171 	if (!strcmp(s, "KP_Multiply")) return XK_KP_Multiply;
172 	if (!strcmp(s, "KP_Add")) return XK_KP_Add;
173 	if (!strcmp(s, "KP_Separator")) return XK_KP_Separator;
174 	if (!strcmp(s, "KP_Subtract")) return XK_KP_Subtract;
175 	if (!strcmp(s, "KP_Decimal")) return XK_KP_Decimal;
176 	if (!strcmp(s, "KP_Divide")) return XK_KP_Divide;
177 	if (!strcmp(s, "KP_0")) return XK_KP_0;
178 	if (!strcmp(s, "KP_1")) return XK_KP_1;
179 	if (!strcmp(s, "KP_2")) return XK_KP_2;
180 	if (!strcmp(s, "KP_3")) return XK_KP_3;
181 	if (!strcmp(s, "KP_4")) return XK_KP_4;
182 	if (!strcmp(s, "KP_5")) return XK_KP_5;
183 	if (!strcmp(s, "KP_6")) return XK_KP_6;
184 	if (!strcmp(s, "KP_7")) return XK_KP_7;
185 	if (!strcmp(s, "KP_8")) return XK_KP_8;
186 	if (!strcmp(s, "KP_9")) return XK_KP_9;
187 	if (!strcmp(s, "F1")) return XK_F1;
188 	if (!strcmp(s, "F2")) return XK_F2;
189 	if (!strcmp(s, "F3")) return XK_F3;
190 	if (!strcmp(s, "F4")) return XK_F4;
191 	if (!strcmp(s, "F5")) return XK_F5;
192 	if (!strcmp(s, "F6")) return XK_F6;
193 	if (!strcmp(s, "F7")) return XK_F7;
194 	if (!strcmp(s, "F8")) return XK_F8;
195 	if (!strcmp(s, "F9")) return XK_F9;
196 	if (!strcmp(s, "F10")) return XK_F10;
197 	if (!strcmp(s, "F11")) return XK_F11;
198 	if (!strcmp(s, "L1")) return XK_L1;
199 	if (!strcmp(s, "F12")) return XK_F12;
200 	if (!strcmp(s, "L2")) return XK_L2;
201 	if (!strcmp(s, "F13")) return XK_F13;
202 	if (!strcmp(s, "L3")) return XK_L3;
203 	if (!strcmp(s, "F14")) return XK_F14;
204 	if (!strcmp(s, "L4")) return XK_L4;
205 	if (!strcmp(s, "F15")) return XK_F15;
206 	if (!strcmp(s, "L5")) return XK_L5;
207 	if (!strcmp(s, "F16")) return XK_F16;
208 	if (!strcmp(s, "L6")) return XK_L6;
209 	if (!strcmp(s, "F17")) return XK_F17;
210 	if (!strcmp(s, "L7")) return XK_L7;
211 	if (!strcmp(s, "F18")) return XK_F18;
212 	if (!strcmp(s, "L8")) return XK_L8;
213 	if (!strcmp(s, "F19")) return XK_F19;
214 	if (!strcmp(s, "L9")) return XK_L9;
215 	if (!strcmp(s, "F20")) return XK_F20;
216 	if (!strcmp(s, "L10")) return XK_L10;
217 	if (!strcmp(s, "F21")) return XK_F21;
218 	if (!strcmp(s, "R1")) return XK_R1;
219 	if (!strcmp(s, "F22")) return XK_F22;
220 	if (!strcmp(s, "R2")) return XK_R2;
221 	if (!strcmp(s, "F23")) return XK_F23;
222 	if (!strcmp(s, "R3")) return XK_R3;
223 	if (!strcmp(s, "F24")) return XK_F24;
224 	if (!strcmp(s, "R4")) return XK_R4;
225 	if (!strcmp(s, "F25")) return XK_F25;
226 	if (!strcmp(s, "R5")) return XK_R5;
227 	if (!strcmp(s, "F26")) return XK_F26;
228 	if (!strcmp(s, "R6")) return XK_R6;
229 	if (!strcmp(s, "F27")) return XK_F27;
230 	if (!strcmp(s, "R7")) return XK_R7;
231 	if (!strcmp(s, "F28")) return XK_F28;
232 	if (!strcmp(s, "R8")) return XK_R8;
233 	if (!strcmp(s, "F29")) return XK_F29;
234 	if (!strcmp(s, "R9")) return XK_R9;
235 	if (!strcmp(s, "F30")) return XK_F30;
236 	if (!strcmp(s, "R10")) return XK_R10;
237 	if (!strcmp(s, "F31")) return XK_F31;
238 	if (!strcmp(s, "R11")) return XK_R11;
239 	if (!strcmp(s, "F32")) return XK_F32;
240 	if (!strcmp(s, "R12")) return XK_R12;
241 	if (!strcmp(s, "F33")) return XK_F33;
242 	if (!strcmp(s, "R13")) return XK_R13;
243 	if (!strcmp(s, "F34")) return XK_F34;
244 	if (!strcmp(s, "R14")) return XK_R14;
245 	if (!strcmp(s, "F35")) return XK_F35;
246 	if (!strcmp(s, "R15")) return XK_R15;
247 	if (!strcmp(s, "Shift_L")) return XK_Shift_L;
248 	if (!strcmp(s, "Shift_R")) return XK_Shift_R;
249 	if (!strcmp(s, "Control_L")) return XK_Control_L;
250 	if (!strcmp(s, "Control_R")) return XK_Control_R;
251 	if (!strcmp(s, "Caps_Lock")) return XK_Caps_Lock;
252 	if (!strcmp(s, "Shift_Lock")) return XK_Shift_Lock;
253 	if (!strcmp(s, "Meta_L")) return XK_Meta_L;
254 	if (!strcmp(s, "Meta_R")) return XK_Meta_R;
255 	if (!strcmp(s, "Alt_L")) return XK_Alt_L;
256 	if (!strcmp(s, "Alt_R")) return XK_Alt_R;
257 	if (!strcmp(s, "Super_L")) return XK_Super_L;
258 	if (!strcmp(s, "Super_R")) return XK_Super_R;
259 	if (!strcmp(s, "Hyper_L")) return XK_Hyper_L;
260 	if (!strcmp(s, "Hyper_R")) return XK_Hyper_R;
261 #endif /* XK_MISCELLANY */
262 #ifdef XK_XKB_KEYS
263 	if (!strcmp(s, "ISO_Lock")) return XK_ISO_Lock;
264 	if (!strcmp(s, "ISO_Level2_Latch")) return XK_ISO_Level2_Latch;
265 	if (!strcmp(s, "ISO_Level3_Shift")) return XK_ISO_Level3_Shift;
266 	if (!strcmp(s, "ISO_Level3_Latch")) return XK_ISO_Level3_Latch;
267 	if (!strcmp(s, "ISO_Level3_Lock")) return XK_ISO_Level3_Lock;
268 	if (!strcmp(s, "ISO_Group_Shift")) return XK_ISO_Group_Shift;
269 	if (!strcmp(s, "ISO_Group_Latch")) return XK_ISO_Group_Latch;
270 	if (!strcmp(s, "ISO_Group_Lock")) return XK_ISO_Group_Lock;
271 	if (!strcmp(s, "ISO_Next_Group")) return XK_ISO_Next_Group;
272 	if (!strcmp(s, "ISO_Next_Group_Lock")) return XK_ISO_Next_Group_Lock;
273 	if (!strcmp(s, "ISO_Prev_Group")) return XK_ISO_Prev_Group;
274 	if (!strcmp(s, "ISO_Prev_Group_Lock")) return XK_ISO_Prev_Group_Lock;
275 	if (!strcmp(s, "ISO_First_Group")) return XK_ISO_First_Group;
276 	if (!strcmp(s, "ISO_First_Group_Lock")) return XK_ISO_First_Group_Lock;
277 	if (!strcmp(s, "ISO_Last_Group")) return XK_ISO_Last_Group;
278 	if (!strcmp(s, "ISO_Last_Group_Lock")) return XK_ISO_Last_Group_Lock;
279 	if (!strcmp(s, "ISO_Left_Tab")) return XK_ISO_Left_Tab;
280 	if (!strcmp(s, "ISO_Move_Line_Up")) return XK_ISO_Move_Line_Up;
281 	if (!strcmp(s, "ISO_Move_Line_Down")) return XK_ISO_Move_Line_Down;
282 	if (!strcmp(s, "ISO_Partial_Line_Up")) return XK_ISO_Partial_Line_Up;
283 	if (!strcmp(s, "ISO_Partial_Line_Down")) return XK_ISO_Partial_Line_Down;
284 	if (!strcmp(s, "ISO_Partial_Space_Left")) return XK_ISO_Partial_Space_Left;
285 	if (!strcmp(s, "ISO_Partial_Space_Right")) return XK_ISO_Partial_Space_Right;
286 	if (!strcmp(s, "ISO_Set_Margin_Left")) return XK_ISO_Set_Margin_Left;
287 	if (!strcmp(s, "ISO_Set_Margin_Right")) return XK_ISO_Set_Margin_Right;
288 	if (!strcmp(s, "ISO_Release_Margin_Left")) return XK_ISO_Release_Margin_Left;
289 	if (!strcmp(s, "ISO_Release_Margin_Right")) return XK_ISO_Release_Margin_Right;
290 	if (!strcmp(s, "ISO_Release_Both_Margins")) return XK_ISO_Release_Both_Margins;
291 	if (!strcmp(s, "ISO_Fast_Cursor_Left")) return XK_ISO_Fast_Cursor_Left;
292 	if (!strcmp(s, "ISO_Fast_Cursor_Right")) return XK_ISO_Fast_Cursor_Right;
293 	if (!strcmp(s, "ISO_Fast_Cursor_Up")) return XK_ISO_Fast_Cursor_Up;
294 	if (!strcmp(s, "ISO_Fast_Cursor_Down")) return XK_ISO_Fast_Cursor_Down;
295 	if (!strcmp(s, "ISO_Continuous_Underline")) return XK_ISO_Continuous_Underline;
296 	if (!strcmp(s, "ISO_Discontinuous_Underline")) return XK_ISO_Discontinuous_Underline;
297 	if (!strcmp(s, "ISO_Emphasize")) return XK_ISO_Emphasize;
298 	if (!strcmp(s, "ISO_Center_Object")) return XK_ISO_Center_Object;
299 	if (!strcmp(s, "ISO_Enter")) return XK_ISO_Enter;
300 	if (!strcmp(s, "dead_grave")) return XK_dead_grave;
301 	if (!strcmp(s, "dead_acute")) return XK_dead_acute;
302 	if (!strcmp(s, "dead_circumflex")) return XK_dead_circumflex;
303 	if (!strcmp(s, "dead_tilde")) return XK_dead_tilde;
304 	if (!strcmp(s, "dead_macron")) return XK_dead_macron;
305 	if (!strcmp(s, "dead_breve")) return XK_dead_breve;
306 	if (!strcmp(s, "dead_abovedot")) return XK_dead_abovedot;
307 	if (!strcmp(s, "dead_diaeresis")) return XK_dead_diaeresis;
308 	if (!strcmp(s, "dead_abovering")) return XK_dead_abovering;
309 	if (!strcmp(s, "dead_doubleacute")) return XK_dead_doubleacute;
310 	if (!strcmp(s, "dead_caron")) return XK_dead_caron;
311 	if (!strcmp(s, "dead_cedilla")) return XK_dead_cedilla;
312 	if (!strcmp(s, "dead_ogonek")) return XK_dead_ogonek;
313 	if (!strcmp(s, "dead_iota")) return XK_dead_iota;
314 	if (!strcmp(s, "dead_voiced_sound")) return XK_dead_voiced_sound;
315 	if (!strcmp(s, "dead_semivoiced_sound")) return XK_dead_semivoiced_sound;
316 	if (!strcmp(s, "dead_belowdot")) return XK_dead_belowdot;
317 	if (!strcmp(s, "First_Virtual_Screen")) return XK_First_Virtual_Screen;
318 	if (!strcmp(s, "Prev_Virtual_Screen")) return XK_Prev_Virtual_Screen;
319 	if (!strcmp(s, "Next_Virtual_Screen")) return XK_Next_Virtual_Screen;
320 	if (!strcmp(s, "Last_Virtual_Screen")) return XK_Last_Virtual_Screen;
321 	if (!strcmp(s, "Terminate_Server")) return XK_Terminate_Server;
322 	if (!strcmp(s, "AccessX_Enable")) return XK_AccessX_Enable;
323 	if (!strcmp(s, "AccessX_Feedback_Enable")) return XK_AccessX_Feedback_Enable;
324 	if (!strcmp(s, "RepeatKeys_Enable")) return XK_RepeatKeys_Enable;
325 	if (!strcmp(s, "SlowKeys_Enable")) return XK_SlowKeys_Enable;
326 	if (!strcmp(s, "BounceKeys_Enable")) return XK_BounceKeys_Enable;
327 	if (!strcmp(s, "StickyKeys_Enable")) return XK_StickyKeys_Enable;
328 	if (!strcmp(s, "MouseKeys_Enable")) return XK_MouseKeys_Enable;
329 	if (!strcmp(s, "MouseKeys_Accel_Enable")) return XK_MouseKeys_Accel_Enable;
330 	if (!strcmp(s, "Overlay1_Enable")) return XK_Overlay1_Enable;
331 	if (!strcmp(s, "Overlay2_Enable")) return XK_Overlay2_Enable;
332 	if (!strcmp(s, "AudibleBell_Enable")) return XK_AudibleBell_Enable;
333 	if (!strcmp(s, "Pointer_Left")) return XK_Pointer_Left;
334 	if (!strcmp(s, "Pointer_Right")) return XK_Pointer_Right;
335 	if (!strcmp(s, "Pointer_Up")) return XK_Pointer_Up;
336 	if (!strcmp(s, "Pointer_Down")) return XK_Pointer_Down;
337 	if (!strcmp(s, "Pointer_UpLeft")) return XK_Pointer_UpLeft;
338 	if (!strcmp(s, "Pointer_UpRight")) return XK_Pointer_UpRight;
339 	if (!strcmp(s, "Pointer_DownLeft")) return XK_Pointer_DownLeft;
340 	if (!strcmp(s, "Pointer_DownRight")) return XK_Pointer_DownRight;
341 	if (!strcmp(s, "Pointer_Button_Dflt")) return XK_Pointer_Button_Dflt;
342 	if (!strcmp(s, "Pointer_Button1")) return XK_Pointer_Button1;
343 	if (!strcmp(s, "Pointer_Button2")) return XK_Pointer_Button2;
344 	if (!strcmp(s, "Pointer_Button3")) return XK_Pointer_Button3;
345 	if (!strcmp(s, "Pointer_Button4")) return XK_Pointer_Button4;
346 	if (!strcmp(s, "Pointer_Button5")) return XK_Pointer_Button5;
347 	if (!strcmp(s, "Pointer_DblClick_Dflt")) return XK_Pointer_DblClick_Dflt;
348 	if (!strcmp(s, "Pointer_DblClick1")) return XK_Pointer_DblClick1;
349 	if (!strcmp(s, "Pointer_DblClick2")) return XK_Pointer_DblClick2;
350 	if (!strcmp(s, "Pointer_DblClick3")) return XK_Pointer_DblClick3;
351 	if (!strcmp(s, "Pointer_DblClick4")) return XK_Pointer_DblClick4;
352 	if (!strcmp(s, "Pointer_DblClick5")) return XK_Pointer_DblClick5;
353 	if (!strcmp(s, "Pointer_Drag_Dflt")) return XK_Pointer_Drag_Dflt;
354 	if (!strcmp(s, "Pointer_Drag1")) return XK_Pointer_Drag1;
355 	if (!strcmp(s, "Pointer_Drag2")) return XK_Pointer_Drag2;
356 	if (!strcmp(s, "Pointer_Drag3")) return XK_Pointer_Drag3;
357 	if (!strcmp(s, "Pointer_Drag4")) return XK_Pointer_Drag4;
358 	if (!strcmp(s, "Pointer_Drag5")) return XK_Pointer_Drag5;
359 	if (!strcmp(s, "Pointer_EnableKeys")) return XK_Pointer_EnableKeys;
360 	if (!strcmp(s, "Pointer_Accelerate")) return XK_Pointer_Accelerate;
361 	if (!strcmp(s, "Pointer_DfltBtnNext")) return XK_Pointer_DfltBtnNext;
362 	if (!strcmp(s, "Pointer_DfltBtnPrev")) return XK_Pointer_DfltBtnPrev;
363 #endif
364 #ifdef XK_3270
365 	if (!strcmp(s, "3270_Duplicate")) return XK_3270_Duplicate;
366 	if (!strcmp(s, "3270_FieldMark")) return XK_3270_FieldMark;
367 	if (!strcmp(s, "3270_Right2")) return XK_3270_Right2;
368 	if (!strcmp(s, "3270_Left2")) return XK_3270_Left2;
369 	if (!strcmp(s, "3270_BackTab")) return XK_3270_BackTab;
370 	if (!strcmp(s, "3270_EraseEOF")) return XK_3270_EraseEOF;
371 	if (!strcmp(s, "3270_EraseInput")) return XK_3270_EraseInput;
372 	if (!strcmp(s, "3270_Reset")) return XK_3270_Reset;
373 	if (!strcmp(s, "3270_Quit")) return XK_3270_Quit;
374 	if (!strcmp(s, "3270_PA1")) return XK_3270_PA1;
375 	if (!strcmp(s, "3270_PA2")) return XK_3270_PA2;
376 	if (!strcmp(s, "3270_PA3")) return XK_3270_PA3;
377 	if (!strcmp(s, "3270_Test")) return XK_3270_Test;
378 	if (!strcmp(s, "3270_Attn")) return XK_3270_Attn;
379 	if (!strcmp(s, "3270_CursorBlink")) return XK_3270_CursorBlink;
380 	if (!strcmp(s, "3270_AltCursor")) return XK_3270_AltCursor;
381 	if (!strcmp(s, "3270_KeyClick")) return XK_3270_KeyClick;
382 	if (!strcmp(s, "3270_Jump")) return XK_3270_Jump;
383 	if (!strcmp(s, "3270_Ident")) return XK_3270_Ident;
384 	if (!strcmp(s, "3270_Rule")) return XK_3270_Rule;
385 	if (!strcmp(s, "3270_Copy")) return XK_3270_Copy;
386 	if (!strcmp(s, "3270_Play")) return XK_3270_Play;
387 	if (!strcmp(s, "3270_Setup")) return XK_3270_Setup;
388 	if (!strcmp(s, "3270_Record")) return XK_3270_Record;
389 	if (!strcmp(s, "3270_ChangeScreen")) return XK_3270_ChangeScreen;
390 	if (!strcmp(s, "3270_DeleteWord")) return XK_3270_DeleteWord;
391 	if (!strcmp(s, "3270_ExSelect")) return XK_3270_ExSelect;
392 	if (!strcmp(s, "3270_CursorSelect")) return XK_3270_CursorSelect;
393 	if (!strcmp(s, "3270_PrintScreen")) return XK_3270_PrintScreen;
394 	if (!strcmp(s, "3270_Enter")) return XK_3270_Enter;
395 #endif
396 #ifdef XK_LATIN1
397 	if (!strcmp(s, "space")) return XK_space;
398 	if (!strcmp(s, "exclam")) return XK_exclam;
399 	if (!strcmp(s, "quotedbl")) return XK_quotedbl;
400 	if (!strcmp(s, "numbersign")) return XK_numbersign;
401 	if (!strcmp(s, "dollar")) return XK_dollar;
402 	if (!strcmp(s, "percent")) return XK_percent;
403 	if (!strcmp(s, "ampersand")) return XK_ampersand;
404 	if (!strcmp(s, "apostrophe")) return XK_apostrophe;
405 	if (!strcmp(s, "quoteright")) return XK_quoteright;
406 	if (!strcmp(s, "parenleft")) return XK_parenleft;
407 	if (!strcmp(s, "parenright")) return XK_parenright;
408 	if (!strcmp(s, "asterisk")) return XK_asterisk;
409 	if (!strcmp(s, "plus")) return XK_plus;
410 	if (!strcmp(s, "comma")) return XK_comma;
411 	if (!strcmp(s, "minus")) return XK_minus;
412 	if (!strcmp(s, "period")) return XK_period;
413 	if (!strcmp(s, "slash")) return XK_slash;
414 	if (!strcmp(s, "0")) return XK_0;
415 	if (!strcmp(s, "1")) return XK_1;
416 	if (!strcmp(s, "2")) return XK_2;
417 	if (!strcmp(s, "3")) return XK_3;
418 	if (!strcmp(s, "4")) return XK_4;
419 	if (!strcmp(s, "5")) return XK_5;
420 	if (!strcmp(s, "6")) return XK_6;
421 	if (!strcmp(s, "7")) return XK_7;
422 	if (!strcmp(s, "8")) return XK_8;
423 	if (!strcmp(s, "9")) return XK_9;
424 	if (!strcmp(s, "colon")) return XK_colon;
425 	if (!strcmp(s, "semicolon")) return XK_semicolon;
426 	if (!strcmp(s, "less")) return XK_less;
427 	if (!strcmp(s, "equal")) return XK_equal;
428 	if (!strcmp(s, "greater")) return XK_greater;
429 	if (!strcmp(s, "question")) return XK_question;
430 	if (!strcmp(s, "at")) return XK_at;
431 	if (!strcmp(s, "A")) return XK_A;
432 	if (!strcmp(s, "B")) return XK_B;
433 	if (!strcmp(s, "C")) return XK_C;
434 	if (!strcmp(s, "D")) return XK_D;
435 	if (!strcmp(s, "E")) return XK_E;
436 	if (!strcmp(s, "F")) return XK_F;
437 	if (!strcmp(s, "G")) return XK_G;
438 	if (!strcmp(s, "H")) return XK_H;
439 	if (!strcmp(s, "I")) return XK_I;
440 	if (!strcmp(s, "J")) return XK_J;
441 	if (!strcmp(s, "K")) return XK_K;
442 	if (!strcmp(s, "L")) return XK_L;
443 	if (!strcmp(s, "M")) return XK_M;
444 	if (!strcmp(s, "N")) return XK_N;
445 	if (!strcmp(s, "O")) return XK_O;
446 	if (!strcmp(s, "P")) return XK_P;
447 	if (!strcmp(s, "Q")) return XK_Q;
448 	if (!strcmp(s, "R")) return XK_R;
449 	if (!strcmp(s, "S")) return XK_S;
450 	if (!strcmp(s, "T")) return XK_T;
451 	if (!strcmp(s, "U")) return XK_U;
452 	if (!strcmp(s, "V")) return XK_V;
453 	if (!strcmp(s, "W")) return XK_W;
454 	if (!strcmp(s, "X")) return XK_X;
455 	if (!strcmp(s, "Y")) return XK_Y;
456 	if (!strcmp(s, "Z")) return XK_Z;
457 	if (!strcmp(s, "bracketleft")) return XK_bracketleft;
458 	if (!strcmp(s, "backslash")) return XK_backslash;
459 	if (!strcmp(s, "bracketright")) return XK_bracketright;
460 	if (!strcmp(s, "asciicircum")) return XK_asciicircum;
461 	if (!strcmp(s, "underscore")) return XK_underscore;
462 	if (!strcmp(s, "grave")) return XK_grave;
463 	if (!strcmp(s, "quoteleft")) return XK_quoteleft;
464 	if (!strcmp(s, "a")) return XK_a;
465 	if (!strcmp(s, "b")) return XK_b;
466 	if (!strcmp(s, "c")) return XK_c;
467 	if (!strcmp(s, "d")) return XK_d;
468 	if (!strcmp(s, "e")) return XK_e;
469 	if (!strcmp(s, "f")) return XK_f;
470 	if (!strcmp(s, "g")) return XK_g;
471 	if (!strcmp(s, "h")) return XK_h;
472 	if (!strcmp(s, "i")) return XK_i;
473 	if (!strcmp(s, "j")) return XK_j;
474 	if (!strcmp(s, "k")) return XK_k;
475 	if (!strcmp(s, "l")) return XK_l;
476 	if (!strcmp(s, "m")) return XK_m;
477 	if (!strcmp(s, "n")) return XK_n;
478 	if (!strcmp(s, "o")) return XK_o;
479 	if (!strcmp(s, "p")) return XK_p;
480 	if (!strcmp(s, "q")) return XK_q;
481 	if (!strcmp(s, "r")) return XK_r;
482 	if (!strcmp(s, "s")) return XK_s;
483 	if (!strcmp(s, "t")) return XK_t;
484 	if (!strcmp(s, "u")) return XK_u;
485 	if (!strcmp(s, "v")) return XK_v;
486 	if (!strcmp(s, "w")) return XK_w;
487 	if (!strcmp(s, "x")) return XK_x;
488 	if (!strcmp(s, "y")) return XK_y;
489 	if (!strcmp(s, "z")) return XK_z;
490 	if (!strcmp(s, "braceleft")) return XK_braceleft;
491 	if (!strcmp(s, "bar")) return XK_bar;
492 	if (!strcmp(s, "braceright")) return XK_braceright;
493 	if (!strcmp(s, "asciitilde")) return XK_asciitilde;
494 	if (!strcmp(s, "nobreakspace")) return XK_nobreakspace;
495 	if (!strcmp(s, "exclamdown")) return XK_exclamdown;
496 	if (!strcmp(s, "cent")) return XK_cent;
497 	if (!strcmp(s, "sterling")) return XK_sterling;
498 	if (!strcmp(s, "currency")) return XK_currency;
499 	if (!strcmp(s, "yen")) return XK_yen;
500 	if (!strcmp(s, "brokenbar")) return XK_brokenbar;
501 	if (!strcmp(s, "section")) return XK_section;
502 	if (!strcmp(s, "diaeresis")) return XK_diaeresis;
503 	if (!strcmp(s, "copyright")) return XK_copyright;
504 	if (!strcmp(s, "ordfeminine")) return XK_ordfeminine;
505 	if (!strcmp(s, "guillemotleft")) return XK_guillemotleft;
506 	if (!strcmp(s, "notsign")) return XK_notsign;
507 	if (!strcmp(s, "hyphen")) return XK_hyphen;
508 	if (!strcmp(s, "registered")) return XK_registered;
509 	if (!strcmp(s, "macron")) return XK_macron;
510 	if (!strcmp(s, "degree")) return XK_degree;
511 	if (!strcmp(s, "plusminus")) return XK_plusminus;
512 	if (!strcmp(s, "twosuperior")) return XK_twosuperior;
513 	if (!strcmp(s, "threesuperior")) return XK_threesuperior;
514 	if (!strcmp(s, "acute")) return XK_acute;
515 	if (!strcmp(s, "mu")) return XK_mu;
516 	if (!strcmp(s, "paragraph")) return XK_paragraph;
517 	if (!strcmp(s, "periodcentered")) return XK_periodcentered;
518 	if (!strcmp(s, "cedilla")) return XK_cedilla;
519 	if (!strcmp(s, "onesuperior")) return XK_onesuperior;
520 	if (!strcmp(s, "masculine")) return XK_masculine;
521 	if (!strcmp(s, "guillemotright")) return XK_guillemotright;
522 	if (!strcmp(s, "onequarter")) return XK_onequarter;
523 	if (!strcmp(s, "onehalf")) return XK_onehalf;
524 	if (!strcmp(s, "threequarters")) return XK_threequarters;
525 	if (!strcmp(s, "questiondown")) return XK_questiondown;
526 	if (!strcmp(s, "Agrave")) return XK_Agrave;
527 	if (!strcmp(s, "Aacute")) return XK_Aacute;
528 	if (!strcmp(s, "Acircumflex")) return XK_Acircumflex;
529 	if (!strcmp(s, "Atilde")) return XK_Atilde;
530 	if (!strcmp(s, "Adiaeresis")) return XK_Adiaeresis;
531 	if (!strcmp(s, "Aring")) return XK_Aring;
532 	if (!strcmp(s, "AE")) return XK_AE;
533 	if (!strcmp(s, "Ccedilla")) return XK_Ccedilla;
534 	if (!strcmp(s, "Egrave")) return XK_Egrave;
535 	if (!strcmp(s, "Eacute")) return XK_Eacute;
536 	if (!strcmp(s, "Ecircumflex")) return XK_Ecircumflex;
537 	if (!strcmp(s, "Ediaeresis")) return XK_Ediaeresis;
538 	if (!strcmp(s, "Igrave")) return XK_Igrave;
539 	if (!strcmp(s, "Iacute")) return XK_Iacute;
540 	if (!strcmp(s, "Icircumflex")) return XK_Icircumflex;
541 	if (!strcmp(s, "Idiaeresis")) return XK_Idiaeresis;
542 	if (!strcmp(s, "ETH")) return XK_ETH;
543 	if (!strcmp(s, "Eth")) return XK_Eth;
544 	if (!strcmp(s, "Ntilde")) return XK_Ntilde;
545 	if (!strcmp(s, "Ograve")) return XK_Ograve;
546 	if (!strcmp(s, "Oacute")) return XK_Oacute;
547 	if (!strcmp(s, "Ocircumflex")) return XK_Ocircumflex;
548 	if (!strcmp(s, "Otilde")) return XK_Otilde;
549 	if (!strcmp(s, "Odiaeresis")) return XK_Odiaeresis;
550 	if (!strcmp(s, "multiply")) return XK_multiply;
551 	if (!strcmp(s, "Ooblique")) return XK_Ooblique;
552 	if (!strcmp(s, "Ugrave")) return XK_Ugrave;
553 	if (!strcmp(s, "Uacute")) return XK_Uacute;
554 	if (!strcmp(s, "Ucircumflex")) return XK_Ucircumflex;
555 	if (!strcmp(s, "Udiaeresis")) return XK_Udiaeresis;
556 	if (!strcmp(s, "Yacute")) return XK_Yacute;
557 	if (!strcmp(s, "THORN")) return XK_THORN;
558 	if (!strcmp(s, "Thorn")) return XK_Thorn;
559 	if (!strcmp(s, "ssharp")) return XK_ssharp;
560 	if (!strcmp(s, "agrave")) return XK_agrave;
561 	if (!strcmp(s, "aacute")) return XK_aacute;
562 	if (!strcmp(s, "acircumflex")) return XK_acircumflex;
563 	if (!strcmp(s, "atilde")) return XK_atilde;
564 	if (!strcmp(s, "adiaeresis")) return XK_adiaeresis;
565 	if (!strcmp(s, "aring")) return XK_aring;
566 	if (!strcmp(s, "ae")) return XK_ae;
567 	if (!strcmp(s, "ccedilla")) return XK_ccedilla;
568 	if (!strcmp(s, "egrave")) return XK_egrave;
569 	if (!strcmp(s, "eacute")) return XK_eacute;
570 	if (!strcmp(s, "ecircumflex")) return XK_ecircumflex;
571 	if (!strcmp(s, "ediaeresis")) return XK_ediaeresis;
572 	if (!strcmp(s, "igrave")) return XK_igrave;
573 	if (!strcmp(s, "iacute")) return XK_iacute;
574 	if (!strcmp(s, "icircumflex")) return XK_icircumflex;
575 	if (!strcmp(s, "idiaeresis")) return XK_idiaeresis;
576 	if (!strcmp(s, "eth")) return XK_eth;
577 	if (!strcmp(s, "ntilde")) return XK_ntilde;
578 	if (!strcmp(s, "ograve")) return XK_ograve;
579 	if (!strcmp(s, "oacute")) return XK_oacute;
580 	if (!strcmp(s, "ocircumflex")) return XK_ocircumflex;
581 	if (!strcmp(s, "otilde")) return XK_otilde;
582 	if (!strcmp(s, "odiaeresis")) return XK_odiaeresis;
583 	if (!strcmp(s, "division")) return XK_division;
584 	if (!strcmp(s, "oslash")) return XK_oslash;
585 	if (!strcmp(s, "ugrave")) return XK_ugrave;
586 	if (!strcmp(s, "uacute")) return XK_uacute;
587 	if (!strcmp(s, "ucircumflex")) return XK_ucircumflex;
588 	if (!strcmp(s, "udiaeresis")) return XK_udiaeresis;
589 	if (!strcmp(s, "yacute")) return XK_yacute;
590 	if (!strcmp(s, "thorn")) return XK_thorn;
591 	if (!strcmp(s, "ydiaeresis")) return XK_ydiaeresis;
592 #endif /* XK_LATIN1 */
593 #ifdef XK_LATIN2
594 	if (!strcmp(s, "Aogonek")) return XK_Aogonek;
595 	if (!strcmp(s, "breve")) return XK_breve;
596 	if (!strcmp(s, "Lstroke")) return XK_Lstroke;
597 	if (!strcmp(s, "Lcaron")) return XK_Lcaron;
598 	if (!strcmp(s, "Sacute")) return XK_Sacute;
599 	if (!strcmp(s, "Scaron")) return XK_Scaron;
600 	if (!strcmp(s, "Scedilla")) return XK_Scedilla;
601 	if (!strcmp(s, "Tcaron")) return XK_Tcaron;
602 	if (!strcmp(s, "Zacute")) return XK_Zacute;
603 	if (!strcmp(s, "Zcaron")) return XK_Zcaron;
604 	if (!strcmp(s, "Zabovedot")) return XK_Zabovedot;
605 	if (!strcmp(s, "aogonek")) return XK_aogonek;
606 	if (!strcmp(s, "ogonek")) return XK_ogonek;
607 	if (!strcmp(s, "lstroke")) return XK_lstroke;
608 	if (!strcmp(s, "lcaron")) return XK_lcaron;
609 	if (!strcmp(s, "sacute")) return XK_sacute;
610 	if (!strcmp(s, "caron")) return XK_caron;
611 	if (!strcmp(s, "scaron")) return XK_scaron;
612 	if (!strcmp(s, "scedilla")) return XK_scedilla;
613 	if (!strcmp(s, "tcaron")) return XK_tcaron;
614 	if (!strcmp(s, "zacute")) return XK_zacute;
615 	if (!strcmp(s, "doubleacute")) return XK_doubleacute;
616 	if (!strcmp(s, "zcaron")) return XK_zcaron;
617 	if (!strcmp(s, "zabovedot")) return XK_zabovedot;
618 	if (!strcmp(s, "Racute")) return XK_Racute;
619 	if (!strcmp(s, "Abreve")) return XK_Abreve;
620 	if (!strcmp(s, "Lacute")) return XK_Lacute;
621 	if (!strcmp(s, "Cacute")) return XK_Cacute;
622 	if (!strcmp(s, "Ccaron")) return XK_Ccaron;
623 	if (!strcmp(s, "Eogonek")) return XK_Eogonek;
624 	if (!strcmp(s, "Ecaron")) return XK_Ecaron;
625 	if (!strcmp(s, "Dcaron")) return XK_Dcaron;
626 	if (!strcmp(s, "Dstroke")) return XK_Dstroke;
627 	if (!strcmp(s, "Nacute")) return XK_Nacute;
628 	if (!strcmp(s, "Ncaron")) return XK_Ncaron;
629 	if (!strcmp(s, "Odoubleacute")) return XK_Odoubleacute;
630 	if (!strcmp(s, "Rcaron")) return XK_Rcaron;
631 	if (!strcmp(s, "Uring")) return XK_Uring;
632 	if (!strcmp(s, "Udoubleacute")) return XK_Udoubleacute;
633 	if (!strcmp(s, "Tcedilla")) return XK_Tcedilla;
634 	if (!strcmp(s, "racute")) return XK_racute;
635 	if (!strcmp(s, "abreve")) return XK_abreve;
636 	if (!strcmp(s, "lacute")) return XK_lacute;
637 	if (!strcmp(s, "cacute")) return XK_cacute;
638 	if (!strcmp(s, "ccaron")) return XK_ccaron;
639 	if (!strcmp(s, "eogonek")) return XK_eogonek;
640 	if (!strcmp(s, "ecaron")) return XK_ecaron;
641 	if (!strcmp(s, "dcaron")) return XK_dcaron;
642 	if (!strcmp(s, "dstroke")) return XK_dstroke;
643 	if (!strcmp(s, "nacute")) return XK_nacute;
644 	if (!strcmp(s, "ncaron")) return XK_ncaron;
645 	if (!strcmp(s, "odoubleacute")) return XK_odoubleacute;
646 	if (!strcmp(s, "udoubleacute")) return XK_udoubleacute;
647 	if (!strcmp(s, "rcaron")) return XK_rcaron;
648 	if (!strcmp(s, "uring")) return XK_uring;
649 	if (!strcmp(s, "tcedilla")) return XK_tcedilla;
650 	if (!strcmp(s, "abovedot")) return XK_abovedot;
651 #endif /* XK_LATIN2 */
652 #ifdef XK_LATIN3
653 	if (!strcmp(s, "Hstroke")) return XK_Hstroke;
654 	if (!strcmp(s, "Hcircumflex")) return XK_Hcircumflex;
655 	if (!strcmp(s, "Iabovedot")) return XK_Iabovedot;
656 	if (!strcmp(s, "Gbreve")) return XK_Gbreve;
657 	if (!strcmp(s, "Jcircumflex")) return XK_Jcircumflex;
658 	if (!strcmp(s, "hstroke")) return XK_hstroke;
659 	if (!strcmp(s, "hcircumflex")) return XK_hcircumflex;
660 	if (!strcmp(s, "idotless")) return XK_idotless;
661 	if (!strcmp(s, "gbreve")) return XK_gbreve;
662 	if (!strcmp(s, "jcircumflex")) return XK_jcircumflex;
663 	if (!strcmp(s, "Cabovedot")) return XK_Cabovedot;
664 	if (!strcmp(s, "Ccircumflex")) return XK_Ccircumflex;
665 	if (!strcmp(s, "Gabovedot")) return XK_Gabovedot;
666 	if (!strcmp(s, "Gcircumflex")) return XK_Gcircumflex;
667 	if (!strcmp(s, "Ubreve")) return XK_Ubreve;
668 	if (!strcmp(s, "Scircumflex")) return XK_Scircumflex;
669 	if (!strcmp(s, "cabovedot")) return XK_cabovedot;
670 	if (!strcmp(s, "ccircumflex")) return XK_ccircumflex;
671 	if (!strcmp(s, "gabovedot")) return XK_gabovedot;
672 	if (!strcmp(s, "gcircumflex")) return XK_gcircumflex;
673 	if (!strcmp(s, "ubreve")) return XK_ubreve;
674 	if (!strcmp(s, "scircumflex")) return XK_scircumflex;
675 #endif /* XK_LATIN3 */
676 #ifdef XK_LATIN4
677 	if (!strcmp(s, "kra")) return XK_kra;
678 	if (!strcmp(s, "kappa")) return XK_kappa;
679 	if (!strcmp(s, "Rcedilla")) return XK_Rcedilla;
680 	if (!strcmp(s, "Itilde")) return XK_Itilde;
681 	if (!strcmp(s, "Lcedilla")) return XK_Lcedilla;
682 	if (!strcmp(s, "Emacron")) return XK_Emacron;
683 	if (!strcmp(s, "Gcedilla")) return XK_Gcedilla;
684 	if (!strcmp(s, "Tslash")) return XK_Tslash;
685 	if (!strcmp(s, "rcedilla")) return XK_rcedilla;
686 	if (!strcmp(s, "itilde")) return XK_itilde;
687 	if (!strcmp(s, "lcedilla")) return XK_lcedilla;
688 	if (!strcmp(s, "emacron")) return XK_emacron;
689 	if (!strcmp(s, "gcedilla")) return XK_gcedilla;
690 	if (!strcmp(s, "tslash")) return XK_tslash;
691 	if (!strcmp(s, "ENG")) return XK_ENG;
692 	if (!strcmp(s, "eng")) return XK_eng;
693 	if (!strcmp(s, "Amacron")) return XK_Amacron;
694 	if (!strcmp(s, "Iogonek")) return XK_Iogonek;
695 	if (!strcmp(s, "Eabovedot")) return XK_Eabovedot;
696 	if (!strcmp(s, "Imacron")) return XK_Imacron;
697 	if (!strcmp(s, "Ncedilla")) return XK_Ncedilla;
698 	if (!strcmp(s, "Omacron")) return XK_Omacron;
699 	if (!strcmp(s, "Kcedilla")) return XK_Kcedilla;
700 	if (!strcmp(s, "Uogonek")) return XK_Uogonek;
701 	if (!strcmp(s, "Utilde")) return XK_Utilde;
702 	if (!strcmp(s, "Umacron")) return XK_Umacron;
703 	if (!strcmp(s, "amacron")) return XK_amacron;
704 	if (!strcmp(s, "iogonek")) return XK_iogonek;
705 	if (!strcmp(s, "eabovedot")) return XK_eabovedot;
706 	if (!strcmp(s, "imacron")) return XK_imacron;
707 	if (!strcmp(s, "ncedilla")) return XK_ncedilla;
708 	if (!strcmp(s, "omacron")) return XK_omacron;
709 	if (!strcmp(s, "kcedilla")) return XK_kcedilla;
710 	if (!strcmp(s, "uogonek")) return XK_uogonek;
711 	if (!strcmp(s, "utilde")) return XK_utilde;
712 	if (!strcmp(s, "umacron")) return XK_umacron;
713 #endif /* XK_LATIN4 */
714 #ifdef XK_KATAKANA
715 	if (!strcmp(s, "overline")) return XK_overline;
716 	if (!strcmp(s, "kana_fullstop")) return XK_kana_fullstop;
717 	if (!strcmp(s, "kana_openingbracket")) return XK_kana_openingbracket;
718 	if (!strcmp(s, "kana_closingbracket")) return XK_kana_closingbracket;
719 	if (!strcmp(s, "kana_comma")) return XK_kana_comma;
720 	if (!strcmp(s, "kana_conjunctive")) return XK_kana_conjunctive;
721 	if (!strcmp(s, "kana_middledot")) return XK_kana_middledot;
722 	if (!strcmp(s, "kana_WO")) return XK_kana_WO;
723 	if (!strcmp(s, "kana_a")) return XK_kana_a;
724 	if (!strcmp(s, "kana_i")) return XK_kana_i;
725 	if (!strcmp(s, "kana_u")) return XK_kana_u;
726 	if (!strcmp(s, "kana_e")) return XK_kana_e;
727 	if (!strcmp(s, "kana_o")) return XK_kana_o;
728 	if (!strcmp(s, "kana_ya")) return XK_kana_ya;
729 	if (!strcmp(s, "kana_yu")) return XK_kana_yu;
730 	if (!strcmp(s, "kana_yo")) return XK_kana_yo;
731 	if (!strcmp(s, "kana_tsu")) return XK_kana_tsu;
732 	if (!strcmp(s, "kana_tu")) return XK_kana_tu;
733 	if (!strcmp(s, "prolongedsound")) return XK_prolongedsound;
734 	if (!strcmp(s, "kana_A")) return XK_kana_A;
735 	if (!strcmp(s, "kana_I")) return XK_kana_I;
736 	if (!strcmp(s, "kana_U")) return XK_kana_U;
737 	if (!strcmp(s, "kana_E")) return XK_kana_E;
738 	if (!strcmp(s, "kana_O")) return XK_kana_O;
739 	if (!strcmp(s, "kana_KA")) return XK_kana_KA;
740 	if (!strcmp(s, "kana_KI")) return XK_kana_KI;
741 	if (!strcmp(s, "kana_KU")) return XK_kana_KU;
742 	if (!strcmp(s, "kana_KE")) return XK_kana_KE;
743 	if (!strcmp(s, "kana_KO")) return XK_kana_KO;
744 	if (!strcmp(s, "kana_SA")) return XK_kana_SA;
745 	if (!strcmp(s, "kana_SHI")) return XK_kana_SHI;
746 	if (!strcmp(s, "kana_SU")) return XK_kana_SU;
747 	if (!strcmp(s, "kana_SE")) return XK_kana_SE;
748 	if (!strcmp(s, "kana_SO")) return XK_kana_SO;
749 	if (!strcmp(s, "kana_TA")) return XK_kana_TA;
750 	if (!strcmp(s, "kana_CHI")) return XK_kana_CHI;
751 	if (!strcmp(s, "kana_TI")) return XK_kana_TI;
752 	if (!strcmp(s, "kana_TSU")) return XK_kana_TSU;
753 	if (!strcmp(s, "kana_TU")) return XK_kana_TU;
754 	if (!strcmp(s, "kana_TE")) return XK_kana_TE;
755 	if (!strcmp(s, "kana_TO")) return XK_kana_TO;
756 	if (!strcmp(s, "kana_NA")) return XK_kana_NA;
757 	if (!strcmp(s, "kana_NI")) return XK_kana_NI;
758 	if (!strcmp(s, "kana_NU")) return XK_kana_NU;
759 	if (!strcmp(s, "kana_NE")) return XK_kana_NE;
760 	if (!strcmp(s, "kana_NO")) return XK_kana_NO;
761 	if (!strcmp(s, "kana_HA")) return XK_kana_HA;
762 	if (!strcmp(s, "kana_HI")) return XK_kana_HI;
763 	if (!strcmp(s, "kana_FU")) return XK_kana_FU;
764 	if (!strcmp(s, "kana_HU")) return XK_kana_HU;
765 	if (!strcmp(s, "kana_HE")) return XK_kana_HE;
766 	if (!strcmp(s, "kana_HO")) return XK_kana_HO;
767 	if (!strcmp(s, "kana_MA")) return XK_kana_MA;
768 	if (!strcmp(s, "kana_MI")) return XK_kana_MI;
769 	if (!strcmp(s, "kana_MU")) return XK_kana_MU;
770 	if (!strcmp(s, "kana_ME")) return XK_kana_ME;
771 	if (!strcmp(s, "kana_MO")) return XK_kana_MO;
772 	if (!strcmp(s, "kana_YA")) return XK_kana_YA;
773 	if (!strcmp(s, "kana_YU")) return XK_kana_YU;
774 	if (!strcmp(s, "kana_YO")) return XK_kana_YO;
775 	if (!strcmp(s, "kana_RA")) return XK_kana_RA;
776 	if (!strcmp(s, "kana_RI")) return XK_kana_RI;
777 	if (!strcmp(s, "kana_RU")) return XK_kana_RU;
778 	if (!strcmp(s, "kana_RE")) return XK_kana_RE;
779 	if (!strcmp(s, "kana_RO")) return XK_kana_RO;
780 	if (!strcmp(s, "kana_WA")) return XK_kana_WA;
781 	if (!strcmp(s, "kana_N")) return XK_kana_N;
782 	if (!strcmp(s, "voicedsound")) return XK_voicedsound;
783 	if (!strcmp(s, "semivoicedsound")) return XK_semivoicedsound;
784 	if (!strcmp(s, "kana_switch")) return XK_kana_switch;
785 #endif /* XK_KATAKANA */
786 #ifdef XK_ARABIC
787 	if (!strcmp(s, "Arabic_comma")) return XK_Arabic_comma;
788 	if (!strcmp(s, "Arabic_semicolon")) return XK_Arabic_semicolon;
789 	if (!strcmp(s, "Arabic_question_mark")) return XK_Arabic_question_mark;
790 	if (!strcmp(s, "Arabic_hamza")) return XK_Arabic_hamza;
791 	if (!strcmp(s, "Arabic_maddaonalef")) return XK_Arabic_maddaonalef;
792 	if (!strcmp(s, "Arabic_hamzaonalef")) return XK_Arabic_hamzaonalef;
793 	if (!strcmp(s, "Arabic_hamzaonwaw")) return XK_Arabic_hamzaonwaw;
794 	if (!strcmp(s, "Arabic_hamzaunderalef")) return XK_Arabic_hamzaunderalef;
795 	if (!strcmp(s, "Arabic_hamzaonyeh")) return XK_Arabic_hamzaonyeh;
796 	if (!strcmp(s, "Arabic_alef")) return XK_Arabic_alef;
797 	if (!strcmp(s, "Arabic_beh")) return XK_Arabic_beh;
798 	if (!strcmp(s, "Arabic_tehmarbuta")) return XK_Arabic_tehmarbuta;
799 	if (!strcmp(s, "Arabic_teh")) return XK_Arabic_teh;
800 	if (!strcmp(s, "Arabic_theh")) return XK_Arabic_theh;
801 	if (!strcmp(s, "Arabic_jeem")) return XK_Arabic_jeem;
802 	if (!strcmp(s, "Arabic_hah")) return XK_Arabic_hah;
803 	if (!strcmp(s, "Arabic_khah")) return XK_Arabic_khah;
804 	if (!strcmp(s, "Arabic_dal")) return XK_Arabic_dal;
805 	if (!strcmp(s, "Arabic_thal")) return XK_Arabic_thal;
806 	if (!strcmp(s, "Arabic_ra")) return XK_Arabic_ra;
807 	if (!strcmp(s, "Arabic_zain")) return XK_Arabic_zain;
808 	if (!strcmp(s, "Arabic_seen")) return XK_Arabic_seen;
809 	if (!strcmp(s, "Arabic_sheen")) return XK_Arabic_sheen;
810 	if (!strcmp(s, "Arabic_sad")) return XK_Arabic_sad;
811 	if (!strcmp(s, "Arabic_dad")) return XK_Arabic_dad;
812 	if (!strcmp(s, "Arabic_tah")) return XK_Arabic_tah;
813 	if (!strcmp(s, "Arabic_zah")) return XK_Arabic_zah;
814 	if (!strcmp(s, "Arabic_ain")) return XK_Arabic_ain;
815 	if (!strcmp(s, "Arabic_ghain")) return XK_Arabic_ghain;
816 	if (!strcmp(s, "Arabic_tatweel")) return XK_Arabic_tatweel;
817 	if (!strcmp(s, "Arabic_feh")) return XK_Arabic_feh;
818 	if (!strcmp(s, "Arabic_qaf")) return XK_Arabic_qaf;
819 	if (!strcmp(s, "Arabic_kaf")) return XK_Arabic_kaf;
820 	if (!strcmp(s, "Arabic_lam")) return XK_Arabic_lam;
821 	if (!strcmp(s, "Arabic_meem")) return XK_Arabic_meem;
822 	if (!strcmp(s, "Arabic_noon")) return XK_Arabic_noon;
823 	if (!strcmp(s, "Arabic_ha")) return XK_Arabic_ha;
824 	if (!strcmp(s, "Arabic_heh")) return XK_Arabic_heh;
825 	if (!strcmp(s, "Arabic_waw")) return XK_Arabic_waw;
826 	if (!strcmp(s, "Arabic_alefmaksura")) return XK_Arabic_alefmaksura;
827 	if (!strcmp(s, "Arabic_yeh")) return XK_Arabic_yeh;
828 	if (!strcmp(s, "Arabic_fathatan")) return XK_Arabic_fathatan;
829 	if (!strcmp(s, "Arabic_dammatan")) return XK_Arabic_dammatan;
830 	if (!strcmp(s, "Arabic_kasratan")) return XK_Arabic_kasratan;
831 	if (!strcmp(s, "Arabic_fatha")) return XK_Arabic_fatha;
832 	if (!strcmp(s, "Arabic_damma")) return XK_Arabic_damma;
833 	if (!strcmp(s, "Arabic_kasra")) return XK_Arabic_kasra;
834 	if (!strcmp(s, "Arabic_shadda")) return XK_Arabic_shadda;
835 	if (!strcmp(s, "Arabic_sukun")) return XK_Arabic_sukun;
836 	if (!strcmp(s, "Arabic_switch")) return XK_Arabic_switch;
837 #endif /* XK_ARABIC */
838 #ifdef XK_CYRILLIC
839 	if (!strcmp(s, "Serbian_dje")) return XK_Serbian_dje;
840 	if (!strcmp(s, "Macedonia_gje")) return XK_Macedonia_gje;
841 	if (!strcmp(s, "Cyrillic_io")) return XK_Cyrillic_io;
842 	if (!strcmp(s, "Ukrainian_ie")) return XK_Ukrainian_ie;
843 	if (!strcmp(s, "Ukranian_je")) return XK_Ukranian_je;
844 	if (!strcmp(s, "Macedonia_dse")) return XK_Macedonia_dse;
845 	if (!strcmp(s, "Ukrainian_i")) return XK_Ukrainian_i;
846 	if (!strcmp(s, "Ukranian_i")) return XK_Ukranian_i;
847 	if (!strcmp(s, "Ukrainian_yi")) return XK_Ukrainian_yi;
848 	if (!strcmp(s, "Ukranian_yi")) return XK_Ukranian_yi;
849 	if (!strcmp(s, "Cyrillic_je")) return XK_Cyrillic_je;
850 	if (!strcmp(s, "Serbian_je")) return XK_Serbian_je;
851 	if (!strcmp(s, "Cyrillic_lje")) return XK_Cyrillic_lje;
852 	if (!strcmp(s, "Serbian_lje")) return XK_Serbian_lje;
853 	if (!strcmp(s, "Cyrillic_nje")) return XK_Cyrillic_nje;
854 	if (!strcmp(s, "Serbian_nje")) return XK_Serbian_nje;
855 	if (!strcmp(s, "Serbian_tshe")) return XK_Serbian_tshe;
856 	if (!strcmp(s, "Macedonia_kje")) return XK_Macedonia_kje;
857 	if (!strcmp(s, "Byelorussian_shortu")) return XK_Byelorussian_shortu;
858 	if (!strcmp(s, "Cyrillic_dzhe")) return XK_Cyrillic_dzhe;
859 	if (!strcmp(s, "Serbian_dze")) return XK_Serbian_dze;
860 	if (!strcmp(s, "numerosign")) return XK_numerosign;
861 	if (!strcmp(s, "Serbian_DJE")) return XK_Serbian_DJE;
862 	if (!strcmp(s, "Macedonia_GJE")) return XK_Macedonia_GJE;
863 	if (!strcmp(s, "Cyrillic_IO")) return XK_Cyrillic_IO;
864 	if (!strcmp(s, "Ukrainian_IE")) return XK_Ukrainian_IE;
865 	if (!strcmp(s, "Ukranian_JE")) return XK_Ukranian_JE;
866 	if (!strcmp(s, "Macedonia_DSE")) return XK_Macedonia_DSE;
867 	if (!strcmp(s, "Ukrainian_I")) return XK_Ukrainian_I;
868 	if (!strcmp(s, "Ukranian_I")) return XK_Ukranian_I;
869 	if (!strcmp(s, "Ukrainian_YI")) return XK_Ukrainian_YI;
870 	if (!strcmp(s, "Ukranian_YI")) return XK_Ukranian_YI;
871 	if (!strcmp(s, "Cyrillic_JE")) return XK_Cyrillic_JE;
872 	if (!strcmp(s, "Serbian_JE")) return XK_Serbian_JE;
873 	if (!strcmp(s, "Cyrillic_LJE")) return XK_Cyrillic_LJE;
874 	if (!strcmp(s, "Serbian_LJE")) return XK_Serbian_LJE;
875 	if (!strcmp(s, "Cyrillic_NJE")) return XK_Cyrillic_NJE;
876 	if (!strcmp(s, "Serbian_NJE")) return XK_Serbian_NJE;
877 	if (!strcmp(s, "Serbian_TSHE")) return XK_Serbian_TSHE;
878 	if (!strcmp(s, "Macedonia_KJE")) return XK_Macedonia_KJE;
879 	if (!strcmp(s, "Byelorussian_SHORTU")) return XK_Byelorussian_SHORTU;
880 	if (!strcmp(s, "Cyrillic_DZHE")) return XK_Cyrillic_DZHE;
881 	if (!strcmp(s, "Serbian_DZE")) return XK_Serbian_DZE;
882 	if (!strcmp(s, "Cyrillic_yu")) return XK_Cyrillic_yu;
883 	if (!strcmp(s, "Cyrillic_a")) return XK_Cyrillic_a;
884 	if (!strcmp(s, "Cyrillic_be")) return XK_Cyrillic_be;
885 	if (!strcmp(s, "Cyrillic_tse")) return XK_Cyrillic_tse;
886 	if (!strcmp(s, "Cyrillic_de")) return XK_Cyrillic_de;
887 	if (!strcmp(s, "Cyrillic_ie")) return XK_Cyrillic_ie;
888 	if (!strcmp(s, "Cyrillic_ef")) return XK_Cyrillic_ef;
889 	if (!strcmp(s, "Cyrillic_ghe")) return XK_Cyrillic_ghe;
890 	if (!strcmp(s, "Cyrillic_ha")) return XK_Cyrillic_ha;
891 	if (!strcmp(s, "Cyrillic_i")) return XK_Cyrillic_i;
892 	if (!strcmp(s, "Cyrillic_shorti")) return XK_Cyrillic_shorti;
893 	if (!strcmp(s, "Cyrillic_ka")) return XK_Cyrillic_ka;
894 	if (!strcmp(s, "Cyrillic_el")) return XK_Cyrillic_el;
895 	if (!strcmp(s, "Cyrillic_em")) return XK_Cyrillic_em;
896 	if (!strcmp(s, "Cyrillic_en")) return XK_Cyrillic_en;
897 	if (!strcmp(s, "Cyrillic_o")) return XK_Cyrillic_o;
898 	if (!strcmp(s, "Cyrillic_pe")) return XK_Cyrillic_pe;
899 	if (!strcmp(s, "Cyrillic_ya")) return XK_Cyrillic_ya;
900 	if (!strcmp(s, "Cyrillic_er")) return XK_Cyrillic_er;
901 	if (!strcmp(s, "Cyrillic_es")) return XK_Cyrillic_es;
902 	if (!strcmp(s, "Cyrillic_te")) return XK_Cyrillic_te;
903 	if (!strcmp(s, "Cyrillic_u")) return XK_Cyrillic_u;
904 	if (!strcmp(s, "Cyrillic_zhe")) return XK_Cyrillic_zhe;
905 	if (!strcmp(s, "Cyrillic_ve")) return XK_Cyrillic_ve;
906 	if (!strcmp(s, "Cyrillic_softsign")) return XK_Cyrillic_softsign;
907 	if (!strcmp(s, "Cyrillic_yeru")) return XK_Cyrillic_yeru;
908 	if (!strcmp(s, "Cyrillic_ze")) return XK_Cyrillic_ze;
909 	if (!strcmp(s, "Cyrillic_sha")) return XK_Cyrillic_sha;
910 	if (!strcmp(s, "Cyrillic_e")) return XK_Cyrillic_e;
911 	if (!strcmp(s, "Cyrillic_shcha")) return XK_Cyrillic_shcha;
912 	if (!strcmp(s, "Cyrillic_che")) return XK_Cyrillic_che;
913 	if (!strcmp(s, "Cyrillic_hardsign")) return XK_Cyrillic_hardsign;
914 	if (!strcmp(s, "Cyrillic_YU")) return XK_Cyrillic_YU;
915 	if (!strcmp(s, "Cyrillic_A")) return XK_Cyrillic_A;
916 	if (!strcmp(s, "Cyrillic_BE")) return XK_Cyrillic_BE;
917 	if (!strcmp(s, "Cyrillic_TSE")) return XK_Cyrillic_TSE;
918 	if (!strcmp(s, "Cyrillic_DE")) return XK_Cyrillic_DE;
919 	if (!strcmp(s, "Cyrillic_IE")) return XK_Cyrillic_IE;
920 	if (!strcmp(s, "Cyrillic_EF")) return XK_Cyrillic_EF;
921 	if (!strcmp(s, "Cyrillic_GHE")) return XK_Cyrillic_GHE;
922 	if (!strcmp(s, "Cyrillic_HA")) return XK_Cyrillic_HA;
923 	if (!strcmp(s, "Cyrillic_I")) return XK_Cyrillic_I;
924 	if (!strcmp(s, "Cyrillic_SHORTI")) return XK_Cyrillic_SHORTI;
925 	if (!strcmp(s, "Cyrillic_KA")) return XK_Cyrillic_KA;
926 	if (!strcmp(s, "Cyrillic_EL")) return XK_Cyrillic_EL;
927 	if (!strcmp(s, "Cyrillic_EM")) return XK_Cyrillic_EM;
928 	if (!strcmp(s, "Cyrillic_EN")) return XK_Cyrillic_EN;
929 	if (!strcmp(s, "Cyrillic_O")) return XK_Cyrillic_O;
930 	if (!strcmp(s, "Cyrillic_PE")) return XK_Cyrillic_PE;
931 	if (!strcmp(s, "Cyrillic_YA")) return XK_Cyrillic_YA;
932 	if (!strcmp(s, "Cyrillic_ER")) return XK_Cyrillic_ER;
933 	if (!strcmp(s, "Cyrillic_ES")) return XK_Cyrillic_ES;
934 	if (!strcmp(s, "Cyrillic_TE")) return XK_Cyrillic_TE;
935 	if (!strcmp(s, "Cyrillic_U")) return XK_Cyrillic_U;
936 	if (!strcmp(s, "Cyrillic_ZHE")) return XK_Cyrillic_ZHE;
937 	if (!strcmp(s, "Cyrillic_VE")) return XK_Cyrillic_VE;
938 	if (!strcmp(s, "Cyrillic_SOFTSIGN")) return XK_Cyrillic_SOFTSIGN;
939 	if (!strcmp(s, "Cyrillic_YERU")) return XK_Cyrillic_YERU;
940 	if (!strcmp(s, "Cyrillic_ZE")) return XK_Cyrillic_ZE;
941 	if (!strcmp(s, "Cyrillic_SHA")) return XK_Cyrillic_SHA;
942 	if (!strcmp(s, "Cyrillic_E")) return XK_Cyrillic_E;
943 	if (!strcmp(s, "Cyrillic_SHCHA")) return XK_Cyrillic_SHCHA;
944 	if (!strcmp(s, "Cyrillic_CHE")) return XK_Cyrillic_CHE;
945 	if (!strcmp(s, "Cyrillic_HARDSIGN")) return XK_Cyrillic_HARDSIGN;
946 #endif /* XK_CYRILLIC */
947 #ifdef XK_GREEK
948 	if (!strcmp(s, "Greek_ALPHAaccent")) return XK_Greek_ALPHAaccent;
949 	if (!strcmp(s, "Greek_EPSILONaccent")) return XK_Greek_EPSILONaccent;
950 	if (!strcmp(s, "Greek_ETAaccent")) return XK_Greek_ETAaccent;
951 	if (!strcmp(s, "Greek_IOTAaccent")) return XK_Greek_IOTAaccent;
952 	if (!strcmp(s, "Greek_IOTAdieresis")) return XK_Greek_IOTAdieresis;
953 	if (!strcmp(s, "Greek_OMICRONaccent")) return XK_Greek_OMICRONaccent;
954 	if (!strcmp(s, "Greek_UPSILONaccent")) return XK_Greek_UPSILONaccent;
955 	if (!strcmp(s, "Greek_UPSILONdieresis")) return XK_Greek_UPSILONdieresis;
956 	if (!strcmp(s, "Greek_OMEGAaccent")) return XK_Greek_OMEGAaccent;
957 	if (!strcmp(s, "Greek_accentdieresis")) return XK_Greek_accentdieresis;
958 	if (!strcmp(s, "Greek_horizbar")) return XK_Greek_horizbar;
959 	if (!strcmp(s, "Greek_alphaaccent")) return XK_Greek_alphaaccent;
960 	if (!strcmp(s, "Greek_epsilonaccent")) return XK_Greek_epsilonaccent;
961 	if (!strcmp(s, "Greek_etaaccent")) return XK_Greek_etaaccent;
962 	if (!strcmp(s, "Greek_iotaaccent")) return XK_Greek_iotaaccent;
963 	if (!strcmp(s, "Greek_iotadieresis")) return XK_Greek_iotadieresis;
964 	if (!strcmp(s, "Greek_iotaaccentdieresis")) return XK_Greek_iotaaccentdieresis;
965 	if (!strcmp(s, "Greek_omicronaccent")) return XK_Greek_omicronaccent;
966 	if (!strcmp(s, "Greek_upsilonaccent")) return XK_Greek_upsilonaccent;
967 	if (!strcmp(s, "Greek_upsilondieresis")) return XK_Greek_upsilondieresis;
968 	if (!strcmp(s, "Greek_upsilonaccentdieresis")) return XK_Greek_upsilonaccentdieresis;
969 	if (!strcmp(s, "Greek_omegaaccent")) return XK_Greek_omegaaccent;
970 	if (!strcmp(s, "Greek_ALPHA")) return XK_Greek_ALPHA;
971 	if (!strcmp(s, "Greek_BETA")) return XK_Greek_BETA;
972 	if (!strcmp(s, "Greek_GAMMA")) return XK_Greek_GAMMA;
973 	if (!strcmp(s, "Greek_DELTA")) return XK_Greek_DELTA;
974 	if (!strcmp(s, "Greek_EPSILON")) return XK_Greek_EPSILON;
975 	if (!strcmp(s, "Greek_ZETA")) return XK_Greek_ZETA;
976 	if (!strcmp(s, "Greek_ETA")) return XK_Greek_ETA;
977 	if (!strcmp(s, "Greek_THETA")) return XK_Greek_THETA;
978 	if (!strcmp(s, "Greek_IOTA")) return XK_Greek_IOTA;
979 	if (!strcmp(s, "Greek_KAPPA")) return XK_Greek_KAPPA;
980 	if (!strcmp(s, "Greek_LAMDA")) return XK_Greek_LAMDA;
981 	if (!strcmp(s, "Greek_LAMBDA")) return XK_Greek_LAMBDA;
982 	if (!strcmp(s, "Greek_MU")) return XK_Greek_MU;
983 	if (!strcmp(s, "Greek_NU")) return XK_Greek_NU;
984 	if (!strcmp(s, "Greek_XI")) return XK_Greek_XI;
985 	if (!strcmp(s, "Greek_OMICRON")) return XK_Greek_OMICRON;
986 	if (!strcmp(s, "Greek_PI")) return XK_Greek_PI;
987 	if (!strcmp(s, "Greek_RHO")) return XK_Greek_RHO;
988 	if (!strcmp(s, "Greek_SIGMA")) return XK_Greek_SIGMA;
989 	if (!strcmp(s, "Greek_TAU")) return XK_Greek_TAU;
990 	if (!strcmp(s, "Greek_UPSILON")) return XK_Greek_UPSILON;
991 	if (!strcmp(s, "Greek_PHI")) return XK_Greek_PHI;
992 	if (!strcmp(s, "Greek_CHI")) return XK_Greek_CHI;
993 	if (!strcmp(s, "Greek_PSI")) return XK_Greek_PSI;
994 	if (!strcmp(s, "Greek_OMEGA")) return XK_Greek_OMEGA;
995 	if (!strcmp(s, "Greek_alpha")) return XK_Greek_alpha;
996 	if (!strcmp(s, "Greek_beta")) return XK_Greek_beta;
997 	if (!strcmp(s, "Greek_gamma")) return XK_Greek_gamma;
998 	if (!strcmp(s, "Greek_delta")) return XK_Greek_delta;
999 	if (!strcmp(s, "Greek_epsilon")) return XK_Greek_epsilon;
1000 	if (!strcmp(s, "Greek_zeta")) return XK_Greek_zeta;
1001 	if (!strcmp(s, "Greek_eta")) return XK_Greek_eta;
1002 	if (!strcmp(s, "Greek_theta")) return XK_Greek_theta;
1003 	if (!strcmp(s, "Greek_iota")) return XK_Greek_iota;
1004 	if (!strcmp(s, "Greek_kappa")) return XK_Greek_kappa;
1005 	if (!strcmp(s, "Greek_lamda")) return XK_Greek_lamda;
1006 	if (!strcmp(s, "Greek_lambda")) return XK_Greek_lambda;
1007 	if (!strcmp(s, "Greek_mu")) return XK_Greek_mu;
1008 	if (!strcmp(s, "Greek_nu")) return XK_Greek_nu;
1009 	if (!strcmp(s, "Greek_xi")) return XK_Greek_xi;
1010 	if (!strcmp(s, "Greek_omicron")) return XK_Greek_omicron;
1011 	if (!strcmp(s, "Greek_pi")) return XK_Greek_pi;
1012 	if (!strcmp(s, "Greek_rho")) return XK_Greek_rho;
1013 	if (!strcmp(s, "Greek_sigma")) return XK_Greek_sigma;
1014 	if (!strcmp(s, "Greek_finalsmallsigma")) return XK_Greek_finalsmallsigma;
1015 	if (!strcmp(s, "Greek_tau")) return XK_Greek_tau;
1016 	if (!strcmp(s, "Greek_upsilon")) return XK_Greek_upsilon;
1017 	if (!strcmp(s, "Greek_phi")) return XK_Greek_phi;
1018 	if (!strcmp(s, "Greek_chi")) return XK_Greek_chi;
1019 	if (!strcmp(s, "Greek_psi")) return XK_Greek_psi;
1020 	if (!strcmp(s, "Greek_omega")) return XK_Greek_omega;
1021 	if (!strcmp(s, "Greek_switch")) return XK_Greek_switch;
1022 #endif /* XK_GREEK */
1023 #ifdef XK_TECHNICAL
1024 	if (!strcmp(s, "leftradical")) return XK_leftradical;
1025 	if (!strcmp(s, "topleftradical")) return XK_topleftradical;
1026 	if (!strcmp(s, "horizconnector")) return XK_horizconnector;
1027 	if (!strcmp(s, "topintegral")) return XK_topintegral;
1028 	if (!strcmp(s, "botintegral")) return XK_botintegral;
1029 	if (!strcmp(s, "vertconnector")) return XK_vertconnector;
1030 	if (!strcmp(s, "topleftsqbracket")) return XK_topleftsqbracket;
1031 	if (!strcmp(s, "botleftsqbracket")) return XK_botleftsqbracket;
1032 	if (!strcmp(s, "toprightsqbracket")) return XK_toprightsqbracket;
1033 	if (!strcmp(s, "botrightsqbracket")) return XK_botrightsqbracket;
1034 	if (!strcmp(s, "topleftparens")) return XK_topleftparens;
1035 	if (!strcmp(s, "botleftparens")) return XK_botleftparens;
1036 	if (!strcmp(s, "toprightparens")) return XK_toprightparens;
1037 	if (!strcmp(s, "botrightparens")) return XK_botrightparens;
1038 	if (!strcmp(s, "leftmiddlecurlybrace")) return XK_leftmiddlecurlybrace;
1039 	if (!strcmp(s, "rightmiddlecurlybrace")) return XK_rightmiddlecurlybrace;
1040 	if (!strcmp(s, "topleftsummation")) return XK_topleftsummation;
1041 	if (!strcmp(s, "botleftsummation")) return XK_botleftsummation;
1042 	if (!strcmp(s, "topvertsummationconnector")) return XK_topvertsummationconnector;
1043 	if (!strcmp(s, "botvertsummationconnector")) return XK_botvertsummationconnector;
1044 	if (!strcmp(s, "toprightsummation")) return XK_toprightsummation;
1045 	if (!strcmp(s, "botrightsummation")) return XK_botrightsummation;
1046 	if (!strcmp(s, "rightmiddlesummation")) return XK_rightmiddlesummation;
1047 	if (!strcmp(s, "lessthanequal")) return XK_lessthanequal;
1048 	if (!strcmp(s, "notequal")) return XK_notequal;
1049 	if (!strcmp(s, "greaterthanequal")) return XK_greaterthanequal;
1050 	if (!strcmp(s, "integral")) return XK_integral;
1051 	if (!strcmp(s, "therefore")) return XK_therefore;
1052 	if (!strcmp(s, "variation")) return XK_variation;
1053 	if (!strcmp(s, "infinity")) return XK_infinity;
1054 	if (!strcmp(s, "nabla")) return XK_nabla;
1055 	if (!strcmp(s, "approximate")) return XK_approximate;
1056 	if (!strcmp(s, "similarequal")) return XK_similarequal;
1057 	if (!strcmp(s, "ifonlyif")) return XK_ifonlyif;
1058 	if (!strcmp(s, "implies")) return XK_implies;
1059 	if (!strcmp(s, "identical")) return XK_identical;
1060 	if (!strcmp(s, "radical")) return XK_radical;
1061 	if (!strcmp(s, "includedin")) return XK_includedin;
1062 	if (!strcmp(s, "includes")) return XK_includes;
1063 	if (!strcmp(s, "intersection")) return XK_intersection;
1064 	if (!strcmp(s, "union")) return XK_union;
1065 	if (!strcmp(s, "logicaland")) return XK_logicaland;
1066 	if (!strcmp(s, "logicalor")) return XK_logicalor;
1067 	if (!strcmp(s, "partialderivative")) return XK_partialderivative;
1068 	if (!strcmp(s, "function")) return XK_function;
1069 	if (!strcmp(s, "leftarrow")) return XK_leftarrow;
1070 	if (!strcmp(s, "uparrow")) return XK_uparrow;
1071 	if (!strcmp(s, "rightarrow")) return XK_rightarrow;
1072 	if (!strcmp(s, "downarrow")) return XK_downarrow;
1073 #endif /* XK_TECHNICAL */
1074 #ifdef XK_SPECIAL
1075 	if (!strcmp(s, "blank")) return XK_blank;
1076 	if (!strcmp(s, "soliddiamond")) return XK_soliddiamond;
1077 	if (!strcmp(s, "checkerboard")) return XK_checkerboard;
1078 	if (!strcmp(s, "ht")) return XK_ht;
1079 	if (!strcmp(s, "ff")) return XK_ff;
1080 	if (!strcmp(s, "cr")) return XK_cr;
1081 	if (!strcmp(s, "lf")) return XK_lf;
1082 	if (!strcmp(s, "nl")) return XK_nl;
1083 	if (!strcmp(s, "vt")) return XK_vt;
1084 	if (!strcmp(s, "lowrightcorner")) return XK_lowrightcorner;
1085 	if (!strcmp(s, "uprightcorner")) return XK_uprightcorner;
1086 	if (!strcmp(s, "upleftcorner")) return XK_upleftcorner;
1087 	if (!strcmp(s, "lowleftcorner")) return XK_lowleftcorner;
1088 	if (!strcmp(s, "crossinglines")) return XK_crossinglines;
1089 	if (!strcmp(s, "horizlinescan1")) return XK_horizlinescan1;
1090 	if (!strcmp(s, "horizlinescan3")) return XK_horizlinescan3;
1091 	if (!strcmp(s, "horizlinescan5")) return XK_horizlinescan5;
1092 	if (!strcmp(s, "horizlinescan7")) return XK_horizlinescan7;
1093 	if (!strcmp(s, "horizlinescan9")) return XK_horizlinescan9;
1094 	if (!strcmp(s, "leftt")) return XK_leftt;
1095 	if (!strcmp(s, "rightt")) return XK_rightt;
1096 	if (!strcmp(s, "bott")) return XK_bott;
1097 	if (!strcmp(s, "topt")) return XK_topt;
1098 	if (!strcmp(s, "vertbar")) return XK_vertbar;
1099 #endif /* XK_SPECIAL */
1100 #ifdef XK_PUBLISHING
1101 	if (!strcmp(s, "emspace")) return XK_emspace;
1102 	if (!strcmp(s, "enspace")) return XK_enspace;
1103 	if (!strcmp(s, "em3space")) return XK_em3space;
1104 	if (!strcmp(s, "em4space")) return XK_em4space;
1105 	if (!strcmp(s, "digitspace")) return XK_digitspace;
1106 	if (!strcmp(s, "punctspace")) return XK_punctspace;
1107 	if (!strcmp(s, "thinspace")) return XK_thinspace;
1108 	if (!strcmp(s, "hairspace")) return XK_hairspace;
1109 	if (!strcmp(s, "emdash")) return XK_emdash;
1110 	if (!strcmp(s, "endash")) return XK_endash;
1111 	if (!strcmp(s, "signifblank")) return XK_signifblank;
1112 	if (!strcmp(s, "ellipsis")) return XK_ellipsis;
1113 	if (!strcmp(s, "doubbaselinedot")) return XK_doubbaselinedot;
1114 	if (!strcmp(s, "onethird")) return XK_onethird;
1115 	if (!strcmp(s, "twothirds")) return XK_twothirds;
1116 	if (!strcmp(s, "onefifth")) return XK_onefifth;
1117 	if (!strcmp(s, "twofifths")) return XK_twofifths;
1118 	if (!strcmp(s, "threefifths")) return XK_threefifths;
1119 	if (!strcmp(s, "fourfifths")) return XK_fourfifths;
1120 	if (!strcmp(s, "onesixth")) return XK_onesixth;
1121 	if (!strcmp(s, "fivesixths")) return XK_fivesixths;
1122 	if (!strcmp(s, "careof")) return XK_careof;
1123 	if (!strcmp(s, "figdash")) return XK_figdash;
1124 	if (!strcmp(s, "leftanglebracket")) return XK_leftanglebracket;
1125 	if (!strcmp(s, "decimalpoint")) return XK_decimalpoint;
1126 	if (!strcmp(s, "rightanglebracket")) return XK_rightanglebracket;
1127 	if (!strcmp(s, "marker")) return XK_marker;
1128 	if (!strcmp(s, "oneeighth")) return XK_oneeighth;
1129 	if (!strcmp(s, "threeeighths")) return XK_threeeighths;
1130 	if (!strcmp(s, "fiveeighths")) return XK_fiveeighths;
1131 	if (!strcmp(s, "seveneighths")) return XK_seveneighths;
1132 	if (!strcmp(s, "trademark")) return XK_trademark;
1133 	if (!strcmp(s, "signaturemark")) return XK_signaturemark;
1134 	if (!strcmp(s, "trademarkincircle")) return XK_trademarkincircle;
1135 	if (!strcmp(s, "leftopentriangle")) return XK_leftopentriangle;
1136 	if (!strcmp(s, "rightopentriangle")) return XK_rightopentriangle;
1137 	if (!strcmp(s, "emopencircle")) return XK_emopencircle;
1138 	if (!strcmp(s, "emopenrectangle")) return XK_emopenrectangle;
1139 	if (!strcmp(s, "leftsinglequotemark")) return XK_leftsinglequotemark;
1140 	if (!strcmp(s, "rightsinglequotemark")) return XK_rightsinglequotemark;
1141 	if (!strcmp(s, "leftdoublequotemark")) return XK_leftdoublequotemark;
1142 	if (!strcmp(s, "rightdoublequotemark")) return XK_rightdoublequotemark;
1143 	if (!strcmp(s, "prescription")) return XK_prescription;
1144 	if (!strcmp(s, "minutes")) return XK_minutes;
1145 	if (!strcmp(s, "seconds")) return XK_seconds;
1146 	if (!strcmp(s, "latincross")) return XK_latincross;
1147 	if (!strcmp(s, "hexagram")) return XK_hexagram;
1148 	if (!strcmp(s, "filledrectbullet")) return XK_filledrectbullet;
1149 	if (!strcmp(s, "filledlefttribullet")) return XK_filledlefttribullet;
1150 	if (!strcmp(s, "filledrighttribullet")) return XK_filledrighttribullet;
1151 	if (!strcmp(s, "emfilledcircle")) return XK_emfilledcircle;
1152 	if (!strcmp(s, "emfilledrect")) return XK_emfilledrect;
1153 	if (!strcmp(s, "enopencircbullet")) return XK_enopencircbullet;
1154 	if (!strcmp(s, "enopensquarebullet")) return XK_enopensquarebullet;
1155 	if (!strcmp(s, "openrectbullet")) return XK_openrectbullet;
1156 	if (!strcmp(s, "opentribulletup")) return XK_opentribulletup;
1157 	if (!strcmp(s, "opentribulletdown")) return XK_opentribulletdown;
1158 	if (!strcmp(s, "openstar")) return XK_openstar;
1159 	if (!strcmp(s, "enfilledcircbullet")) return XK_enfilledcircbullet;
1160 	if (!strcmp(s, "enfilledsqbullet")) return XK_enfilledsqbullet;
1161 	if (!strcmp(s, "filledtribulletup")) return XK_filledtribulletup;
1162 	if (!strcmp(s, "filledtribulletdown")) return XK_filledtribulletdown;
1163 	if (!strcmp(s, "leftpointer")) return XK_leftpointer;
1164 	if (!strcmp(s, "rightpointer")) return XK_rightpointer;
1165 	if (!strcmp(s, "club")) return XK_club;
1166 	if (!strcmp(s, "diamond")) return XK_diamond;
1167 	if (!strcmp(s, "heart")) return XK_heart;
1168 	if (!strcmp(s, "maltesecross")) return XK_maltesecross;
1169 	if (!strcmp(s, "dagger")) return XK_dagger;
1170 	if (!strcmp(s, "doubledagger")) return XK_doubledagger;
1171 	if (!strcmp(s, "checkmark")) return XK_checkmark;
1172 	if (!strcmp(s, "ballotcross")) return XK_ballotcross;
1173 	if (!strcmp(s, "musicalsharp")) return XK_musicalsharp;
1174 	if (!strcmp(s, "musicalflat")) return XK_musicalflat;
1175 	if (!strcmp(s, "malesymbol")) return XK_malesymbol;
1176 	if (!strcmp(s, "femalesymbol")) return XK_femalesymbol;
1177 	if (!strcmp(s, "telephone")) return XK_telephone;
1178 	if (!strcmp(s, "telephonerecorder")) return XK_telephonerecorder;
1179 	if (!strcmp(s, "phonographcopyright")) return XK_phonographcopyright;
1180 	if (!strcmp(s, "caret")) return XK_caret;
1181 	if (!strcmp(s, "singlelowquotemark")) return XK_singlelowquotemark;
1182 	if (!strcmp(s, "doublelowquotemark")) return XK_doublelowquotemark;
1183 	if (!strcmp(s, "cursor")) return XK_cursor;
1184 #endif /* XK_PUBLISHING */
1185 #ifdef XK_APL
1186 	if (!strcmp(s, "leftcaret")) return XK_leftcaret;
1187 	if (!strcmp(s, "rightcaret")) return XK_rightcaret;
1188 	if (!strcmp(s, "downcaret")) return XK_downcaret;
1189 	if (!strcmp(s, "upcaret")) return XK_upcaret;
1190 	if (!strcmp(s, "overbar")) return XK_overbar;
1191 	if (!strcmp(s, "downtack")) return XK_downtack;
1192 	if (!strcmp(s, "upshoe")) return XK_upshoe;
1193 	if (!strcmp(s, "downstile")) return XK_downstile;
1194 	if (!strcmp(s, "underbar")) return XK_underbar;
1195 	if (!strcmp(s, "jot")) return XK_jot;
1196 	if (!strcmp(s, "quad")) return XK_quad;
1197 	if (!strcmp(s, "uptack")) return XK_uptack;
1198 	if (!strcmp(s, "circle")) return XK_circle;
1199 	if (!strcmp(s, "upstile")) return XK_upstile;
1200 	if (!strcmp(s, "downshoe")) return XK_downshoe;
1201 	if (!strcmp(s, "rightshoe")) return XK_rightshoe;
1202 	if (!strcmp(s, "leftshoe")) return XK_leftshoe;
1203 	if (!strcmp(s, "lefttack")) return XK_lefttack;
1204 	if (!strcmp(s, "righttack")) return XK_righttack;
1205 #endif /* XK_APL */
1206 #ifdef XK_HEBREW
1207 	if (!strcmp(s, "hebrew_doublelowline")) return XK_hebrew_doublelowline;
1208 	if (!strcmp(s, "hebrew_aleph")) return XK_hebrew_aleph;
1209 	if (!strcmp(s, "hebrew_bet")) return XK_hebrew_bet;
1210 	if (!strcmp(s, "hebrew_beth")) return XK_hebrew_beth;
1211 	if (!strcmp(s, "hebrew_gimel")) return XK_hebrew_gimel;
1212 	if (!strcmp(s, "hebrew_gimmel")) return XK_hebrew_gimmel;
1213 	if (!strcmp(s, "hebrew_dalet")) return XK_hebrew_dalet;
1214 	if (!strcmp(s, "hebrew_daleth")) return XK_hebrew_daleth;
1215 	if (!strcmp(s, "hebrew_he")) return XK_hebrew_he;
1216 	if (!strcmp(s, "hebrew_waw")) return XK_hebrew_waw;
1217 	if (!strcmp(s, "hebrew_zain")) return XK_hebrew_zain;
1218 	if (!strcmp(s, "hebrew_zayin")) return XK_hebrew_zayin;
1219 	if (!strcmp(s, "hebrew_chet")) return XK_hebrew_chet;
1220 	if (!strcmp(s, "hebrew_het")) return XK_hebrew_het;
1221 	if (!strcmp(s, "hebrew_tet")) return XK_hebrew_tet;
1222 	if (!strcmp(s, "hebrew_teth")) return XK_hebrew_teth;
1223 	if (!strcmp(s, "hebrew_yod")) return XK_hebrew_yod;
1224 	if (!strcmp(s, "hebrew_finalkaph")) return XK_hebrew_finalkaph;
1225 	if (!strcmp(s, "hebrew_kaph")) return XK_hebrew_kaph;
1226 	if (!strcmp(s, "hebrew_lamed")) return XK_hebrew_lamed;
1227 	if (!strcmp(s, "hebrew_finalmem")) return XK_hebrew_finalmem;
1228 	if (!strcmp(s, "hebrew_mem")) return XK_hebrew_mem;
1229 	if (!strcmp(s, "hebrew_finalnun")) return XK_hebrew_finalnun;
1230 	if (!strcmp(s, "hebrew_nun")) return XK_hebrew_nun;
1231 	if (!strcmp(s, "hebrew_samech")) return XK_hebrew_samech;
1232 	if (!strcmp(s, "hebrew_samekh")) return XK_hebrew_samekh;
1233 	if (!strcmp(s, "hebrew_ayin")) return XK_hebrew_ayin;
1234 	if (!strcmp(s, "hebrew_finalpe")) return XK_hebrew_finalpe;
1235 	if (!strcmp(s, "hebrew_pe")) return XK_hebrew_pe;
1236 	if (!strcmp(s, "hebrew_finalzade")) return XK_hebrew_finalzade;
1237 	if (!strcmp(s, "hebrew_finalzadi")) return XK_hebrew_finalzadi;
1238 	if (!strcmp(s, "hebrew_zade")) return XK_hebrew_zade;
1239 	if (!strcmp(s, "hebrew_zadi")) return XK_hebrew_zadi;
1240 	if (!strcmp(s, "hebrew_qoph")) return XK_hebrew_qoph;
1241 	if (!strcmp(s, "hebrew_kuf")) return XK_hebrew_kuf;
1242 	if (!strcmp(s, "hebrew_resh")) return XK_hebrew_resh;
1243 	if (!strcmp(s, "hebrew_shin")) return XK_hebrew_shin;
1244 	if (!strcmp(s, "hebrew_taw")) return XK_hebrew_taw;
1245 	if (!strcmp(s, "hebrew_taf")) return XK_hebrew_taf;
1246 	if (!strcmp(s, "Hebrew_switch")) return XK_Hebrew_switch;
1247 #endif /* XK_HEBREW */
1248 #ifdef XK_THAI
1249 	if (!strcmp(s, "Thai_kokai")) return XK_Thai_kokai;
1250 	if (!strcmp(s, "Thai_khokhai")) return XK_Thai_khokhai;
1251 	if (!strcmp(s, "Thai_khokhuat")) return XK_Thai_khokhuat;
1252 	if (!strcmp(s, "Thai_khokhwai")) return XK_Thai_khokhwai;
1253 	if (!strcmp(s, "Thai_khokhon")) return XK_Thai_khokhon;
1254 	if (!strcmp(s, "Thai_khorakhang")) return XK_Thai_khorakhang;
1255 	if (!strcmp(s, "Thai_ngongu")) return XK_Thai_ngongu;
1256 	if (!strcmp(s, "Thai_chochan")) return XK_Thai_chochan;
1257 	if (!strcmp(s, "Thai_choching")) return XK_Thai_choching;
1258 	if (!strcmp(s, "Thai_chochang")) return XK_Thai_chochang;
1259 	if (!strcmp(s, "Thai_soso")) return XK_Thai_soso;
1260 	if (!strcmp(s, "Thai_chochoe")) return XK_Thai_chochoe;
1261 	if (!strcmp(s, "Thai_yoying")) return XK_Thai_yoying;
1262 	if (!strcmp(s, "Thai_dochada")) return XK_Thai_dochada;
1263 	if (!strcmp(s, "Thai_topatak")) return XK_Thai_topatak;
1264 	if (!strcmp(s, "Thai_thothan")) return XK_Thai_thothan;
1265 	if (!strcmp(s, "Thai_thonangmontho")) return XK_Thai_thonangmontho;
1266 	if (!strcmp(s, "Thai_thophuthao")) return XK_Thai_thophuthao;
1267 	if (!strcmp(s, "Thai_nonen")) return XK_Thai_nonen;
1268 	if (!strcmp(s, "Thai_dodek")) return XK_Thai_dodek;
1269 	if (!strcmp(s, "Thai_totao")) return XK_Thai_totao;
1270 	if (!strcmp(s, "Thai_thothung")) return XK_Thai_thothung;
1271 	if (!strcmp(s, "Thai_thothahan")) return XK_Thai_thothahan;
1272 	if (!strcmp(s, "Thai_thothong")) return XK_Thai_thothong;
1273 	if (!strcmp(s, "Thai_nonu")) return XK_Thai_nonu;
1274 	if (!strcmp(s, "Thai_bobaimai")) return XK_Thai_bobaimai;
1275 	if (!strcmp(s, "Thai_popla")) return XK_Thai_popla;
1276 	if (!strcmp(s, "Thai_phophung")) return XK_Thai_phophung;
1277 	if (!strcmp(s, "Thai_fofa")) return XK_Thai_fofa;
1278 	if (!strcmp(s, "Thai_phophan")) return XK_Thai_phophan;
1279 	if (!strcmp(s, "Thai_fofan")) return XK_Thai_fofan;
1280 	if (!strcmp(s, "Thai_phosamphao")) return XK_Thai_phosamphao;
1281 	if (!strcmp(s, "Thai_moma")) return XK_Thai_moma;
1282 	if (!strcmp(s, "Thai_yoyak")) return XK_Thai_yoyak;
1283 	if (!strcmp(s, "Thai_rorua")) return XK_Thai_rorua;
1284 	if (!strcmp(s, "Thai_ru")) return XK_Thai_ru;
1285 	if (!strcmp(s, "Thai_loling")) return XK_Thai_loling;
1286 	if (!strcmp(s, "Thai_lu")) return XK_Thai_lu;
1287 	if (!strcmp(s, "Thai_wowaen")) return XK_Thai_wowaen;
1288 	if (!strcmp(s, "Thai_sosala")) return XK_Thai_sosala;
1289 	if (!strcmp(s, "Thai_sorusi")) return XK_Thai_sorusi;
1290 	if (!strcmp(s, "Thai_sosua")) return XK_Thai_sosua;
1291 	if (!strcmp(s, "Thai_hohip")) return XK_Thai_hohip;
1292 	if (!strcmp(s, "Thai_lochula")) return XK_Thai_lochula;
1293 	if (!strcmp(s, "Thai_oang")) return XK_Thai_oang;
1294 	if (!strcmp(s, "Thai_honokhuk")) return XK_Thai_honokhuk;
1295 	if (!strcmp(s, "Thai_paiyannoi")) return XK_Thai_paiyannoi;
1296 	if (!strcmp(s, "Thai_saraa")) return XK_Thai_saraa;
1297 	if (!strcmp(s, "Thai_maihanakat")) return XK_Thai_maihanakat;
1298 	if (!strcmp(s, "Thai_saraaa")) return XK_Thai_saraaa;
1299 	if (!strcmp(s, "Thai_saraam")) return XK_Thai_saraam;
1300 	if (!strcmp(s, "Thai_sarai")) return XK_Thai_sarai;
1301 	if (!strcmp(s, "Thai_saraii")) return XK_Thai_saraii;
1302 	if (!strcmp(s, "Thai_saraue")) return XK_Thai_saraue;
1303 	if (!strcmp(s, "Thai_sarauee")) return XK_Thai_sarauee;
1304 	if (!strcmp(s, "Thai_sarau")) return XK_Thai_sarau;
1305 	if (!strcmp(s, "Thai_sarauu")) return XK_Thai_sarauu;
1306 	if (!strcmp(s, "Thai_phinthu")) return XK_Thai_phinthu;
1307 	if (!strcmp(s, "Thai_maihanakat_maitho")) return XK_Thai_maihanakat_maitho;
1308 	if (!strcmp(s, "Thai_baht")) return XK_Thai_baht;
1309 	if (!strcmp(s, "Thai_sarae")) return XK_Thai_sarae;
1310 	if (!strcmp(s, "Thai_saraae")) return XK_Thai_saraae;
1311 	if (!strcmp(s, "Thai_sarao")) return XK_Thai_sarao;
1312 	if (!strcmp(s, "Thai_saraaimaimuan")) return XK_Thai_saraaimaimuan;
1313 	if (!strcmp(s, "Thai_saraaimaimalai")) return XK_Thai_saraaimaimalai;
1314 	if (!strcmp(s, "Thai_lakkhangyao")) return XK_Thai_lakkhangyao;
1315 	if (!strcmp(s, "Thai_maiyamok")) return XK_Thai_maiyamok;
1316 	if (!strcmp(s, "Thai_maitaikhu")) return XK_Thai_maitaikhu;
1317 	if (!strcmp(s, "Thai_maiek")) return XK_Thai_maiek;
1318 	if (!strcmp(s, "Thai_maitho")) return XK_Thai_maitho;
1319 	if (!strcmp(s, "Thai_maitri")) return XK_Thai_maitri;
1320 	if (!strcmp(s, "Thai_maichattawa")) return XK_Thai_maichattawa;
1321 	if (!strcmp(s, "Thai_thanthakhat")) return XK_Thai_thanthakhat;
1322 	if (!strcmp(s, "Thai_nikhahit")) return XK_Thai_nikhahit;
1323 	if (!strcmp(s, "Thai_leksun")) return XK_Thai_leksun;
1324 	if (!strcmp(s, "Thai_leknung")) return XK_Thai_leknung;
1325 	if (!strcmp(s, "Thai_leksong")) return XK_Thai_leksong;
1326 	if (!strcmp(s, "Thai_leksam")) return XK_Thai_leksam;
1327 	if (!strcmp(s, "Thai_leksi")) return XK_Thai_leksi;
1328 	if (!strcmp(s, "Thai_lekha")) return XK_Thai_lekha;
1329 	if (!strcmp(s, "Thai_lekhok")) return XK_Thai_lekhok;
1330 	if (!strcmp(s, "Thai_lekchet")) return XK_Thai_lekchet;
1331 	if (!strcmp(s, "Thai_lekpaet")) return XK_Thai_lekpaet;
1332 	if (!strcmp(s, "Thai_lekkao")) return XK_Thai_lekkao;
1333 #endif /* XK_THAI */
1334 #ifdef XK_KOREAN
1335 	if (!strcmp(s, "Hangul")) return XK_Hangul;
1336 	if (!strcmp(s, "Hangul_Start")) return XK_Hangul_Start;
1337 	if (!strcmp(s, "Hangul_End")) return XK_Hangul_End;
1338 	if (!strcmp(s, "Hangul_Hanja")) return XK_Hangul_Hanja;
1339 	if (!strcmp(s, "Hangul_Jamo")) return XK_Hangul_Jamo;
1340 	if (!strcmp(s, "Hangul_Romaja")) return XK_Hangul_Romaja;
1341 	if (!strcmp(s, "Hangul_Codeinput")) return XK_Hangul_Codeinput;
1342 	if (!strcmp(s, "Hangul_Jeonja")) return XK_Hangul_Jeonja;
1343 	if (!strcmp(s, "Hangul_Banja")) return XK_Hangul_Banja;
1344 	if (!strcmp(s, "Hangul_PreHanja")) return XK_Hangul_PreHanja;
1345 	if (!strcmp(s, "Hangul_PostHanja")) return XK_Hangul_PostHanja;
1346 	if (!strcmp(s, "Hangul_SingleCandidate")) return XK_Hangul_SingleCandidate;
1347 	if (!strcmp(s, "Hangul_MultipleCandidate")) return XK_Hangul_MultipleCandidate;
1348 	if (!strcmp(s, "Hangul_PreviousCandidate")) return XK_Hangul_PreviousCandidate;
1349 	if (!strcmp(s, "Hangul_Special")) return XK_Hangul_Special;
1350 	if (!strcmp(s, "Hangul_switch")) return XK_Hangul_switch;
1351 	if (!strcmp(s, "Hangul_Kiyeog")) return XK_Hangul_Kiyeog;
1352 	if (!strcmp(s, "Hangul_SsangKiyeog")) return XK_Hangul_SsangKiyeog;
1353 	if (!strcmp(s, "Hangul_KiyeogSios")) return XK_Hangul_KiyeogSios;
1354 	if (!strcmp(s, "Hangul_Nieun")) return XK_Hangul_Nieun;
1355 	if (!strcmp(s, "Hangul_NieunJieuj")) return XK_Hangul_NieunJieuj;
1356 	if (!strcmp(s, "Hangul_NieunHieuh")) return XK_Hangul_NieunHieuh;
1357 	if (!strcmp(s, "Hangul_Dikeud")) return XK_Hangul_Dikeud;
1358 	if (!strcmp(s, "Hangul_SsangDikeud")) return XK_Hangul_SsangDikeud;
1359 	if (!strcmp(s, "Hangul_Rieul")) return XK_Hangul_Rieul;
1360 	if (!strcmp(s, "Hangul_RieulKiyeog")) return XK_Hangul_RieulKiyeog;
1361 	if (!strcmp(s, "Hangul_RieulMieum")) return XK_Hangul_RieulMieum;
1362 	if (!strcmp(s, "Hangul_RieulPieub")) return XK_Hangul_RieulPieub;
1363 	if (!strcmp(s, "Hangul_RieulSios")) return XK_Hangul_RieulSios;
1364 	if (!strcmp(s, "Hangul_RieulTieut")) return XK_Hangul_RieulTieut;
1365 	if (!strcmp(s, "Hangul_RieulPhieuf")) return XK_Hangul_RieulPhieuf;
1366 	if (!strcmp(s, "Hangul_RieulHieuh")) return XK_Hangul_RieulHieuh;
1367 	if (!strcmp(s, "Hangul_Mieum")) return XK_Hangul_Mieum;
1368 	if (!strcmp(s, "Hangul_Pieub")) return XK_Hangul_Pieub;
1369 	if (!strcmp(s, "Hangul_SsangPieub")) return XK_Hangul_SsangPieub;
1370 	if (!strcmp(s, "Hangul_PieubSios")) return XK_Hangul_PieubSios;
1371 	if (!strcmp(s, "Hangul_Sios")) return XK_Hangul_Sios;
1372 	if (!strcmp(s, "Hangul_SsangSios")) return XK_Hangul_SsangSios;
1373 	if (!strcmp(s, "Hangul_Ieung")) return XK_Hangul_Ieung;
1374 	if (!strcmp(s, "Hangul_Jieuj")) return XK_Hangul_Jieuj;
1375 	if (!strcmp(s, "Hangul_SsangJieuj")) return XK_Hangul_SsangJieuj;
1376 	if (!strcmp(s, "Hangul_Cieuc")) return XK_Hangul_Cieuc;
1377 	if (!strcmp(s, "Hangul_Khieuq")) return XK_Hangul_Khieuq;
1378 	if (!strcmp(s, "Hangul_Tieut")) return XK_Hangul_Tieut;
1379 	if (!strcmp(s, "Hangul_Phieuf")) return XK_Hangul_Phieuf;
1380 	if (!strcmp(s, "Hangul_Hieuh")) return XK_Hangul_Hieuh;
1381 	if (!strcmp(s, "Hangul_A")) return XK_Hangul_A;
1382 	if (!strcmp(s, "Hangul_AE")) return XK_Hangul_AE;
1383 	if (!strcmp(s, "Hangul_YA")) return XK_Hangul_YA;
1384 	if (!strcmp(s, "Hangul_YAE")) return XK_Hangul_YAE;
1385 	if (!strcmp(s, "Hangul_EO")) return XK_Hangul_EO;
1386 	if (!strcmp(s, "Hangul_E")) return XK_Hangul_E;
1387 	if (!strcmp(s, "Hangul_YEO")) return XK_Hangul_YEO;
1388 	if (!strcmp(s, "Hangul_YE")) return XK_Hangul_YE;
1389 	if (!strcmp(s, "Hangul_O")) return XK_Hangul_O;
1390 	if (!strcmp(s, "Hangul_WA")) return XK_Hangul_WA;
1391 	if (!strcmp(s, "Hangul_WAE")) return XK_Hangul_WAE;
1392 	if (!strcmp(s, "Hangul_OE")) return XK_Hangul_OE;
1393 	if (!strcmp(s, "Hangul_YO")) return XK_Hangul_YO;
1394 	if (!strcmp(s, "Hangul_U")) return XK_Hangul_U;
1395 	if (!strcmp(s, "Hangul_WEO")) return XK_Hangul_WEO;
1396 	if (!strcmp(s, "Hangul_WE")) return XK_Hangul_WE;
1397 	if (!strcmp(s, "Hangul_WI")) return XK_Hangul_WI;
1398 	if (!strcmp(s, "Hangul_YU")) return XK_Hangul_YU;
1399 	if (!strcmp(s, "Hangul_EU")) return XK_Hangul_EU;
1400 	if (!strcmp(s, "Hangul_YI")) return XK_Hangul_YI;
1401 	if (!strcmp(s, "Hangul_I")) return XK_Hangul_I;
1402 	if (!strcmp(s, "Hangul_J_Kiyeog")) return XK_Hangul_J_Kiyeog;
1403 	if (!strcmp(s, "Hangul_J_SsangKiyeog")) return XK_Hangul_J_SsangKiyeog;
1404 	if (!strcmp(s, "Hangul_J_KiyeogSios")) return XK_Hangul_J_KiyeogSios;
1405 	if (!strcmp(s, "Hangul_J_Nieun")) return XK_Hangul_J_Nieun;
1406 	if (!strcmp(s, "Hangul_J_NieunJieuj")) return XK_Hangul_J_NieunJieuj;
1407 	if (!strcmp(s, "Hangul_J_NieunHieuh")) return XK_Hangul_J_NieunHieuh;
1408 	if (!strcmp(s, "Hangul_J_Dikeud")) return XK_Hangul_J_Dikeud;
1409 	if (!strcmp(s, "Hangul_J_Rieul")) return XK_Hangul_J_Rieul;
1410 	if (!strcmp(s, "Hangul_J_RieulKiyeog")) return XK_Hangul_J_RieulKiyeog;
1411 	if (!strcmp(s, "Hangul_J_RieulMieum")) return XK_Hangul_J_RieulMieum;
1412 	if (!strcmp(s, "Hangul_J_RieulPieub")) return XK_Hangul_J_RieulPieub;
1413 	if (!strcmp(s, "Hangul_J_RieulSios")) return XK_Hangul_J_RieulSios;
1414 	if (!strcmp(s, "Hangul_J_RieulTieut")) return XK_Hangul_J_RieulTieut;
1415 	if (!strcmp(s, "Hangul_J_RieulPhieuf")) return XK_Hangul_J_RieulPhieuf;
1416 	if (!strcmp(s, "Hangul_J_RieulHieuh")) return XK_Hangul_J_RieulHieuh;
1417 	if (!strcmp(s, "Hangul_J_Mieum")) return XK_Hangul_J_Mieum;
1418 	if (!strcmp(s, "Hangul_J_Pieub")) return XK_Hangul_J_Pieub;
1419 	if (!strcmp(s, "Hangul_J_PieubSios")) return XK_Hangul_J_PieubSios;
1420 	if (!strcmp(s, "Hangul_J_Sios")) return XK_Hangul_J_Sios;
1421 	if (!strcmp(s, "Hangul_J_SsangSios")) return XK_Hangul_J_SsangSios;
1422 	if (!strcmp(s, "Hangul_J_Ieung")) return XK_Hangul_J_Ieung;
1423 	if (!strcmp(s, "Hangul_J_Jieuj")) return XK_Hangul_J_Jieuj;
1424 	if (!strcmp(s, "Hangul_J_Cieuc")) return XK_Hangul_J_Cieuc;
1425 	if (!strcmp(s, "Hangul_J_Khieuq")) return XK_Hangul_J_Khieuq;
1426 	if (!strcmp(s, "Hangul_J_Tieut")) return XK_Hangul_J_Tieut;
1427 	if (!strcmp(s, "Hangul_J_Phieuf")) return XK_Hangul_J_Phieuf;
1428 	if (!strcmp(s, "Hangul_J_Hieuh")) return XK_Hangul_J_Hieuh;
1429 	if (!strcmp(s, "Hangul_RieulYeorinHieuh")) return XK_Hangul_RieulYeorinHieuh;
1430 	if (!strcmp(s, "Hangul_SunkyeongeumMieum")) return XK_Hangul_SunkyeongeumMieum;
1431 	if (!strcmp(s, "Hangul_SunkyeongeumPieub")) return XK_Hangul_SunkyeongeumPieub;
1432 	if (!strcmp(s, "Hangul_PanSios")) return XK_Hangul_PanSios;
1433 	if (!strcmp(s, "Hangul_KkogjiDalrinIeung")) return XK_Hangul_KkogjiDalrinIeung;
1434 	if (!strcmp(s, "Hangul_SunkyeongeumPhieuf")) return XK_Hangul_SunkyeongeumPhieuf;
1435 	if (!strcmp(s, "Hangul_YeorinHieuh")) return XK_Hangul_YeorinHieuh;
1436 	if (!strcmp(s, "Hangul_AraeA")) return XK_Hangul_AraeA;
1437 	if (!strcmp(s, "Hangul_AraeAE")) return XK_Hangul_AraeAE;
1438 	if (!strcmp(s, "Hangul_J_PanSios")) return XK_Hangul_J_PanSios;
1439 	if (!strcmp(s, "Hangul_J_KkogjiDalrinIeung")) return XK_Hangul_J_KkogjiDalrinIeung;
1440 	if (!strcmp(s, "Hangul_J_YeorinHieuh")) return XK_Hangul_J_YeorinHieuh;
1441 	if (!strcmp(s, "Korean_Won")) return XK_Korean_Won;
1442 #endif /* XK_KOREAN */
1443 	if (!strcmp(s, "EuroSign")) return XK_EuroSign;
1444 #endif
1445 	return NoSymbol;
1446 }
1447 
1448 
XKeysymToString(KeySym k)1449 char *XKeysymToString(KeySym k) {
1450 #ifndef XK_0_nosuch
1451 	if (k == XK_VoidSymbol) return "VoidSymbol";
1452 #ifdef XK_MISCELLANY
1453 	if (k == XK_BackSpace) return "BackSpace";
1454 	if (k == XK_Tab) return "Tab";
1455 	if (k == XK_Linefeed) return "Linefeed";
1456 	if (k == XK_Clear) return "Clear";
1457 	if (k == XK_Return) return "Return";
1458 	if (k == XK_Pause) return "Pause";
1459 	if (k == XK_Scroll_Lock) return "Scroll_Lock";
1460 	if (k == XK_Sys_Req) return "Sys_Req";
1461 	if (k == XK_Escape) return "Escape";
1462 	if (k == XK_Delete) return "Delete";
1463 	if (k == XK_Multi_key) return "Multi_key";
1464 	if (k == XK_SingleCandidate) return "SingleCandidate";
1465 	if (k == XK_MultipleCandidate) return "MultipleCandidate";
1466 	if (k == XK_PreviousCandidate) return "PreviousCandidate";
1467 	if (k == XK_Kanji) return "Kanji";
1468 	if (k == XK_Muhenkan) return "Muhenkan";
1469 	if (k == XK_Henkan_Mode) return "Henkan_Mode";
1470 	if (k == XK_Henkan) return "Henkan";
1471 	if (k == XK_Romaji) return "Romaji";
1472 	if (k == XK_Hiragana) return "Hiragana";
1473 	if (k == XK_Katakana) return "Katakana";
1474 	if (k == XK_Hiragana_Katakana) return "Hiragana_Katakana";
1475 	if (k == XK_Zenkaku) return "Zenkaku";
1476 	if (k == XK_Hankaku) return "Hankaku";
1477 	if (k == XK_Zenkaku_Hankaku) return "Zenkaku_Hankaku";
1478 	if (k == XK_Touroku) return "Touroku";
1479 	if (k == XK_Massyo) return "Massyo";
1480 	if (k == XK_Kana_Lock) return "Kana_Lock";
1481 	if (k == XK_Kana_Shift) return "Kana_Shift";
1482 	if (k == XK_Eisu_Shift) return "Eisu_Shift";
1483 	if (k == XK_Eisu_toggle) return "Eisu_toggle";
1484 	if (k == XK_Zen_Koho) return "Zen_Koho";
1485 	if (k == XK_Mae_Koho) return "Mae_Koho";
1486 	if (k == XK_Home) return "Home";
1487 	if (k == XK_Left) return "Left";
1488 	if (k == XK_Up) return "Up";
1489 	if (k == XK_Right) return "Right";
1490 	if (k == XK_Down) return "Down";
1491 	if (k == XK_Prior) return "Prior";
1492 	if (k == XK_Page_Up) return "Page_Up";
1493 	if (k == XK_Next) return "Next";
1494 	if (k == XK_Page_Down) return "Page_Down";
1495 	if (k == XK_End) return "End";
1496 	if (k == XK_Begin) return "Begin";
1497 	if (k == XK_Select) return "Select";
1498 	if (k == XK_Print) return "Print";
1499 	if (k == XK_Execute) return "Execute";
1500 	if (k == XK_Insert) return "Insert";
1501 	if (k == XK_Undo) return "Undo";
1502 	if (k == XK_Redo) return "Redo";
1503 	if (k == XK_Menu) return "Menu";
1504 	if (k == XK_Find) return "Find";
1505 	if (k == XK_Cancel) return "Cancel";
1506 	if (k == XK_Help) return "Help";
1507 	if (k == XK_Break) return "Break";
1508 	if (k == XK_Mode_switch) return "Mode_switch";
1509 	if (k == XK_script_switch) return "script_switch";
1510 	if (k == XK_Num_Lock) return "Num_Lock";
1511 	if (k == XK_KP_Space) return "KP_Space";
1512 	if (k == XK_KP_Tab) return "KP_Tab";
1513 	if (k == XK_KP_Enter) return "KP_Enter";
1514 	if (k == XK_KP_F1) return "KP_F1";
1515 	if (k == XK_KP_F2) return "KP_F2";
1516 	if (k == XK_KP_F3) return "KP_F3";
1517 	if (k == XK_KP_F4) return "KP_F4";
1518 	if (k == XK_KP_Home) return "KP_Home";
1519 	if (k == XK_KP_Left) return "KP_Left";
1520 	if (k == XK_KP_Up) return "KP_Up";
1521 	if (k == XK_KP_Right) return "KP_Right";
1522 	if (k == XK_KP_Down) return "KP_Down";
1523 	if (k == XK_KP_Prior) return "KP_Prior";
1524 	if (k == XK_KP_Page_Up) return "KP_Page_Up";
1525 	if (k == XK_KP_Next) return "KP_Next";
1526 	if (k == XK_KP_Page_Down) return "KP_Page_Down";
1527 	if (k == XK_KP_End) return "KP_End";
1528 	if (k == XK_KP_Begin) return "KP_Begin";
1529 	if (k == XK_KP_Insert) return "KP_Insert";
1530 	if (k == XK_KP_Delete) return "KP_Delete";
1531 	if (k == XK_KP_Equal) return "KP_Equal";
1532 	if (k == XK_KP_Multiply) return "KP_Multiply";
1533 	if (k == XK_KP_Add) return "KP_Add";
1534 	if (k == XK_KP_Separator) return "KP_Separator";
1535 	if (k == XK_KP_Subtract) return "KP_Subtract";
1536 	if (k == XK_KP_Decimal) return "KP_Decimal";
1537 	if (k == XK_KP_Divide) return "KP_Divide";
1538 	if (k == XK_KP_0) return "KP_0";
1539 	if (k == XK_KP_1) return "KP_1";
1540 	if (k == XK_KP_2) return "KP_2";
1541 	if (k == XK_KP_3) return "KP_3";
1542 	if (k == XK_KP_4) return "KP_4";
1543 	if (k == XK_KP_5) return "KP_5";
1544 	if (k == XK_KP_6) return "KP_6";
1545 	if (k == XK_KP_7) return "KP_7";
1546 	if (k == XK_KP_8) return "KP_8";
1547 	if (k == XK_KP_9) return "KP_9";
1548 	if (k == XK_F1) return "F1";
1549 	if (k == XK_F2) return "F2";
1550 	if (k == XK_F3) return "F3";
1551 	if (k == XK_F4) return "F4";
1552 	if (k == XK_F5) return "F5";
1553 	if (k == XK_F6) return "F6";
1554 	if (k == XK_F7) return "F7";
1555 	if (k == XK_F8) return "F8";
1556 	if (k == XK_F9) return "F9";
1557 	if (k == XK_F10) return "F10";
1558 	if (k == XK_F11) return "F11";
1559 	if (k == XK_L1) return "L1";
1560 	if (k == XK_F12) return "F12";
1561 	if (k == XK_L2) return "L2";
1562 	if (k == XK_F13) return "F13";
1563 	if (k == XK_L3) return "L3";
1564 	if (k == XK_F14) return "F14";
1565 	if (k == XK_L4) return "L4";
1566 	if (k == XK_F15) return "F15";
1567 	if (k == XK_L5) return "L5";
1568 	if (k == XK_F16) return "F16";
1569 	if (k == XK_L6) return "L6";
1570 	if (k == XK_F17) return "F17";
1571 	if (k == XK_L7) return "L7";
1572 	if (k == XK_F18) return "F18";
1573 	if (k == XK_L8) return "L8";
1574 	if (k == XK_F19) return "F19";
1575 	if (k == XK_L9) return "L9";
1576 	if (k == XK_F20) return "F20";
1577 	if (k == XK_L10) return "L10";
1578 	if (k == XK_F21) return "F21";
1579 	if (k == XK_R1) return "R1";
1580 	if (k == XK_F22) return "F22";
1581 	if (k == XK_R2) return "R2";
1582 	if (k == XK_F23) return "F23";
1583 	if (k == XK_R3) return "R3";
1584 	if (k == XK_F24) return "F24";
1585 	if (k == XK_R4) return "R4";
1586 	if (k == XK_F25) return "F25";
1587 	if (k == XK_R5) return "R5";
1588 	if (k == XK_F26) return "F26";
1589 	if (k == XK_R6) return "R6";
1590 	if (k == XK_F27) return "F27";
1591 	if (k == XK_R7) return "R7";
1592 	if (k == XK_F28) return "F28";
1593 	if (k == XK_R8) return "R8";
1594 	if (k == XK_F29) return "F29";
1595 	if (k == XK_R9) return "R9";
1596 	if (k == XK_F30) return "F30";
1597 	if (k == XK_R10) return "R10";
1598 	if (k == XK_F31) return "F31";
1599 	if (k == XK_R11) return "R11";
1600 	if (k == XK_F32) return "F32";
1601 	if (k == XK_R12) return "R12";
1602 	if (k == XK_F33) return "F33";
1603 	if (k == XK_R13) return "R13";
1604 	if (k == XK_F34) return "F34";
1605 	if (k == XK_R14) return "R14";
1606 	if (k == XK_F35) return "F35";
1607 	if (k == XK_R15) return "R15";
1608 	if (k == XK_Shift_L) return "Shift_L";
1609 	if (k == XK_Shift_R) return "Shift_R";
1610 	if (k == XK_Control_L) return "Control_L";
1611 	if (k == XK_Control_R) return "Control_R";
1612 	if (k == XK_Caps_Lock) return "Caps_Lock";
1613 	if (k == XK_Shift_Lock) return "Shift_Lock";
1614 	if (k == XK_Meta_L) return "Meta_L";
1615 	if (k == XK_Meta_R) return "Meta_R";
1616 	if (k == XK_Alt_L) return "Alt_L";
1617 	if (k == XK_Alt_R) return "Alt_R";
1618 	if (k == XK_Super_L) return "Super_L";
1619 	if (k == XK_Super_R) return "Super_R";
1620 	if (k == XK_Hyper_L) return "Hyper_L";
1621 	if (k == XK_Hyper_R) return "Hyper_R";
1622 #endif /* XK_MISCELLANY */
1623 #ifdef XK_XKB_KEYS
1624 	if (k == XK_ISO_Lock) return "ISO_Lock";
1625 	if (k == XK_ISO_Level2_Latch) return "ISO_Level2_Latch";
1626 	if (k == XK_ISO_Level3_Shift) return "ISO_Level3_Shift";
1627 	if (k == XK_ISO_Level3_Latch) return "ISO_Level3_Latch";
1628 	if (k == XK_ISO_Level3_Lock) return "ISO_Level3_Lock";
1629 	if (k == XK_ISO_Group_Shift) return "ISO_Group_Shift";
1630 	if (k == XK_ISO_Group_Latch) return "ISO_Group_Latch";
1631 	if (k == XK_ISO_Group_Lock) return "ISO_Group_Lock";
1632 	if (k == XK_ISO_Next_Group) return "ISO_Next_Group";
1633 	if (k == XK_ISO_Next_Group_Lock) return "ISO_Next_Group_Lock";
1634 	if (k == XK_ISO_Prev_Group) return "ISO_Prev_Group";
1635 	if (k == XK_ISO_Prev_Group_Lock) return "ISO_Prev_Group_Lock";
1636 	if (k == XK_ISO_First_Group) return "ISO_First_Group";
1637 	if (k == XK_ISO_First_Group_Lock) return "ISO_First_Group_Lock";
1638 	if (k == XK_ISO_Last_Group) return "ISO_Last_Group";
1639 	if (k == XK_ISO_Last_Group_Lock) return "ISO_Last_Group_Lock";
1640 	if (k == XK_ISO_Left_Tab) return "ISO_Left_Tab";
1641 	if (k == XK_ISO_Move_Line_Up) return "ISO_Move_Line_Up";
1642 	if (k == XK_ISO_Move_Line_Down) return "ISO_Move_Line_Down";
1643 	if (k == XK_ISO_Partial_Line_Up) return "ISO_Partial_Line_Up";
1644 	if (k == XK_ISO_Partial_Line_Down) return "ISO_Partial_Line_Down";
1645 	if (k == XK_ISO_Partial_Space_Left) return "ISO_Partial_Space_Left";
1646 	if (k == XK_ISO_Partial_Space_Right) return "ISO_Partial_Space_Right";
1647 	if (k == XK_ISO_Set_Margin_Left) return "ISO_Set_Margin_Left";
1648 	if (k == XK_ISO_Set_Margin_Right) return "ISO_Set_Margin_Right";
1649 	if (k == XK_ISO_Release_Margin_Left) return "ISO_Release_Margin_Left";
1650 	if (k == XK_ISO_Release_Margin_Right) return "ISO_Release_Margin_Right";
1651 	if (k == XK_ISO_Release_Both_Margins) return "ISO_Release_Both_Margins";
1652 	if (k == XK_ISO_Fast_Cursor_Left) return "ISO_Fast_Cursor_Left";
1653 	if (k == XK_ISO_Fast_Cursor_Right) return "ISO_Fast_Cursor_Right";
1654 	if (k == XK_ISO_Fast_Cursor_Up) return "ISO_Fast_Cursor_Up";
1655 	if (k == XK_ISO_Fast_Cursor_Down) return "ISO_Fast_Cursor_Down";
1656 	if (k == XK_ISO_Continuous_Underline) return "ISO_Continuous_Underline";
1657 	if (k == XK_ISO_Discontinuous_Underline) return "ISO_Discontinuous_Underline";
1658 	if (k == XK_ISO_Emphasize) return "ISO_Emphasize";
1659 	if (k == XK_ISO_Center_Object) return "ISO_Center_Object";
1660 	if (k == XK_ISO_Enter) return "ISO_Enter";
1661 	if (k == XK_dead_grave) return "dead_grave";
1662 	if (k == XK_dead_acute) return "dead_acute";
1663 	if (k == XK_dead_circumflex) return "dead_circumflex";
1664 	if (k == XK_dead_tilde) return "dead_tilde";
1665 	if (k == XK_dead_macron) return "dead_macron";
1666 	if (k == XK_dead_breve) return "dead_breve";
1667 	if (k == XK_dead_abovedot) return "dead_abovedot";
1668 	if (k == XK_dead_diaeresis) return "dead_diaeresis";
1669 	if (k == XK_dead_abovering) return "dead_abovering";
1670 	if (k == XK_dead_doubleacute) return "dead_doubleacute";
1671 	if (k == XK_dead_caron) return "dead_caron";
1672 	if (k == XK_dead_cedilla) return "dead_cedilla";
1673 	if (k == XK_dead_ogonek) return "dead_ogonek";
1674 	if (k == XK_dead_iota) return "dead_iota";
1675 	if (k == XK_dead_voiced_sound) return "dead_voiced_sound";
1676 	if (k == XK_dead_semivoiced_sound) return "dead_semivoiced_sound";
1677 	if (k == XK_dead_belowdot) return "dead_belowdot";
1678 	if (k == XK_First_Virtual_Screen) return "First_Virtual_Screen";
1679 	if (k == XK_Prev_Virtual_Screen) return "Prev_Virtual_Screen";
1680 	if (k == XK_Next_Virtual_Screen) return "Next_Virtual_Screen";
1681 	if (k == XK_Last_Virtual_Screen) return "Last_Virtual_Screen";
1682 	if (k == XK_Terminate_Server) return "Terminate_Server";
1683 	if (k == XK_AccessX_Enable) return "AccessX_Enable";
1684 	if (k == XK_AccessX_Feedback_Enable) return "AccessX_Feedback_Enable";
1685 	if (k == XK_RepeatKeys_Enable) return "RepeatKeys_Enable";
1686 	if (k == XK_SlowKeys_Enable) return "SlowKeys_Enable";
1687 	if (k == XK_BounceKeys_Enable) return "BounceKeys_Enable";
1688 	if (k == XK_StickyKeys_Enable) return "StickyKeys_Enable";
1689 	if (k == XK_MouseKeys_Enable) return "MouseKeys_Enable";
1690 	if (k == XK_MouseKeys_Accel_Enable) return "MouseKeys_Accel_Enable";
1691 	if (k == XK_Overlay1_Enable) return "Overlay1_Enable";
1692 	if (k == XK_Overlay2_Enable) return "Overlay2_Enable";
1693 	if (k == XK_AudibleBell_Enable) return "AudibleBell_Enable";
1694 	if (k == XK_Pointer_Left) return "Pointer_Left";
1695 	if (k == XK_Pointer_Right) return "Pointer_Right";
1696 	if (k == XK_Pointer_Up) return "Pointer_Up";
1697 	if (k == XK_Pointer_Down) return "Pointer_Down";
1698 	if (k == XK_Pointer_UpLeft) return "Pointer_UpLeft";
1699 	if (k == XK_Pointer_UpRight) return "Pointer_UpRight";
1700 	if (k == XK_Pointer_DownLeft) return "Pointer_DownLeft";
1701 	if (k == XK_Pointer_DownRight) return "Pointer_DownRight";
1702 	if (k == XK_Pointer_Button_Dflt) return "Pointer_Button_Dflt";
1703 	if (k == XK_Pointer_Button1) return "Pointer_Button1";
1704 	if (k == XK_Pointer_Button2) return "Pointer_Button2";
1705 	if (k == XK_Pointer_Button3) return "Pointer_Button3";
1706 	if (k == XK_Pointer_Button4) return "Pointer_Button4";
1707 	if (k == XK_Pointer_Button5) return "Pointer_Button5";
1708 	if (k == XK_Pointer_DblClick_Dflt) return "Pointer_DblClick_Dflt";
1709 	if (k == XK_Pointer_DblClick1) return "Pointer_DblClick1";
1710 	if (k == XK_Pointer_DblClick2) return "Pointer_DblClick2";
1711 	if (k == XK_Pointer_DblClick3) return "Pointer_DblClick3";
1712 	if (k == XK_Pointer_DblClick4) return "Pointer_DblClick4";
1713 	if (k == XK_Pointer_DblClick5) return "Pointer_DblClick5";
1714 	if (k == XK_Pointer_Drag_Dflt) return "Pointer_Drag_Dflt";
1715 	if (k == XK_Pointer_Drag1) return "Pointer_Drag1";
1716 	if (k == XK_Pointer_Drag2) return "Pointer_Drag2";
1717 	if (k == XK_Pointer_Drag3) return "Pointer_Drag3";
1718 	if (k == XK_Pointer_Drag4) return "Pointer_Drag4";
1719 	if (k == XK_Pointer_Drag5) return "Pointer_Drag5";
1720 	if (k == XK_Pointer_EnableKeys) return "Pointer_EnableKeys";
1721 	if (k == XK_Pointer_Accelerate) return "Pointer_Accelerate";
1722 	if (k == XK_Pointer_DfltBtnNext) return "Pointer_DfltBtnNext";
1723 	if (k == XK_Pointer_DfltBtnPrev) return "Pointer_DfltBtnPrev";
1724 #endif
1725 #ifdef XK_3270
1726 	if (k == XK_3270_Duplicate) return "3270_Duplicate";
1727 	if (k == XK_3270_FieldMark) return "3270_FieldMark";
1728 	if (k == XK_3270_Right2) return "3270_Right2";
1729 	if (k == XK_3270_Left2) return "3270_Left2";
1730 	if (k == XK_3270_BackTab) return "3270_BackTab";
1731 	if (k == XK_3270_EraseEOF) return "3270_EraseEOF";
1732 	if (k == XK_3270_EraseInput) return "3270_EraseInput";
1733 	if (k == XK_3270_Reset) return "3270_Reset";
1734 	if (k == XK_3270_Quit) return "3270_Quit";
1735 	if (k == XK_3270_PA1) return "3270_PA1";
1736 	if (k == XK_3270_PA2) return "3270_PA2";
1737 	if (k == XK_3270_PA3) return "3270_PA3";
1738 	if (k == XK_3270_Test) return "3270_Test";
1739 	if (k == XK_3270_Attn) return "3270_Attn";
1740 	if (k == XK_3270_CursorBlink) return "3270_CursorBlink";
1741 	if (k == XK_3270_AltCursor) return "3270_AltCursor";
1742 	if (k == XK_3270_KeyClick) return "3270_KeyClick";
1743 	if (k == XK_3270_Jump) return "3270_Jump";
1744 	if (k == XK_3270_Ident) return "3270_Ident";
1745 	if (k == XK_3270_Rule) return "3270_Rule";
1746 	if (k == XK_3270_Copy) return "3270_Copy";
1747 	if (k == XK_3270_Play) return "3270_Play";
1748 	if (k == XK_3270_Setup) return "3270_Setup";
1749 	if (k == XK_3270_Record) return "3270_Record";
1750 	if (k == XK_3270_ChangeScreen) return "3270_ChangeScreen";
1751 	if (k == XK_3270_DeleteWord) return "3270_DeleteWord";
1752 	if (k == XK_3270_ExSelect) return "3270_ExSelect";
1753 	if (k == XK_3270_CursorSelect) return "3270_CursorSelect";
1754 	if (k == XK_3270_PrintScreen) return "3270_PrintScreen";
1755 	if (k == XK_3270_Enter) return "3270_Enter";
1756 #endif
1757 #ifdef XK_LATIN1
1758 	if (k == XK_space) return "space";
1759 	if (k == XK_exclam) return "exclam";
1760 	if (k == XK_quotedbl) return "quotedbl";
1761 	if (k == XK_numbersign) return "numbersign";
1762 	if (k == XK_dollar) return "dollar";
1763 	if (k == XK_percent) return "percent";
1764 	if (k == XK_ampersand) return "ampersand";
1765 	if (k == XK_apostrophe) return "apostrophe";
1766 	if (k == XK_quoteright) return "quoteright";
1767 	if (k == XK_parenleft) return "parenleft";
1768 	if (k == XK_parenright) return "parenright";
1769 	if (k == XK_asterisk) return "asterisk";
1770 	if (k == XK_plus) return "plus";
1771 	if (k == XK_comma) return "comma";
1772 	if (k == XK_minus) return "minus";
1773 	if (k == XK_period) return "period";
1774 	if (k == XK_slash) return "slash";
1775 	if (k == XK_0) return "0";
1776 	if (k == XK_1) return "1";
1777 	if (k == XK_2) return "2";
1778 	if (k == XK_3) return "3";
1779 	if (k == XK_4) return "4";
1780 	if (k == XK_5) return "5";
1781 	if (k == XK_6) return "6";
1782 	if (k == XK_7) return "7";
1783 	if (k == XK_8) return "8";
1784 	if (k == XK_9) return "9";
1785 	if (k == XK_colon) return "colon";
1786 	if (k == XK_semicolon) return "semicolon";
1787 	if (k == XK_less) return "less";
1788 	if (k == XK_equal) return "equal";
1789 	if (k == XK_greater) return "greater";
1790 	if (k == XK_question) return "question";
1791 	if (k == XK_at) return "at";
1792 	if (k == XK_A) return "A";
1793 	if (k == XK_B) return "B";
1794 	if (k == XK_C) return "C";
1795 	if (k == XK_D) return "D";
1796 	if (k == XK_E) return "E";
1797 	if (k == XK_F) return "F";
1798 	if (k == XK_G) return "G";
1799 	if (k == XK_H) return "H";
1800 	if (k == XK_I) return "I";
1801 	if (k == XK_J) return "J";
1802 	if (k == XK_K) return "K";
1803 	if (k == XK_L) return "L";
1804 	if (k == XK_M) return "M";
1805 	if (k == XK_N) return "N";
1806 	if (k == XK_O) return "O";
1807 	if (k == XK_P) return "P";
1808 	if (k == XK_Q) return "Q";
1809 	if (k == XK_R) return "R";
1810 	if (k == XK_S) return "S";
1811 	if (k == XK_T) return "T";
1812 	if (k == XK_U) return "U";
1813 	if (k == XK_V) return "V";
1814 	if (k == XK_W) return "W";
1815 	if (k == XK_X) return "X";
1816 	if (k == XK_Y) return "Y";
1817 	if (k == XK_Z) return "Z";
1818 	if (k == XK_bracketleft) return "bracketleft";
1819 	if (k == XK_backslash) return "backslash";
1820 	if (k == XK_bracketright) return "bracketright";
1821 	if (k == XK_asciicircum) return "asciicircum";
1822 	if (k == XK_underscore) return "underscore";
1823 	if (k == XK_grave) return "grave";
1824 	if (k == XK_quoteleft) return "quoteleft";
1825 	if (k == XK_a) return "a";
1826 	if (k == XK_b) return "b";
1827 	if (k == XK_c) return "c";
1828 	if (k == XK_d) return "d";
1829 	if (k == XK_e) return "e";
1830 	if (k == XK_f) return "f";
1831 	if (k == XK_g) return "g";
1832 	if (k == XK_h) return "h";
1833 	if (k == XK_i) return "i";
1834 	if (k == XK_j) return "j";
1835 	if (k == XK_k) return "k";
1836 	if (k == XK_l) return "l";
1837 	if (k == XK_m) return "m";
1838 	if (k == XK_n) return "n";
1839 	if (k == XK_o) return "o";
1840 	if (k == XK_p) return "p";
1841 	if (k == XK_q) return "q";
1842 	if (k == XK_r) return "r";
1843 	if (k == XK_s) return "s";
1844 	if (k == XK_t) return "t";
1845 	if (k == XK_u) return "u";
1846 	if (k == XK_v) return "v";
1847 	if (k == XK_w) return "w";
1848 	if (k == XK_x) return "x";
1849 	if (k == XK_y) return "y";
1850 	if (k == XK_z) return "z";
1851 	if (k == XK_braceleft) return "braceleft";
1852 	if (k == XK_bar) return "bar";
1853 	if (k == XK_braceright) return "braceright";
1854 	if (k == XK_asciitilde) return "asciitilde";
1855 	if (k == XK_nobreakspace) return "nobreakspace";
1856 	if (k == XK_exclamdown) return "exclamdown";
1857 	if (k == XK_cent) return "cent";
1858 	if (k == XK_sterling) return "sterling";
1859 	if (k == XK_currency) return "currency";
1860 	if (k == XK_yen) return "yen";
1861 	if (k == XK_brokenbar) return "brokenbar";
1862 	if (k == XK_section) return "section";
1863 	if (k == XK_diaeresis) return "diaeresis";
1864 	if (k == XK_copyright) return "copyright";
1865 	if (k == XK_ordfeminine) return "ordfeminine";
1866 	if (k == XK_guillemotleft) return "guillemotleft";
1867 	if (k == XK_notsign) return "notsign";
1868 	if (k == XK_hyphen) return "hyphen";
1869 	if (k == XK_registered) return "registered";
1870 	if (k == XK_macron) return "macron";
1871 	if (k == XK_degree) return "degree";
1872 	if (k == XK_plusminus) return "plusminus";
1873 	if (k == XK_twosuperior) return "twosuperior";
1874 	if (k == XK_threesuperior) return "threesuperior";
1875 	if (k == XK_acute) return "acute";
1876 	if (k == XK_mu) return "mu";
1877 	if (k == XK_paragraph) return "paragraph";
1878 	if (k == XK_periodcentered) return "periodcentered";
1879 	if (k == XK_cedilla) return "cedilla";
1880 	if (k == XK_onesuperior) return "onesuperior";
1881 	if (k == XK_masculine) return "masculine";
1882 	if (k == XK_guillemotright) return "guillemotright";
1883 	if (k == XK_onequarter) return "onequarter";
1884 	if (k == XK_onehalf) return "onehalf";
1885 	if (k == XK_threequarters) return "threequarters";
1886 	if (k == XK_questiondown) return "questiondown";
1887 	if (k == XK_Agrave) return "Agrave";
1888 	if (k == XK_Aacute) return "Aacute";
1889 	if (k == XK_Acircumflex) return "Acircumflex";
1890 	if (k == XK_Atilde) return "Atilde";
1891 	if (k == XK_Adiaeresis) return "Adiaeresis";
1892 	if (k == XK_Aring) return "Aring";
1893 	if (k == XK_AE) return "AE";
1894 	if (k == XK_Ccedilla) return "Ccedilla";
1895 	if (k == XK_Egrave) return "Egrave";
1896 	if (k == XK_Eacute) return "Eacute";
1897 	if (k == XK_Ecircumflex) return "Ecircumflex";
1898 	if (k == XK_Ediaeresis) return "Ediaeresis";
1899 	if (k == XK_Igrave) return "Igrave";
1900 	if (k == XK_Iacute) return "Iacute";
1901 	if (k == XK_Icircumflex) return "Icircumflex";
1902 	if (k == XK_Idiaeresis) return "Idiaeresis";
1903 	if (k == XK_ETH) return "ETH";
1904 	if (k == XK_Eth) return "Eth";
1905 	if (k == XK_Ntilde) return "Ntilde";
1906 	if (k == XK_Ograve) return "Ograve";
1907 	if (k == XK_Oacute) return "Oacute";
1908 	if (k == XK_Ocircumflex) return "Ocircumflex";
1909 	if (k == XK_Otilde) return "Otilde";
1910 	if (k == XK_Odiaeresis) return "Odiaeresis";
1911 	if (k == XK_multiply) return "multiply";
1912 	if (k == XK_Ooblique) return "Ooblique";
1913 	if (k == XK_Ugrave) return "Ugrave";
1914 	if (k == XK_Uacute) return "Uacute";
1915 	if (k == XK_Ucircumflex) return "Ucircumflex";
1916 	if (k == XK_Udiaeresis) return "Udiaeresis";
1917 	if (k == XK_Yacute) return "Yacute";
1918 	if (k == XK_THORN) return "THORN";
1919 	if (k == XK_Thorn) return "Thorn";
1920 	if (k == XK_ssharp) return "ssharp";
1921 	if (k == XK_agrave) return "agrave";
1922 	if (k == XK_aacute) return "aacute";
1923 	if (k == XK_acircumflex) return "acircumflex";
1924 	if (k == XK_atilde) return "atilde";
1925 	if (k == XK_adiaeresis) return "adiaeresis";
1926 	if (k == XK_aring) return "aring";
1927 	if (k == XK_ae) return "ae";
1928 	if (k == XK_ccedilla) return "ccedilla";
1929 	if (k == XK_egrave) return "egrave";
1930 	if (k == XK_eacute) return "eacute";
1931 	if (k == XK_ecircumflex) return "ecircumflex";
1932 	if (k == XK_ediaeresis) return "ediaeresis";
1933 	if (k == XK_igrave) return "igrave";
1934 	if (k == XK_iacute) return "iacute";
1935 	if (k == XK_icircumflex) return "icircumflex";
1936 	if (k == XK_idiaeresis) return "idiaeresis";
1937 	if (k == XK_eth) return "eth";
1938 	if (k == XK_ntilde) return "ntilde";
1939 	if (k == XK_ograve) return "ograve";
1940 	if (k == XK_oacute) return "oacute";
1941 	if (k == XK_ocircumflex) return "ocircumflex";
1942 	if (k == XK_otilde) return "otilde";
1943 	if (k == XK_odiaeresis) return "odiaeresis";
1944 	if (k == XK_division) return "division";
1945 	if (k == XK_oslash) return "oslash";
1946 	if (k == XK_ugrave) return "ugrave";
1947 	if (k == XK_uacute) return "uacute";
1948 	if (k == XK_ucircumflex) return "ucircumflex";
1949 	if (k == XK_udiaeresis) return "udiaeresis";
1950 	if (k == XK_yacute) return "yacute";
1951 	if (k == XK_thorn) return "thorn";
1952 	if (k == XK_ydiaeresis) return "ydiaeresis";
1953 #endif /* XK_LATIN1 */
1954 #ifdef XK_LATIN2
1955 	if (k == XK_Aogonek) return "Aogonek";
1956 	if (k == XK_breve) return "breve";
1957 	if (k == XK_Lstroke) return "Lstroke";
1958 	if (k == XK_Lcaron) return "Lcaron";
1959 	if (k == XK_Sacute) return "Sacute";
1960 	if (k == XK_Scaron) return "Scaron";
1961 	if (k == XK_Scedilla) return "Scedilla";
1962 	if (k == XK_Tcaron) return "Tcaron";
1963 	if (k == XK_Zacute) return "Zacute";
1964 	if (k == XK_Zcaron) return "Zcaron";
1965 	if (k == XK_Zabovedot) return "Zabovedot";
1966 	if (k == XK_aogonek) return "aogonek";
1967 	if (k == XK_ogonek) return "ogonek";
1968 	if (k == XK_lstroke) return "lstroke";
1969 	if (k == XK_lcaron) return "lcaron";
1970 	if (k == XK_sacute) return "sacute";
1971 	if (k == XK_caron) return "caron";
1972 	if (k == XK_scaron) return "scaron";
1973 	if (k == XK_scedilla) return "scedilla";
1974 	if (k == XK_tcaron) return "tcaron";
1975 	if (k == XK_zacute) return "zacute";
1976 	if (k == XK_doubleacute) return "doubleacute";
1977 	if (k == XK_zcaron) return "zcaron";
1978 	if (k == XK_zabovedot) return "zabovedot";
1979 	if (k == XK_Racute) return "Racute";
1980 	if (k == XK_Abreve) return "Abreve";
1981 	if (k == XK_Lacute) return "Lacute";
1982 	if (k == XK_Cacute) return "Cacute";
1983 	if (k == XK_Ccaron) return "Ccaron";
1984 	if (k == XK_Eogonek) return "Eogonek";
1985 	if (k == XK_Ecaron) return "Ecaron";
1986 	if (k == XK_Dcaron) return "Dcaron";
1987 	if (k == XK_Dstroke) return "Dstroke";
1988 	if (k == XK_Nacute) return "Nacute";
1989 	if (k == XK_Ncaron) return "Ncaron";
1990 	if (k == XK_Odoubleacute) return "Odoubleacute";
1991 	if (k == XK_Rcaron) return "Rcaron";
1992 	if (k == XK_Uring) return "Uring";
1993 	if (k == XK_Udoubleacute) return "Udoubleacute";
1994 	if (k == XK_Tcedilla) return "Tcedilla";
1995 	if (k == XK_racute) return "racute";
1996 	if (k == XK_abreve) return "abreve";
1997 	if (k == XK_lacute) return "lacute";
1998 	if (k == XK_cacute) return "cacute";
1999 	if (k == XK_ccaron) return "ccaron";
2000 	if (k == XK_eogonek) return "eogonek";
2001 	if (k == XK_ecaron) return "ecaron";
2002 	if (k == XK_dcaron) return "dcaron";
2003 	if (k == XK_dstroke) return "dstroke";
2004 	if (k == XK_nacute) return "nacute";
2005 	if (k == XK_ncaron) return "ncaron";
2006 	if (k == XK_odoubleacute) return "odoubleacute";
2007 	if (k == XK_udoubleacute) return "udoubleacute";
2008 	if (k == XK_rcaron) return "rcaron";
2009 	if (k == XK_uring) return "uring";
2010 	if (k == XK_tcedilla) return "tcedilla";
2011 	if (k == XK_abovedot) return "abovedot";
2012 #endif /* XK_LATIN2 */
2013 #ifdef XK_LATIN3
2014 	if (k == XK_Hstroke) return "Hstroke";
2015 	if (k == XK_Hcircumflex) return "Hcircumflex";
2016 	if (k == XK_Iabovedot) return "Iabovedot";
2017 	if (k == XK_Gbreve) return "Gbreve";
2018 	if (k == XK_Jcircumflex) return "Jcircumflex";
2019 	if (k == XK_hstroke) return "hstroke";
2020 	if (k == XK_hcircumflex) return "hcircumflex";
2021 	if (k == XK_idotless) return "idotless";
2022 	if (k == XK_gbreve) return "gbreve";
2023 	if (k == XK_jcircumflex) return "jcircumflex";
2024 	if (k == XK_Cabovedot) return "Cabovedot";
2025 	if (k == XK_Ccircumflex) return "Ccircumflex";
2026 	if (k == XK_Gabovedot) return "Gabovedot";
2027 	if (k == XK_Gcircumflex) return "Gcircumflex";
2028 	if (k == XK_Ubreve) return "Ubreve";
2029 	if (k == XK_Scircumflex) return "Scircumflex";
2030 	if (k == XK_cabovedot) return "cabovedot";
2031 	if (k == XK_ccircumflex) return "ccircumflex";
2032 	if (k == XK_gabovedot) return "gabovedot";
2033 	if (k == XK_gcircumflex) return "gcircumflex";
2034 	if (k == XK_ubreve) return "ubreve";
2035 	if (k == XK_scircumflex) return "scircumflex";
2036 #endif /* XK_LATIN3 */
2037 #ifdef XK_LATIN4
2038 	if (k == XK_kra) return "kra";
2039 	if (k == XK_kappa) return "kappa";
2040 	if (k == XK_Rcedilla) return "Rcedilla";
2041 	if (k == XK_Itilde) return "Itilde";
2042 	if (k == XK_Lcedilla) return "Lcedilla";
2043 	if (k == XK_Emacron) return "Emacron";
2044 	if (k == XK_Gcedilla) return "Gcedilla";
2045 	if (k == XK_Tslash) return "Tslash";
2046 	if (k == XK_rcedilla) return "rcedilla";
2047 	if (k == XK_itilde) return "itilde";
2048 	if (k == XK_lcedilla) return "lcedilla";
2049 	if (k == XK_emacron) return "emacron";
2050 	if (k == XK_gcedilla) return "gcedilla";
2051 	if (k == XK_tslash) return "tslash";
2052 	if (k == XK_ENG) return "ENG";
2053 	if (k == XK_eng) return "eng";
2054 	if (k == XK_Amacron) return "Amacron";
2055 	if (k == XK_Iogonek) return "Iogonek";
2056 	if (k == XK_Eabovedot) return "Eabovedot";
2057 	if (k == XK_Imacron) return "Imacron";
2058 	if (k == XK_Ncedilla) return "Ncedilla";
2059 	if (k == XK_Omacron) return "Omacron";
2060 	if (k == XK_Kcedilla) return "Kcedilla";
2061 	if (k == XK_Uogonek) return "Uogonek";
2062 	if (k == XK_Utilde) return "Utilde";
2063 	if (k == XK_Umacron) return "Umacron";
2064 	if (k == XK_amacron) return "amacron";
2065 	if (k == XK_iogonek) return "iogonek";
2066 	if (k == XK_eabovedot) return "eabovedot";
2067 	if (k == XK_imacron) return "imacron";
2068 	if (k == XK_ncedilla) return "ncedilla";
2069 	if (k == XK_omacron) return "omacron";
2070 	if (k == XK_kcedilla) return "kcedilla";
2071 	if (k == XK_uogonek) return "uogonek";
2072 	if (k == XK_utilde) return "utilde";
2073 	if (k == XK_umacron) return "umacron";
2074 #endif /* XK_LATIN4 */
2075 #ifdef XK_KATAKANA
2076 	if (k == XK_overline) return "overline";
2077 	if (k == XK_kana_fullstop) return "kana_fullstop";
2078 	if (k == XK_kana_openingbracket) return "kana_openingbracket";
2079 	if (k == XK_kana_closingbracket) return "kana_closingbracket";
2080 	if (k == XK_kana_comma) return "kana_comma";
2081 	if (k == XK_kana_conjunctive) return "kana_conjunctive";
2082 	if (k == XK_kana_middledot) return "kana_middledot";
2083 	if (k == XK_kana_WO) return "kana_WO";
2084 	if (k == XK_kana_a) return "kana_a";
2085 	if (k == XK_kana_i) return "kana_i";
2086 	if (k == XK_kana_u) return "kana_u";
2087 	if (k == XK_kana_e) return "kana_e";
2088 	if (k == XK_kana_o) return "kana_o";
2089 	if (k == XK_kana_ya) return "kana_ya";
2090 	if (k == XK_kana_yu) return "kana_yu";
2091 	if (k == XK_kana_yo) return "kana_yo";
2092 	if (k == XK_kana_tsu) return "kana_tsu";
2093 	if (k == XK_kana_tu) return "kana_tu";
2094 	if (k == XK_prolongedsound) return "prolongedsound";
2095 	if (k == XK_kana_A) return "kana_A";
2096 	if (k == XK_kana_I) return "kana_I";
2097 	if (k == XK_kana_U) return "kana_U";
2098 	if (k == XK_kana_E) return "kana_E";
2099 	if (k == XK_kana_O) return "kana_O";
2100 	if (k == XK_kana_KA) return "kana_KA";
2101 	if (k == XK_kana_KI) return "kana_KI";
2102 	if (k == XK_kana_KU) return "kana_KU";
2103 	if (k == XK_kana_KE) return "kana_KE";
2104 	if (k == XK_kana_KO) return "kana_KO";
2105 	if (k == XK_kana_SA) return "kana_SA";
2106 	if (k == XK_kana_SHI) return "kana_SHI";
2107 	if (k == XK_kana_SU) return "kana_SU";
2108 	if (k == XK_kana_SE) return "kana_SE";
2109 	if (k == XK_kana_SO) return "kana_SO";
2110 	if (k == XK_kana_TA) return "kana_TA";
2111 	if (k == XK_kana_CHI) return "kana_CHI";
2112 	if (k == XK_kana_TI) return "kana_TI";
2113 	if (k == XK_kana_TSU) return "kana_TSU";
2114 	if (k == XK_kana_TU) return "kana_TU";
2115 	if (k == XK_kana_TE) return "kana_TE";
2116 	if (k == XK_kana_TO) return "kana_TO";
2117 	if (k == XK_kana_NA) return "kana_NA";
2118 	if (k == XK_kana_NI) return "kana_NI";
2119 	if (k == XK_kana_NU) return "kana_NU";
2120 	if (k == XK_kana_NE) return "kana_NE";
2121 	if (k == XK_kana_NO) return "kana_NO";
2122 	if (k == XK_kana_HA) return "kana_HA";
2123 	if (k == XK_kana_HI) return "kana_HI";
2124 	if (k == XK_kana_FU) return "kana_FU";
2125 	if (k == XK_kana_HU) return "kana_HU";
2126 	if (k == XK_kana_HE) return "kana_HE";
2127 	if (k == XK_kana_HO) return "kana_HO";
2128 	if (k == XK_kana_MA) return "kana_MA";
2129 	if (k == XK_kana_MI) return "kana_MI";
2130 	if (k == XK_kana_MU) return "kana_MU";
2131 	if (k == XK_kana_ME) return "kana_ME";
2132 	if (k == XK_kana_MO) return "kana_MO";
2133 	if (k == XK_kana_YA) return "kana_YA";
2134 	if (k == XK_kana_YU) return "kana_YU";
2135 	if (k == XK_kana_YO) return "kana_YO";
2136 	if (k == XK_kana_RA) return "kana_RA";
2137 	if (k == XK_kana_RI) return "kana_RI";
2138 	if (k == XK_kana_RU) return "kana_RU";
2139 	if (k == XK_kana_RE) return "kana_RE";
2140 	if (k == XK_kana_RO) return "kana_RO";
2141 	if (k == XK_kana_WA) return "kana_WA";
2142 	if (k == XK_kana_N) return "kana_N";
2143 	if (k == XK_voicedsound) return "voicedsound";
2144 	if (k == XK_semivoicedsound) return "semivoicedsound";
2145 	if (k == XK_kana_switch) return "kana_switch";
2146 #endif /* XK_KATAKANA */
2147 #ifdef XK_ARABIC
2148 	if (k == XK_Arabic_comma) return "Arabic_comma";
2149 	if (k == XK_Arabic_semicolon) return "Arabic_semicolon";
2150 	if (k == XK_Arabic_question_mark) return "Arabic_question_mark";
2151 	if (k == XK_Arabic_hamza) return "Arabic_hamza";
2152 	if (k == XK_Arabic_maddaonalef) return "Arabic_maddaonalef";
2153 	if (k == XK_Arabic_hamzaonalef) return "Arabic_hamzaonalef";
2154 	if (k == XK_Arabic_hamzaonwaw) return "Arabic_hamzaonwaw";
2155 	if (k == XK_Arabic_hamzaunderalef) return "Arabic_hamzaunderalef";
2156 	if (k == XK_Arabic_hamzaonyeh) return "Arabic_hamzaonyeh";
2157 	if (k == XK_Arabic_alef) return "Arabic_alef";
2158 	if (k == XK_Arabic_beh) return "Arabic_beh";
2159 	if (k == XK_Arabic_tehmarbuta) return "Arabic_tehmarbuta";
2160 	if (k == XK_Arabic_teh) return "Arabic_teh";
2161 	if (k == XK_Arabic_theh) return "Arabic_theh";
2162 	if (k == XK_Arabic_jeem) return "Arabic_jeem";
2163 	if (k == XK_Arabic_hah) return "Arabic_hah";
2164 	if (k == XK_Arabic_khah) return "Arabic_khah";
2165 	if (k == XK_Arabic_dal) return "Arabic_dal";
2166 	if (k == XK_Arabic_thal) return "Arabic_thal";
2167 	if (k == XK_Arabic_ra) return "Arabic_ra";
2168 	if (k == XK_Arabic_zain) return "Arabic_zain";
2169 	if (k == XK_Arabic_seen) return "Arabic_seen";
2170 	if (k == XK_Arabic_sheen) return "Arabic_sheen";
2171 	if (k == XK_Arabic_sad) return "Arabic_sad";
2172 	if (k == XK_Arabic_dad) return "Arabic_dad";
2173 	if (k == XK_Arabic_tah) return "Arabic_tah";
2174 	if (k == XK_Arabic_zah) return "Arabic_zah";
2175 	if (k == XK_Arabic_ain) return "Arabic_ain";
2176 	if (k == XK_Arabic_ghain) return "Arabic_ghain";
2177 	if (k == XK_Arabic_tatweel) return "Arabic_tatweel";
2178 	if (k == XK_Arabic_feh) return "Arabic_feh";
2179 	if (k == XK_Arabic_qaf) return "Arabic_qaf";
2180 	if (k == XK_Arabic_kaf) return "Arabic_kaf";
2181 	if (k == XK_Arabic_lam) return "Arabic_lam";
2182 	if (k == XK_Arabic_meem) return "Arabic_meem";
2183 	if (k == XK_Arabic_noon) return "Arabic_noon";
2184 	if (k == XK_Arabic_ha) return "Arabic_ha";
2185 	if (k == XK_Arabic_heh) return "Arabic_heh";
2186 	if (k == XK_Arabic_waw) return "Arabic_waw";
2187 	if (k == XK_Arabic_alefmaksura) return "Arabic_alefmaksura";
2188 	if (k == XK_Arabic_yeh) return "Arabic_yeh";
2189 	if (k == XK_Arabic_fathatan) return "Arabic_fathatan";
2190 	if (k == XK_Arabic_dammatan) return "Arabic_dammatan";
2191 	if (k == XK_Arabic_kasratan) return "Arabic_kasratan";
2192 	if (k == XK_Arabic_fatha) return "Arabic_fatha";
2193 	if (k == XK_Arabic_damma) return "Arabic_damma";
2194 	if (k == XK_Arabic_kasra) return "Arabic_kasra";
2195 	if (k == XK_Arabic_shadda) return "Arabic_shadda";
2196 	if (k == XK_Arabic_sukun) return "Arabic_sukun";
2197 	if (k == XK_Arabic_switch) return "Arabic_switch";
2198 #endif /* XK_ARABIC */
2199 #ifdef XK_CYRILLIC
2200 	if (k == XK_Serbian_dje) return "Serbian_dje";
2201 	if (k == XK_Macedonia_gje) return "Macedonia_gje";
2202 	if (k == XK_Cyrillic_io) return "Cyrillic_io";
2203 	if (k == XK_Ukrainian_ie) return "Ukrainian_ie";
2204 	if (k == XK_Ukranian_je) return "Ukranian_je";
2205 	if (k == XK_Macedonia_dse) return "Macedonia_dse";
2206 	if (k == XK_Ukrainian_i) return "Ukrainian_i";
2207 	if (k == XK_Ukranian_i) return "Ukranian_i";
2208 	if (k == XK_Ukrainian_yi) return "Ukrainian_yi";
2209 	if (k == XK_Ukranian_yi) return "Ukranian_yi";
2210 	if (k == XK_Cyrillic_je) return "Cyrillic_je";
2211 	if (k == XK_Serbian_je) return "Serbian_je";
2212 	if (k == XK_Cyrillic_lje) return "Cyrillic_lje";
2213 	if (k == XK_Serbian_lje) return "Serbian_lje";
2214 	if (k == XK_Cyrillic_nje) return "Cyrillic_nje";
2215 	if (k == XK_Serbian_nje) return "Serbian_nje";
2216 	if (k == XK_Serbian_tshe) return "Serbian_tshe";
2217 	if (k == XK_Macedonia_kje) return "Macedonia_kje";
2218 	if (k == XK_Byelorussian_shortu) return "Byelorussian_shortu";
2219 	if (k == XK_Cyrillic_dzhe) return "Cyrillic_dzhe";
2220 	if (k == XK_Serbian_dze) return "Serbian_dze";
2221 	if (k == XK_numerosign) return "numerosign";
2222 	if (k == XK_Serbian_DJE) return "Serbian_DJE";
2223 	if (k == XK_Macedonia_GJE) return "Macedonia_GJE";
2224 	if (k == XK_Cyrillic_IO) return "Cyrillic_IO";
2225 	if (k == XK_Ukrainian_IE) return "Ukrainian_IE";
2226 	if (k == XK_Ukranian_JE) return "Ukranian_JE";
2227 	if (k == XK_Macedonia_DSE) return "Macedonia_DSE";
2228 	if (k == XK_Ukrainian_I) return "Ukrainian_I";
2229 	if (k == XK_Ukranian_I) return "Ukranian_I";
2230 	if (k == XK_Ukrainian_YI) return "Ukrainian_YI";
2231 	if (k == XK_Ukranian_YI) return "Ukranian_YI";
2232 	if (k == XK_Cyrillic_JE) return "Cyrillic_JE";
2233 	if (k == XK_Serbian_JE) return "Serbian_JE";
2234 	if (k == XK_Cyrillic_LJE) return "Cyrillic_LJE";
2235 	if (k == XK_Serbian_LJE) return "Serbian_LJE";
2236 	if (k == XK_Cyrillic_NJE) return "Cyrillic_NJE";
2237 	if (k == XK_Serbian_NJE) return "Serbian_NJE";
2238 	if (k == XK_Serbian_TSHE) return "Serbian_TSHE";
2239 	if (k == XK_Macedonia_KJE) return "Macedonia_KJE";
2240 	if (k == XK_Byelorussian_SHORTU) return "Byelorussian_SHORTU";
2241 	if (k == XK_Cyrillic_DZHE) return "Cyrillic_DZHE";
2242 	if (k == XK_Serbian_DZE) return "Serbian_DZE";
2243 	if (k == XK_Cyrillic_yu) return "Cyrillic_yu";
2244 	if (k == XK_Cyrillic_a) return "Cyrillic_a";
2245 	if (k == XK_Cyrillic_be) return "Cyrillic_be";
2246 	if (k == XK_Cyrillic_tse) return "Cyrillic_tse";
2247 	if (k == XK_Cyrillic_de) return "Cyrillic_de";
2248 	if (k == XK_Cyrillic_ie) return "Cyrillic_ie";
2249 	if (k == XK_Cyrillic_ef) return "Cyrillic_ef";
2250 	if (k == XK_Cyrillic_ghe) return "Cyrillic_ghe";
2251 	if (k == XK_Cyrillic_ha) return "Cyrillic_ha";
2252 	if (k == XK_Cyrillic_i) return "Cyrillic_i";
2253 	if (k == XK_Cyrillic_shorti) return "Cyrillic_shorti";
2254 	if (k == XK_Cyrillic_ka) return "Cyrillic_ka";
2255 	if (k == XK_Cyrillic_el) return "Cyrillic_el";
2256 	if (k == XK_Cyrillic_em) return "Cyrillic_em";
2257 	if (k == XK_Cyrillic_en) return "Cyrillic_en";
2258 	if (k == XK_Cyrillic_o) return "Cyrillic_o";
2259 	if (k == XK_Cyrillic_pe) return "Cyrillic_pe";
2260 	if (k == XK_Cyrillic_ya) return "Cyrillic_ya";
2261 	if (k == XK_Cyrillic_er) return "Cyrillic_er";
2262 	if (k == XK_Cyrillic_es) return "Cyrillic_es";
2263 	if (k == XK_Cyrillic_te) return "Cyrillic_te";
2264 	if (k == XK_Cyrillic_u) return "Cyrillic_u";
2265 	if (k == XK_Cyrillic_zhe) return "Cyrillic_zhe";
2266 	if (k == XK_Cyrillic_ve) return "Cyrillic_ve";
2267 	if (k == XK_Cyrillic_softsign) return "Cyrillic_softsign";
2268 	if (k == XK_Cyrillic_yeru) return "Cyrillic_yeru";
2269 	if (k == XK_Cyrillic_ze) return "Cyrillic_ze";
2270 	if (k == XK_Cyrillic_sha) return "Cyrillic_sha";
2271 	if (k == XK_Cyrillic_e) return "Cyrillic_e";
2272 	if (k == XK_Cyrillic_shcha) return "Cyrillic_shcha";
2273 	if (k == XK_Cyrillic_che) return "Cyrillic_che";
2274 	if (k == XK_Cyrillic_hardsign) return "Cyrillic_hardsign";
2275 	if (k == XK_Cyrillic_YU) return "Cyrillic_YU";
2276 	if (k == XK_Cyrillic_A) return "Cyrillic_A";
2277 	if (k == XK_Cyrillic_BE) return "Cyrillic_BE";
2278 	if (k == XK_Cyrillic_TSE) return "Cyrillic_TSE";
2279 	if (k == XK_Cyrillic_DE) return "Cyrillic_DE";
2280 	if (k == XK_Cyrillic_IE) return "Cyrillic_IE";
2281 	if (k == XK_Cyrillic_EF) return "Cyrillic_EF";
2282 	if (k == XK_Cyrillic_GHE) return "Cyrillic_GHE";
2283 	if (k == XK_Cyrillic_HA) return "Cyrillic_HA";
2284 	if (k == XK_Cyrillic_I) return "Cyrillic_I";
2285 	if (k == XK_Cyrillic_SHORTI) return "Cyrillic_SHORTI";
2286 	if (k == XK_Cyrillic_KA) return "Cyrillic_KA";
2287 	if (k == XK_Cyrillic_EL) return "Cyrillic_EL";
2288 	if (k == XK_Cyrillic_EM) return "Cyrillic_EM";
2289 	if (k == XK_Cyrillic_EN) return "Cyrillic_EN";
2290 	if (k == XK_Cyrillic_O) return "Cyrillic_O";
2291 	if (k == XK_Cyrillic_PE) return "Cyrillic_PE";
2292 	if (k == XK_Cyrillic_YA) return "Cyrillic_YA";
2293 	if (k == XK_Cyrillic_ER) return "Cyrillic_ER";
2294 	if (k == XK_Cyrillic_ES) return "Cyrillic_ES";
2295 	if (k == XK_Cyrillic_TE) return "Cyrillic_TE";
2296 	if (k == XK_Cyrillic_U) return "Cyrillic_U";
2297 	if (k == XK_Cyrillic_ZHE) return "Cyrillic_ZHE";
2298 	if (k == XK_Cyrillic_VE) return "Cyrillic_VE";
2299 	if (k == XK_Cyrillic_SOFTSIGN) return "Cyrillic_SOFTSIGN";
2300 	if (k == XK_Cyrillic_YERU) return "Cyrillic_YERU";
2301 	if (k == XK_Cyrillic_ZE) return "Cyrillic_ZE";
2302 	if (k == XK_Cyrillic_SHA) return "Cyrillic_SHA";
2303 	if (k == XK_Cyrillic_E) return "Cyrillic_E";
2304 	if (k == XK_Cyrillic_SHCHA) return "Cyrillic_SHCHA";
2305 	if (k == XK_Cyrillic_CHE) return "Cyrillic_CHE";
2306 	if (k == XK_Cyrillic_HARDSIGN) return "Cyrillic_HARDSIGN";
2307 #endif /* XK_CYRILLIC */
2308 #ifdef XK_GREEK
2309 	if (k == XK_Greek_ALPHAaccent) return "Greek_ALPHAaccent";
2310 	if (k == XK_Greek_EPSILONaccent) return "Greek_EPSILONaccent";
2311 	if (k == XK_Greek_ETAaccent) return "Greek_ETAaccent";
2312 	if (k == XK_Greek_IOTAaccent) return "Greek_IOTAaccent";
2313 	if (k == XK_Greek_IOTAdieresis) return "Greek_IOTAdieresis";
2314 	if (k == XK_Greek_OMICRONaccent) return "Greek_OMICRONaccent";
2315 	if (k == XK_Greek_UPSILONaccent) return "Greek_UPSILONaccent";
2316 	if (k == XK_Greek_UPSILONdieresis) return "Greek_UPSILONdieresis";
2317 	if (k == XK_Greek_OMEGAaccent) return "Greek_OMEGAaccent";
2318 	if (k == XK_Greek_accentdieresis) return "Greek_accentdieresis";
2319 	if (k == XK_Greek_horizbar) return "Greek_horizbar";
2320 	if (k == XK_Greek_alphaaccent) return "Greek_alphaaccent";
2321 	if (k == XK_Greek_epsilonaccent) return "Greek_epsilonaccent";
2322 	if (k == XK_Greek_etaaccent) return "Greek_etaaccent";
2323 	if (k == XK_Greek_iotaaccent) return "Greek_iotaaccent";
2324 	if (k == XK_Greek_iotadieresis) return "Greek_iotadieresis";
2325 	if (k == XK_Greek_iotaaccentdieresis) return "Greek_iotaaccentdieresis";
2326 	if (k == XK_Greek_omicronaccent) return "Greek_omicronaccent";
2327 	if (k == XK_Greek_upsilonaccent) return "Greek_upsilonaccent";
2328 	if (k == XK_Greek_upsilondieresis) return "Greek_upsilondieresis";
2329 	if (k == XK_Greek_upsilonaccentdieresis) return "Greek_upsilonaccentdieresis";
2330 	if (k == XK_Greek_omegaaccent) return "Greek_omegaaccent";
2331 	if (k == XK_Greek_ALPHA) return "Greek_ALPHA";
2332 	if (k == XK_Greek_BETA) return "Greek_BETA";
2333 	if (k == XK_Greek_GAMMA) return "Greek_GAMMA";
2334 	if (k == XK_Greek_DELTA) return "Greek_DELTA";
2335 	if (k == XK_Greek_EPSILON) return "Greek_EPSILON";
2336 	if (k == XK_Greek_ZETA) return "Greek_ZETA";
2337 	if (k == XK_Greek_ETA) return "Greek_ETA";
2338 	if (k == XK_Greek_THETA) return "Greek_THETA";
2339 	if (k == XK_Greek_IOTA) return "Greek_IOTA";
2340 	if (k == XK_Greek_KAPPA) return "Greek_KAPPA";
2341 	if (k == XK_Greek_LAMDA) return "Greek_LAMDA";
2342 	if (k == XK_Greek_LAMBDA) return "Greek_LAMBDA";
2343 	if (k == XK_Greek_MU) return "Greek_MU";
2344 	if (k == XK_Greek_NU) return "Greek_NU";
2345 	if (k == XK_Greek_XI) return "Greek_XI";
2346 	if (k == XK_Greek_OMICRON) return "Greek_OMICRON";
2347 	if (k == XK_Greek_PI) return "Greek_PI";
2348 	if (k == XK_Greek_RHO) return "Greek_RHO";
2349 	if (k == XK_Greek_SIGMA) return "Greek_SIGMA";
2350 	if (k == XK_Greek_TAU) return "Greek_TAU";
2351 	if (k == XK_Greek_UPSILON) return "Greek_UPSILON";
2352 	if (k == XK_Greek_PHI) return "Greek_PHI";
2353 	if (k == XK_Greek_CHI) return "Greek_CHI";
2354 	if (k == XK_Greek_PSI) return "Greek_PSI";
2355 	if (k == XK_Greek_OMEGA) return "Greek_OMEGA";
2356 	if (k == XK_Greek_alpha) return "Greek_alpha";
2357 	if (k == XK_Greek_beta) return "Greek_beta";
2358 	if (k == XK_Greek_gamma) return "Greek_gamma";
2359 	if (k == XK_Greek_delta) return "Greek_delta";
2360 	if (k == XK_Greek_epsilon) return "Greek_epsilon";
2361 	if (k == XK_Greek_zeta) return "Greek_zeta";
2362 	if (k == XK_Greek_eta) return "Greek_eta";
2363 	if (k == XK_Greek_theta) return "Greek_theta";
2364 	if (k == XK_Greek_iota) return "Greek_iota";
2365 	if (k == XK_Greek_kappa) return "Greek_kappa";
2366 	if (k == XK_Greek_lamda) return "Greek_lamda";
2367 	if (k == XK_Greek_lambda) return "Greek_lambda";
2368 	if (k == XK_Greek_mu) return "Greek_mu";
2369 	if (k == XK_Greek_nu) return "Greek_nu";
2370 	if (k == XK_Greek_xi) return "Greek_xi";
2371 	if (k == XK_Greek_omicron) return "Greek_omicron";
2372 	if (k == XK_Greek_pi) return "Greek_pi";
2373 	if (k == XK_Greek_rho) return "Greek_rho";
2374 	if (k == XK_Greek_sigma) return "Greek_sigma";
2375 	if (k == XK_Greek_finalsmallsigma) return "Greek_finalsmallsigma";
2376 	if (k == XK_Greek_tau) return "Greek_tau";
2377 	if (k == XK_Greek_upsilon) return "Greek_upsilon";
2378 	if (k == XK_Greek_phi) return "Greek_phi";
2379 	if (k == XK_Greek_chi) return "Greek_chi";
2380 	if (k == XK_Greek_psi) return "Greek_psi";
2381 	if (k == XK_Greek_omega) return "Greek_omega";
2382 	if (k == XK_Greek_switch) return "Greek_switch";
2383 #endif /* XK_GREEK */
2384 #ifdef XK_TECHNICAL
2385 	if (k == XK_leftradical) return "leftradical";
2386 	if (k == XK_topleftradical) return "topleftradical";
2387 	if (k == XK_horizconnector) return "horizconnector";
2388 	if (k == XK_topintegral) return "topintegral";
2389 	if (k == XK_botintegral) return "botintegral";
2390 	if (k == XK_vertconnector) return "vertconnector";
2391 	if (k == XK_topleftsqbracket) return "topleftsqbracket";
2392 	if (k == XK_botleftsqbracket) return "botleftsqbracket";
2393 	if (k == XK_toprightsqbracket) return "toprightsqbracket";
2394 	if (k == XK_botrightsqbracket) return "botrightsqbracket";
2395 	if (k == XK_topleftparens) return "topleftparens";
2396 	if (k == XK_botleftparens) return "botleftparens";
2397 	if (k == XK_toprightparens) return "toprightparens";
2398 	if (k == XK_botrightparens) return "botrightparens";
2399 	if (k == XK_leftmiddlecurlybrace) return "leftmiddlecurlybrace";
2400 	if (k == XK_rightmiddlecurlybrace) return "rightmiddlecurlybrace";
2401 	if (k == XK_topleftsummation) return "topleftsummation";
2402 	if (k == XK_botleftsummation) return "botleftsummation";
2403 	if (k == XK_topvertsummationconnector) return "topvertsummationconnector";
2404 	if (k == XK_botvertsummationconnector) return "botvertsummationconnector";
2405 	if (k == XK_toprightsummation) return "toprightsummation";
2406 	if (k == XK_botrightsummation) return "botrightsummation";
2407 	if (k == XK_rightmiddlesummation) return "rightmiddlesummation";
2408 	if (k == XK_lessthanequal) return "lessthanequal";
2409 	if (k == XK_notequal) return "notequal";
2410 	if (k == XK_greaterthanequal) return "greaterthanequal";
2411 	if (k == XK_integral) return "integral";
2412 	if (k == XK_therefore) return "therefore";
2413 	if (k == XK_variation) return "variation";
2414 	if (k == XK_infinity) return "infinity";
2415 	if (k == XK_nabla) return "nabla";
2416 	if (k == XK_approximate) return "approximate";
2417 	if (k == XK_similarequal) return "similarequal";
2418 	if (k == XK_ifonlyif) return "ifonlyif";
2419 	if (k == XK_implies) return "implies";
2420 	if (k == XK_identical) return "identical";
2421 	if (k == XK_radical) return "radical";
2422 	if (k == XK_includedin) return "includedin";
2423 	if (k == XK_includes) return "includes";
2424 	if (k == XK_intersection) return "intersection";
2425 	if (k == XK_union) return "union";
2426 	if (k == XK_logicaland) return "logicaland";
2427 	if (k == XK_logicalor) return "logicalor";
2428 	if (k == XK_partialderivative) return "partialderivative";
2429 	if (k == XK_function) return "function";
2430 	if (k == XK_leftarrow) return "leftarrow";
2431 	if (k == XK_uparrow) return "uparrow";
2432 	if (k == XK_rightarrow) return "rightarrow";
2433 	if (k == XK_downarrow) return "downarrow";
2434 #endif /* XK_TECHNICAL */
2435 #ifdef XK_SPECIAL
2436 	if (k == XK_blank) return "blank";
2437 	if (k == XK_soliddiamond) return "soliddiamond";
2438 	if (k == XK_checkerboard) return "checkerboard";
2439 	if (k == XK_ht) return "ht";
2440 	if (k == XK_ff) return "ff";
2441 	if (k == XK_cr) return "cr";
2442 	if (k == XK_lf) return "lf";
2443 	if (k == XK_nl) return "nl";
2444 	if (k == XK_vt) return "vt";
2445 	if (k == XK_lowrightcorner) return "lowrightcorner";
2446 	if (k == XK_uprightcorner) return "uprightcorner";
2447 	if (k == XK_upleftcorner) return "upleftcorner";
2448 	if (k == XK_lowleftcorner) return "lowleftcorner";
2449 	if (k == XK_crossinglines) return "crossinglines";
2450 	if (k == XK_horizlinescan1) return "horizlinescan1";
2451 	if (k == XK_horizlinescan3) return "horizlinescan3";
2452 	if (k == XK_horizlinescan5) return "horizlinescan5";
2453 	if (k == XK_horizlinescan7) return "horizlinescan7";
2454 	if (k == XK_horizlinescan9) return "horizlinescan9";
2455 	if (k == XK_leftt) return "leftt";
2456 	if (k == XK_rightt) return "rightt";
2457 	if (k == XK_bott) return "bott";
2458 	if (k == XK_topt) return "topt";
2459 	if (k == XK_vertbar) return "vertbar";
2460 #endif /* XK_SPECIAL */
2461 #ifdef XK_PUBLISHING
2462 	if (k == XK_emspace) return "emspace";
2463 	if (k == XK_enspace) return "enspace";
2464 	if (k == XK_em3space) return "em3space";
2465 	if (k == XK_em4space) return "em4space";
2466 	if (k == XK_digitspace) return "digitspace";
2467 	if (k == XK_punctspace) return "punctspace";
2468 	if (k == XK_thinspace) return "thinspace";
2469 	if (k == XK_hairspace) return "hairspace";
2470 	if (k == XK_emdash) return "emdash";
2471 	if (k == XK_endash) return "endash";
2472 	if (k == XK_signifblank) return "signifblank";
2473 	if (k == XK_ellipsis) return "ellipsis";
2474 	if (k == XK_doubbaselinedot) return "doubbaselinedot";
2475 	if (k == XK_onethird) return "onethird";
2476 	if (k == XK_twothirds) return "twothirds";
2477 	if (k == XK_onefifth) return "onefifth";
2478 	if (k == XK_twofifths) return "twofifths";
2479 	if (k == XK_threefifths) return "threefifths";
2480 	if (k == XK_fourfifths) return "fourfifths";
2481 	if (k == XK_onesixth) return "onesixth";
2482 	if (k == XK_fivesixths) return "fivesixths";
2483 	if (k == XK_careof) return "careof";
2484 	if (k == XK_figdash) return "figdash";
2485 	if (k == XK_leftanglebracket) return "leftanglebracket";
2486 	if (k == XK_decimalpoint) return "decimalpoint";
2487 	if (k == XK_rightanglebracket) return "rightanglebracket";
2488 	if (k == XK_marker) return "marker";
2489 	if (k == XK_oneeighth) return "oneeighth";
2490 	if (k == XK_threeeighths) return "threeeighths";
2491 	if (k == XK_fiveeighths) return "fiveeighths";
2492 	if (k == XK_seveneighths) return "seveneighths";
2493 	if (k == XK_trademark) return "trademark";
2494 	if (k == XK_signaturemark) return "signaturemark";
2495 	if (k == XK_trademarkincircle) return "trademarkincircle";
2496 	if (k == XK_leftopentriangle) return "leftopentriangle";
2497 	if (k == XK_rightopentriangle) return "rightopentriangle";
2498 	if (k == XK_emopencircle) return "emopencircle";
2499 	if (k == XK_emopenrectangle) return "emopenrectangle";
2500 	if (k == XK_leftsinglequotemark) return "leftsinglequotemark";
2501 	if (k == XK_rightsinglequotemark) return "rightsinglequotemark";
2502 	if (k == XK_leftdoublequotemark) return "leftdoublequotemark";
2503 	if (k == XK_rightdoublequotemark) return "rightdoublequotemark";
2504 	if (k == XK_prescription) return "prescription";
2505 	if (k == XK_minutes) return "minutes";
2506 	if (k == XK_seconds) return "seconds";
2507 	if (k == XK_latincross) return "latincross";
2508 	if (k == XK_hexagram) return "hexagram";
2509 	if (k == XK_filledrectbullet) return "filledrectbullet";
2510 	if (k == XK_filledlefttribullet) return "filledlefttribullet";
2511 	if (k == XK_filledrighttribullet) return "filledrighttribullet";
2512 	if (k == XK_emfilledcircle) return "emfilledcircle";
2513 	if (k == XK_emfilledrect) return "emfilledrect";
2514 	if (k == XK_enopencircbullet) return "enopencircbullet";
2515 	if (k == XK_enopensquarebullet) return "enopensquarebullet";
2516 	if (k == XK_openrectbullet) return "openrectbullet";
2517 	if (k == XK_opentribulletup) return "opentribulletup";
2518 	if (k == XK_opentribulletdown) return "opentribulletdown";
2519 	if (k == XK_openstar) return "openstar";
2520 	if (k == XK_enfilledcircbullet) return "enfilledcircbullet";
2521 	if (k == XK_enfilledsqbullet) return "enfilledsqbullet";
2522 	if (k == XK_filledtribulletup) return "filledtribulletup";
2523 	if (k == XK_filledtribulletdown) return "filledtribulletdown";
2524 	if (k == XK_leftpointer) return "leftpointer";
2525 	if (k == XK_rightpointer) return "rightpointer";
2526 	if (k == XK_club) return "club";
2527 	if (k == XK_diamond) return "diamond";
2528 	if (k == XK_heart) return "heart";
2529 	if (k == XK_maltesecross) return "maltesecross";
2530 	if (k == XK_dagger) return "dagger";
2531 	if (k == XK_doubledagger) return "doubledagger";
2532 	if (k == XK_checkmark) return "checkmark";
2533 	if (k == XK_ballotcross) return "ballotcross";
2534 	if (k == XK_musicalsharp) return "musicalsharp";
2535 	if (k == XK_musicalflat) return "musicalflat";
2536 	if (k == XK_malesymbol) return "malesymbol";
2537 	if (k == XK_femalesymbol) return "femalesymbol";
2538 	if (k == XK_telephone) return "telephone";
2539 	if (k == XK_telephonerecorder) return "telephonerecorder";
2540 	if (k == XK_phonographcopyright) return "phonographcopyright";
2541 	if (k == XK_caret) return "caret";
2542 	if (k == XK_singlelowquotemark) return "singlelowquotemark";
2543 	if (k == XK_doublelowquotemark) return "doublelowquotemark";
2544 	if (k == XK_cursor) return "cursor";
2545 #endif /* XK_PUBLISHING */
2546 #ifdef XK_APL
2547 	if (k == XK_leftcaret) return "leftcaret";
2548 	if (k == XK_rightcaret) return "rightcaret";
2549 	if (k == XK_downcaret) return "downcaret";
2550 	if (k == XK_upcaret) return "upcaret";
2551 	if (k == XK_overbar) return "overbar";
2552 	if (k == XK_downtack) return "downtack";
2553 	if (k == XK_upshoe) return "upshoe";
2554 	if (k == XK_downstile) return "downstile";
2555 	if (k == XK_underbar) return "underbar";
2556 	if (k == XK_jot) return "jot";
2557 	if (k == XK_quad) return "quad";
2558 	if (k == XK_uptack) return "uptack";
2559 	if (k == XK_circle) return "circle";
2560 	if (k == XK_upstile) return "upstile";
2561 	if (k == XK_downshoe) return "downshoe";
2562 	if (k == XK_rightshoe) return "rightshoe";
2563 	if (k == XK_leftshoe) return "leftshoe";
2564 	if (k == XK_lefttack) return "lefttack";
2565 	if (k == XK_righttack) return "righttack";
2566 #endif /* XK_APL */
2567 #ifdef XK_HEBREW
2568 	if (k == XK_hebrew_doublelowline) return "hebrew_doublelowline";
2569 	if (k == XK_hebrew_aleph) return "hebrew_aleph";
2570 	if (k == XK_hebrew_bet) return "hebrew_bet";
2571 	if (k == XK_hebrew_beth) return "hebrew_beth";
2572 	if (k == XK_hebrew_gimel) return "hebrew_gimel";
2573 	if (k == XK_hebrew_gimmel) return "hebrew_gimmel";
2574 	if (k == XK_hebrew_dalet) return "hebrew_dalet";
2575 	if (k == XK_hebrew_daleth) return "hebrew_daleth";
2576 	if (k == XK_hebrew_he) return "hebrew_he";
2577 	if (k == XK_hebrew_waw) return "hebrew_waw";
2578 	if (k == XK_hebrew_zain) return "hebrew_zain";
2579 	if (k == XK_hebrew_zayin) return "hebrew_zayin";
2580 	if (k == XK_hebrew_chet) return "hebrew_chet";
2581 	if (k == XK_hebrew_het) return "hebrew_het";
2582 	if (k == XK_hebrew_tet) return "hebrew_tet";
2583 	if (k == XK_hebrew_teth) return "hebrew_teth";
2584 	if (k == XK_hebrew_yod) return "hebrew_yod";
2585 	if (k == XK_hebrew_finalkaph) return "hebrew_finalkaph";
2586 	if (k == XK_hebrew_kaph) return "hebrew_kaph";
2587 	if (k == XK_hebrew_lamed) return "hebrew_lamed";
2588 	if (k == XK_hebrew_finalmem) return "hebrew_finalmem";
2589 	if (k == XK_hebrew_mem) return "hebrew_mem";
2590 	if (k == XK_hebrew_finalnun) return "hebrew_finalnun";
2591 	if (k == XK_hebrew_nun) return "hebrew_nun";
2592 	if (k == XK_hebrew_samech) return "hebrew_samech";
2593 	if (k == XK_hebrew_samekh) return "hebrew_samekh";
2594 	if (k == XK_hebrew_ayin) return "hebrew_ayin";
2595 	if (k == XK_hebrew_finalpe) return "hebrew_finalpe";
2596 	if (k == XK_hebrew_pe) return "hebrew_pe";
2597 	if (k == XK_hebrew_finalzade) return "hebrew_finalzade";
2598 	if (k == XK_hebrew_finalzadi) return "hebrew_finalzadi";
2599 	if (k == XK_hebrew_zade) return "hebrew_zade";
2600 	if (k == XK_hebrew_zadi) return "hebrew_zadi";
2601 	if (k == XK_hebrew_qoph) return "hebrew_qoph";
2602 	if (k == XK_hebrew_kuf) return "hebrew_kuf";
2603 	if (k == XK_hebrew_resh) return "hebrew_resh";
2604 	if (k == XK_hebrew_shin) return "hebrew_shin";
2605 	if (k == XK_hebrew_taw) return "hebrew_taw";
2606 	if (k == XK_hebrew_taf) return "hebrew_taf";
2607 	if (k == XK_Hebrew_switch) return "Hebrew_switch";
2608 #endif /* XK_HEBREW */
2609 #ifdef XK_THAI
2610 	if (k == XK_Thai_kokai) return "Thai_kokai";
2611 	if (k == XK_Thai_khokhai) return "Thai_khokhai";
2612 	if (k == XK_Thai_khokhuat) return "Thai_khokhuat";
2613 	if (k == XK_Thai_khokhwai) return "Thai_khokhwai";
2614 	if (k == XK_Thai_khokhon) return "Thai_khokhon";
2615 	if (k == XK_Thai_khorakhang) return "Thai_khorakhang";
2616 	if (k == XK_Thai_ngongu) return "Thai_ngongu";
2617 	if (k == XK_Thai_chochan) return "Thai_chochan";
2618 	if (k == XK_Thai_choching) return "Thai_choching";
2619 	if (k == XK_Thai_chochang) return "Thai_chochang";
2620 	if (k == XK_Thai_soso) return "Thai_soso";
2621 	if (k == XK_Thai_chochoe) return "Thai_chochoe";
2622 	if (k == XK_Thai_yoying) return "Thai_yoying";
2623 	if (k == XK_Thai_dochada) return "Thai_dochada";
2624 	if (k == XK_Thai_topatak) return "Thai_topatak";
2625 	if (k == XK_Thai_thothan) return "Thai_thothan";
2626 	if (k == XK_Thai_thonangmontho) return "Thai_thonangmontho";
2627 	if (k == XK_Thai_thophuthao) return "Thai_thophuthao";
2628 	if (k == XK_Thai_nonen) return "Thai_nonen";
2629 	if (k == XK_Thai_dodek) return "Thai_dodek";
2630 	if (k == XK_Thai_totao) return "Thai_totao";
2631 	if (k == XK_Thai_thothung) return "Thai_thothung";
2632 	if (k == XK_Thai_thothahan) return "Thai_thothahan";
2633 	if (k == XK_Thai_thothong) return "Thai_thothong";
2634 	if (k == XK_Thai_nonu) return "Thai_nonu";
2635 	if (k == XK_Thai_bobaimai) return "Thai_bobaimai";
2636 	if (k == XK_Thai_popla) return "Thai_popla";
2637 	if (k == XK_Thai_phophung) return "Thai_phophung";
2638 	if (k == XK_Thai_fofa) return "Thai_fofa";
2639 	if (k == XK_Thai_phophan) return "Thai_phophan";
2640 	if (k == XK_Thai_fofan) return "Thai_fofan";
2641 	if (k == XK_Thai_phosamphao) return "Thai_phosamphao";
2642 	if (k == XK_Thai_moma) return "Thai_moma";
2643 	if (k == XK_Thai_yoyak) return "Thai_yoyak";
2644 	if (k == XK_Thai_rorua) return "Thai_rorua";
2645 	if (k == XK_Thai_ru) return "Thai_ru";
2646 	if (k == XK_Thai_loling) return "Thai_loling";
2647 	if (k == XK_Thai_lu) return "Thai_lu";
2648 	if (k == XK_Thai_wowaen) return "Thai_wowaen";
2649 	if (k == XK_Thai_sosala) return "Thai_sosala";
2650 	if (k == XK_Thai_sorusi) return "Thai_sorusi";
2651 	if (k == XK_Thai_sosua) return "Thai_sosua";
2652 	if (k == XK_Thai_hohip) return "Thai_hohip";
2653 	if (k == XK_Thai_lochula) return "Thai_lochula";
2654 	if (k == XK_Thai_oang) return "Thai_oang";
2655 	if (k == XK_Thai_honokhuk) return "Thai_honokhuk";
2656 	if (k == XK_Thai_paiyannoi) return "Thai_paiyannoi";
2657 	if (k == XK_Thai_saraa) return "Thai_saraa";
2658 	if (k == XK_Thai_maihanakat) return "Thai_maihanakat";
2659 	if (k == XK_Thai_saraaa) return "Thai_saraaa";
2660 	if (k == XK_Thai_saraam) return "Thai_saraam";
2661 	if (k == XK_Thai_sarai) return "Thai_sarai";
2662 	if (k == XK_Thai_saraii) return "Thai_saraii";
2663 	if (k == XK_Thai_saraue) return "Thai_saraue";
2664 	if (k == XK_Thai_sarauee) return "Thai_sarauee";
2665 	if (k == XK_Thai_sarau) return "Thai_sarau";
2666 	if (k == XK_Thai_sarauu) return "Thai_sarauu";
2667 	if (k == XK_Thai_phinthu) return "Thai_phinthu";
2668 	if (k == XK_Thai_maihanakat_maitho) return "Thai_maihanakat_maitho";
2669 	if (k == XK_Thai_baht) return "Thai_baht";
2670 	if (k == XK_Thai_sarae) return "Thai_sarae";
2671 	if (k == XK_Thai_saraae) return "Thai_saraae";
2672 	if (k == XK_Thai_sarao) return "Thai_sarao";
2673 	if (k == XK_Thai_saraaimaimuan) return "Thai_saraaimaimuan";
2674 	if (k == XK_Thai_saraaimaimalai) return "Thai_saraaimaimalai";
2675 	if (k == XK_Thai_lakkhangyao) return "Thai_lakkhangyao";
2676 	if (k == XK_Thai_maiyamok) return "Thai_maiyamok";
2677 	if (k == XK_Thai_maitaikhu) return "Thai_maitaikhu";
2678 	if (k == XK_Thai_maiek) return "Thai_maiek";
2679 	if (k == XK_Thai_maitho) return "Thai_maitho";
2680 	if (k == XK_Thai_maitri) return "Thai_maitri";
2681 	if (k == XK_Thai_maichattawa) return "Thai_maichattawa";
2682 	if (k == XK_Thai_thanthakhat) return "Thai_thanthakhat";
2683 	if (k == XK_Thai_nikhahit) return "Thai_nikhahit";
2684 	if (k == XK_Thai_leksun) return "Thai_leksun";
2685 	if (k == XK_Thai_leknung) return "Thai_leknung";
2686 	if (k == XK_Thai_leksong) return "Thai_leksong";
2687 	if (k == XK_Thai_leksam) return "Thai_leksam";
2688 	if (k == XK_Thai_leksi) return "Thai_leksi";
2689 	if (k == XK_Thai_lekha) return "Thai_lekha";
2690 	if (k == XK_Thai_lekhok) return "Thai_lekhok";
2691 	if (k == XK_Thai_lekchet) return "Thai_lekchet";
2692 	if (k == XK_Thai_lekpaet) return "Thai_lekpaet";
2693 	if (k == XK_Thai_lekkao) return "Thai_lekkao";
2694 #endif /* XK_THAI */
2695 #ifdef XK_KOREAN
2696 	if (k == XK_Hangul) return "Hangul";
2697 	if (k == XK_Hangul_Start) return "Hangul_Start";
2698 	if (k == XK_Hangul_End) return "Hangul_End";
2699 	if (k == XK_Hangul_Hanja) return "Hangul_Hanja";
2700 	if (k == XK_Hangul_Jamo) return "Hangul_Jamo";
2701 	if (k == XK_Hangul_Romaja) return "Hangul_Romaja";
2702 	if (k == XK_Hangul_Codeinput) return "Hangul_Codeinput";
2703 	if (k == XK_Hangul_Jeonja) return "Hangul_Jeonja";
2704 	if (k == XK_Hangul_Banja) return "Hangul_Banja";
2705 	if (k == XK_Hangul_PreHanja) return "Hangul_PreHanja";
2706 	if (k == XK_Hangul_PostHanja) return "Hangul_PostHanja";
2707 	if (k == XK_Hangul_SingleCandidate) return "Hangul_SingleCandidate";
2708 	if (k == XK_Hangul_MultipleCandidate) return "Hangul_MultipleCandidate";
2709 	if (k == XK_Hangul_PreviousCandidate) return "Hangul_PreviousCandidate";
2710 	if (k == XK_Hangul_Special) return "Hangul_Special";
2711 	if (k == XK_Hangul_switch) return "Hangul_switch";
2712 	if (k == XK_Hangul_Kiyeog) return "Hangul_Kiyeog";
2713 	if (k == XK_Hangul_SsangKiyeog) return "Hangul_SsangKiyeog";
2714 	if (k == XK_Hangul_KiyeogSios) return "Hangul_KiyeogSios";
2715 	if (k == XK_Hangul_Nieun) return "Hangul_Nieun";
2716 	if (k == XK_Hangul_NieunJieuj) return "Hangul_NieunJieuj";
2717 	if (k == XK_Hangul_NieunHieuh) return "Hangul_NieunHieuh";
2718 	if (k == XK_Hangul_Dikeud) return "Hangul_Dikeud";
2719 	if (k == XK_Hangul_SsangDikeud) return "Hangul_SsangDikeud";
2720 	if (k == XK_Hangul_Rieul) return "Hangul_Rieul";
2721 	if (k == XK_Hangul_RieulKiyeog) return "Hangul_RieulKiyeog";
2722 	if (k == XK_Hangul_RieulMieum) return "Hangul_RieulMieum";
2723 	if (k == XK_Hangul_RieulPieub) return "Hangul_RieulPieub";
2724 	if (k == XK_Hangul_RieulSios) return "Hangul_RieulSios";
2725 	if (k == XK_Hangul_RieulTieut) return "Hangul_RieulTieut";
2726 	if (k == XK_Hangul_RieulPhieuf) return "Hangul_RieulPhieuf";
2727 	if (k == XK_Hangul_RieulHieuh) return "Hangul_RieulHieuh";
2728 	if (k == XK_Hangul_Mieum) return "Hangul_Mieum";
2729 	if (k == XK_Hangul_Pieub) return "Hangul_Pieub";
2730 	if (k == XK_Hangul_SsangPieub) return "Hangul_SsangPieub";
2731 	if (k == XK_Hangul_PieubSios) return "Hangul_PieubSios";
2732 	if (k == XK_Hangul_Sios) return "Hangul_Sios";
2733 	if (k == XK_Hangul_SsangSios) return "Hangul_SsangSios";
2734 	if (k == XK_Hangul_Ieung) return "Hangul_Ieung";
2735 	if (k == XK_Hangul_Jieuj) return "Hangul_Jieuj";
2736 	if (k == XK_Hangul_SsangJieuj) return "Hangul_SsangJieuj";
2737 	if (k == XK_Hangul_Cieuc) return "Hangul_Cieuc";
2738 	if (k == XK_Hangul_Khieuq) return "Hangul_Khieuq";
2739 	if (k == XK_Hangul_Tieut) return "Hangul_Tieut";
2740 	if (k == XK_Hangul_Phieuf) return "Hangul_Phieuf";
2741 	if (k == XK_Hangul_Hieuh) return "Hangul_Hieuh";
2742 	if (k == XK_Hangul_A) return "Hangul_A";
2743 	if (k == XK_Hangul_AE) return "Hangul_AE";
2744 	if (k == XK_Hangul_YA) return "Hangul_YA";
2745 	if (k == XK_Hangul_YAE) return "Hangul_YAE";
2746 	if (k == XK_Hangul_EO) return "Hangul_EO";
2747 	if (k == XK_Hangul_E) return "Hangul_E";
2748 	if (k == XK_Hangul_YEO) return "Hangul_YEO";
2749 	if (k == XK_Hangul_YE) return "Hangul_YE";
2750 	if (k == XK_Hangul_O) return "Hangul_O";
2751 	if (k == XK_Hangul_WA) return "Hangul_WA";
2752 	if (k == XK_Hangul_WAE) return "Hangul_WAE";
2753 	if (k == XK_Hangul_OE) return "Hangul_OE";
2754 	if (k == XK_Hangul_YO) return "Hangul_YO";
2755 	if (k == XK_Hangul_U) return "Hangul_U";
2756 	if (k == XK_Hangul_WEO) return "Hangul_WEO";
2757 	if (k == XK_Hangul_WE) return "Hangul_WE";
2758 	if (k == XK_Hangul_WI) return "Hangul_WI";
2759 	if (k == XK_Hangul_YU) return "Hangul_YU";
2760 	if (k == XK_Hangul_EU) return "Hangul_EU";
2761 	if (k == XK_Hangul_YI) return "Hangul_YI";
2762 	if (k == XK_Hangul_I) return "Hangul_I";
2763 	if (k == XK_Hangul_J_Kiyeog) return "Hangul_J_Kiyeog";
2764 	if (k == XK_Hangul_J_SsangKiyeog) return "Hangul_J_SsangKiyeog";
2765 	if (k == XK_Hangul_J_KiyeogSios) return "Hangul_J_KiyeogSios";
2766 	if (k == XK_Hangul_J_Nieun) return "Hangul_J_Nieun";
2767 	if (k == XK_Hangul_J_NieunJieuj) return "Hangul_J_NieunJieuj";
2768 	if (k == XK_Hangul_J_NieunHieuh) return "Hangul_J_NieunHieuh";
2769 	if (k == XK_Hangul_J_Dikeud) return "Hangul_J_Dikeud";
2770 	if (k == XK_Hangul_J_Rieul) return "Hangul_J_Rieul";
2771 	if (k == XK_Hangul_J_RieulKiyeog) return "Hangul_J_RieulKiyeog";
2772 	if (k == XK_Hangul_J_RieulMieum) return "Hangul_J_RieulMieum";
2773 	if (k == XK_Hangul_J_RieulPieub) return "Hangul_J_RieulPieub";
2774 	if (k == XK_Hangul_J_RieulSios) return "Hangul_J_RieulSios";
2775 	if (k == XK_Hangul_J_RieulTieut) return "Hangul_J_RieulTieut";
2776 	if (k == XK_Hangul_J_RieulPhieuf) return "Hangul_J_RieulPhieuf";
2777 	if (k == XK_Hangul_J_RieulHieuh) return "Hangul_J_RieulHieuh";
2778 	if (k == XK_Hangul_J_Mieum) return "Hangul_J_Mieum";
2779 	if (k == XK_Hangul_J_Pieub) return "Hangul_J_Pieub";
2780 	if (k == XK_Hangul_J_PieubSios) return "Hangul_J_PieubSios";
2781 	if (k == XK_Hangul_J_Sios) return "Hangul_J_Sios";
2782 	if (k == XK_Hangul_J_SsangSios) return "Hangul_J_SsangSios";
2783 	if (k == XK_Hangul_J_Ieung) return "Hangul_J_Ieung";
2784 	if (k == XK_Hangul_J_Jieuj) return "Hangul_J_Jieuj";
2785 	if (k == XK_Hangul_J_Cieuc) return "Hangul_J_Cieuc";
2786 	if (k == XK_Hangul_J_Khieuq) return "Hangul_J_Khieuq";
2787 	if (k == XK_Hangul_J_Tieut) return "Hangul_J_Tieut";
2788 	if (k == XK_Hangul_J_Phieuf) return "Hangul_J_Phieuf";
2789 	if (k == XK_Hangul_J_Hieuh) return "Hangul_J_Hieuh";
2790 	if (k == XK_Hangul_RieulYeorinHieuh) return "Hangul_RieulYeorinHieuh";
2791 	if (k == XK_Hangul_SunkyeongeumMieum) return "Hangul_SunkyeongeumMieum";
2792 	if (k == XK_Hangul_SunkyeongeumPieub) return "Hangul_SunkyeongeumPieub";
2793 	if (k == XK_Hangul_PanSios) return "Hangul_PanSios";
2794 	if (k == XK_Hangul_KkogjiDalrinIeung) return "Hangul_KkogjiDalrinIeung";
2795 	if (k == XK_Hangul_SunkyeongeumPhieuf) return "Hangul_SunkyeongeumPhieuf";
2796 	if (k == XK_Hangul_YeorinHieuh) return "Hangul_YeorinHieuh";
2797 	if (k == XK_Hangul_AraeA) return "Hangul_AraeA";
2798 	if (k == XK_Hangul_AraeAE) return "Hangul_AraeAE";
2799 	if (k == XK_Hangul_J_PanSios) return "Hangul_J_PanSios";
2800 	if (k == XK_Hangul_J_KkogjiDalrinIeung) return "Hangul_J_KkogjiDalrinIeung";
2801 	if (k == XK_Hangul_J_YeorinHieuh) return "Hangul_J_YeorinHieuh";
2802 	if (k == XK_Korean_Won) return "Korean_Won";
2803 #endif /* XK_KOREAN */
2804 	if (k == XK_EuroSign) return "EuroSign";
2805 #endif
2806 	return NULL;
2807 }
2808 
XKeycodeToKeysym(Display * display,KeyCode keycode,int index)2809 KeySym XKeycodeToKeysym(Display *display, KeyCode keycode, int index) {
2810 	if (!display || !keycode || !index) {}
2811 	return NoSymbol;
2812 }
2813 
XKeysymToKeycode(Display * display,KeySym keysym)2814 KeyCode XKeysymToKeycode(Display *display, KeySym keysym) {
2815 	if (!display || !keysym) {}
2816 	return NoSymbol;
2817 }
2818 
XSetErrorHandler(XErrorHandler h)2819 XErrorHandler XSetErrorHandler (XErrorHandler h) {
2820 	return h;
2821 }
2822 
2823