1 #![allow(clippy::wildcard_imports)]
2 use std::os::raw::c_uint;
3 use x11_dl::keysym::*;
4 use x11_dl::xlib;
5 
6 pub type XKeysym = c_uint;
7 pub type ModMask = c_uint;
8 pub type Button = c_uint;
9 
10 #[must_use]
into_modmask(keys: &[String]) -> ModMask11 pub fn into_modmask(keys: &[String]) -> ModMask {
12     let mut mask = 0;
13     for s in keys {
14         mask |= into_mod(s);
15     }
16     //clean the mask
17     mask &= !(xlib::Mod2Mask | xlib::LockMask);
18     mask & (xlib::ShiftMask
19         | xlib::ControlMask
20         | xlib::Mod1Mask
21         | xlib::Mod3Mask
22         | xlib::Mod4Mask
23         | xlib::Mod5Mask)
24 }
25 
26 #[must_use]
into_mod(key: &str) -> ModMask27 pub fn into_mod(key: &str) -> ModMask {
28     match key {
29         "None" => xlib::AnyModifier,
30         "Shift" => xlib::ShiftMask,
31         "Control" => xlib::ControlMask,
32         "Mod1" | "Alt" => xlib::Mod1Mask,
33         //"Mod2" => xlib::Mod2Mask,     // NOTE: we are ignoring the state of Numlock
34         //"NumLock" => xlib::Mod2Mask,  // this is left here as a reminder
35         "Mod3" => xlib::Mod3Mask,
36         "Mod4" | "Super" => xlib::Mod4Mask,
37         "Mod5" => xlib::Mod5Mask,
38         _ => 0,
39     }
40 }
41 
42 // We allow this because this function is simply a mapping wrapper.
43 #[allow(clippy::too_many_lines)]
44 #[must_use]
into_keysym(key: &str) -> Option<XKeysym>45 pub fn into_keysym(key: &str) -> Option<XKeysym> {
46     match key {
47         "BackSpace" => Some(XK_BackSpace),
48         "Tab" => Some(XK_Tab),
49         "Linefeed" => Some(XK_Linefeed),
50         "Clear" => Some(XK_Clear),
51         "Return" => Some(XK_Return),
52         "Pause" => Some(XK_Pause),
53         "Scroll_Lock" => Some(XK_Scroll_Lock),
54         "Sys_Req" => Some(XK_Sys_Req),
55         "Escape" => Some(XK_Escape),
56         "Delete" => Some(XK_Delete),
57         "Multi_key" => Some(XK_Multi_key),
58         "Kanji" => Some(XK_Kanji),
59         "Muhenkan" => Some(XK_Muhenkan),
60         "Henkan_Mode" => Some(XK_Henkan_Mode),
61         "Henkan" => Some(XK_Henkan),
62         "Romaji" => Some(XK_Romaji),
63         "Hiragana" => Some(XK_Hiragana),
64         "Katakana" => Some(XK_Katakana),
65         "Hiragana_Katakana" => Some(XK_Hiragana_Katakana),
66         "Zenkaku" => Some(XK_Zenkaku),
67         "Hankaku" => Some(XK_Hankaku),
68         "Zenkaku_Hankaku" => Some(XK_Zenkaku_Hankaku),
69         "Touroku" => Some(XK_Touroku),
70         "Massyo" => Some(XK_Massyo),
71         "Kana_Lock" => Some(XK_Kana_Lock),
72         "Kana_Shift" => Some(XK_Kana_Shift),
73         "Eisu_Shift" => Some(XK_Eisu_Shift),
74         "Eisu_toggle" => Some(XK_Eisu_toggle),
75         "Home" => Some(XK_Home),
76         "Left" => Some(XK_Left),
77         "Up" => Some(XK_Up),
78         "Right" => Some(XK_Right),
79         "Down" => Some(XK_Down),
80         "Prior" => Some(XK_Prior),
81         "Page_Up" => Some(XK_Page_Up),
82         "Next" => Some(XK_Next),
83         "Page_Down" => Some(XK_Page_Down),
84         "End" => Some(XK_End),
85         "Begin" => Some(XK_Begin),
86         "Win_L" => Some(XK_Win_L),
87         "Win_R" => Some(XK_Win_R),
88         "App" => Some(XK_App),
89         "Select" => Some(XK_Select),
90         "Print" => Some(XK_Print),
91         "Execute" => Some(XK_Execute),
92         "Insert" => Some(XK_Insert),
93         "Undo" => Some(XK_Undo),
94         "Redo" => Some(XK_Redo),
95         "Menu" => Some(XK_Menu),
96         "Find" => Some(XK_Find),
97         "Cancel" => Some(XK_Cancel),
98         "Help" => Some(XK_Help),
99         "Break" => Some(XK_Break),
100         "Mode_switch" => Some(XK_Mode_switch),
101         "script_switch" => Some(XK_script_switch),
102         "Num_Lock" => Some(XK_Num_Lock),
103         "KP_Space" => Some(XK_KP_Space),
104         "KP_Tab" => Some(XK_KP_Tab),
105         "KP_Enter" => Some(XK_KP_Enter),
106         "KP_F1" => Some(XK_KP_F1),
107         "KP_F2" => Some(XK_KP_F2),
108         "KP_F3" => Some(XK_KP_F3),
109         "KP_F4" => Some(XK_KP_F4),
110         "KP_Home" => Some(XK_KP_Home),
111         "KP_Left" => Some(XK_KP_Left),
112         "KP_Up" => Some(XK_KP_Up),
113         "KP_Right" => Some(XK_KP_Right),
114         "KP_Down" => Some(XK_KP_Down),
115         "KP_Prior" => Some(XK_KP_Prior),
116         "KP_Page_Up" => Some(XK_KP_Page_Up),
117         "KP_Next" => Some(XK_KP_Next),
118         "KP_Page_Down" => Some(XK_KP_Page_Down),
119         "KP_End" => Some(XK_KP_End),
120         "KP_Begin" => Some(XK_KP_Begin),
121         "KP_Insert" => Some(XK_KP_Insert),
122         "KP_Delete" => Some(XK_KP_Delete),
123         "KP_Equal" => Some(XK_KP_Equal),
124         "KP_Multiply" => Some(XK_KP_Multiply),
125         "KP_Add" => Some(XK_KP_Add),
126         "KP_Separator" => Some(XK_KP_Separator),
127         "KP_Subtract" => Some(XK_KP_Subtract),
128         "KP_Decimal" => Some(XK_KP_Decimal),
129         "KP_Divide" => Some(XK_KP_Divide),
130         "KP_0" => Some(XK_KP_0),
131         "KP_1" => Some(XK_KP_1),
132         "KP_2" => Some(XK_KP_2),
133         "KP_3" => Some(XK_KP_3),
134         "KP_4" => Some(XK_KP_4),
135         "KP_5" => Some(XK_KP_5),
136         "KP_6" => Some(XK_KP_6),
137         "KP_7" => Some(XK_KP_7),
138         "KP_8" => Some(XK_KP_8),
139         "KP_9" => Some(XK_KP_9),
140         "F1" => Some(XK_F1),
141         "F2" => Some(XK_F2),
142         "F3" => Some(XK_F3),
143         "F4" => Some(XK_F4),
144         "F5" => Some(XK_F5),
145         "F6" => Some(XK_F6),
146         "F7" => Some(XK_F7),
147         "F8" => Some(XK_F8),
148         "F9" => Some(XK_F9),
149         "F10" => Some(XK_F10),
150         "F11" => Some(XK_F11),
151         "L1" => Some(XK_L1),
152         "F12" => Some(XK_F12),
153         "L2" => Some(XK_L2),
154         "F13" => Some(XK_F13),
155         "L3" => Some(XK_L3),
156         "F14" => Some(XK_F14),
157         "L4" => Some(XK_L4),
158         "F15" => Some(XK_F15),
159         "L5" => Some(XK_L5),
160         "F16" => Some(XK_F16),
161         "L6" => Some(XK_L6),
162         "F17" => Some(XK_F17),
163         "L7" => Some(XK_L7),
164         "F18" => Some(XK_F18),
165         "L8" => Some(XK_L8),
166         "F19" => Some(XK_F19),
167         "L9" => Some(XK_L9),
168         "F20" => Some(XK_F20),
169         "L10" => Some(XK_L10),
170         "F21" => Some(XK_F21),
171         "R1" => Some(XK_R1),
172         "F22" => Some(XK_F22),
173         "R2" => Some(XK_R2),
174         "F23" => Some(XK_F23),
175         "R3" => Some(XK_R3),
176         "F24" => Some(XK_F24),
177         "R4" => Some(XK_R4),
178         "F25" => Some(XK_F25),
179         "R5" => Some(XK_R5),
180         "F26" => Some(XK_F26),
181         "R6" => Some(XK_R6),
182         "F27" => Some(XK_F27),
183         "R7" => Some(XK_R7),
184         "F28" => Some(XK_F28),
185         "R8" => Some(XK_R8),
186         "F29" => Some(XK_F29),
187         "R9" => Some(XK_R9),
188         "F30" => Some(XK_F30),
189         "R10" => Some(XK_R10),
190         "F31" => Some(XK_F31),
191         "R11" => Some(XK_R11),
192         "F32" => Some(XK_F32),
193         "R12" => Some(XK_R12),
194         "F33" => Some(XK_F33),
195         "R13" => Some(XK_R13),
196         "F34" => Some(XK_F34),
197         "R14" => Some(XK_R14),
198         "F35" => Some(XK_F35),
199         "R15" => Some(XK_R15),
200         "Shift_L" => Some(XK_Shift_L),
201         "Shift_R" => Some(XK_Shift_R),
202         "Control_L" => Some(XK_Control_L),
203         "Control_R" => Some(XK_Control_R),
204         "Caps_Lock" => Some(XK_Caps_Lock),
205         "Shift_Lock" => Some(XK_Shift_Lock),
206         "Meta_L" => Some(XK_Meta_L),
207         "Meta_R" => Some(XK_Meta_R),
208         "Alt_L" => Some(XK_Alt_L),
209         "Alt_R" => Some(XK_Alt_R),
210         "Super_L" => Some(XK_Super_L),
211         "Super_R" => Some(XK_Super_R),
212         "Hyper_L" => Some(XK_Hyper_L),
213         "Hyper_R" => Some(XK_Hyper_R),
214         "space" => Some(XK_space),
215         "exclam" => Some(XK_exclam),
216         "quotedbl" => Some(XK_quotedbl),
217         "numbersign" => Some(XK_numbersign),
218         "dollar" => Some(XK_dollar),
219         "percent" => Some(XK_percent),
220         "ampersand" => Some(XK_ampersand),
221         "apostrophe" => Some(XK_apostrophe),
222         "quoteright" => Some(XK_quoteright),
223         "parenleft" => Some(XK_parenleft),
224         "parenright" => Some(XK_parenright),
225         "asterisk" => Some(XK_asterisk),
226         "plus" => Some(XK_plus),
227         "comma" => Some(XK_comma),
228         "minus" => Some(XK_minus),
229         "period" => Some(XK_period),
230         "slash" => Some(XK_slash),
231         "0" => Some(XK_0),
232         "1" => Some(XK_1),
233         "2" => Some(XK_2),
234         "3" => Some(XK_3),
235         "4" => Some(XK_4),
236         "5" => Some(XK_5),
237         "6" => Some(XK_6),
238         "7" => Some(XK_7),
239         "8" => Some(XK_8),
240         "9" => Some(XK_9),
241         "colon" => Some(XK_colon),
242         "semicolon" => Some(XK_semicolon),
243         "less" => Some(XK_less),
244         "equal" => Some(XK_equal),
245         "greater" => Some(XK_greater),
246         "question" => Some(XK_question),
247         "at" => Some(XK_at),
248         "A" => Some(XK_A),
249         "B" => Some(XK_B),
250         "C" => Some(XK_C),
251         "D" => Some(XK_D),
252         "E" => Some(XK_E),
253         "F" => Some(XK_F),
254         "G" => Some(XK_G),
255         "H" => Some(XK_H),
256         "I" => Some(XK_I),
257         "J" => Some(XK_J),
258         "K" => Some(XK_K),
259         "L" => Some(XK_L),
260         "M" => Some(XK_M),
261         "N" => Some(XK_N),
262         "O" => Some(XK_O),
263         "P" => Some(XK_P),
264         "Q" => Some(XK_Q),
265         "R" => Some(XK_R),
266         "S" => Some(XK_S),
267         "T" => Some(XK_T),
268         "U" => Some(XK_U),
269         "V" => Some(XK_V),
270         "W" => Some(XK_W),
271         "X" => Some(XK_X),
272         "Y" => Some(XK_Y),
273         "Z" => Some(XK_Z),
274         "bracketleft" => Some(XK_bracketleft),
275         "backslash" => Some(XK_backslash),
276         "bracketright" => Some(XK_bracketright),
277         "asciicircum" => Some(XK_asciicircum),
278         "underscore" => Some(XK_underscore),
279         "grave" => Some(XK_grave),
280         "quoteleft" => Some(XK_quoteleft),
281         "a" => Some(XK_a),
282         "b" => Some(XK_b),
283         "c" => Some(XK_c),
284         "d" => Some(XK_d),
285         "e" => Some(XK_e),
286         "f" => Some(XK_f),
287         "g" => Some(XK_g),
288         "h" => Some(XK_h),
289         "i" => Some(XK_i),
290         "j" => Some(XK_j),
291         "k" => Some(XK_k),
292         "l" => Some(XK_l),
293         "m" => Some(XK_m),
294         "n" => Some(XK_n),
295         "o" => Some(XK_o),
296         "p" => Some(XK_p),
297         "q" => Some(XK_q),
298         "r" => Some(XK_r),
299         "s" => Some(XK_s),
300         "t" => Some(XK_t),
301         "u" => Some(XK_u),
302         "v" => Some(XK_v),
303         "w" => Some(XK_w),
304         "x" => Some(XK_x),
305         "y" => Some(XK_y),
306         "z" => Some(XK_z),
307         "braceleft" => Some(XK_braceleft),
308         "bar" => Some(XK_bar),
309         "braceright" => Some(XK_braceright),
310         "asciitilde" => Some(XK_asciitilde),
311         "nobreakspace" => Some(XK_nobreakspace),
312         "exclamdown" => Some(XK_exclamdown),
313         "cent" => Some(XK_cent),
314         "sterling" => Some(XK_sterling),
315         "currency" => Some(XK_currency),
316         "yen" => Some(XK_yen),
317         "brokenbar" => Some(XK_brokenbar),
318         "section" => Some(XK_section),
319         "diaeresis" => Some(XK_diaeresis),
320         "copyright" => Some(XK_copyright),
321         "ordfeminine" => Some(XK_ordfeminine),
322         "guillemotleft" => Some(XK_guillemotleft),
323         "notsign" => Some(XK_notsign),
324         "hyphen" => Some(XK_hyphen),
325         "registered" => Some(XK_registered),
326         "macron" => Some(XK_macron),
327         "degree" => Some(XK_degree),
328         "plusminus" => Some(XK_plusminus),
329         "twosuperior" => Some(XK_twosuperior),
330         "threesuperior" => Some(XK_threesuperior),
331         "acute" => Some(XK_acute),
332         "mu" => Some(XK_mu),
333         "paragraph" => Some(XK_paragraph),
334         "periodcentered" => Some(XK_periodcentered),
335         "cedilla" => Some(XK_cedilla),
336         "onesuperior" => Some(XK_onesuperior),
337         "masculine" => Some(XK_masculine),
338         "guillemotright" => Some(XK_guillemotright),
339         "onequarter" => Some(XK_onequarter),
340         "onehalf" => Some(XK_onehalf),
341         "threequarters" => Some(XK_threequarters),
342         "questiondown" => Some(XK_questiondown),
343         "Agrave" => Some(XK_Agrave),
344         "Aacute" => Some(XK_Aacute),
345         "Acircumflex" => Some(XK_Acircumflex),
346         "Atilde" => Some(XK_Atilde),
347         "Adiaeresis" => Some(XK_Adiaeresis),
348         "Aring" => Some(XK_Aring),
349         "AE" => Some(XK_AE),
350         "Ccedilla" => Some(XK_Ccedilla),
351         "Egrave" => Some(XK_Egrave),
352         "Eacute" => Some(XK_Eacute),
353         "Ecircumflex" => Some(XK_Ecircumflex),
354         "Ediaeresis" => Some(XK_Ediaeresis),
355         "Igrave" => Some(XK_Igrave),
356         "Iacute" => Some(XK_Iacute),
357         "Icircumflex" => Some(XK_Icircumflex),
358         "Idiaeresis" => Some(XK_Idiaeresis),
359         "ETH" => Some(XK_ETH),
360         "Eth" => Some(XK_Eth),
361         "Ntilde" => Some(XK_Ntilde),
362         "Ograve" => Some(XK_Ograve),
363         "Oacute" => Some(XK_Oacute),
364         "Ocircumflex" => Some(XK_Ocircumflex),
365         "Otilde" => Some(XK_Otilde),
366         "Odiaeresis" => Some(XK_Odiaeresis),
367         "multiply" => Some(XK_multiply),
368         "Ooblique" => Some(XK_Ooblique),
369         "Ugrave" => Some(XK_Ugrave),
370         "Uacute" => Some(XK_Uacute),
371         "Ucircumflex" => Some(XK_Ucircumflex),
372         "Udiaeresis" => Some(XK_Udiaeresis),
373         "Yacute" => Some(XK_Yacute),
374         "THORN" => Some(XK_THORN),
375         "Thorn" => Some(XK_Thorn),
376         "ssharp" => Some(XK_ssharp),
377         "agrave" => Some(XK_agrave),
378         "aacute" => Some(XK_aacute),
379         "acircumflex" => Some(XK_acircumflex),
380         "atilde" => Some(XK_atilde),
381         "adiaeresis" => Some(XK_adiaeresis),
382         "aring" => Some(XK_aring),
383         "ae" => Some(XK_ae),
384         "ccedilla" => Some(XK_ccedilla),
385         "egrave" => Some(XK_egrave),
386         "eacute" => Some(XK_eacute),
387         "ecircumflex" => Some(XK_ecircumflex),
388         "ediaeresis" => Some(XK_ediaeresis),
389         "igrave" => Some(XK_igrave),
390         "iacute" => Some(XK_iacute),
391         "icircumflex" => Some(XK_icircumflex),
392         "idiaeresis" => Some(XK_idiaeresis),
393         "eth" => Some(XK_eth),
394         "ntilde" => Some(XK_ntilde),
395         "ograve" => Some(XK_ograve),
396         "oacute" => Some(XK_oacute),
397         "ocircumflex" => Some(XK_ocircumflex),
398         "otilde" => Some(XK_otilde),
399         "odiaeresis" => Some(XK_odiaeresis),
400         "division" => Some(XK_division),
401         "oslash" => Some(XK_oslash),
402         "ugrave" => Some(XK_ugrave),
403         "uacute" => Some(XK_uacute),
404         "ucircumflex" => Some(XK_ucircumflex),
405         "udiaeresis" => Some(XK_udiaeresis),
406         "yacute" => Some(XK_yacute),
407         "thorn" => Some(XK_thorn),
408         "ydiaeresis" => Some(XK_ydiaeresis),
409         "Aogonek" => Some(XK_Aogonek),
410         "breve" => Some(XK_breve),
411         "Lstroke" => Some(XK_Lstroke),
412         "Lcaron" => Some(XK_Lcaron),
413         "Sacute" => Some(XK_Sacute),
414         "Scaron" => Some(XK_Scaron),
415         "Scedilla" => Some(XK_Scedilla),
416         "Tcaron" => Some(XK_Tcaron),
417         "Zacute" => Some(XK_Zacute),
418         "Zcaron" => Some(XK_Zcaron),
419         "Zabovedot" => Some(XK_Zabovedot),
420         "aogonek" => Some(XK_aogonek),
421         "ogonek" => Some(XK_ogonek),
422         "lstroke" => Some(XK_lstroke),
423         "lcaron" => Some(XK_lcaron),
424         "sacute" => Some(XK_sacute),
425         "caron" => Some(XK_caron),
426         "scaron" => Some(XK_scaron),
427         "scedilla" => Some(XK_scedilla),
428         "tcaron" => Some(XK_tcaron),
429         "zacute" => Some(XK_zacute),
430         "doubleacute" => Some(XK_doubleacute),
431         "zcaron" => Some(XK_zcaron),
432         "zabovedot" => Some(XK_zabovedot),
433         "Racute" => Some(XK_Racute),
434         "Abreve" => Some(XK_Abreve),
435         "Lacute" => Some(XK_Lacute),
436         "Cacute" => Some(XK_Cacute),
437         "Ccaron" => Some(XK_Ccaron),
438         "Eogonek" => Some(XK_Eogonek),
439         "Ecaron" => Some(XK_Ecaron),
440         "Dcaron" => Some(XK_Dcaron),
441         "Dstroke" => Some(XK_Dstroke),
442         "Nacute" => Some(XK_Nacute),
443         "Ncaron" => Some(XK_Ncaron),
444         "Odoubleacute" => Some(XK_Odoubleacute),
445         "Rcaron" => Some(XK_Rcaron),
446         "Uring" => Some(XK_Uring),
447         "Udoubleacute" => Some(XK_Udoubleacute),
448         "Tcedilla" => Some(XK_Tcedilla),
449         "racute" => Some(XK_racute),
450         "abreve" => Some(XK_abreve),
451         "lacute" => Some(XK_lacute),
452         "cacute" => Some(XK_cacute),
453         "ccaron" => Some(XK_ccaron),
454         "eogonek" => Some(XK_eogonek),
455         "ecaron" => Some(XK_ecaron),
456         "dcaron" => Some(XK_dcaron),
457         "dstroke" => Some(XK_dstroke),
458         "nacute" => Some(XK_nacute),
459         "ncaron" => Some(XK_ncaron),
460         "odoubleacute" => Some(XK_odoubleacute),
461         "udoubleacute" => Some(XK_udoubleacute),
462         "rcaron" => Some(XK_rcaron),
463         "uring" => Some(XK_uring),
464         "tcedilla" => Some(XK_tcedilla),
465         "abovedot" => Some(XK_abovedot),
466         "Hstroke" => Some(XK_Hstroke),
467         "Hcircumflex" => Some(XK_Hcircumflex),
468         "Iabovedot" => Some(XK_Iabovedot),
469         "Gbreve" => Some(XK_Gbreve),
470         "Jcircumflex" => Some(XK_Jcircumflex),
471         "hstroke" => Some(XK_hstroke),
472         "hcircumflex" => Some(XK_hcircumflex),
473         "idotless" => Some(XK_idotless),
474         "gbreve" => Some(XK_gbreve),
475         "jcircumflex" => Some(XK_jcircumflex),
476         "Cabovedot" => Some(XK_Cabovedot),
477         "Ccircumflex" => Some(XK_Ccircumflex),
478         "Gabovedot" => Some(XK_Gabovedot),
479         "Gcircumflex" => Some(XK_Gcircumflex),
480         "Ubreve" => Some(XK_Ubreve),
481         "Scircumflex" => Some(XK_Scircumflex),
482         "cabovedot" => Some(XK_cabovedot),
483         "ccircumflex" => Some(XK_ccircumflex),
484         "gabovedot" => Some(XK_gabovedot),
485         "gcircumflex" => Some(XK_gcircumflex),
486         "ubreve" => Some(XK_ubreve),
487         "scircumflex" => Some(XK_scircumflex),
488         "kra" => Some(XK_kra),
489         "kappa" => Some(XK_kappa),
490         "Rcedilla" => Some(XK_Rcedilla),
491         "Itilde" => Some(XK_Itilde),
492         "Lcedilla" => Some(XK_Lcedilla),
493         "Emacron" => Some(XK_Emacron),
494         "Gcedilla" => Some(XK_Gcedilla),
495         "Tslash" => Some(XK_Tslash),
496         "rcedilla" => Some(XK_rcedilla),
497         "itilde" => Some(XK_itilde),
498         "lcedilla" => Some(XK_lcedilla),
499         "emacron" => Some(XK_emacron),
500         "gcedilla" => Some(XK_gcedilla),
501         "tslash" => Some(XK_tslash),
502         "ENG" => Some(XK_ENG),
503         "eng" => Some(XK_eng),
504         "Amacron" => Some(XK_Amacron),
505         "Iogonek" => Some(XK_Iogonek),
506         "Eabovedot" => Some(XK_Eabovedot),
507         "Imacron" => Some(XK_Imacron),
508         "Ncedilla" => Some(XK_Ncedilla),
509         "Omacron" => Some(XK_Omacron),
510         "Kcedilla" => Some(XK_Kcedilla),
511         "Uogonek" => Some(XK_Uogonek),
512         "Utilde" => Some(XK_Utilde),
513         "Umacron" => Some(XK_Umacron),
514         "amacron" => Some(XK_amacron),
515         "iogonek" => Some(XK_iogonek),
516         "eabovedot" => Some(XK_eabovedot),
517         "imacron" => Some(XK_imacron),
518         "ncedilla" => Some(XK_ncedilla),
519         "omacron" => Some(XK_omacron),
520         "kcedilla" => Some(XK_kcedilla),
521         "uogonek" => Some(XK_uogonek),
522         "utilde" => Some(XK_utilde),
523         "umacron" => Some(XK_umacron),
524         "overline" => Some(XK_overline),
525         "kana_fullstop" => Some(XK_kana_fullstop),
526         "kana_openingbracket" => Some(XK_kana_openingbracket),
527         "kana_closingbracket" => Some(XK_kana_closingbracket),
528         "kana_comma" => Some(XK_kana_comma),
529         "kana_conjunctive" => Some(XK_kana_conjunctive),
530         "kana_middledot" => Some(XK_kana_middledot),
531         "kana_WO" => Some(XK_kana_WO),
532         "kana_a" => Some(XK_kana_a),
533         "kana_i" => Some(XK_kana_i),
534         "kana_u" => Some(XK_kana_u),
535         "kana_e" => Some(XK_kana_e),
536         "kana_o" => Some(XK_kana_o),
537         "kana_ya" => Some(XK_kana_ya),
538         "kana_yu" => Some(XK_kana_yu),
539         "kana_yo" => Some(XK_kana_yo),
540         "kana_tsu" => Some(XK_kana_tsu),
541         "kana_tu" => Some(XK_kana_tu),
542         "prolongedsound" => Some(XK_prolongedsound),
543         "kana_A" => Some(XK_kana_A),
544         "kana_I" => Some(XK_kana_I),
545         "kana_U" => Some(XK_kana_U),
546         "kana_E" => Some(XK_kana_E),
547         "kana_O" => Some(XK_kana_O),
548         "kana_KA" => Some(XK_kana_KA),
549         "kana_KI" => Some(XK_kana_KI),
550         "kana_KU" => Some(XK_kana_KU),
551         "kana_KE" => Some(XK_kana_KE),
552         "kana_KO" => Some(XK_kana_KO),
553         "kana_SA" => Some(XK_kana_SA),
554         "kana_SHI" => Some(XK_kana_SHI),
555         "kana_SU" => Some(XK_kana_SU),
556         "kana_SE" => Some(XK_kana_SE),
557         "kana_SO" => Some(XK_kana_SO),
558         "kana_TA" => Some(XK_kana_TA),
559         "kana_CHI" => Some(XK_kana_CHI),
560         "kana_TI" => Some(XK_kana_TI),
561         "kana_TSU" => Some(XK_kana_TSU),
562         "kana_TU" => Some(XK_kana_TU),
563         "kana_TE" => Some(XK_kana_TE),
564         "kana_TO" => Some(XK_kana_TO),
565         "kana_NA" => Some(XK_kana_NA),
566         "kana_NI" => Some(XK_kana_NI),
567         "kana_NU" => Some(XK_kana_NU),
568         "kana_NE" => Some(XK_kana_NE),
569         "kana_NO" => Some(XK_kana_NO),
570         "kana_HA" => Some(XK_kana_HA),
571         "kana_HI" => Some(XK_kana_HI),
572         "kana_FU" => Some(XK_kana_FU),
573         "kana_HU" => Some(XK_kana_HU),
574         "kana_HE" => Some(XK_kana_HE),
575         "kana_HO" => Some(XK_kana_HO),
576         "kana_MA" => Some(XK_kana_MA),
577         "kana_MI" => Some(XK_kana_MI),
578         "kana_MU" => Some(XK_kana_MU),
579         "kana_ME" => Some(XK_kana_ME),
580         "kana_MO" => Some(XK_kana_MO),
581         "kana_YA" => Some(XK_kana_YA),
582         "kana_YU" => Some(XK_kana_YU),
583         "kana_YO" => Some(XK_kana_YO),
584         "kana_RA" => Some(XK_kana_RA),
585         "kana_RI" => Some(XK_kana_RI),
586         "kana_RU" => Some(XK_kana_RU),
587         "kana_RE" => Some(XK_kana_RE),
588         "kana_RO" => Some(XK_kana_RO),
589         "kana_WA" => Some(XK_kana_WA),
590         "kana_N" => Some(XK_kana_N),
591         "voicedsound" => Some(XK_voicedsound),
592         "semivoicedsound" => Some(XK_semivoicedsound),
593         "kana_switch" => Some(XK_kana_switch),
594         "Arabic_comma" => Some(XK_Arabic_comma),
595         "Arabic_semicolon" => Some(XK_Arabic_semicolon),
596         "Arabic_question_mark" => Some(XK_Arabic_question_mark),
597         "Arabic_hamza" => Some(XK_Arabic_hamza),
598         "Arabic_maddaonalef" => Some(XK_Arabic_maddaonalef),
599         "Arabic_hamzaonalef" => Some(XK_Arabic_hamzaonalef),
600         "Arabic_hamzaonwaw" => Some(XK_Arabic_hamzaonwaw),
601         "Arabic_hamzaunderalef" => Some(XK_Arabic_hamzaunderalef),
602         "Arabic_hamzaonyeh" => Some(XK_Arabic_hamzaonyeh),
603         "Arabic_alef" => Some(XK_Arabic_alef),
604         "Arabic_beh" => Some(XK_Arabic_beh),
605         "Arabic_tehmarbuta" => Some(XK_Arabic_tehmarbuta),
606         "Arabic_teh" => Some(XK_Arabic_teh),
607         "Arabic_theh" => Some(XK_Arabic_theh),
608         "Arabic_jeem" => Some(XK_Arabic_jeem),
609         "Arabic_hah" => Some(XK_Arabic_hah),
610         "Arabic_khah" => Some(XK_Arabic_khah),
611         "Arabic_dal" => Some(XK_Arabic_dal),
612         "Arabic_thal" => Some(XK_Arabic_thal),
613         "Arabic_ra" => Some(XK_Arabic_ra),
614         "Arabic_zain" => Some(XK_Arabic_zain),
615         "Arabic_seen" => Some(XK_Arabic_seen),
616         "Arabic_sheen" => Some(XK_Arabic_sheen),
617         "Arabic_sad" => Some(XK_Arabic_sad),
618         "Arabic_dad" => Some(XK_Arabic_dad),
619         "Arabic_tah" => Some(XK_Arabic_tah),
620         "Arabic_zah" => Some(XK_Arabic_zah),
621         "Arabic_ain" => Some(XK_Arabic_ain),
622         "Arabic_ghain" => Some(XK_Arabic_ghain),
623         "Arabic_tatweel" => Some(XK_Arabic_tatweel),
624         "Arabic_feh" => Some(XK_Arabic_feh),
625         "Arabic_qaf" => Some(XK_Arabic_qaf),
626         "Arabic_kaf" => Some(XK_Arabic_kaf),
627         "Arabic_lam" => Some(XK_Arabic_lam),
628         "Arabic_meem" => Some(XK_Arabic_meem),
629         "Arabic_noon" => Some(XK_Arabic_noon),
630         "Arabic_ha" => Some(XK_Arabic_ha),
631         "Arabic_heh" => Some(XK_Arabic_heh),
632         "Arabic_waw" => Some(XK_Arabic_waw),
633         "Arabic_alefmaksura" => Some(XK_Arabic_alefmaksura),
634         "Arabic_yeh" => Some(XK_Arabic_yeh),
635         "Arabic_fathatan" => Some(XK_Arabic_fathatan),
636         "Arabic_dammatan" => Some(XK_Arabic_dammatan),
637         "Arabic_kasratan" => Some(XK_Arabic_kasratan),
638         "Arabic_fatha" => Some(XK_Arabic_fatha),
639         "Arabic_damma" => Some(XK_Arabic_damma),
640         "Arabic_kasra" => Some(XK_Arabic_kasra),
641         "Arabic_shadda" => Some(XK_Arabic_shadda),
642         "Arabic_sukun" => Some(XK_Arabic_sukun),
643         "Arabic_switch" => Some(XK_Arabic_switch),
644         "Serbian_dje" => Some(XK_Serbian_dje),
645         "Macedonia_gje" => Some(XK_Macedonia_gje),
646         "Cyrillic_io" => Some(XK_Cyrillic_io),
647         "Ukrainian_ie" => Some(XK_Ukrainian_ie),
648         "Ukranian_je" => Some(XK_Ukranian_je),
649         "Macedonia_dse" => Some(XK_Macedonia_dse),
650         "Ukrainian_i" => Some(XK_Ukrainian_i),
651         "Ukranian_i" => Some(XK_Ukranian_i),
652         "Ukrainian_yi" => Some(XK_Ukrainian_yi),
653         "Ukranian_yi" => Some(XK_Ukranian_yi),
654         "Cyrillic_je" => Some(XK_Cyrillic_je),
655         "Serbian_je" => Some(XK_Serbian_je),
656         "Cyrillic_lje" => Some(XK_Cyrillic_lje),
657         "Serbian_lje" => Some(XK_Serbian_lje),
658         "Cyrillic_nje" => Some(XK_Cyrillic_nje),
659         "Serbian_nje" => Some(XK_Serbian_nje),
660         "Serbian_tshe" => Some(XK_Serbian_tshe),
661         "Macedonia_kje" => Some(XK_Macedonia_kje),
662         "Byelorussian_shortu" => Some(XK_Byelorussian_shortu),
663         "Cyrillic_dzhe" => Some(XK_Cyrillic_dzhe),
664         "Serbian_dze" => Some(XK_Serbian_dze),
665         "numerosign" => Some(XK_numerosign),
666         "Serbian_DJE" => Some(XK_Serbian_DJE),
667         "Macedonia_GJE" => Some(XK_Macedonia_GJE),
668         "Cyrillic_IO" => Some(XK_Cyrillic_IO),
669         "Ukrainian_IE" => Some(XK_Ukrainian_IE),
670         "Ukranian_JE" => Some(XK_Ukranian_JE),
671         "Macedonia_DSE" => Some(XK_Macedonia_DSE),
672         "Ukrainian_I" => Some(XK_Ukrainian_I),
673         "Ukranian_I" => Some(XK_Ukranian_I),
674         "Ukrainian_YI" => Some(XK_Ukrainian_YI),
675         "Ukranian_YI" => Some(XK_Ukranian_YI),
676         "Cyrillic_JE" => Some(XK_Cyrillic_JE),
677         "Serbian_JE" => Some(XK_Serbian_JE),
678         "Cyrillic_LJE" => Some(XK_Cyrillic_LJE),
679         "Serbian_LJE" => Some(XK_Serbian_LJE),
680         "Cyrillic_NJE" => Some(XK_Cyrillic_NJE),
681         "Serbian_NJE" => Some(XK_Serbian_NJE),
682         "Serbian_TSHE" => Some(XK_Serbian_TSHE),
683         "Macedonia_KJE" => Some(XK_Macedonia_KJE),
684         "Byelorussian_SHORTU" => Some(XK_Byelorussian_SHORTU),
685         "Cyrillic_DZHE" => Some(XK_Cyrillic_DZHE),
686         "Serbian_DZE" => Some(XK_Serbian_DZE),
687         "Cyrillic_yu" => Some(XK_Cyrillic_yu),
688         "Cyrillic_a" => Some(XK_Cyrillic_a),
689         "Cyrillic_be" => Some(XK_Cyrillic_be),
690         "Cyrillic_tse" => Some(XK_Cyrillic_tse),
691         "Cyrillic_de" => Some(XK_Cyrillic_de),
692         "Cyrillic_ie" => Some(XK_Cyrillic_ie),
693         "Cyrillic_ef" => Some(XK_Cyrillic_ef),
694         "Cyrillic_ghe" => Some(XK_Cyrillic_ghe),
695         "Cyrillic_ha" => Some(XK_Cyrillic_ha),
696         "Cyrillic_i" => Some(XK_Cyrillic_i),
697         "Cyrillic_shorti" => Some(XK_Cyrillic_shorti),
698         "Cyrillic_ka" => Some(XK_Cyrillic_ka),
699         "Cyrillic_el" => Some(XK_Cyrillic_el),
700         "Cyrillic_em" => Some(XK_Cyrillic_em),
701         "Cyrillic_en" => Some(XK_Cyrillic_en),
702         "Cyrillic_o" => Some(XK_Cyrillic_o),
703         "Cyrillic_pe" => Some(XK_Cyrillic_pe),
704         "Cyrillic_ya" => Some(XK_Cyrillic_ya),
705         "Cyrillic_er" => Some(XK_Cyrillic_er),
706         "Cyrillic_es" => Some(XK_Cyrillic_es),
707         "Cyrillic_te" => Some(XK_Cyrillic_te),
708         "Cyrillic_u" => Some(XK_Cyrillic_u),
709         "Cyrillic_zhe" => Some(XK_Cyrillic_zhe),
710         "Cyrillic_ve" => Some(XK_Cyrillic_ve),
711         "Cyrillic_softsign" => Some(XK_Cyrillic_softsign),
712         "Cyrillic_yeru" => Some(XK_Cyrillic_yeru),
713         "Cyrillic_ze" => Some(XK_Cyrillic_ze),
714         "Cyrillic_sha" => Some(XK_Cyrillic_sha),
715         "Cyrillic_e" => Some(XK_Cyrillic_e),
716         "Cyrillic_shcha" => Some(XK_Cyrillic_shcha),
717         "Cyrillic_che" => Some(XK_Cyrillic_che),
718         "Cyrillic_hardsign" => Some(XK_Cyrillic_hardsign),
719         "Cyrillic_YU" => Some(XK_Cyrillic_YU),
720         "Cyrillic_A" => Some(XK_Cyrillic_A),
721         "Cyrillic_BE" => Some(XK_Cyrillic_BE),
722         "Cyrillic_TSE" => Some(XK_Cyrillic_TSE),
723         "Cyrillic_DE" => Some(XK_Cyrillic_DE),
724         "Cyrillic_IE" => Some(XK_Cyrillic_IE),
725         "Cyrillic_EF" => Some(XK_Cyrillic_EF),
726         "Cyrillic_GHE" => Some(XK_Cyrillic_GHE),
727         "Cyrillic_HA" => Some(XK_Cyrillic_HA),
728         "Cyrillic_I" => Some(XK_Cyrillic_I),
729         "Cyrillic_SHORTI" => Some(XK_Cyrillic_SHORTI),
730         "Cyrillic_KA" => Some(XK_Cyrillic_KA),
731         "Cyrillic_EL" => Some(XK_Cyrillic_EL),
732         "Cyrillic_EM" => Some(XK_Cyrillic_EM),
733         "Cyrillic_EN" => Some(XK_Cyrillic_EN),
734         "Cyrillic_O" => Some(XK_Cyrillic_O),
735         "Cyrillic_PE" => Some(XK_Cyrillic_PE),
736         "Cyrillic_YA" => Some(XK_Cyrillic_YA),
737         "Cyrillic_ER" => Some(XK_Cyrillic_ER),
738         "Cyrillic_ES" => Some(XK_Cyrillic_ES),
739         "Cyrillic_TE" => Some(XK_Cyrillic_TE),
740         "Cyrillic_U" => Some(XK_Cyrillic_U),
741         "Cyrillic_ZHE" => Some(XK_Cyrillic_ZHE),
742         "Cyrillic_VE" => Some(XK_Cyrillic_VE),
743         "Cyrillic_SOFTSIGN" => Some(XK_Cyrillic_SOFTSIGN),
744         "Cyrillic_YERU" => Some(XK_Cyrillic_YERU),
745         "Cyrillic_ZE" => Some(XK_Cyrillic_ZE),
746         "Cyrillic_SHA" => Some(XK_Cyrillic_SHA),
747         "Cyrillic_E" => Some(XK_Cyrillic_E),
748         "Cyrillic_SHCHA" => Some(XK_Cyrillic_SHCHA),
749         "Cyrillic_CHE" => Some(XK_Cyrillic_CHE),
750         "Cyrillic_HARDSIGN" => Some(XK_Cyrillic_HARDSIGN),
751         "Greek_ALPHAaccent" => Some(XK_Greek_ALPHAaccent),
752         "Greek_EPSILONaccent" => Some(XK_Greek_EPSILONaccent),
753         "Greek_ETAaccent" => Some(XK_Greek_ETAaccent),
754         "Greek_IOTAaccent" => Some(XK_Greek_IOTAaccent),
755         "Greek_IOTAdiaeresis" => Some(XK_Greek_IOTAdiaeresis),
756         "Greek_OMICRONaccent" => Some(XK_Greek_OMICRONaccent),
757         "Greek_UPSILONaccent" => Some(XK_Greek_UPSILONaccent),
758         "Greek_UPSILONdieresis" => Some(XK_Greek_UPSILONdieresis),
759         "Greek_OMEGAaccent" => Some(XK_Greek_OMEGAaccent),
760         "Greek_accentdieresis" => Some(XK_Greek_accentdieresis),
761         "Greek_horizbar" => Some(XK_Greek_horizbar),
762         "Greek_alphaaccent" => Some(XK_Greek_alphaaccent),
763         "Greek_epsilonaccent" => Some(XK_Greek_epsilonaccent),
764         "Greek_etaaccent" => Some(XK_Greek_etaaccent),
765         "Greek_iotaaccent" => Some(XK_Greek_iotaaccent),
766         "Greek_iotadieresis" => Some(XK_Greek_iotadieresis),
767         "Greek_iotaaccentdieresis" => Some(XK_Greek_iotaaccentdieresis),
768         "Greek_omicronaccent" => Some(XK_Greek_omicronaccent),
769         "Greek_upsilonaccent" => Some(XK_Greek_upsilonaccent),
770         "Greek_upsilondieresis" => Some(XK_Greek_upsilondieresis),
771         "Greek_upsilonaccentdieresis" => Some(XK_Greek_upsilonaccentdieresis),
772         "Greek_omegaaccent" => Some(XK_Greek_omegaaccent),
773         "Greek_ALPHA" => Some(XK_Greek_ALPHA),
774         "Greek_BETA" => Some(XK_Greek_BETA),
775         "Greek_GAMMA" => Some(XK_Greek_GAMMA),
776         "Greek_DELTA" => Some(XK_Greek_DELTA),
777         "Greek_EPSILON" => Some(XK_Greek_EPSILON),
778         "Greek_ZETA" => Some(XK_Greek_ZETA),
779         "Greek_ETA" => Some(XK_Greek_ETA),
780         "Greek_THETA" => Some(XK_Greek_THETA),
781         "Greek_IOTA" => Some(XK_Greek_IOTA),
782         "Greek_KAPPA" => Some(XK_Greek_KAPPA),
783         "Greek_LAMDA" => Some(XK_Greek_LAMDA),
784         "Greek_LAMBDA" => Some(XK_Greek_LAMBDA),
785         "Greek_MU" => Some(XK_Greek_MU),
786         "Greek_NU" => Some(XK_Greek_NU),
787         "Greek_XI" => Some(XK_Greek_XI),
788         "Greek_OMICRON" => Some(XK_Greek_OMICRON),
789         "Greek_PI" => Some(XK_Greek_PI),
790         "Greek_RHO" => Some(XK_Greek_RHO),
791         "Greek_SIGMA" => Some(XK_Greek_SIGMA),
792         "Greek_TAU" => Some(XK_Greek_TAU),
793         "Greek_UPSILON" => Some(XK_Greek_UPSILON),
794         "Greek_PHI" => Some(XK_Greek_PHI),
795         "Greek_CHI" => Some(XK_Greek_CHI),
796         "Greek_PSI" => Some(XK_Greek_PSI),
797         "Greek_OMEGA" => Some(XK_Greek_OMEGA),
798         "Greek_alpha" => Some(XK_Greek_alpha),
799         "Greek_beta" => Some(XK_Greek_beta),
800         "Greek_gamma" => Some(XK_Greek_gamma),
801         "Greek_delta" => Some(XK_Greek_delta),
802         "Greek_epsilon" => Some(XK_Greek_epsilon),
803         "Greek_zeta" => Some(XK_Greek_zeta),
804         "Greek_eta" => Some(XK_Greek_eta),
805         "Greek_theta" => Some(XK_Greek_theta),
806         "Greek_iota" => Some(XK_Greek_iota),
807         "Greek_kappa" => Some(XK_Greek_kappa),
808         "Greek_lamda" => Some(XK_Greek_lamda),
809         "Greek_lambda" => Some(XK_Greek_lambda),
810         "Greek_mu" => Some(XK_Greek_mu),
811         "Greek_nu" => Some(XK_Greek_nu),
812         "Greek_xi" => Some(XK_Greek_xi),
813         "Greek_omicron" => Some(XK_Greek_omicron),
814         "Greek_pi" => Some(XK_Greek_pi),
815         "Greek_rho" => Some(XK_Greek_rho),
816         "Greek_sigma" => Some(XK_Greek_sigma),
817         "Greek_finalsmallsigma" => Some(XK_Greek_finalsmallsigma),
818         "Greek_tau" => Some(XK_Greek_tau),
819         "Greek_upsilon" => Some(XK_Greek_upsilon),
820         "Greek_phi" => Some(XK_Greek_phi),
821         "Greek_chi" => Some(XK_Greek_chi),
822         "Greek_psi" => Some(XK_Greek_psi),
823         "Greek_omega" => Some(XK_Greek_omega),
824         "Greek_switch" => Some(XK_Greek_switch),
825         "leftradical" => Some(XK_leftradical),
826         "topleftradical" => Some(XK_topleftradical),
827         "horizconnector" => Some(XK_horizconnector),
828         "topintegral" => Some(XK_topintegral),
829         "botintegral" => Some(XK_botintegral),
830         "vertconnector" => Some(XK_vertconnector),
831         "topleftsqbracket" => Some(XK_topleftsqbracket),
832         "botleftsqbracket" => Some(XK_botleftsqbracket),
833         "toprightsqbracket" => Some(XK_toprightsqbracket),
834         "botrightsqbracket" => Some(XK_botrightsqbracket),
835         "topleftparens" => Some(XK_topleftparens),
836         "botleftparens" => Some(XK_botleftparens),
837         "toprightparens" => Some(XK_toprightparens),
838         "botrightparens" => Some(XK_botrightparens),
839         "leftmiddlecurlybrace" => Some(XK_leftmiddlecurlybrace),
840         "rightmiddlecurlybrace" => Some(XK_rightmiddlecurlybrace),
841         "topleftsummation" => Some(XK_topleftsummation),
842         "botleftsummation" => Some(XK_botleftsummation),
843         "topvertsummationconnector" => Some(XK_topvertsummationconnector),
844         "botvertsummationconnector" => Some(XK_botvertsummationconnector),
845         "toprightsummation" => Some(XK_toprightsummation),
846         "botrightsummation" => Some(XK_botrightsummation),
847         "rightmiddlesummation" => Some(XK_rightmiddlesummation),
848         "lessthanequal" => Some(XK_lessthanequal),
849         "notequal" => Some(XK_notequal),
850         "greaterthanequal" => Some(XK_greaterthanequal),
851         "integral" => Some(XK_integral),
852         "therefore" => Some(XK_therefore),
853         "variation" => Some(XK_variation),
854         "infinity" => Some(XK_infinity),
855         "nabla" => Some(XK_nabla),
856         "approximate" => Some(XK_approximate),
857         "similarequal" => Some(XK_similarequal),
858         "ifonlyif" => Some(XK_ifonlyif),
859         "implies" => Some(XK_implies),
860         "identical" => Some(XK_identical),
861         "radical" => Some(XK_radical),
862         "includedin" => Some(XK_includedin),
863         "includes" => Some(XK_includes),
864         "intersection" => Some(XK_intersection),
865         "union" => Some(XK_union),
866         "logicaland" => Some(XK_logicaland),
867         "logicalor" => Some(XK_logicalor),
868         "partialderivative" => Some(XK_partialderivative),
869         "function" => Some(XK_function),
870         "leftarrow" => Some(XK_leftarrow),
871         "uparrow" => Some(XK_uparrow),
872         "rightarrow" => Some(XK_rightarrow),
873         "downarrow" => Some(XK_downarrow),
874         "blank" => Some(XK_blank),
875         "soliddiamond" => Some(XK_soliddiamond),
876         "checkerboard" => Some(XK_checkerboard),
877         "ht" => Some(XK_ht),
878         "ff" => Some(XK_ff),
879         "cr" => Some(XK_cr),
880         "lf" => Some(XK_lf),
881         "nl" => Some(XK_nl),
882         "vt" => Some(XK_vt),
883         "lowrightcorner" => Some(XK_lowrightcorner),
884         "uprightcorner" => Some(XK_uprightcorner),
885         "upleftcorner" => Some(XK_upleftcorner),
886         "lowleftcorner" => Some(XK_lowleftcorner),
887         "crossinglines" => Some(XK_crossinglines),
888         "horizlinescan1" => Some(XK_horizlinescan1),
889         "horizlinescan3" => Some(XK_horizlinescan3),
890         "horizlinescan5" => Some(XK_horizlinescan5),
891         "horizlinescan7" => Some(XK_horizlinescan7),
892         "horizlinescan9" => Some(XK_horizlinescan9),
893         "leftt" => Some(XK_leftt),
894         "rightt" => Some(XK_rightt),
895         "bott" => Some(XK_bott),
896         "topt" => Some(XK_topt),
897         "vertbar" => Some(XK_vertbar),
898         "emspace" => Some(XK_emspace),
899         "enspace" => Some(XK_enspace),
900         "em3space" => Some(XK_em3space),
901         "em4space" => Some(XK_em4space),
902         "digitspace" => Some(XK_digitspace),
903         "punctspace" => Some(XK_punctspace),
904         "thinspace" => Some(XK_thinspace),
905         "hairspace" => Some(XK_hairspace),
906         "emdash" => Some(XK_emdash),
907         "endash" => Some(XK_endash),
908         "signifblank" => Some(XK_signifblank),
909         "ellipsis" => Some(XK_ellipsis),
910         "doubbaselinedot" => Some(XK_doubbaselinedot),
911         "onethird" => Some(XK_onethird),
912         "twothirds" => Some(XK_twothirds),
913         "onefifth" => Some(XK_onefifth),
914         "twofifths" => Some(XK_twofifths),
915         "threefifths" => Some(XK_threefifths),
916         "fourfifths" => Some(XK_fourfifths),
917         "onesixth" => Some(XK_onesixth),
918         "fivesixths" => Some(XK_fivesixths),
919         "careof" => Some(XK_careof),
920         "figdash" => Some(XK_figdash),
921         "leftanglebracket" => Some(XK_leftanglebracket),
922         "decimalpoint" => Some(XK_decimalpoint),
923         "rightanglebracket" => Some(XK_rightanglebracket),
924         "marker" => Some(XK_marker),
925         "oneeighth" => Some(XK_oneeighth),
926         "threeeighths" => Some(XK_threeeighths),
927         "fiveeighths" => Some(XK_fiveeighths),
928         "seveneighths" => Some(XK_seveneighths),
929         "trademark" => Some(XK_trademark),
930         "signaturemark" => Some(XK_signaturemark),
931         "trademarkincircle" => Some(XK_trademarkincircle),
932         "leftopentriangle" => Some(XK_leftopentriangle),
933         "rightopentriangle" => Some(XK_rightopentriangle),
934         "emopencircle" => Some(XK_emopencircle),
935         "emopenrectangle" => Some(XK_emopenrectangle),
936         "leftsinglequotemark" => Some(XK_leftsinglequotemark),
937         "rightsinglequotemark" => Some(XK_rightsinglequotemark),
938         "leftdoublequotemark" => Some(XK_leftdoublequotemark),
939         "rightdoublequotemark" => Some(XK_rightdoublequotemark),
940         "prescription" => Some(XK_prescription),
941         "minutes" => Some(XK_minutes),
942         "seconds" => Some(XK_seconds),
943         "latincross" => Some(XK_latincross),
944         "hexagram" => Some(XK_hexagram),
945         "filledrectbullet" => Some(XK_filledrectbullet),
946         "filledlefttribullet" => Some(XK_filledlefttribullet),
947         "filledrighttribullet" => Some(XK_filledrighttribullet),
948         "emfilledcircle" => Some(XK_emfilledcircle),
949         "emfilledrect" => Some(XK_emfilledrect),
950         "enopencircbullet" => Some(XK_enopencircbullet),
951         "enopensquarebullet" => Some(XK_enopensquarebullet),
952         "openrectbullet" => Some(XK_openrectbullet),
953         "opentribulletup" => Some(XK_opentribulletup),
954         "opentribulletdown" => Some(XK_opentribulletdown),
955         "openstar" => Some(XK_openstar),
956         "enfilledcircbullet" => Some(XK_enfilledcircbullet),
957         "enfilledsqbullet" => Some(XK_enfilledsqbullet),
958         "filledtribulletup" => Some(XK_filledtribulletup),
959         "filledtribulletdown" => Some(XK_filledtribulletdown),
960         "leftpointer" => Some(XK_leftpointer),
961         "rightpointer" => Some(XK_rightpointer),
962         "club" => Some(XK_club),
963         "diamond" => Some(XK_diamond),
964         "heart" => Some(XK_heart),
965         "maltesecross" => Some(XK_maltesecross),
966         "dagger" => Some(XK_dagger),
967         "doubledagger" => Some(XK_doubledagger),
968         "checkmark" => Some(XK_checkmark),
969         "ballotcross" => Some(XK_ballotcross),
970         "musicalsharp" => Some(XK_musicalsharp),
971         "musicalflat" => Some(XK_musicalflat),
972         "malesymbol" => Some(XK_malesymbol),
973         "femalesymbol" => Some(XK_femalesymbol),
974         "telephone" => Some(XK_telephone),
975         "telephonerecorder" => Some(XK_telephonerecorder),
976         "phonographcopyright" => Some(XK_phonographcopyright),
977         "caret" => Some(XK_caret),
978         "singlelowquotemark" => Some(XK_singlelowquotemark),
979         "doublelowquotemark" => Some(XK_doublelowquotemark),
980         "cursor" => Some(XK_cursor),
981         "leftcaret" => Some(XK_leftcaret),
982         "rightcaret" => Some(XK_rightcaret),
983         "downcaret" => Some(XK_downcaret),
984         "upcaret" => Some(XK_upcaret),
985         "overbar" => Some(XK_overbar),
986         "downtack" => Some(XK_downtack),
987         "upshoe" => Some(XK_upshoe),
988         "downstile" => Some(XK_downstile),
989         "underbar" => Some(XK_underbar),
990         "jot" => Some(XK_jot),
991         "quad" => Some(XK_quad),
992         "uptack" => Some(XK_uptack),
993         "circle" => Some(XK_circle),
994         "upstile" => Some(XK_upstile),
995         "downshoe" => Some(XK_downshoe),
996         "rightshoe" => Some(XK_rightshoe),
997         "leftshoe" => Some(XK_leftshoe),
998         "lefttack" => Some(XK_lefttack),
999         "righttack" => Some(XK_righttack),
1000         "hebrew_doublelowline" => Some(XK_hebrew_doublelowline),
1001         "hebrew_aleph" => Some(XK_hebrew_aleph),
1002         "hebrew_bet" => Some(XK_hebrew_bet),
1003         "hebrew_beth" => Some(XK_hebrew_beth),
1004         "hebrew_gimel" => Some(XK_hebrew_gimel),
1005         "hebrew_gimmel" => Some(XK_hebrew_gimmel),
1006         "hebrew_dalet" => Some(XK_hebrew_dalet),
1007         "hebrew_daleth" => Some(XK_hebrew_daleth),
1008         "hebrew_he" => Some(XK_hebrew_he),
1009         "hebrew_waw" => Some(XK_hebrew_waw),
1010         "hebrew_zain" => Some(XK_hebrew_zain),
1011         "hebrew_zayin" => Some(XK_hebrew_zayin),
1012         "hebrew_chet" => Some(XK_hebrew_chet),
1013         "hebrew_het" => Some(XK_hebrew_het),
1014         "hebrew_tet" => Some(XK_hebrew_tet),
1015         "hebrew_teth" => Some(XK_hebrew_teth),
1016         "hebrew_yod" => Some(XK_hebrew_yod),
1017         "hebrew_finalkaph" => Some(XK_hebrew_finalkaph),
1018         "hebrew_kaph" => Some(XK_hebrew_kaph),
1019         "hebrew_lamed" => Some(XK_hebrew_lamed),
1020         "hebrew_finalmem" => Some(XK_hebrew_finalmem),
1021         "hebrew_mem" => Some(XK_hebrew_mem),
1022         "hebrew_finalnun" => Some(XK_hebrew_finalnun),
1023         "hebrew_nun" => Some(XK_hebrew_nun),
1024         "hebrew_samech" => Some(XK_hebrew_samech),
1025         "hebrew_samekh" => Some(XK_hebrew_samekh),
1026         "hebrew_ayin" => Some(XK_hebrew_ayin),
1027         "hebrew_finalpe" => Some(XK_hebrew_finalpe),
1028         "hebrew_pe" => Some(XK_hebrew_pe),
1029         "hebrew_finalzade" => Some(XK_hebrew_finalzade),
1030         "hebrew_finalzadi" => Some(XK_hebrew_finalzadi),
1031         "hebrew_zade" => Some(XK_hebrew_zade),
1032         "hebrew_zadi" => Some(XK_hebrew_zadi),
1033         "hebrew_qoph" => Some(XK_hebrew_qoph),
1034         "hebrew_kuf" => Some(XK_hebrew_kuf),
1035         "hebrew_resh" => Some(XK_hebrew_resh),
1036         "hebrew_shin" => Some(XK_hebrew_shin),
1037         "hebrew_taw" => Some(XK_hebrew_taw),
1038         "hebrew_taf" => Some(XK_hebrew_taf),
1039         "Hebrew_switch" => Some(XK_Hebrew_switch),
1040         "XF86XK_ModeLock" => Some(XF86XK_ModeLock),
1041         "XF86XK_MonBrightnessUp" => Some(XF86XK_MonBrightnessUp),
1042         "XF86XK_MonBrightnessDown" => Some(XF86XK_MonBrightnessDown),
1043         "XF86XK_KbdLightOnOff" => Some(XF86XK_KbdLightOnOff),
1044         "XF86XK_KbdBrightnessUp" => Some(XF86XK_KbdBrightnessUp),
1045         "XF86XK_KbdBrightnessDown" => Some(XF86XK_KbdBrightnessDown),
1046         "XF86XK_Standby" => Some(XF86XK_Standby),
1047         "XF86XK_AudioLowerVolume" => Some(XF86XK_AudioLowerVolume),
1048         "XF86XK_AudioMute" => Some(XF86XK_AudioMute),
1049         "XF86XK_AudioRaiseVolume" => Some(XF86XK_AudioRaiseVolume),
1050         "XF86XK_AudioPlay" => Some(XF86XK_AudioPlay),
1051         "XF86XK_AudioStop" => Some(XF86XK_AudioStop),
1052         "XF86XK_AudioPrev" => Some(XF86XK_AudioPrev),
1053         "XF86XK_AudioNext" => Some(XF86XK_AudioNext),
1054         "XF86XK_HomePage" => Some(XF86XK_HomePage),
1055         "XF86XK_Mail" => Some(XF86XK_Mail),
1056         "XF86XK_Start" => Some(XF86XK_Start),
1057         "XF86XK_Search" => Some(XF86XK_Search),
1058         "XF86XK_AudioRecord" => Some(XF86XK_AudioRecord),
1059         "XF86XK_Calculator" => Some(XF86XK_Calculator),
1060         "XF86XK_Memo" => Some(XF86XK_Memo),
1061         "XF86XK_ToDoList" => Some(XF86XK_ToDoList),
1062         "XF86XK_Calendar" => Some(XF86XK_Calendar),
1063         "XF86XK_PowerDown" => Some(XF86XK_PowerDown),
1064         "XF86XK_ContrastAdjust" => Some(XF86XK_ContrastAdjust),
1065         "XF86XK_RockerUp" => Some(XF86XK_RockerUp),
1066         "XF86XK_RockerDown" => Some(XF86XK_RockerDown),
1067         "XF86XK_RockerEnter" => Some(XF86XK_RockerEnter),
1068         "XF86XK_Back" => Some(XF86XK_Back),
1069         "XF86XK_Forward" => Some(XF86XK_Forward),
1070         "XF86XK_Stop" => Some(XF86XK_Stop),
1071         "XF86XK_Refresh" => Some(XF86XK_Refresh),
1072         "XF86XK_PowerOff" => Some(XF86XK_PowerOff),
1073         "XF86XK_WakeUp" => Some(XF86XK_WakeUp),
1074         "XF86XK_Eject" => Some(XF86XK_Eject),
1075         "XF86XK_ScreenSaver" => Some(XF86XK_ScreenSaver),
1076         "XF86XK_WWW" => Some(XF86XK_WWW),
1077         "XF86XK_Sleep" => Some(XF86XK_Sleep),
1078         "XF86XK_Favorites" => Some(XF86XK_Favorites),
1079         "XF86XK_AudioPause" => Some(XF86XK_AudioPause),
1080         "XF86XK_AudioMedia" => Some(XF86XK_AudioMedia),
1081         "XF86XK_MyComputer" => Some(XF86XK_MyComputer),
1082         "XF86XK_VendorHome" => Some(XF86XK_VendorHome),
1083         "XF86XK_LightBulb" => Some(XF86XK_LightBulb),
1084         "XF86XK_Shop" => Some(XF86XK_Shop),
1085         "XF86XK_History" => Some(XF86XK_History),
1086         "XF86XK_OpenURL" => Some(XF86XK_OpenURL),
1087         "XF86XK_AddFavorite" => Some(XF86XK_AddFavorite),
1088         "XF86XK_HotLinks" => Some(XF86XK_HotLinks),
1089         "XF86XK_BrightnessAdjust" => Some(XF86XK_BrightnessAdjust),
1090         "XF86XK_Finance" => Some(XF86XK_Finance),
1091         "XF86XK_Community" => Some(XF86XK_Community),
1092         "XF86XK_AudioRewind" => Some(XF86XK_AudioRewind),
1093         "XF86XK_BackForward" => Some(XF86XK_BackForward),
1094         "XF86XK_Launch0" => Some(XF86XK_Launch0),
1095         "XF86XK_Launch1" => Some(XF86XK_Launch1),
1096         "XF86XK_Launch2" => Some(XF86XK_Launch2),
1097         "XF86XK_Launch3" => Some(XF86XK_Launch3),
1098         "XF86XK_Launch4" => Some(XF86XK_Launch4),
1099         "XF86XK_Launch5" => Some(XF86XK_Launch5),
1100         "XF86XK_Launch6" => Some(XF86XK_Launch6),
1101         "XF86XK_Launch7" => Some(XF86XK_Launch7),
1102         "XF86XK_Launch8" => Some(XF86XK_Launch8),
1103         "XF86XK_Launch9" => Some(XF86XK_Launch9),
1104         "XF86XK_LaunchA" => Some(XF86XK_LaunchA),
1105         "XF86XK_LaunchB" => Some(XF86XK_LaunchB),
1106         "XF86XK_LaunchC" => Some(XF86XK_LaunchC),
1107         "XF86XK_LaunchD" => Some(XF86XK_LaunchD),
1108         "XF86XK_LaunchE" => Some(XF86XK_LaunchE),
1109         "XF86XK_LaunchF" => Some(XF86XK_LaunchF),
1110         "XF86XK_ApplicationLeft" => Some(XF86XK_ApplicationLeft),
1111         "XF86XK_ApplicationRight" => Some(XF86XK_ApplicationRight),
1112         "XF86XK_Book" => Some(XF86XK_Book),
1113         "XF86XK_CD" => Some(XF86XK_CD),
1114         "XF86XK_Calculater" => Some(XF86XK_Calculater),
1115         "XF86XK_Clear" => Some(XF86XK_Clear),
1116         "XF86XK_Close" => Some(XF86XK_Close),
1117         "XF86XK_Copy" => Some(XF86XK_Copy),
1118         "XF86XK_Cut" => Some(XF86XK_Cut),
1119         "XF86XK_Display" => Some(XF86XK_Display),
1120         "XF86XK_DOS" => Some(XF86XK_DOS),
1121         "XF86XK_Documents" => Some(XF86XK_Documents),
1122         "XF86XK_Excel" => Some(XF86XK_Excel),
1123         "XF86XK_Explorer" => Some(XF86XK_Explorer),
1124         "XF86XK_Game" => Some(XF86XK_Game),
1125         "XF86XK_Go" => Some(XF86XK_Go),
1126         "XF86XK_iTouch" => Some(XF86XK_iTouch),
1127         "XF86XK_LogOff" => Some(XF86XK_LogOff),
1128         "XF86XK_Market" => Some(XF86XK_Market),
1129         "XF86XK_Meeting" => Some(XF86XK_Meeting),
1130         "XF86XK_MenuKB" => Some(XF86XK_MenuKB),
1131         "XF86XK_MenuPB" => Some(XF86XK_MenuPB),
1132         "XF86XK_MySites" => Some(XF86XK_MySites),
1133         "XF86XK_New" => Some(XF86XK_New),
1134         "XF86XK_News" => Some(XF86XK_News),
1135         "XF86XK_OfficeHome" => Some(XF86XK_OfficeHome),
1136         "XF86XK_Open" => Some(XF86XK_Open),
1137         "XF86XK_Option" => Some(XF86XK_Option),
1138         "XF86XK_Paste" => Some(XF86XK_Paste),
1139         "XF86XK_Phone" => Some(XF86XK_Phone),
1140         "XF86XK_Q" => Some(XF86XK_Q),
1141         "XF86XK_Reply" => Some(XF86XK_Reply),
1142         "XF86XK_Reload" => Some(XF86XK_Reload),
1143         "XF86XK_RotateWindows" => Some(XF86XK_RotateWindows),
1144         "XF86XK_RotationPB" => Some(XF86XK_RotationPB),
1145         "XF86XK_RotationKB" => Some(XF86XK_RotationKB),
1146         "XF86XK_Save" => Some(XF86XK_Save),
1147         "XF86XK_ScrollUp" => Some(XF86XK_ScrollUp),
1148         "XF86XK_ScrollDown" => Some(XF86XK_ScrollDown),
1149         "XF86XK_ScrollClick" => Some(XF86XK_ScrollClick),
1150         "XF86XK_Send" => Some(XF86XK_Send),
1151         "XF86XK_Spell" => Some(XF86XK_Spell),
1152         "XF86XK_SplitScreen" => Some(XF86XK_SplitScreen),
1153         "XF86XK_Support" => Some(XF86XK_Support),
1154         "XF86XK_TaskPane" => Some(XF86XK_TaskPane),
1155         "XF86XK_Terminal" => Some(XF86XK_Terminal),
1156         "XF86XK_Tools" => Some(XF86XK_Tools),
1157         "XF86XK_Travel" => Some(XF86XK_Travel),
1158         "XF86XK_UserPB" => Some(XF86XK_UserPB),
1159         "XF86XK_User1KB" => Some(XF86XK_User1KB),
1160         "XF86XK_User2KB" => Some(XF86XK_User2KB),
1161         "XF86XK_Video" => Some(XF86XK_Video),
1162         "XF86XK_WheelButton" => Some(XF86XK_WheelButton),
1163         "XF86XK_Word" => Some(XF86XK_Word),
1164         "XF86XK_Xfer" => Some(XF86XK_Xfer),
1165         "XF86XK_ZoomIn" => Some(XF86XK_ZoomIn),
1166         "XF86XK_ZoomOut" => Some(XF86XK_ZoomOut),
1167         "XF86XK_Away" => Some(XF86XK_Away),
1168         "XF86XK_Messenger" => Some(XF86XK_Messenger),
1169         "XF86XK_WebCam" => Some(XF86XK_WebCam),
1170         "XF86XK_MailForward" => Some(XF86XK_MailForward),
1171         "XF86XK_Pictures" => Some(XF86XK_Pictures),
1172         "XF86XK_Music" => Some(XF86XK_Music),
1173         "XF86XK_Battery" => Some(XF86XK_Battery),
1174         "XF86XK_Bluetooth" => Some(XF86XK_Bluetooth),
1175         "XF86XK_WLAN" => Some(XF86XK_WLAN),
1176         "XF86XK_UWB" => Some(XF86XK_UWB),
1177         "XF86XK_AudioForward" => Some(XF86XK_AudioForward),
1178         "XF86XK_AudioRepeat" => Some(XF86XK_AudioRepeat),
1179         "XF86XK_AudioRandomPlay" => Some(XF86XK_AudioRandomPlay),
1180         "XF86XK_Subtitle" => Some(XF86XK_Subtitle),
1181         "XF86XK_AudioCycleTrack" => Some(XF86XK_AudioCycleTrack),
1182         "XF86XK_CycleAngle" => Some(XF86XK_CycleAngle),
1183         "XF86XK_FrameBack" => Some(XF86XK_FrameBack),
1184         "XF86XK_FrameForward" => Some(XF86XK_FrameForward),
1185         "XF86XK_Time" => Some(XF86XK_Time),
1186         "XF86XK_Select" => Some(XF86XK_Select),
1187         "XF86XK_View" => Some(XF86XK_View),
1188         "XF86XK_TopMenu" => Some(XF86XK_TopMenu),
1189         "XF86XK_Red" => Some(XF86XK_Red),
1190         "XF86XK_Green" => Some(XF86XK_Green),
1191         "XF86XK_Yellow" => Some(XF86XK_Yellow),
1192         "XF86XK_Blue" => Some(XF86XK_Blue),
1193         "XF86XK_Suspend" => Some(XF86XK_Suspend),
1194         "XF86XK_Hibernate" => Some(XF86XK_Hibernate),
1195         "XF86XK_TouchpadToggle" => Some(XF86XK_TouchpadToggle),
1196         "XF86XK_TouchpadOn" => Some(XF86XK_TouchpadOn),
1197         "XF86XK_TouchpadOff" => Some(XF86XK_TouchpadOff),
1198         "XF86XK_AudioMicMute" => Some(XF86XK_AudioMicMute),
1199         "XF86XK_Switch_VT_1" => Some(XF86XK_Switch_VT_1),
1200         "XF86XK_Switch_VT_2" => Some(XF86XK_Switch_VT_2),
1201         "XF86XK_Switch_VT_3" => Some(XF86XK_Switch_VT_3),
1202         "XF86XK_Switch_VT_4" => Some(XF86XK_Switch_VT_4),
1203         "XF86XK_Switch_VT_5" => Some(XF86XK_Switch_VT_5),
1204         "XF86XK_Switch_VT_6" => Some(XF86XK_Switch_VT_6),
1205         "XF86XK_Switch_VT_7" => Some(XF86XK_Switch_VT_7),
1206         "XF86XK_Switch_VT_8" => Some(XF86XK_Switch_VT_8),
1207         "XF86XK_Switch_VT_9" => Some(XF86XK_Switch_VT_9),
1208         "XF86XK_Switch_VT_10" => Some(XF86XK_Switch_VT_10),
1209         "XF86XK_Switch_VT_11" => Some(XF86XK_Switch_VT_11),
1210         "XF86XK_Switch_VT_12" => Some(XF86XK_Switch_VT_12),
1211         "XF86XK_Ungrab" => Some(XF86XK_Ungrab),
1212         "XF86XK_ClearGrab" => Some(XF86XK_ClearGrab),
1213         "XF86XK_Next_VMode" => Some(XF86XK_Next_VMode),
1214         "XF86XK_Prev_VMode" => Some(XF86XK_Prev_VMode),
1215         "XF86XK_LogWindowTree" => Some(XF86XK_LogWindowTree),
1216         "XF86XK_LogGrabInfo" => Some(XF86XK_LogGrabInfo),
1217         "ISO_Lock" => Some(XK_ISO_Lock),
1218         "ISO_Level2_Latch" => Some(XK_ISO_Level2_Latch),
1219         "ISO_Level3_Shift" => Some(XK_ISO_Level3_Shift),
1220         "ISO_Level3_Latch" => Some(XK_ISO_Level3_Latch),
1221         "ISO_Level3_Lock" => Some(XK_ISO_Level3_Lock),
1222         "ISO_Level5_Shift" => Some(XK_ISO_Level5_Shift),
1223         "ISO_Level5_Latch" => Some(XK_ISO_Level5_Latch),
1224         "ISO_Level5_Lock" => Some(XK_ISO_Level5_Lock),
1225         "ISO_Group_Shift" => Some(XK_ISO_Group_Shift),
1226         "ISO_Group_Latch" => Some(XK_ISO_Group_Latch),
1227         "ISO_Group_Lock" => Some(XK_ISO_Group_Lock),
1228         "ISO_Next_Group" => Some(XK_ISO_Next_Group),
1229         "ISO_Next_Group_Lock" => Some(XK_ISO_Next_Group_Lock),
1230         "ISO_Prev_Group" => Some(XK_ISO_Prev_Group),
1231         "ISO_Prev_Group_Lock" => Some(XK_ISO_Prev_Group_Lock),
1232         "ISO_First_Group" => Some(XK_ISO_First_Group),
1233         "ISO_First_Group_Lock" => Some(XK_ISO_First_Group_Lock),
1234         "ISO_Last_Group" => Some(XK_ISO_Last_Group),
1235         "ISO_Last_Group_Lock" => Some(XK_ISO_Last_Group_Lock),
1236         "ISO_Left_Tab" => Some(XK_ISO_Left_Tab),
1237         "ISO_Move_Line_Up" => Some(XK_ISO_Move_Line_Up),
1238         "ISO_Move_Line_Down" => Some(XK_ISO_Move_Line_Down),
1239         "ISO_Partial_Line_Up" => Some(XK_ISO_Partial_Line_Up),
1240         "ISO_Partial_Line_Down" => Some(XK_ISO_Partial_Line_Down),
1241         "ISO_Partial_Space_Left" => Some(XK_ISO_Partial_Space_Left),
1242         "ISO_Partial_Space_Right" => Some(XK_ISO_Partial_Space_Right),
1243         "ISO_Set_Margin_Left" => Some(XK_ISO_Set_Margin_Left),
1244         "ISO_Set_Margin_Right" => Some(XK_ISO_Set_Margin_Right),
1245         "ISO_Release_Margin_Left" => Some(XK_ISO_Release_Margin_Left),
1246         "ISO_Release_Margin_Right" => Some(XK_ISO_Release_Margin_Right),
1247         "ISO_Release_Both_Margins" => Some(XK_ISO_Release_Both_Margins),
1248         "ISO_Fast_Cursor_Left" => Some(XK_ISO_Fast_Cursor_Left),
1249         "ISO_Fast_Cursor_Right" => Some(XK_ISO_Fast_Cursor_Right),
1250         "ISO_Fast_Cursor_Up" => Some(XK_ISO_Fast_Cursor_Up),
1251         "ISO_Fast_Cursor_Down" => Some(XK_ISO_Fast_Cursor_Down),
1252         "ISO_Continuous_Underline" => Some(XK_ISO_Continuous_Underline),
1253         "ISO_Discontinuous_Underline" => Some(XK_ISO_Discontinuous_Underline),
1254         "ISO_Emphasize" => Some(XK_ISO_Emphasize),
1255         "ISO_Center_Object" => Some(XK_ISO_Center_Object),
1256         "ISO_Enter" => Some(XK_ISO_Enter),
1257         "dead_grave" => Some(XK_dead_grave),
1258         "dead_acute" => Some(XK_dead_acute),
1259         "dead_circumflex" => Some(XK_dead_circumflex),
1260         "dead_tilde" => Some(XK_dead_tilde),
1261         "dead_perispomeni" => Some(XK_dead_perispomeni),
1262         "dead_macron" => Some(XK_dead_macron),
1263         "dead_breve" => Some(XK_dead_breve),
1264         "dead_abovedot" => Some(XK_dead_abovedot),
1265         "dead_diaeresis" => Some(XK_dead_diaeresis),
1266         "dead_abovering" => Some(XK_dead_abovering),
1267         "dead_doubleacute" => Some(XK_dead_doubleacute),
1268         "dead_caron" => Some(XK_dead_caron),
1269         "dead_cedilla" => Some(XK_dead_cedilla),
1270         "dead_ogonek" => Some(XK_dead_ogonek),
1271         "dead_iota" => Some(XK_dead_iota),
1272         "dead_voiced_sound" => Some(XK_dead_voiced_sound),
1273         "dead_semivoiced_sound" => Some(XK_dead_semivoiced_sound),
1274         "dead_belowdot" => Some(XK_dead_belowdot),
1275         "dead_hook" => Some(XK_dead_hook),
1276         "dead_horn" => Some(XK_dead_horn),
1277         "dead_stroke" => Some(XK_dead_stroke),
1278         "dead_abovecomma" => Some(XK_dead_abovecomma),
1279         "dead_psili" => Some(XK_dead_psili),
1280         "dead_abovereversedcomma" => Some(XK_dead_abovereversedcomma),
1281         "dead_dasia" => Some(XK_dead_dasia),
1282         "dead_doublegrave" => Some(XK_dead_doublegrave),
1283         "dead_belowring" => Some(XK_dead_belowring),
1284         "dead_belowmacron" => Some(XK_dead_belowmacron),
1285         "dead_belowcircumflex" => Some(XK_dead_belowcircumflex),
1286         "dead_belowtilde" => Some(XK_dead_belowtilde),
1287         "dead_belowbreve" => Some(XK_dead_belowbreve),
1288         "dead_belowdiaeresis" => Some(XK_dead_belowdiaeresis),
1289         "dead_invertedbreve" => Some(XK_dead_invertedbreve),
1290         "dead_belowcomma" => Some(XK_dead_belowcomma),
1291         "dead_currency" => Some(XK_dead_currency),
1292         "dead_lowline" => Some(XK_dead_lowline),
1293         "dead_aboveverticalline" => Some(XK_dead_aboveverticalline),
1294         "dead_belowverticalline" => Some(XK_dead_belowverticalline),
1295         "dead_longsolidusoverlay" => Some(XK_dead_longsolidusoverlay),
1296         "dead_a" => Some(XK_dead_a),
1297         "dead_A" => Some(XK_dead_A),
1298         "dead_e" => Some(XK_dead_e),
1299         "dead_E" => Some(XK_dead_E),
1300         "dead_i" => Some(XK_dead_i),
1301         "dead_I" => Some(XK_dead_I),
1302         "dead_o" => Some(XK_dead_o),
1303         "dead_O" => Some(XK_dead_O),
1304         "dead_u" => Some(XK_dead_u),
1305         "dead_U" => Some(XK_dead_U),
1306         "dead_small_schwa" => Some(XK_dead_small_schwa),
1307         "dead_capital_schwa" => Some(XK_dead_capital_schwa),
1308         "dead_greek" => Some(XK_dead_greek),
1309         "First_Virtual_Screen" => Some(XK_First_Virtual_Screen),
1310         "Prev_Virtual_Screen" => Some(XK_Prev_Virtual_Screen),
1311         "Next_Virtual_Screen" => Some(XK_Next_Virtual_Screen),
1312         "Last_Virtual_Screen" => Some(XK_Last_Virtual_Screen),
1313         "Terminate_Server" => Some(XK_Terminate_Server),
1314         "AccessX_Enable" => Some(XK_AccessX_Enable),
1315         "AccessX_Feedback_Enable" => Some(XK_AccessX_Feedback_Enable),
1316         "RepeatKeys_Enable" => Some(XK_RepeatKeys_Enable),
1317         "SlowKeys_Enable" => Some(XK_SlowKeys_Enable),
1318         "BounceKeys_Enable" => Some(XK_BounceKeys_Enable),
1319         "StickyKeys_Enable" => Some(XK_StickyKeys_Enable),
1320         "MouseKeys_Enable" => Some(XK_MouseKeys_Enable),
1321         "MouseKeys_Accel_Enable" => Some(XK_MouseKeys_Accel_Enable),
1322         "Overlay1_Enable" => Some(XK_Overlay1_Enable),
1323         "Overlay2_Enable" => Some(XK_Overlay2_Enable),
1324         "AudibleBell_Enable" => Some(XK_AudibleBell_Enable),
1325         "Pointer_Left" => Some(XK_Pointer_Left),
1326         "Pointer_Right" => Some(XK_Pointer_Right),
1327         "Pointer_Up" => Some(XK_Pointer_Up),
1328         "Pointer_Down" => Some(XK_Pointer_Down),
1329         "Pointer_UpLeft" => Some(XK_Pointer_UpLeft),
1330         "Pointer_UpRight" => Some(XK_Pointer_UpRight),
1331         "Pointer_DownLeft" => Some(XK_Pointer_DownLeft),
1332         "Pointer_DownRight" => Some(XK_Pointer_DownRight),
1333         "Pointer_Button_Dflt" => Some(XK_Pointer_Button_Dflt),
1334         "Pointer_Button1" => Some(XK_Pointer_Button1),
1335         "Pointer_Button2" => Some(XK_Pointer_Button2),
1336         "Pointer_Button3" => Some(XK_Pointer_Button3),
1337         "Pointer_Button4" => Some(XK_Pointer_Button4),
1338         "Pointer_Button5" => Some(XK_Pointer_Button5),
1339         "Pointer_DblClick_Dflt" => Some(XK_Pointer_DblClick_Dflt),
1340         "Pointer_DblClick1" => Some(XK_Pointer_DblClick1),
1341         "Pointer_DblClick2" => Some(XK_Pointer_DblClick2),
1342         "Pointer_DblClick3" => Some(XK_Pointer_DblClick3),
1343         "Pointer_DblClick4" => Some(XK_Pointer_DblClick4),
1344         "Pointer_DblClick5" => Some(XK_Pointer_DblClick5),
1345         "Pointer_Drag_Dflt" => Some(XK_Pointer_Drag_Dflt),
1346         "Pointer_Drag1" => Some(XK_Pointer_Drag1),
1347         "Pointer_Drag2" => Some(XK_Pointer_Drag2),
1348         "Pointer_Drag3" => Some(XK_Pointer_Drag3),
1349         "Pointer_Drag4" => Some(XK_Pointer_Drag4),
1350         "Pointer_Drag5" => Some(XK_Pointer_Drag5),
1351         "Pointer_EnableKeys" => Some(XK_Pointer_EnableKeys),
1352         "Pointer_Accelerate" => Some(XK_Pointer_Accelerate),
1353         "Pointer_DfltBtnNext" => Some(XK_Pointer_DfltBtnNext),
1354         "Pointer_DfltBtnPrev" => Some(XK_Pointer_DfltBtnPrev),
1355         "ch" => Some(XK_ch),
1356         "Ch" => Some(XK_Ch),
1357         "CH" => Some(XK_CH),
1358         "c_h" => Some(XK_c_h),
1359         "C_h" => Some(XK_C_h),
1360         "C_H" => Some(XK_C_H),
1361         _ => None,
1362     }
1363 }
1364