From c1da2b1273cb1154625a942633bdc2d09b64d680 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Mon, 28 Jul 2014 14:15:02 +0200 Subject: Work on input support for X11 --- src/lib.rs | 2 +- src/x11/events.rs | 1002 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/x11/ffi.rs | 1037 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/x11/mod.rs | 29 +- 4 files changed, 2068 insertions(+), 2 deletions(-) create mode 100644 src/x11/events.rs diff --git a/src/lib.rs b/src/lib.rs index b18b5fe..8b1c30e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,7 +3,7 @@ extern crate libc; pub use events::{Event, Element, PositionChanged, SizeChanged, Closed, CursorPositionChanged, Focused}; -pub use events::{Iconified, NeedRefresh}; +pub use events::{Iconified, NeedRefresh, Pressed, Released}; pub use hints::{Hints, ClientAPI, Profile}; #[cfg(windows)] diff --git a/src/x11/events.rs b/src/x11/events.rs new file mode 100644 index 0000000..8b78136 --- /dev/null +++ b/src/x11/events.rs @@ -0,0 +1,1002 @@ +use {events, libc}; +use super::ffi; +use Element; + +pub fn keycode_to_element(scancode: libc::c_uint) -> Option { + Some(match scancode { + //ffi::XK_BackSpace => events::Backspace, + //ffi::XK_Tab => events::Tab, + //ffi::XK_Linefeed => events::Linefeed, + //ffi::XK_Clear => events::Clear, + //ffi::XK_Return => events::Return, + //ffi::XK_Pause => events::Pause, + //ffi::XK_Scroll_Lock => events::Scroll_lock, + //ffi::XK_Sys_Req => events::Sys_req, + //ffi::XK_Escape => events::Escape, + //ffi::XK_Delete => events::Delete, + //ffi::XK_Multi_key => events::Multi_key, + //ffi::XK_Kanji => events::Kanji, + //ffi::XK_Muhenkan => events::Muhenkan, + //ffi::XK_Henkan_Mode => events::Henkan_mode, + //ffi::XK_Henkan => events::Henkan, + //ffi::XK_Romaji => events::Romaji, + //ffi::XK_Hiragana => events::Hiragana, + //ffi::XK_Katakana => events::Katakana, + //ffi::XK_Hiragana_Katakana => events::Hiragana_katakana, + //ffi::XK_Zenkaku => events::Zenkaku, + //ffi::XK_Hankaku => events::Hankaku, + //ffi::XK_Zenkaku_Hankaku => events::Zenkaku_hankaku, + //ffi::XK_Touroku => events::Touroku, + //ffi::XK_Massyo => events::Massyo, + //ffi::XK_Kana_Lock => events::Kana_lock, + //ffi::XK_Kana_Shift => events::Kana_shift, + //ffi::XK_Eisu_Shift => events::Eisu_shift, + //ffi::XK_Eisu_toggle => events::Eisu_toggle, + //ffi::XK_Home => events::Home, + //ffi::XK_Left => events::Left, + //ffi::XK_Up => events::Up, + //ffi::XK_Right => events::Right, + //ffi::XK_Down => events::Down, + //ffi::XK_Prior => events::Prior, + //ffi::XK_Page_Up => events::Page_up, + //ffi::XK_Next => events::Next, + //ffi::XK_Page_Down => events::Page_down, + //ffi::XK_End => events::End, + //ffi::XK_Begin => events::Begin, + //ffi::XK_Win_L => events::Win_l, + //ffi::XK_Win_R => events::Win_r, + //ffi::XK_App => events::App, + //ffi::XK_Select => events::Select, + //ffi::XK_Print => events::Print, + //ffi::XK_Execute => events::Execute, + //ffi::XK_Insert => events::Insert, + //ffi::XK_Undo => events::Undo, + //ffi::XK_Redo => events::Redo, + //ffi::XK_Menu => events::Menu, + //ffi::XK_Find => events::Find, + //ffi::XK_Cancel => events::Cancel, + //ffi::XK_Help => events::Help, + //ffi::XK_Break => events::Break, + //ffi::XK_Mode_switch => events::Mode_switch, + //ffi::XK_script_switch => events::Script_switch, + //ffi::XK_Num_Lock => events::Num_lock, + //ffi::XK_KP_Space => events::Kp_space, + //ffi::XK_KP_Tab => events::Kp_tab, + //ffi::XK_KP_Enter => events::Kp_enter, + //ffi::XK_KP_F1 => events::Kp_f1, + //ffi::XK_KP_F2 => events::Kp_f2, + //ffi::XK_KP_F3 => events::Kp_f3, + //ffi::XK_KP_F4 => events::Kp_f4, + //ffi::XK_KP_Home => events::Kp_home, + //ffi::XK_KP_Left => events::Kp_left, + //ffi::XK_KP_Up => events::Kp_up, + //ffi::XK_KP_Right => events::Kp_right, + //ffi::XK_KP_Down => events::Kp_down, + //ffi::XK_KP_Prior => events::Kp_prior, + //ffi::XK_KP_Page_Up => events::Kp_page_up, + //ffi::XK_KP_Next => events::Kp_next, + //ffi::XK_KP_Page_Down => events::Kp_page_down, + //ffi::XK_KP_End => events::Kp_end, + //ffi::XK_KP_Begin => events::Kp_begin, + //ffi::XK_KP_Insert => events::Kp_insert, + //ffi::XK_KP_Delete => events::Kp_delete, + //ffi::XK_KP_Equal => events::Kp_equal, + //ffi::XK_KP_Multiply => events::Kp_multiply, + //ffi::XK_KP_Add => events::Kp_add, + //ffi::XK_KP_Separator => events::Kp_separator, + //ffi::XK_KP_Subtract => events::Kp_subtract, + //ffi::XK_KP_Decimal => events::Kp_decimal, + //ffi::XK_KP_Divide => events::Kp_divide, + //ffi::XK_KP_0 => events::Kp_0, + //ffi::XK_KP_1 => events::Kp_1, + //ffi::XK_KP_2 => events::Kp_2, + //ffi::XK_KP_3 => events::Kp_3, + //ffi::XK_KP_4 => events::Kp_4, + //ffi::XK_KP_5 => events::Kp_5, + //ffi::XK_KP_6 => events::Kp_6, + //ffi::XK_KP_7 => events::Kp_7, + //ffi::XK_KP_8 => events::Kp_8, + //ffi::XK_KP_9 => events::Kp_9, + //ffi::XK_F1 => events::F1, + //ffi::XK_F2 => events::F2, + //ffi::XK_F3 => events::F3, + //ffi::XK_F4 => events::F4, + //ffi::XK_F5 => events::F5, + //ffi::XK_F6 => events::F6, + //ffi::XK_F7 => events::F7, + //ffi::XK_F8 => events::F8, + //ffi::XK_F9 => events::F9, + //ffi::XK_F10 => events::F10, + //ffi::XK_F11 => events::F11, + //ffi::XK_L1 => events::L1, + //ffi::XK_F12 => events::F12, + //ffi::XK_L2 => events::L2, + //ffi::XK_F13 => events::F13, + //ffi::XK_L3 => events::L3, + //ffi::XK_F14 => events::F14, + //ffi::XK_L4 => events::L4, + //ffi::XK_F15 => events::F15, + //ffi::XK_L5 => events::L5, + //ffi::XK_F16 => events::F16, + //ffi::XK_L6 => events::L6, + //ffi::XK_F17 => events::F17, + //ffi::XK_L7 => events::L7, + //ffi::XK_F18 => events::F18, + //ffi::XK_L8 => events::L8, + //ffi::XK_F19 => events::F19, + //ffi::XK_L9 => events::L9, + //ffi::XK_F20 => events::F20, + //ffi::XK_L10 => events::L10, + //ffi::XK_F21 => events::F21, + //ffi::XK_R1 => events::R1, + //ffi::XK_F22 => events::F22, + //ffi::XK_R2 => events::R2, + //ffi::XK_F23 => events::F23, + //ffi::XK_R3 => events::R3, + //ffi::XK_F24 => events::F24, + //ffi::XK_R4 => events::R4, + //ffi::XK_F25 => events::F25, + //ffi::XK_R5 => events::R5, + //ffi::XK_F26 => events::F26, + //ffi::XK_R6 => events::R6, + //ffi::XK_F27 => events::F27, + //ffi::XK_R7 => events::R7, + //ffi::XK_F28 => events::F28, + //ffi::XK_R8 => events::R8, + //ffi::XK_F29 => events::F29, + //ffi::XK_R9 => events::R9, + //ffi::XK_F30 => events::F30, + //ffi::XK_R10 => events::R10, + //ffi::XK_F31 => events::F31, + //ffi::XK_R11 => events::R11, + //ffi::XK_F32 => events::F32, + //ffi::XK_R12 => events::R12, + //ffi::XK_F33 => events::F33, + //ffi::XK_R13 => events::R13, + //ffi::XK_F34 => events::F34, + //ffi::XK_R14 => events::R14, + //ffi::XK_F35 => events::F35, + //ffi::XK_R15 => events::R15, + //ffi::XK_Shift_L => events::Shift_l, + //ffi::XK_Shift_R => events::Shift_r, + //ffi::XK_Control_L => events::Control_l, + //ffi::XK_Control_R => events::Control_r, + //ffi::XK_Caps_Lock => events::Caps_lock, + //ffi::XK_Shift_Lock => events::Shift_lock, + //ffi::XK_Meta_L => events::Meta_l, + //ffi::XK_Meta_R => events::Meta_r, + //ffi::XK_Alt_L => events::Alt_l, + //ffi::XK_Alt_R => events::Alt_r, + //ffi::XK_Super_L => events::Super_l, + //ffi::XK_Super_R => events::Super_r, + //ffi::XK_Hyper_L => events::Hyper_l, + //ffi::XK_Hyper_R => events::Hyper_r, + //ffi::XK_space => events::Space, + //ffi::XK_exclam => events::Exclam, + //ffi::XK_quotedbl => events::Quotedbl, + //ffi::XK_numbersign => events::Numbersign, + //ffi::XK_dollar => events::Dollar, + //ffi::XK_percent => events::Percent, + //ffi::XK_ampersand => events::Ampersand, + //ffi::XK_apostrophe => events::Apostrophe, + //ffi::XK_quoteright => events::Quoteright, + //ffi::XK_parenleft => events::Parenleft, + //ffi::XK_parenright => events::Parenright, + //ffi::XK_asterisk => events::Asterisk, + //ffi::XK_plus => events::Plus, + //ffi::XK_comma => events::Comma, + //ffi::XK_minus => events::Minus, + //ffi::XK_period => events::Period, + //ffi::XK_slash => events::Slash, + //ffi::XK_0 => events::0, + //ffi::XK_1 => events::1, + //ffi::XK_2 => events::2, + //ffi::XK_3 => events::3, + //ffi::XK_4 => events::4, + //ffi::XK_5 => events::5, + //ffi::XK_6 => events::6, + //ffi::XK_7 => events::7, + //ffi::XK_8 => events::8, + //ffi::XK_9 => events::9, + //ffi::XK_colon => events::Colon, + //ffi::XK_semicolon => events::Semicolon, + //ffi::XK_less => events::Less, + //ffi::XK_equal => events::Equal, + //ffi::XK_greater => events::Greater, + //ffi::XK_question => events::Question, + //ffi::XK_at => events::At, + ffi::XK_A => events::A, + ffi::XK_B => events::B, + ffi::XK_C => events::C, + ffi::XK_D => events::D, + ffi::XK_E => events::E, + ffi::XK_F => events::F, + ffi::XK_G => events::G, + ffi::XK_H => events::H, + ffi::XK_I => events::I, + ffi::XK_J => events::J, + ffi::XK_K => events::K, + ffi::XK_L => events::L, + ffi::XK_M => events::M, + ffi::XK_N => events::N, + ffi::XK_O => events::O, + ffi::XK_P => events::P, + ffi::XK_Q => events::Q, + ffi::XK_R => events::R, + ffi::XK_S => events::S, + ffi::XK_T => events::T, + ffi::XK_U => events::U, + ffi::XK_V => events::V, + ffi::XK_W => events::W, + ffi::XK_X => events::X, + ffi::XK_Y => events::Y, + ffi::XK_Z => events::Z, + //ffi::XK_bracketleft => events::Bracketleft, + //ffi::XK_backslash => events::Backslash, + //ffi::XK_bracketright => events::Bracketright, + //ffi::XK_asciicircum => events::Asciicircum, + //ffi::XK_underscore => events::Underscore, + //ffi::XK_grave => events::Grave, + //ffi::XK_quoteleft => events::Quoteleft, + ffi::XK_a => events::A, + ffi::XK_b => events::B, + ffi::XK_c => events::C, + ffi::XK_d => events::D, + ffi::XK_e => events::E, + ffi::XK_f => events::F, + ffi::XK_g => events::G, + ffi::XK_h => events::H, + ffi::XK_i => events::I, + ffi::XK_j => events::J, + ffi::XK_k => events::K, + ffi::XK_l => events::L, + ffi::XK_m => events::M, + ffi::XK_n => events::N, + ffi::XK_o => events::O, + ffi::XK_p => events::P, + ffi::XK_q => events::Q, + ffi::XK_r => events::R, + ffi::XK_s => events::S, + ffi::XK_t => events::T, + ffi::XK_u => events::U, + ffi::XK_v => events::V, + ffi::XK_w => events::W, + ffi::XK_x => events::X, + ffi::XK_y => events::Y, + ffi::XK_z => events::Z, + //ffi::XK_braceleft => events::Braceleft, + //ffi::XK_bar => events::Bar, + //ffi::XK_braceright => events::Braceright, + //ffi::XK_asciitilde => events::Asciitilde, + //ffi::XK_nobreakspace => events::Nobreakspace, + //ffi::XK_exclamdown => events::Exclamdown, + //ffi::XK_cent => events::Cent, + //ffi::XK_sterling => events::Sterling, + //ffi::XK_currency => events::Currency, + //ffi::XK_yen => events::Yen, + //ffi::XK_brokenbar => events::Brokenbar, + //ffi::XK_section => events::Section, + //ffi::XK_diaeresis => events::Diaeresis, + //ffi::XK_copyright => events::Copyright, + //ffi::XK_ordfeminine => events::Ordfeminine, + //ffi::XK_guillemotleft => events::Guillemotleft, + //ffi::XK_notsign => events::Notsign, + //ffi::XK_hyphen => events::Hyphen, + //ffi::XK_registered => events::Registered, + //ffi::XK_macron => events::Macron, + //ffi::XK_degree => events::Degree, + //ffi::XK_plusminus => events::Plusminus, + //ffi::XK_twosuperior => events::Twosuperior, + //ffi::XK_threesuperior => events::Threesuperior, + //ffi::XK_acute => events::Acute, + //ffi::XK_mu => events::Mu, + //ffi::XK_paragraph => events::Paragraph, + //ffi::XK_periodcentered => events::Periodcentered, + //ffi::XK_cedilla => events::Cedilla, + //ffi::XK_onesuperior => events::Onesuperior, + //ffi::XK_masculine => events::Masculine, + //ffi::XK_guillemotright => events::Guillemotright, + //ffi::XK_onequarter => events::Onequarter, + //ffi::XK_onehalf => events::Onehalf, + //ffi::XK_threequarters => events::Threequarters, + //ffi::XK_questiondown => events::Questiondown, + //ffi::XK_Agrave => events::Agrave, + //ffi::XK_Aacute => events::Aacute, + //ffi::XK_Acircumflex => events::Acircumflex, + //ffi::XK_Atilde => events::Atilde, + //ffi::XK_Adiaeresis => events::Adiaeresis, + //ffi::XK_Aring => events::Aring, + //ffi::XK_AE => events::Ae, + //ffi::XK_Ccedilla => events::Ccedilla, + //ffi::XK_Egrave => events::Egrave, + //ffi::XK_Eacute => events::Eacute, + //ffi::XK_Ecircumflex => events::Ecircumflex, + //ffi::XK_Ediaeresis => events::Ediaeresis, + //ffi::XK_Igrave => events::Igrave, + //ffi::XK_Iacute => events::Iacute, + //ffi::XK_Icircumflex => events::Icircumflex, + //ffi::XK_Idiaeresis => events::Idiaeresis, + //ffi::XK_ETH => events::Eth, + //ffi::XK_Eth => events::Eth, + //ffi::XK_Ntilde => events::Ntilde, + //ffi::XK_Ograve => events::Ograve, + //ffi::XK_Oacute => events::Oacute, + //ffi::XK_Ocircumflex => events::Ocircumflex, + //ffi::XK_Otilde => events::Otilde, + //ffi::XK_Odiaeresis => events::Odiaeresis, + //ffi::XK_multiply => events::Multiply, + //ffi::XK_Ooblique => events::Ooblique, + //ffi::XK_Ugrave => events::Ugrave, + //ffi::XK_Uacute => events::Uacute, + //ffi::XK_Ucircumflex => events::Ucircumflex, + //ffi::XK_Udiaeresis => events::Udiaeresis, + //ffi::XK_Yacute => events::Yacute, + //ffi::XK_THORN => events::Thorn, + //ffi::XK_Thorn => events::Thorn, + //ffi::XK_ssharp => events::Ssharp, + //ffi::XK_agrave => events::Agrave, + //ffi::XK_aacute => events::Aacute, + //ffi::XK_acircumflex => events::Acircumflex, + //ffi::XK_atilde => events::Atilde, + //ffi::XK_adiaeresis => events::Adiaeresis, + //ffi::XK_aring => events::Aring, + //ffi::XK_ae => events::Ae, + //ffi::XK_ccedilla => events::Ccedilla, + //ffi::XK_egrave => events::Egrave, + //ffi::XK_eacute => events::Eacute, + //ffi::XK_ecircumflex => events::Ecircumflex, + //ffi::XK_ediaeresis => events::Ediaeresis, + //ffi::XK_igrave => events::Igrave, + //ffi::XK_iacute => events::Iacute, + //ffi::XK_icircumflex => events::Icircumflex, + //ffi::XK_idiaeresis => events::Idiaeresis, + //ffi::XK_eth => events::Eth, + //ffi::XK_ntilde => events::Ntilde, + //ffi::XK_ograve => events::Ograve, + //ffi::XK_oacute => events::Oacute, + //ffi::XK_ocircumflex => events::Ocircumflex, + //ffi::XK_otilde => events::Otilde, + //ffi::XK_odiaeresis => events::Odiaeresis, + //ffi::XK_division => events::Division, + //ffi::XK_oslash => events::Oslash, + //ffi::XK_ugrave => events::Ugrave, + //ffi::XK_uacute => events::Uacute, + //ffi::XK_ucircumflex => events::Ucircumflex, + //ffi::XK_udiaeresis => events::Udiaeresis, + //ffi::XK_yacute => events::Yacute, + //ffi::XK_thorn => events::Thorn, + //ffi::XK_ydiaeresis => events::Ydiaeresis, + //ffi::XK_Aogonek => events::Aogonek, + //ffi::XK_breve => events::Breve, + //ffi::XK_Lstroke => events::Lstroke, + //ffi::XK_Lcaron => events::Lcaron, + //ffi::XK_Sacute => events::Sacute, + //ffi::XK_Scaron => events::Scaron, + //ffi::XK_Scedilla => events::Scedilla, + //ffi::XK_Tcaron => events::Tcaron, + //ffi::XK_Zacute => events::Zacute, + //ffi::XK_Zcaron => events::Zcaron, + //ffi::XK_Zabovedot => events::Zabovedot, + //ffi::XK_aogonek => events::Aogonek, + //ffi::XK_ogonek => events::Ogonek, + //ffi::XK_lstroke => events::Lstroke, + //ffi::XK_lcaron => events::Lcaron, + //ffi::XK_sacute => events::Sacute, + //ffi::XK_caron => events::Caron, + //ffi::XK_scaron => events::Scaron, + //ffi::XK_scedilla => events::Scedilla, + //ffi::XK_tcaron => events::Tcaron, + //ffi::XK_zacute => events::Zacute, + //ffi::XK_doubleacute => events::Doubleacute, + //ffi::XK_zcaron => events::Zcaron, + //ffi::XK_zabovedot => events::Zabovedot, + //ffi::XK_Racute => events::Racute, + //ffi::XK_Abreve => events::Abreve, + //ffi::XK_Lacute => events::Lacute, + //ffi::XK_Cacute => events::Cacute, + //ffi::XK_Ccaron => events::Ccaron, + //ffi::XK_Eogonek => events::Eogonek, + //ffi::XK_Ecaron => events::Ecaron, + //ffi::XK_Dcaron => events::Dcaron, + //ffi::XK_Dstroke => events::Dstroke, + //ffi::XK_Nacute => events::Nacute, + //ffi::XK_Ncaron => events::Ncaron, + //ffi::XK_Odoubleacute => events::Odoubleacute, + //ffi::XK_Rcaron => events::Rcaron, + //ffi::XK_Uring => events::Uring, + //ffi::XK_Udoubleacute => events::Udoubleacute, + //ffi::XK_Tcedilla => events::Tcedilla, + //ffi::XK_racute => events::Racute, + //ffi::XK_abreve => events::Abreve, + //ffi::XK_lacute => events::Lacute, + //ffi::XK_cacute => events::Cacute, + //ffi::XK_ccaron => events::Ccaron, + //ffi::XK_eogonek => events::Eogonek, + //ffi::XK_ecaron => events::Ecaron, + //ffi::XK_dcaron => events::Dcaron, + //ffi::XK_dstroke => events::Dstroke, + //ffi::XK_nacute => events::Nacute, + //ffi::XK_ncaron => events::Ncaron, + //ffi::XK_odoubleacute => events::Odoubleacute, + //ffi::XK_udoubleacute => events::Udoubleacute, + //ffi::XK_rcaron => events::Rcaron, + //ffi::XK_uring => events::Uring, + //ffi::XK_tcedilla => events::Tcedilla, + //ffi::XK_abovedot => events::Abovedot, + //ffi::XK_Hstroke => events::Hstroke, + //ffi::XK_Hcircumflex => events::Hcircumflex, + //ffi::XK_Iabovedot => events::Iabovedot, + //ffi::XK_Gbreve => events::Gbreve, + //ffi::XK_Jcircumflex => events::Jcircumflex, + //ffi::XK_hstroke => events::Hstroke, + //ffi::XK_hcircumflex => events::Hcircumflex, + //ffi::XK_idotless => events::Idotless, + //ffi::XK_gbreve => events::Gbreve, + //ffi::XK_jcircumflex => events::Jcircumflex, + //ffi::XK_Cabovedot => events::Cabovedot, + //ffi::XK_Ccircumflex => events::Ccircumflex, + //ffi::XK_Gabovedot => events::Gabovedot, + //ffi::XK_Gcircumflex => events::Gcircumflex, + //ffi::XK_Ubreve => events::Ubreve, + //ffi::XK_Scircumflex => events::Scircumflex, + //ffi::XK_cabovedot => events::Cabovedot, + //ffi::XK_ccircumflex => events::Ccircumflex, + //ffi::XK_gabovedot => events::Gabovedot, + //ffi::XK_gcircumflex => events::Gcircumflex, + //ffi::XK_ubreve => events::Ubreve, + //ffi::XK_scircumflex => events::Scircumflex, + //ffi::XK_kra => events::Kra, + //ffi::XK_kappa => events::Kappa, + //ffi::XK_Rcedilla => events::Rcedilla, + //ffi::XK_Itilde => events::Itilde, + //ffi::XK_Lcedilla => events::Lcedilla, + //ffi::XK_Emacron => events::Emacron, + //ffi::XK_Gcedilla => events::Gcedilla, + //ffi::XK_Tslash => events::Tslash, + //ffi::XK_rcedilla => events::Rcedilla, + //ffi::XK_itilde => events::Itilde, + //ffi::XK_lcedilla => events::Lcedilla, + //ffi::XK_emacron => events::Emacron, + //ffi::XK_gcedilla => events::Gcedilla, + //ffi::XK_tslash => events::Tslash, + //ffi::XK_ENG => events::Eng, + //ffi::XK_eng => events::Eng, + //ffi::XK_Amacron => events::Amacron, + //ffi::XK_Iogonek => events::Iogonek, + //ffi::XK_Eabovedot => events::Eabovedot, + //ffi::XK_Imacron => events::Imacron, + //ffi::XK_Ncedilla => events::Ncedilla, + //ffi::XK_Omacron => events::Omacron, + //ffi::XK_Kcedilla => events::Kcedilla, + //ffi::XK_Uogonek => events::Uogonek, + //ffi::XK_Utilde => events::Utilde, + //ffi::XK_Umacron => events::Umacron, + //ffi::XK_amacron => events::Amacron, + //ffi::XK_iogonek => events::Iogonek, + //ffi::XK_eabovedot => events::Eabovedot, + //ffi::XK_imacron => events::Imacron, + //ffi::XK_ncedilla => events::Ncedilla, + //ffi::XK_omacron => events::Omacron, + //ffi::XK_kcedilla => events::Kcedilla, + //ffi::XK_uogonek => events::Uogonek, + //ffi::XK_utilde => events::Utilde, + //ffi::XK_umacron => events::Umacron, + //ffi::XK_overline => events::Overline, + //ffi::XK_kana_fullstop => events::Kana_fullstop, + //ffi::XK_kana_openingbracket => events::Kana_openingbracket, + //ffi::XK_kana_closingbracket => events::Kana_closingbracket, + //ffi::XK_kana_comma => events::Kana_comma, + //ffi::XK_kana_conjunctive => events::Kana_conjunctive, + //ffi::XK_kana_middledot => events::Kana_middledot, + //ffi::XK_kana_WO => events::Kana_wo, + //ffi::XK_kana_a => events::Kana_a, + //ffi::XK_kana_i => events::Kana_i, + //ffi::XK_kana_u => events::Kana_u, + //ffi::XK_kana_e => events::Kana_e, + //ffi::XK_kana_o => events::Kana_o, + //ffi::XK_kana_ya => events::Kana_ya, + //ffi::XK_kana_yu => events::Kana_yu, + //ffi::XK_kana_yo => events::Kana_yo, + //ffi::XK_kana_tsu => events::Kana_tsu, + //ffi::XK_kana_tu => events::Kana_tu, + //ffi::XK_prolongedsound => events::Prolongedsound, + //ffi::XK_kana_A => events::Kana_a, + //ffi::XK_kana_I => events::Kana_i, + //ffi::XK_kana_U => events::Kana_u, + //ffi::XK_kana_E => events::Kana_e, + //ffi::XK_kana_O => events::Kana_o, + //ffi::XK_kana_KA => events::Kana_ka, + //ffi::XK_kana_KI => events::Kana_ki, + //ffi::XK_kana_KU => events::Kana_ku, + //ffi::XK_kana_KE => events::Kana_ke, + //ffi::XK_kana_KO => events::Kana_ko, + //ffi::XK_kana_SA => events::Kana_sa, + //ffi::XK_kana_SHI => events::Kana_shi, + //ffi::XK_kana_SU => events::Kana_su, + //ffi::XK_kana_SE => events::Kana_se, + //ffi::XK_kana_SO => events::Kana_so, + //ffi::XK_kana_TA => events::Kana_ta, + //ffi::XK_kana_CHI => events::Kana_chi, + //ffi::XK_kana_TI => events::Kana_ti, + //ffi::XK_kana_TSU => events::Kana_tsu, + //ffi::XK_kana_TU => events::Kana_tu, + //ffi::XK_kana_TE => events::Kana_te, + //ffi::XK_kana_TO => events::Kana_to, + //ffi::XK_kana_NA => events::Kana_na, + //ffi::XK_kana_NI => events::Kana_ni, + //ffi::XK_kana_NU => events::Kana_nu, + //ffi::XK_kana_NE => events::Kana_ne, + //ffi::XK_kana_NO => events::Kana_no, + //ffi::XK_kana_HA => events::Kana_ha, + //ffi::XK_kana_HI => events::Kana_hi, + //ffi::XK_kana_FU => events::Kana_fu, + //ffi::XK_kana_HU => events::Kana_hu, + //ffi::XK_kana_HE => events::Kana_he, + //ffi::XK_kana_HO => events::Kana_ho, + //ffi::XK_kana_MA => events::Kana_ma, + //ffi::XK_kana_MI => events::Kana_mi, + //ffi::XK_kana_MU => events::Kana_mu, + //ffi::XK_kana_ME => events::Kana_me, + //ffi::XK_kana_MO => events::Kana_mo, + //ffi::XK_kana_YA => events::Kana_ya, + //ffi::XK_kana_YU => events::Kana_yu, + //ffi::XK_kana_YO => events::Kana_yo, + //ffi::XK_kana_RA => events::Kana_ra, + //ffi::XK_kana_RI => events::Kana_ri, + //ffi::XK_kana_RU => events::Kana_ru, + //ffi::XK_kana_RE => events::Kana_re, + //ffi::XK_kana_RO => events::Kana_ro, + //ffi::XK_kana_WA => events::Kana_wa, + //ffi::XK_kana_N => events::Kana_n, + //ffi::XK_voicedsound => events::Voicedsound, + //ffi::XK_semivoicedsound => events::Semivoicedsound, + //ffi::XK_kana_switch => events::Kana_switch, + //ffi::XK_Arabic_comma => events::Arabic_comma, + //ffi::XK_Arabic_semicolon => events::Arabic_semicolon, + //ffi::XK_Arabic_question_mark => events::Arabic_question_mark, + //ffi::XK_Arabic_hamza => events::Arabic_hamza, + //ffi::XK_Arabic_maddaonalef => events::Arabic_maddaonalef, + //ffi::XK_Arabic_hamzaonalef => events::Arabic_hamzaonalef, + //ffi::XK_Arabic_hamzaonwaw => events::Arabic_hamzaonwaw, + //ffi::XK_Arabic_hamzaunderalef => events::Arabic_hamzaunderalef, + //ffi::XK_Arabic_hamzaonyeh => events::Arabic_hamzaonyeh, + //ffi::XK_Arabic_alef => events::Arabic_alef, + //ffi::XK_Arabic_beh => events::Arabic_beh, + //ffi::XK_Arabic_tehmarbuta => events::Arabic_tehmarbuta, + //ffi::XK_Arabic_teh => events::Arabic_teh, + //ffi::XK_Arabic_theh => events::Arabic_theh, + //ffi::XK_Arabic_jeem => events::Arabic_jeem, + //ffi::XK_Arabic_hah => events::Arabic_hah, + //ffi::XK_Arabic_khah => events::Arabic_khah, + //ffi::XK_Arabic_dal => events::Arabic_dal, + //ffi::XK_Arabic_thal => events::Arabic_thal, + //ffi::XK_Arabic_ra => events::Arabic_ra, + //ffi::XK_Arabic_zain => events::Arabic_zain, + //ffi::XK_Arabic_seen => events::Arabic_seen, + //ffi::XK_Arabic_sheen => events::Arabic_sheen, + //ffi::XK_Arabic_sad => events::Arabic_sad, + //ffi::XK_Arabic_dad => events::Arabic_dad, + //ffi::XK_Arabic_tah => events::Arabic_tah, + //ffi::XK_Arabic_zah => events::Arabic_zah, + //ffi::XK_Arabic_ain => events::Arabic_ain, + //ffi::XK_Arabic_ghain => events::Arabic_ghain, + //ffi::XK_Arabic_tatweel => events::Arabic_tatweel, + //ffi::XK_Arabic_feh => events::Arabic_feh, + //ffi::XK_Arabic_qaf => events::Arabic_qaf, + //ffi::XK_Arabic_kaf => events::Arabic_kaf, + //ffi::XK_Arabic_lam => events::Arabic_lam, + //ffi::XK_Arabic_meem => events::Arabic_meem, + //ffi::XK_Arabic_noon => events::Arabic_noon, + //ffi::XK_Arabic_ha => events::Arabic_ha, + //ffi::XK_Arabic_heh => events::Arabic_heh, + //ffi::XK_Arabic_waw => events::Arabic_waw, + //ffi::XK_Arabic_alefmaksura => events::Arabic_alefmaksura, + //ffi::XK_Arabic_yeh => events::Arabic_yeh, + //ffi::XK_Arabic_fathatan => events::Arabic_fathatan, + //ffi::XK_Arabic_dammatan => events::Arabic_dammatan, + //ffi::XK_Arabic_kasratan => events::Arabic_kasratan, + //ffi::XK_Arabic_fatha => events::Arabic_fatha, + //ffi::XK_Arabic_damma => events::Arabic_damma, + //ffi::XK_Arabic_kasra => events::Arabic_kasra, + //ffi::XK_Arabic_shadda => events::Arabic_shadda, + //ffi::XK_Arabic_sukun => events::Arabic_sukun, + //ffi::XK_Arabic_switch => events::Arabic_switch, + //ffi::XK_Serbian_dje => events::Serbian_dje, + //ffi::XK_Macedonia_gje => events::Macedonia_gje, + //ffi::XK_Cyrillic_io => events::Cyrillic_io, + //ffi::XK_Ukrainian_ie => events::Ukrainian_ie, + //ffi::XK_Ukranian_je => events::Ukranian_je, + //ffi::XK_Macedonia_dse => events::Macedonia_dse, + //ffi::XK_Ukrainian_i => events::Ukrainian_i, + //ffi::XK_Ukranian_i => events::Ukranian_i, + //ffi::XK_Ukrainian_yi => events::Ukrainian_yi, + //ffi::XK_Ukranian_yi => events::Ukranian_yi, + //ffi::XK_Cyrillic_je => events::Cyrillic_je, + //ffi::XK_Serbian_je => events::Serbian_je, + //ffi::XK_Cyrillic_lje => events::Cyrillic_lje, + //ffi::XK_Serbian_lje => events::Serbian_lje, + //ffi::XK_Cyrillic_nje => events::Cyrillic_nje, + //ffi::XK_Serbian_nje => events::Serbian_nje, + //ffi::XK_Serbian_tshe => events::Serbian_tshe, + //ffi::XK_Macedonia_kje => events::Macedonia_kje, + //ffi::XK_Byelorussian_shortu => events::Byelorussian_shortu, + //ffi::XK_Cyrillic_dzhe => events::Cyrillic_dzhe, + //ffi::XK_Serbian_dze => events::Serbian_dze, + //ffi::XK_numerosign => events::Numerosign, + //ffi::XK_Serbian_DJE => events::Serbian_dje, + //ffi::XK_Macedonia_GJE => events::Macedonia_gje, + //ffi::XK_Cyrillic_IO => events::Cyrillic_io, + //ffi::XK_Ukrainian_IE => events::Ukrainian_ie, + //ffi::XK_Ukranian_JE => events::Ukranian_je, + //ffi::XK_Macedonia_DSE => events::Macedonia_dse, + //ffi::XK_Ukrainian_I => events::Ukrainian_i, + //ffi::XK_Ukranian_I => events::Ukranian_i, + //ffi::XK_Ukrainian_YI => events::Ukrainian_yi, + //ffi::XK_Ukranian_YI => events::Ukranian_yi, + //ffi::XK_Cyrillic_JE => events::Cyrillic_je, + //ffi::XK_Serbian_JE => events::Serbian_je, + //ffi::XK_Cyrillic_LJE => events::Cyrillic_lje, + //ffi::XK_Serbian_LJE => events::Serbian_lje, + //ffi::XK_Cyrillic_NJE => events::Cyrillic_nje, + //ffi::XK_Serbian_NJE => events::Serbian_nje, + //ffi::XK_Serbian_TSHE => events::Serbian_tshe, + //ffi::XK_Macedonia_KJE => events::Macedonia_kje, + //ffi::XK_Byelorussian_SHORTU => events::Byelorussian_shortu, + //ffi::XK_Cyrillic_DZHE => events::Cyrillic_dzhe, + //ffi::XK_Serbian_DZE => events::Serbian_dze, + //ffi::XK_Cyrillic_yu => events::Cyrillic_yu, + //ffi::XK_Cyrillic_a => events::Cyrillic_a, + //ffi::XK_Cyrillic_be => events::Cyrillic_be, + //ffi::XK_Cyrillic_tse => events::Cyrillic_tse, + //ffi::XK_Cyrillic_de => events::Cyrillic_de, + //ffi::XK_Cyrillic_ie => events::Cyrillic_ie, + //ffi::XK_Cyrillic_ef => events::Cyrillic_ef, + //ffi::XK_Cyrillic_ghe => events::Cyrillic_ghe, + //ffi::XK_Cyrillic_ha => events::Cyrillic_ha, + //ffi::XK_Cyrillic_i => events::Cyrillic_i, + //ffi::XK_Cyrillic_shorti => events::Cyrillic_shorti, + //ffi::XK_Cyrillic_ka => events::Cyrillic_ka, + //ffi::XK_Cyrillic_el => events::Cyrillic_el, + //ffi::XK_Cyrillic_em => events::Cyrillic_em, + //ffi::XK_Cyrillic_en => events::Cyrillic_en, + //ffi::XK_Cyrillic_o => events::Cyrillic_o, + //ffi::XK_Cyrillic_pe => events::Cyrillic_pe, + //ffi::XK_Cyrillic_ya => events::Cyrillic_ya, + //ffi::XK_Cyrillic_er => events::Cyrillic_er, + //ffi::XK_Cyrillic_es => events::Cyrillic_es, + //ffi::XK_Cyrillic_te => events::Cyrillic_te, + //ffi::XK_Cyrillic_u => events::Cyrillic_u, + //ffi::XK_Cyrillic_zhe => events::Cyrillic_zhe, + //ffi::XK_Cyrillic_ve => events::Cyrillic_ve, + //ffi::XK_Cyrillic_softsign => events::Cyrillic_softsign, + //ffi::XK_Cyrillic_yeru => events::Cyrillic_yeru, + //ffi::XK_Cyrillic_ze => events::Cyrillic_ze, + //ffi::XK_Cyrillic_sha => events::Cyrillic_sha, + //ffi::XK_Cyrillic_e => events::Cyrillic_e, + //ffi::XK_Cyrillic_shcha => events::Cyrillic_shcha, + //ffi::XK_Cyrillic_che => events::Cyrillic_che, + //ffi::XK_Cyrillic_hardsign => events::Cyrillic_hardsign, + //ffi::XK_Cyrillic_YU => events::Cyrillic_yu, + //ffi::XK_Cyrillic_A => events::Cyrillic_a, + //ffi::XK_Cyrillic_BE => events::Cyrillic_be, + //ffi::XK_Cyrillic_TSE => events::Cyrillic_tse, + //ffi::XK_Cyrillic_DE => events::Cyrillic_de, + //ffi::XK_Cyrillic_IE => events::Cyrillic_ie, + //ffi::XK_Cyrillic_EF => events::Cyrillic_ef, + //ffi::XK_Cyrillic_GHE => events::Cyrillic_ghe, + //ffi::XK_Cyrillic_HA => events::Cyrillic_ha, + //ffi::XK_Cyrillic_I => events::Cyrillic_i, + //ffi::XK_Cyrillic_SHORTI => events::Cyrillic_shorti, + //ffi::XK_Cyrillic_KA => events::Cyrillic_ka, + //ffi::XK_Cyrillic_EL => events::Cyrillic_el, + //ffi::XK_Cyrillic_EM => events::Cyrillic_em, + //ffi::XK_Cyrillic_EN => events::Cyrillic_en, + //ffi::XK_Cyrillic_O => events::Cyrillic_o, + //ffi::XK_Cyrillic_PE => events::Cyrillic_pe, + //ffi::XK_Cyrillic_YA => events::Cyrillic_ya, + //ffi::XK_Cyrillic_ER => events::Cyrillic_er, + //ffi::XK_Cyrillic_ES => events::Cyrillic_es, + //ffi::XK_Cyrillic_TE => events::Cyrillic_te, + //ffi::XK_Cyrillic_U => events::Cyrillic_u, + //ffi::XK_Cyrillic_ZHE => events::Cyrillic_zhe, + //ffi::XK_Cyrillic_VE => events::Cyrillic_ve, + //ffi::XK_Cyrillic_SOFTSIGN => events::Cyrillic_softsign, + //ffi::XK_Cyrillic_YERU => events::Cyrillic_yeru, + //ffi::XK_Cyrillic_ZE => events::Cyrillic_ze, + //ffi::XK_Cyrillic_SHA => events::Cyrillic_sha, + //ffi::XK_Cyrillic_E => events::Cyrillic_e, + //ffi::XK_Cyrillic_SHCHA => events::Cyrillic_shcha, + //ffi::XK_Cyrillic_CHE => events::Cyrillic_che, + //ffi::XK_Cyrillic_HARDSIGN => events::Cyrillic_hardsign, + //ffi::XK_Greek_ALPHAaccent => events::Greek_alphaaccent, + //ffi::XK_Greek_EPSILONaccent => events::Greek_epsilonaccent, + //ffi::XK_Greek_ETAaccent => events::Greek_etaaccent, + //ffi::XK_Greek_IOTAaccent => events::Greek_iotaaccent, + //ffi::XK_Greek_IOTAdiaeresis => events::Greek_iotadiaeresis, + //ffi::XK_Greek_OMICRONaccent => events::Greek_omicronaccent, + //ffi::XK_Greek_UPSILONaccent => events::Greek_upsilonaccent, + //ffi::XK_Greek_UPSILONdieresis => events::Greek_upsilondieresis, + //ffi::XK_Greek_OMEGAaccent => events::Greek_omegaaccent, + //ffi::XK_Greek_accentdieresis => events::Greek_accentdieresis, + //ffi::XK_Greek_horizbar => events::Greek_horizbar, + //ffi::XK_Greek_alphaaccent => events::Greek_alphaaccent, + //ffi::XK_Greek_epsilonaccent => events::Greek_epsilonaccent, + //ffi::XK_Greek_etaaccent => events::Greek_etaaccent, + //ffi::XK_Greek_iotaaccent => events::Greek_iotaaccent, + //ffi::XK_Greek_iotadieresis => events::Greek_iotadieresis, + //ffi::XK_Greek_iotaaccentdieresis => events::Greek_iotaaccentdieresis, + //ffi::XK_Greek_omicronaccent => events::Greek_omicronaccent, + //ffi::XK_Greek_upsilonaccent => events::Greek_upsilonaccent, + //ffi::XK_Greek_upsilondieresis => events::Greek_upsilondieresis, + //ffi::XK_Greek_upsilonaccentdieresis => events::Greek_upsilonaccentdieresis, + //ffi::XK_Greek_omegaaccent => events::Greek_omegaaccent, + //ffi::XK_Greek_ALPHA => events::Greek_alpha, + //ffi::XK_Greek_BETA => events::Greek_beta, + //ffi::XK_Greek_GAMMA => events::Greek_gamma, + //ffi::XK_Greek_DELTA => events::Greek_delta, + //ffi::XK_Greek_EPSILON => events::Greek_epsilon, + //ffi::XK_Greek_ZETA => events::Greek_zeta, + //ffi::XK_Greek_ETA => events::Greek_eta, + //ffi::XK_Greek_THETA => events::Greek_theta, + //ffi::XK_Greek_IOTA => events::Greek_iota, + //ffi::XK_Greek_KAPPA => events::Greek_kappa, + //ffi::XK_Greek_LAMDA => events::Greek_lamda, + //ffi::XK_Greek_LAMBDA => events::Greek_lambda, + //ffi::XK_Greek_MU => events::Greek_mu, + //ffi::XK_Greek_NU => events::Greek_nu, + //ffi::XK_Greek_XI => events::Greek_xi, + //ffi::XK_Greek_OMICRON => events::Greek_omicron, + //ffi::XK_Greek_PI => events::Greek_pi, + //ffi::XK_Greek_RHO => events::Greek_rho, + //ffi::XK_Greek_SIGMA => events::Greek_sigma, + //ffi::XK_Greek_TAU => events::Greek_tau, + //ffi::XK_Greek_UPSILON => events::Greek_upsilon, + //ffi::XK_Greek_PHI => events::Greek_phi, + //ffi::XK_Greek_CHI => events::Greek_chi, + //ffi::XK_Greek_PSI => events::Greek_psi, + //ffi::XK_Greek_OMEGA => events::Greek_omega, + //ffi::XK_Greek_alpha => events::Greek_alpha, + //ffi::XK_Greek_beta => events::Greek_beta, + //ffi::XK_Greek_gamma => events::Greek_gamma, + //ffi::XK_Greek_delta => events::Greek_delta, + //ffi::XK_Greek_epsilon => events::Greek_epsilon, + //ffi::XK_Greek_zeta => events::Greek_zeta, + //ffi::XK_Greek_eta => events::Greek_eta, + //ffi::XK_Greek_theta => events::Greek_theta, + //ffi::XK_Greek_iota => events::Greek_iota, + //ffi::XK_Greek_kappa => events::Greek_kappa, + //ffi::XK_Greek_lamda => events::Greek_lamda, + //ffi::XK_Greek_lambda => events::Greek_lambda, + //ffi::XK_Greek_mu => events::Greek_mu, + //ffi::XK_Greek_nu => events::Greek_nu, + //ffi::XK_Greek_xi => events::Greek_xi, + //ffi::XK_Greek_omicron => events::Greek_omicron, + //ffi::XK_Greek_pi => events::Greek_pi, + //ffi::XK_Greek_rho => events::Greek_rho, + //ffi::XK_Greek_sigma => events::Greek_sigma, + //ffi::XK_Greek_finalsmallsigma => events::Greek_finalsmallsigma, + //ffi::XK_Greek_tau => events::Greek_tau, + //ffi::XK_Greek_upsilon => events::Greek_upsilon, + //ffi::XK_Greek_phi => events::Greek_phi, + //ffi::XK_Greek_chi => events::Greek_chi, + //ffi::XK_Greek_psi => events::Greek_psi, + //ffi::XK_Greek_omega => events::Greek_omega, + //ffi::XK_Greek_switch => events::Greek_switch, + //ffi::XK_leftradical => events::Leftradical, + //ffi::XK_topleftradical => events::Topleftradical, + //ffi::XK_horizconnector => events::Horizconnector, + //ffi::XK_topintegral => events::Topintegral, + //ffi::XK_botintegral => events::Botintegral, + //ffi::XK_vertconnector => events::Vertconnector, + //ffi::XK_topleftsqbracket => events::Topleftsqbracket, + //ffi::XK_botleftsqbracket => events::Botleftsqbracket, + //ffi::XK_toprightsqbracket => events::Toprightsqbracket, + //ffi::XK_botrightsqbracket => events::Botrightsqbracket, + //ffi::XK_topleftparens => events::Topleftparens, + //ffi::XK_botleftparens => events::Botleftparens, + //ffi::XK_toprightparens => events::Toprightparens, + //ffi::XK_botrightparens => events::Botrightparens, + //ffi::XK_leftmiddlecurlybrace => events::Leftmiddlecurlybrace, + //ffi::XK_rightmiddlecurlybrace => events::Rightmiddlecurlybrace, + //ffi::XK_topleftsummation => events::Topleftsummation, + //ffi::XK_botleftsummation => events::Botleftsummation, + //ffi::XK_topvertsummationconnector => events::Topvertsummationconnector, + //ffi::XK_botvertsummationconnector => events::Botvertsummationconnector, + //ffi::XK_toprightsummation => events::Toprightsummation, + //ffi::XK_botrightsummation => events::Botrightsummation, + //ffi::XK_rightmiddlesummation => events::Rightmiddlesummation, + //ffi::XK_lessthanequal => events::Lessthanequal, + //ffi::XK_notequal => events::Notequal, + //ffi::XK_greaterthanequal => events::Greaterthanequal, + //ffi::XK_integral => events::Integral, + //ffi::XK_therefore => events::Therefore, + //ffi::XK_variation => events::Variation, + //ffi::XK_infinity => events::Infinity, + //ffi::XK_nabla => events::Nabla, + //ffi::XK_approximate => events::Approximate, + //ffi::XK_similarequal => events::Similarequal, + //ffi::XK_ifonlyif => events::Ifonlyif, + //ffi::XK_implies => events::Implies, + //ffi::XK_identical => events::Identical, + //ffi::XK_radical => events::Radical, + //ffi::XK_includedin => events::Includedin, + //ffi::XK_includes => events::Includes, + //ffi::XK_intersection => events::Intersection, + //ffi::XK_union => events::Union, + //ffi::XK_logicaland => events::Logicaland, + //ffi::XK_logicalor => events::Logicalor, + //ffi::XK_partialderivative => events::Partialderivative, + //ffi::XK_function => events::Function, + //ffi::XK_leftarrow => events::Leftarrow, + //ffi::XK_uparrow => events::Uparrow, + //ffi::XK_rightarrow => events::Rightarrow, + //ffi::XK_downarrow => events::Downarrow, + //ffi::XK_blank => events::Blank, + //ffi::XK_soliddiamond => events::Soliddiamond, + //ffi::XK_checkerboard => events::Checkerboard, + //ffi::XK_ht => events::Ht, + //ffi::XK_ff => events::Ff, + //ffi::XK_cr => events::Cr, + //ffi::XK_lf => events::Lf, + //ffi::XK_nl => events::Nl, + //ffi::XK_vt => events::Vt, + //ffi::XK_lowrightcorner => events::Lowrightcorner, + //ffi::XK_uprightcorner => events::Uprightcorner, + //ffi::XK_upleftcorner => events::Upleftcorner, + //ffi::XK_lowleftcorner => events::Lowleftcorner, + //ffi::XK_crossinglines => events::Crossinglines, + //ffi::XK_horizlinescan1 => events::Horizlinescan1, + //ffi::XK_horizlinescan3 => events::Horizlinescan3, + //ffi::XK_horizlinescan5 => events::Horizlinescan5, + //ffi::XK_horizlinescan7 => events::Horizlinescan7, + //ffi::XK_horizlinescan9 => events::Horizlinescan9, + //ffi::XK_leftt => events::Leftt, + //ffi::XK_rightt => events::Rightt, + //ffi::XK_bott => events::Bott, + //ffi::XK_topt => events::Topt, + //ffi::XK_vertbar => events::Vertbar, + //ffi::XK_emspace => events::Emspace, + //ffi::XK_enspace => events::Enspace, + //ffi::XK_em3space => events::Em3space, + //ffi::XK_em4space => events::Em4space, + //ffi::XK_digitspace => events::Digitspace, + //ffi::XK_punctspace => events::Punctspace, + //ffi::XK_thinspace => events::Thinspace, + //ffi::XK_hairspace => events::Hairspace, + //ffi::XK_emdash => events::Emdash, + //ffi::XK_endash => events::Endash, + //ffi::XK_signifblank => events::Signifblank, + //ffi::XK_ellipsis => events::Ellipsis, + //ffi::XK_doubbaselinedot => events::Doubbaselinedot, + //ffi::XK_onethird => events::Onethird, + //ffi::XK_twothirds => events::Twothirds, + //ffi::XK_onefifth => events::Onefifth, + //ffi::XK_twofifths => events::Twofifths, + //ffi::XK_threefifths => events::Threefifths, + //ffi::XK_fourfifths => events::Fourfifths, + //ffi::XK_onesixth => events::Onesixth, + //ffi::XK_fivesixths => events::Fivesixths, + //ffi::XK_careof => events::Careof, + //ffi::XK_figdash => events::Figdash, + //ffi::XK_leftanglebracket => events::Leftanglebracket, + //ffi::XK_decimalpoint => events::Decimalpoint, + //ffi::XK_rightanglebracket => events::Rightanglebracket, + //ffi::XK_marker => events::Marker, + //ffi::XK_oneeighth => events::Oneeighth, + //ffi::XK_threeeighths => events::Threeeighths, + //ffi::XK_fiveeighths => events::Fiveeighths, + //ffi::XK_seveneighths => events::Seveneighths, + //ffi::XK_trademark => events::Trademark, + //ffi::XK_signaturemark => events::Signaturemark, + //ffi::XK_trademarkincircle => events::Trademarkincircle, + //ffi::XK_leftopentriangle => events::Leftopentriangle, + //ffi::XK_rightopentriangle => events::Rightopentriangle, + //ffi::XK_emopencircle => events::Emopencircle, + //ffi::XK_emopenrectangle => events::Emopenrectangle, + //ffi::XK_leftsinglequotemark => events::Leftsinglequotemark, + //ffi::XK_rightsinglequotemark => events::Rightsinglequotemark, + //ffi::XK_leftdoublequotemark => events::Leftdoublequotemark, + //ffi::XK_rightdoublequotemark => events::Rightdoublequotemark, + //ffi::XK_prescription => events::Prescription, + //ffi::XK_minutes => events::Minutes, + //ffi::XK_seconds => events::Seconds, + //ffi::XK_latincross => events::Latincross, + //ffi::XK_hexagram => events::Hexagram, + //ffi::XK_filledrectbullet => events::Filledrectbullet, + //ffi::XK_filledlefttribullet => events::Filledlefttribullet, + //ffi::XK_filledrighttribullet => events::Filledrighttribullet, + //ffi::XK_emfilledcircle => events::Emfilledcircle, + //ffi::XK_emfilledrect => events::Emfilledrect, + //ffi::XK_enopencircbullet => events::Enopencircbullet, + //ffi::XK_enopensquarebullet => events::Enopensquarebullet, + //ffi::XK_openrectbullet => events::Openrectbullet, + //ffi::XK_opentribulletup => events::Opentribulletup, + //ffi::XK_opentribulletdown => events::Opentribulletdown, + //ffi::XK_openstar => events::Openstar, + //ffi::XK_enfilledcircbullet => events::Enfilledcircbullet, + //ffi::XK_enfilledsqbullet => events::Enfilledsqbullet, + //ffi::XK_filledtribulletup => events::Filledtribulletup, + //ffi::XK_filledtribulletdown => events::Filledtribulletdown, + //ffi::XK_leftpointer => events::Leftpointer, + //ffi::XK_rightpointer => events::Rightpointer, + //ffi::XK_club => events::Club, + //ffi::XK_diamond => events::Diamond, + //ffi::XK_heart => events::Heart, + //ffi::XK_maltesecross => events::Maltesecross, + //ffi::XK_dagger => events::Dagger, + //ffi::XK_doubledagger => events::Doubledagger, + //ffi::XK_checkmark => events::Checkmark, + //ffi::XK_ballotcross => events::Ballotcross, + //ffi::XK_musicalsharp => events::Musicalsharp, + //ffi::XK_musicalflat => events::Musicalflat, + //ffi::XK_malesymbol => events::Malesymbol, + //ffi::XK_femalesymbol => events::Femalesymbol, + //ffi::XK_telephone => events::Telephone, + //ffi::XK_telephonerecorder => events::Telephonerecorder, + //ffi::XK_phonographcopyright => events::Phonographcopyright, + //ffi::XK_caret => events::Caret, + //ffi::XK_singlelowquotemark => events::Singlelowquotemark, + //ffi::XK_doublelowquotemark => events::Doublelowquotemark, + //ffi::XK_cursor => events::Cursor, + //ffi::XK_leftcaret => events::Leftcaret, + //ffi::XK_rightcaret => events::Rightcaret, + //ffi::XK_downcaret => events::Downcaret, + //ffi::XK_upcaret => events::Upcaret, + //ffi::XK_overbar => events::Overbar, + //ffi::XK_downtack => events::Downtack, + //ffi::XK_upshoe => events::Upshoe, + //ffi::XK_downstile => events::Downstile, + //ffi::XK_underbar => events::Underbar, + //ffi::XK_jot => events::Jot, + //ffi::XK_quad => events::Quad, + //ffi::XK_uptack => events::Uptack, + //ffi::XK_circle => events::Circle, + //ffi::XK_upstile => events::Upstile, + //ffi::XK_downshoe => events::Downshoe, + //ffi::XK_rightshoe => events::Rightshoe, + //ffi::XK_leftshoe => events::Leftshoe, + //ffi::XK_lefttack => events::Lefttack, + //ffi::XK_righttack => events::Righttack, + //ffi::XK_hebrew_doublelowline => events::Hebrew_doublelowline, + //ffi::XK_hebrew_aleph => events::Hebrew_aleph, + //ffi::XK_hebrew_bet => events::Hebrew_bet, + //ffi::XK_hebrew_beth => events::Hebrew_beth, + //ffi::XK_hebrew_gimel => events::Hebrew_gimel, + //ffi::XK_hebrew_gimmel => events::Hebrew_gimmel, + //ffi::XK_hebrew_dalet => events::Hebrew_dalet, + //ffi::XK_hebrew_daleth => events::Hebrew_daleth, + //ffi::XK_hebrew_he => events::Hebrew_he, + //ffi::XK_hebrew_waw => events::Hebrew_waw, + //ffi::XK_hebrew_zain => events::Hebrew_zain, + //ffi::XK_hebrew_zayin => events::Hebrew_zayin, + //ffi::XK_hebrew_chet => events::Hebrew_chet, + //ffi::XK_hebrew_het => events::Hebrew_het, + //ffi::XK_hebrew_tet => events::Hebrew_tet, + //ffi::XK_hebrew_teth => events::Hebrew_teth, + //ffi::XK_hebrew_yod => events::Hebrew_yod, + //ffi::XK_hebrew_finalkaph => events::Hebrew_finalkaph, + //ffi::XK_hebrew_kaph => events::Hebrew_kaph, + //ffi::XK_hebrew_lamed => events::Hebrew_lamed, + //ffi::XK_hebrew_finalmem => events::Hebrew_finalmem, + //ffi::XK_hebrew_mem => events::Hebrew_mem, + //ffi::XK_hebrew_finalnun => events::Hebrew_finalnun, + //ffi::XK_hebrew_nun => events::Hebrew_nun, + //ffi::XK_hebrew_samech => events::Hebrew_samech, + //ffi::XK_hebrew_samekh => events::Hebrew_samekh, + //ffi::XK_hebrew_ayin => events::Hebrew_ayin, + //ffi::XK_hebrew_finalpe => events::Hebrew_finalpe, + //ffi::XK_hebrew_pe => events::Hebrew_pe, + //ffi::XK_hebrew_finalzade => events::Hebrew_finalzade, + //ffi::XK_hebrew_finalzadi => events::Hebrew_finalzadi, + //ffi::XK_hebrew_zade => events::Hebrew_zade, + //ffi::XK_hebrew_zadi => events::Hebrew_zadi, + //ffi::XK_hebrew_qoph => events::Hebrew_qoph, + //ffi::XK_hebrew_kuf => events::Hebrew_kuf, + //ffi::XK_hebrew_resh => events::Hebrew_resh, + //ffi::XK_hebrew_shin => events::Hebrew_shin, + //ffi::XK_hebrew_taw => events::Hebrew_taw, + //ffi::XK_hebrew_taf => events::Hebrew_taf, + //ffi::XK_Hebrew_switch => events::Hebrew_switch, + _ => return None + }) +} \ No newline at end of file diff --git a/src/x11/ffi.rs b/src/x11/ffi.rs index c021867..553c62e 100644 --- a/src/x11/ffi.rs +++ b/src/x11/ffi.rs @@ -16,6 +16,8 @@ pub type GLXFBConfig = (); pub type GLXPbuffer = XID; pub type GLXPixmap = XID; pub type GLXWindow = XID; +pub type KeyCode = libc::c_ulong; +pub type KeySym = XID; pub type Pixmap = XID; pub type Status = libc::c_int; // TODO: not sure pub type Time = libc::c_ulong; @@ -191,6 +193,1001 @@ pub static GLX_PBUFFER: libc::c_int = 0x8023; pub static GLX_PBUFFER_HEIGHT: libc::c_int = 0x8040; pub static GLX_PBUFFER_WIDTH: libc::c_int = 0x8041; +pub static XK_BackSpace: libc::c_uint = 0xFF08; +pub static XK_Tab: libc::c_uint = 0xFF09; +pub static XK_Linefeed: libc::c_uint = 0xFF0A; +pub static XK_Clear: libc::c_uint = 0xFF0B; +pub static XK_Return: libc::c_uint = 0xFF0D; +pub static XK_Pause: libc::c_uint = 0xFF13; +pub static XK_Scroll_Lock: libc::c_uint = 0xFF14; +pub static XK_Sys_Req: libc::c_uint = 0xFF15; +pub static XK_Escape: libc::c_uint = 0xFF1B; +pub static XK_Delete: libc::c_uint = 0xFFFF; +pub static XK_Multi_key: libc::c_uint = 0xFF20; +pub static XK_Kanji: libc::c_uint = 0xFF21; +pub static XK_Muhenkan: libc::c_uint = 0xFF22; +pub static XK_Henkan_Mode: libc::c_uint = 0xFF23; +pub static XK_Henkan: libc::c_uint = 0xFF23; +pub static XK_Romaji: libc::c_uint = 0xFF24; +pub static XK_Hiragana: libc::c_uint = 0xFF25; +pub static XK_Katakana: libc::c_uint = 0xFF26; +pub static XK_Hiragana_Katakana: libc::c_uint = 0xFF27; +pub static XK_Zenkaku: libc::c_uint = 0xFF28; +pub static XK_Hankaku: libc::c_uint = 0xFF29; +pub static XK_Zenkaku_Hankaku: libc::c_uint = 0xFF2A; +pub static XK_Touroku: libc::c_uint = 0xFF2B; +pub static XK_Massyo: libc::c_uint = 0xFF2C; +pub static XK_Kana_Lock: libc::c_uint = 0xFF2D; +pub static XK_Kana_Shift: libc::c_uint = 0xFF2E; +pub static XK_Eisu_Shift: libc::c_uint = 0xFF2F; +pub static XK_Eisu_toggle: libc::c_uint = 0xFF30; +pub static XK_Home: libc::c_uint = 0xFF50; +pub static XK_Left: libc::c_uint = 0xFF51; +pub static XK_Up: libc::c_uint = 0xFF52; +pub static XK_Right: libc::c_uint = 0xFF53; +pub static XK_Down: libc::c_uint = 0xFF54; +pub static XK_Prior: libc::c_uint = 0xFF55; +pub static XK_Page_Up: libc::c_uint = 0xFF55; +pub static XK_Next: libc::c_uint = 0xFF56; +pub static XK_Page_Down: libc::c_uint = 0xFF56; +pub static XK_End: libc::c_uint = 0xFF57; +pub static XK_Begin: libc::c_uint = 0xFF58; +pub static XK_Win_L: libc::c_uint = 0xFF5B; +pub static XK_Win_R: libc::c_uint = 0xFF5C; +pub static XK_App: libc::c_uint = 0xFF5D; +pub static XK_Select: libc::c_uint = 0xFF60; +pub static XK_Print: libc::c_uint = 0xFF61; +pub static XK_Execute: libc::c_uint = 0xFF62; +pub static XK_Insert: libc::c_uint = 0xFF63; +pub static XK_Undo: libc::c_uint = 0xFF65; +pub static XK_Redo: libc::c_uint = 0xFF66; +pub static XK_Menu: libc::c_uint = 0xFF67; +pub static XK_Find: libc::c_uint = 0xFF68; +pub static XK_Cancel: libc::c_uint = 0xFF69; +pub static XK_Help: libc::c_uint = 0xFF6A; +pub static XK_Break: libc::c_uint = 0xFF6B; +pub static XK_Mode_switch: libc::c_uint = 0xFF7E; +pub static XK_script_switch: libc::c_uint = 0xFF7E; +pub static XK_Num_Lock: libc::c_uint = 0xFF7F; +pub static XK_KP_Space: libc::c_uint = 0xFF80; +pub static XK_KP_Tab: libc::c_uint = 0xFF89; +pub static XK_KP_Enter: libc::c_uint = 0xFF8D; +pub static XK_KP_F1: libc::c_uint = 0xFF91; +pub static XK_KP_F2: libc::c_uint = 0xFF92; +pub static XK_KP_F3: libc::c_uint = 0xFF93; +pub static XK_KP_F4: libc::c_uint = 0xFF94; +pub static XK_KP_Home: libc::c_uint = 0xFF95; +pub static XK_KP_Left: libc::c_uint = 0xFF96; +pub static XK_KP_Up: libc::c_uint = 0xFF97; +pub static XK_KP_Right: libc::c_uint = 0xFF98; +pub static XK_KP_Down: libc::c_uint = 0xFF99; +pub static XK_KP_Prior: libc::c_uint = 0xFF9A; +pub static XK_KP_Page_Up: libc::c_uint = 0xFF9A; +pub static XK_KP_Next: libc::c_uint = 0xFF9B; +pub static XK_KP_Page_Down: libc::c_uint = 0xFF9B; +pub static XK_KP_End: libc::c_uint = 0xFF9C; +pub static XK_KP_Begin: libc::c_uint = 0xFF9D; +pub static XK_KP_Insert: libc::c_uint = 0xFF9E; +pub static XK_KP_Delete: libc::c_uint = 0xFF9F; +pub static XK_KP_Equal: libc::c_uint = 0xFFBD; +pub static XK_KP_Multiply: libc::c_uint = 0xFFAA; +pub static XK_KP_Add: libc::c_uint = 0xFFAB; +pub static XK_KP_Separator: libc::c_uint = 0xFFAC; +pub static XK_KP_Subtract: libc::c_uint = 0xFFAD; +pub static XK_KP_Decimal: libc::c_uint = 0xFFAE; +pub static XK_KP_Divide: libc::c_uint = 0xFFAF; +pub static XK_KP_0: libc::c_uint = 0xFFB0; +pub static XK_KP_1: libc::c_uint = 0xFFB1; +pub static XK_KP_2: libc::c_uint = 0xFFB2; +pub static XK_KP_3: libc::c_uint = 0xFFB3; +pub static XK_KP_4: libc::c_uint = 0xFFB4; +pub static XK_KP_5: libc::c_uint = 0xFFB5; +pub static XK_KP_6: libc::c_uint = 0xFFB6; +pub static XK_KP_7: libc::c_uint = 0xFFB7; +pub static XK_KP_8: libc::c_uint = 0xFFB8; +pub static XK_KP_9: libc::c_uint = 0xFFB9; +pub static XK_F1: libc::c_uint = 0xFFBE; +pub static XK_F2: libc::c_uint = 0xFFBF; +pub static XK_F3: libc::c_uint = 0xFFC0; +pub static XK_F4: libc::c_uint = 0xFFC1; +pub static XK_F5: libc::c_uint = 0xFFC2; +pub static XK_F6: libc::c_uint = 0xFFC3; +pub static XK_F7: libc::c_uint = 0xFFC4; +pub static XK_F8: libc::c_uint = 0xFFC5; +pub static XK_F9: libc::c_uint = 0xFFC6; +pub static XK_F10: libc::c_uint = 0xFFC7; +pub static XK_F11: libc::c_uint = 0xFFC8; +pub static XK_L1: libc::c_uint = 0xFFC8; +pub static XK_F12: libc::c_uint = 0xFFC9; +pub static XK_L2: libc::c_uint = 0xFFC9; +pub static XK_F13: libc::c_uint = 0xFFCA; +pub static XK_L3: libc::c_uint = 0xFFCA; +pub static XK_F14: libc::c_uint = 0xFFCB; +pub static XK_L4: libc::c_uint = 0xFFCB; +pub static XK_F15: libc::c_uint = 0xFFCC; +pub static XK_L5: libc::c_uint = 0xFFCC; +pub static XK_F16: libc::c_uint = 0xFFCD; +pub static XK_L6: libc::c_uint = 0xFFCD; +pub static XK_F17: libc::c_uint = 0xFFCE; +pub static XK_L7: libc::c_uint = 0xFFCE; +pub static XK_F18: libc::c_uint = 0xFFCF; +pub static XK_L8: libc::c_uint = 0xFFCF; +pub static XK_F19: libc::c_uint = 0xFFD0; +pub static XK_L9: libc::c_uint = 0xFFD0; +pub static XK_F20: libc::c_uint = 0xFFD1; +pub static XK_L10: libc::c_uint = 0xFFD1; +pub static XK_F21: libc::c_uint = 0xFFD2; +pub static XK_R1: libc::c_uint = 0xFFD2; +pub static XK_F22: libc::c_uint = 0xFFD3; +pub static XK_R2: libc::c_uint = 0xFFD3; +pub static XK_F23: libc::c_uint = 0xFFD4; +pub static XK_R3: libc::c_uint = 0xFFD4; +pub static XK_F24: libc::c_uint = 0xFFD5; +pub static XK_R4: libc::c_uint = 0xFFD5; +pub static XK_F25: libc::c_uint = 0xFFD6; +pub static XK_R5: libc::c_uint = 0xFFD6; +pub static XK_F26: libc::c_uint = 0xFFD7; +pub static XK_R6: libc::c_uint = 0xFFD7; +pub static XK_F27: libc::c_uint = 0xFFD8; +pub static XK_R7: libc::c_uint = 0xFFD8; +pub static XK_F28: libc::c_uint = 0xFFD9; +pub static XK_R8: libc::c_uint = 0xFFD9; +pub static XK_F29: libc::c_uint = 0xFFDA; +pub static XK_R9: libc::c_uint = 0xFFDA; +pub static XK_F30: libc::c_uint = 0xFFDB; +pub static XK_R10: libc::c_uint = 0xFFDB; +pub static XK_F31: libc::c_uint = 0xFFDC; +pub static XK_R11: libc::c_uint = 0xFFDC; +pub static XK_F32: libc::c_uint = 0xFFDD; +pub static XK_R12: libc::c_uint = 0xFFDD; +pub static XK_F33: libc::c_uint = 0xFFDE; +pub static XK_R13: libc::c_uint = 0xFFDE; +pub static XK_F34: libc::c_uint = 0xFFDF; +pub static XK_R14: libc::c_uint = 0xFFDF; +pub static XK_F35: libc::c_uint = 0xFFE0; +pub static XK_R15: libc::c_uint = 0xFFE0; +pub static XK_Shift_L: libc::c_uint = 0xFFE1; +pub static XK_Shift_R: libc::c_uint = 0xFFE2; +pub static XK_Control_L: libc::c_uint = 0xFFE3; +pub static XK_Control_R: libc::c_uint = 0xFFE4; +pub static XK_Caps_Lock: libc::c_uint = 0xFFE5; +pub static XK_Shift_Lock: libc::c_uint = 0xFFE6; +pub static XK_Meta_L: libc::c_uint = 0xFFE7; +pub static XK_Meta_R: libc::c_uint = 0xFFE8; +pub static XK_Alt_L: libc::c_uint = 0xFFE9; +pub static XK_Alt_R: libc::c_uint = 0xFFEA; +pub static XK_Super_L: libc::c_uint = 0xFFEB; +pub static XK_Super_R: libc::c_uint = 0xFFEC; +pub static XK_Hyper_L: libc::c_uint = 0xFFED; +pub static XK_Hyper_R: libc::c_uint = 0xFFEE; +pub static XK_space: libc::c_uint = 0x020; +pub static XK_exclam: libc::c_uint = 0x021; +pub static XK_quotedbl: libc::c_uint = 0x022; +pub static XK_numbersign: libc::c_uint = 0x023; +pub static XK_dollar: libc::c_uint = 0x024; +pub static XK_percent: libc::c_uint = 0x025; +pub static XK_ampersand: libc::c_uint = 0x026; +pub static XK_apostrophe: libc::c_uint = 0x027; +pub static XK_quoteright: libc::c_uint = 0x027; +pub static XK_parenleft: libc::c_uint = 0x028; +pub static XK_parenright: libc::c_uint = 0x029; +pub static XK_asterisk: libc::c_uint = 0x02a; +pub static XK_plus: libc::c_uint = 0x02b; +pub static XK_comma: libc::c_uint = 0x02c; +pub static XK_minus: libc::c_uint = 0x02d; +pub static XK_period: libc::c_uint = 0x02e; +pub static XK_slash: libc::c_uint = 0x02f; +pub static XK_0: libc::c_uint = 0x030; +pub static XK_1: libc::c_uint = 0x031; +pub static XK_2: libc::c_uint = 0x032; +pub static XK_3: libc::c_uint = 0x033; +pub static XK_4: libc::c_uint = 0x034; +pub static XK_5: libc::c_uint = 0x035; +pub static XK_6: libc::c_uint = 0x036; +pub static XK_7: libc::c_uint = 0x037; +pub static XK_8: libc::c_uint = 0x038; +pub static XK_9: libc::c_uint = 0x039; +pub static XK_colon: libc::c_uint = 0x03a; +pub static XK_semicolon: libc::c_uint = 0x03b; +pub static XK_less: libc::c_uint = 0x03c; +pub static XK_equal: libc::c_uint = 0x03d; +pub static XK_greater: libc::c_uint = 0x03e; +pub static XK_question: libc::c_uint = 0x03f; +pub static XK_at: libc::c_uint = 0x040; +pub static XK_A: libc::c_uint = 0x041; +pub static XK_B: libc::c_uint = 0x042; +pub static XK_C: libc::c_uint = 0x043; +pub static XK_D: libc::c_uint = 0x044; +pub static XK_E: libc::c_uint = 0x045; +pub static XK_F: libc::c_uint = 0x046; +pub static XK_G: libc::c_uint = 0x047; +pub static XK_H: libc::c_uint = 0x048; +pub static XK_I: libc::c_uint = 0x049; +pub static XK_J: libc::c_uint = 0x04a; +pub static XK_K: libc::c_uint = 0x04b; +pub static XK_L: libc::c_uint = 0x04c; +pub static XK_M: libc::c_uint = 0x04d; +pub static XK_N: libc::c_uint = 0x04e; +pub static XK_O: libc::c_uint = 0x04f; +pub static XK_P: libc::c_uint = 0x050; +pub static XK_Q: libc::c_uint = 0x051; +pub static XK_R: libc::c_uint = 0x052; +pub static XK_S: libc::c_uint = 0x053; +pub static XK_T: libc::c_uint = 0x054; +pub static XK_U: libc::c_uint = 0x055; +pub static XK_V: libc::c_uint = 0x056; +pub static XK_W: libc::c_uint = 0x057; +pub static XK_X: libc::c_uint = 0x058; +pub static XK_Y: libc::c_uint = 0x059; +pub static XK_Z: libc::c_uint = 0x05a; +pub static XK_bracketleft: libc::c_uint = 0x05b; +pub static XK_backslash: libc::c_uint = 0x05c; +pub static XK_bracketright: libc::c_uint = 0x05d; +pub static XK_asciicircum: libc::c_uint = 0x05e; +pub static XK_underscore: libc::c_uint = 0x05f; +pub static XK_grave: libc::c_uint = 0x060; +pub static XK_quoteleft: libc::c_uint = 0x060; +pub static XK_a: libc::c_uint = 0x061; +pub static XK_b: libc::c_uint = 0x062; +pub static XK_c: libc::c_uint = 0x063; +pub static XK_d: libc::c_uint = 0x064; +pub static XK_e: libc::c_uint = 0x065; +pub static XK_f: libc::c_uint = 0x066; +pub static XK_g: libc::c_uint = 0x067; +pub static XK_h: libc::c_uint = 0x068; +pub static XK_i: libc::c_uint = 0x069; +pub static XK_j: libc::c_uint = 0x06a; +pub static XK_k: libc::c_uint = 0x06b; +pub static XK_l: libc::c_uint = 0x06c; +pub static XK_m: libc::c_uint = 0x06d; +pub static XK_n: libc::c_uint = 0x06e; +pub static XK_o: libc::c_uint = 0x06f; +pub static XK_p: libc::c_uint = 0x070; +pub static XK_q: libc::c_uint = 0x071; +pub static XK_r: libc::c_uint = 0x072; +pub static XK_s: libc::c_uint = 0x073; +pub static XK_t: libc::c_uint = 0x074; +pub static XK_u: libc::c_uint = 0x075; +pub static XK_v: libc::c_uint = 0x076; +pub static XK_w: libc::c_uint = 0x077; +pub static XK_x: libc::c_uint = 0x078; +pub static XK_y: libc::c_uint = 0x079; +pub static XK_z: libc::c_uint = 0x07a; +pub static XK_braceleft: libc::c_uint = 0x07b; +pub static XK_bar: libc::c_uint = 0x07c; +pub static XK_braceright: libc::c_uint = 0x07d; +pub static XK_asciitilde: libc::c_uint = 0x07e; +pub static XK_nobreakspace: libc::c_uint = 0x0a0; +pub static XK_exclamdown: libc::c_uint = 0x0a1; +pub static XK_cent: libc::c_uint = 0x0a2; +pub static XK_sterling: libc::c_uint = 0x0a3; +pub static XK_currency: libc::c_uint = 0x0a4; +pub static XK_yen: libc::c_uint = 0x0a5; +pub static XK_brokenbar: libc::c_uint = 0x0a6; +pub static XK_section: libc::c_uint = 0x0a7; +pub static XK_diaeresis: libc::c_uint = 0x0a8; +pub static XK_copyright: libc::c_uint = 0x0a9; +pub static XK_ordfeminine: libc::c_uint = 0x0aa; +pub static XK_guillemotleft: libc::c_uint = 0x0ab; +pub static XK_notsign: libc::c_uint = 0x0ac; +pub static XK_hyphen: libc::c_uint = 0x0ad; +pub static XK_registered: libc::c_uint = 0x0ae; +pub static XK_macron: libc::c_uint = 0x0af; +pub static XK_degree: libc::c_uint = 0x0b0; +pub static XK_plusminus: libc::c_uint = 0x0b1; +pub static XK_twosuperior: libc::c_uint = 0x0b2; +pub static XK_threesuperior: libc::c_uint = 0x0b3; +pub static XK_acute: libc::c_uint = 0x0b4; +pub static XK_mu: libc::c_uint = 0x0b5; +pub static XK_paragraph: libc::c_uint = 0x0b6; +pub static XK_periodcentered: libc::c_uint = 0x0b7; +pub static XK_cedilla: libc::c_uint = 0x0b8; +pub static XK_onesuperior: libc::c_uint = 0x0b9; +pub static XK_masculine: libc::c_uint = 0x0ba; +pub static XK_guillemotright: libc::c_uint = 0x0bb; +pub static XK_onequarter: libc::c_uint = 0x0bc; +pub static XK_onehalf: libc::c_uint = 0x0bd; +pub static XK_threequarters: libc::c_uint = 0x0be; +pub static XK_questiondown: libc::c_uint = 0x0bf; +pub static XK_Agrave: libc::c_uint = 0x0c0; +pub static XK_Aacute: libc::c_uint = 0x0c1; +pub static XK_Acircumflex: libc::c_uint = 0x0c2; +pub static XK_Atilde: libc::c_uint = 0x0c3; +pub static XK_Adiaeresis: libc::c_uint = 0x0c4; +pub static XK_Aring: libc::c_uint = 0x0c5; +pub static XK_AE: libc::c_uint = 0x0c6; +pub static XK_Ccedilla: libc::c_uint = 0x0c7; +pub static XK_Egrave: libc::c_uint = 0x0c8; +pub static XK_Eacute: libc::c_uint = 0x0c9; +pub static XK_Ecircumflex: libc::c_uint = 0x0ca; +pub static XK_Ediaeresis: libc::c_uint = 0x0cb; +pub static XK_Igrave: libc::c_uint = 0x0cc; +pub static XK_Iacute: libc::c_uint = 0x0cd; +pub static XK_Icircumflex: libc::c_uint = 0x0ce; +pub static XK_Idiaeresis: libc::c_uint = 0x0cf; +pub static XK_ETH: libc::c_uint = 0x0d0; +pub static XK_Eth: libc::c_uint = 0x0d0; +pub static XK_Ntilde: libc::c_uint = 0x0d1; +pub static XK_Ograve: libc::c_uint = 0x0d2; +pub static XK_Oacute: libc::c_uint = 0x0d3; +pub static XK_Ocircumflex: libc::c_uint = 0x0d4; +pub static XK_Otilde: libc::c_uint = 0x0d5; +pub static XK_Odiaeresis: libc::c_uint = 0x0d6; +pub static XK_multiply: libc::c_uint = 0x0d7; +pub static XK_Ooblique: libc::c_uint = 0x0d8; +pub static XK_Ugrave: libc::c_uint = 0x0d9; +pub static XK_Uacute: libc::c_uint = 0x0da; +pub static XK_Ucircumflex: libc::c_uint = 0x0db; +pub static XK_Udiaeresis: libc::c_uint = 0x0dc; +pub static XK_Yacute: libc::c_uint = 0x0dd; +pub static XK_THORN: libc::c_uint = 0x0de; +pub static XK_Thorn: libc::c_uint = 0x0de; +pub static XK_ssharp: libc::c_uint = 0x0df; +pub static XK_agrave: libc::c_uint = 0x0e0; +pub static XK_aacute: libc::c_uint = 0x0e1; +pub static XK_acircumflex: libc::c_uint = 0x0e2; +pub static XK_atilde: libc::c_uint = 0x0e3; +pub static XK_adiaeresis: libc::c_uint = 0x0e4; +pub static XK_aring: libc::c_uint = 0x0e5; +pub static XK_ae: libc::c_uint = 0x0e6; +pub static XK_ccedilla: libc::c_uint = 0x0e7; +pub static XK_egrave: libc::c_uint = 0x0e8; +pub static XK_eacute: libc::c_uint = 0x0e9; +pub static XK_ecircumflex: libc::c_uint = 0x0ea; +pub static XK_ediaeresis: libc::c_uint = 0x0eb; +pub static XK_igrave: libc::c_uint = 0x0ec; +pub static XK_iacute: libc::c_uint = 0x0ed; +pub static XK_icircumflex: libc::c_uint = 0x0ee; +pub static XK_idiaeresis: libc::c_uint = 0x0ef; +pub static XK_eth: libc::c_uint = 0x0f0; +pub static XK_ntilde: libc::c_uint = 0x0f1; +pub static XK_ograve: libc::c_uint = 0x0f2; +pub static XK_oacute: libc::c_uint = 0x0f3; +pub static XK_ocircumflex: libc::c_uint = 0x0f4; +pub static XK_otilde: libc::c_uint = 0x0f5; +pub static XK_odiaeresis: libc::c_uint = 0x0f6; +pub static XK_division: libc::c_uint = 0x0f7; +pub static XK_oslash: libc::c_uint = 0x0f8; +pub static XK_ugrave: libc::c_uint = 0x0f9; +pub static XK_uacute: libc::c_uint = 0x0fa; +pub static XK_ucircumflex: libc::c_uint = 0x0fb; +pub static XK_udiaeresis: libc::c_uint = 0x0fc; +pub static XK_yacute: libc::c_uint = 0x0fd; +pub static XK_thorn: libc::c_uint = 0x0fe; +pub static XK_ydiaeresis: libc::c_uint = 0x0ff; +pub static XK_Aogonek: libc::c_uint = 0x1a1; +pub static XK_breve: libc::c_uint = 0x1a2; +pub static XK_Lstroke: libc::c_uint = 0x1a3; +pub static XK_Lcaron: libc::c_uint = 0x1a5; +pub static XK_Sacute: libc::c_uint = 0x1a6; +pub static XK_Scaron: libc::c_uint = 0x1a9; +pub static XK_Scedilla: libc::c_uint = 0x1aa; +pub static XK_Tcaron: libc::c_uint = 0x1ab; +pub static XK_Zacute: libc::c_uint = 0x1ac; +pub static XK_Zcaron: libc::c_uint = 0x1ae; +pub static XK_Zabovedot: libc::c_uint = 0x1af; +pub static XK_aogonek: libc::c_uint = 0x1b1; +pub static XK_ogonek: libc::c_uint = 0x1b2; +pub static XK_lstroke: libc::c_uint = 0x1b3; +pub static XK_lcaron: libc::c_uint = 0x1b5; +pub static XK_sacute: libc::c_uint = 0x1b6; +pub static XK_caron: libc::c_uint = 0x1b7; +pub static XK_scaron: libc::c_uint = 0x1b9; +pub static XK_scedilla: libc::c_uint = 0x1ba; +pub static XK_tcaron: libc::c_uint = 0x1bb; +pub static XK_zacute: libc::c_uint = 0x1bc; +pub static XK_doubleacute: libc::c_uint = 0x1bd; +pub static XK_zcaron: libc::c_uint = 0x1be; +pub static XK_zabovedot: libc::c_uint = 0x1bf; +pub static XK_Racute: libc::c_uint = 0x1c0; +pub static XK_Abreve: libc::c_uint = 0x1c3; +pub static XK_Lacute: libc::c_uint = 0x1c5; +pub static XK_Cacute: libc::c_uint = 0x1c6; +pub static XK_Ccaron: libc::c_uint = 0x1c8; +pub static XK_Eogonek: libc::c_uint = 0x1ca; +pub static XK_Ecaron: libc::c_uint = 0x1cc; +pub static XK_Dcaron: libc::c_uint = 0x1cf; +pub static XK_Dstroke: libc::c_uint = 0x1d0; +pub static XK_Nacute: libc::c_uint = 0x1d1; +pub static XK_Ncaron: libc::c_uint = 0x1d2; +pub static XK_Odoubleacute: libc::c_uint = 0x1d5; +pub static XK_Rcaron: libc::c_uint = 0x1d8; +pub static XK_Uring: libc::c_uint = 0x1d9; +pub static XK_Udoubleacute: libc::c_uint = 0x1db; +pub static XK_Tcedilla: libc::c_uint = 0x1de; +pub static XK_racute: libc::c_uint = 0x1e0; +pub static XK_abreve: libc::c_uint = 0x1e3; +pub static XK_lacute: libc::c_uint = 0x1e5; +pub static XK_cacute: libc::c_uint = 0x1e6; +pub static XK_ccaron: libc::c_uint = 0x1e8; +pub static XK_eogonek: libc::c_uint = 0x1ea; +pub static XK_ecaron: libc::c_uint = 0x1ec; +pub static XK_dcaron: libc::c_uint = 0x1ef; +pub static XK_dstroke: libc::c_uint = 0x1f0; +pub static XK_nacute: libc::c_uint = 0x1f1; +pub static XK_ncaron: libc::c_uint = 0x1f2; +pub static XK_odoubleacute: libc::c_uint = 0x1f5; +pub static XK_udoubleacute: libc::c_uint = 0x1fb; +pub static XK_rcaron: libc::c_uint = 0x1f8; +pub static XK_uring: libc::c_uint = 0x1f9; +pub static XK_tcedilla: libc::c_uint = 0x1fe; +pub static XK_abovedot: libc::c_uint = 0x1ff; +pub static XK_Hstroke: libc::c_uint = 0x2a1; +pub static XK_Hcircumflex: libc::c_uint = 0x2a6; +pub static XK_Iabovedot: libc::c_uint = 0x2a9; +pub static XK_Gbreve: libc::c_uint = 0x2ab; +pub static XK_Jcircumflex: libc::c_uint = 0x2ac; +pub static XK_hstroke: libc::c_uint = 0x2b1; +pub static XK_hcircumflex: libc::c_uint = 0x2b6; +pub static XK_idotless: libc::c_uint = 0x2b9; +pub static XK_gbreve: libc::c_uint = 0x2bb; +pub static XK_jcircumflex: libc::c_uint = 0x2bc; +pub static XK_Cabovedot: libc::c_uint = 0x2c5; +pub static XK_Ccircumflex: libc::c_uint = 0x2c6; +pub static XK_Gabovedot: libc::c_uint = 0x2d5; +pub static XK_Gcircumflex: libc::c_uint = 0x2d8; +pub static XK_Ubreve: libc::c_uint = 0x2dd; +pub static XK_Scircumflex: libc::c_uint = 0x2de; +pub static XK_cabovedot: libc::c_uint = 0x2e5; +pub static XK_ccircumflex: libc::c_uint = 0x2e6; +pub static XK_gabovedot: libc::c_uint = 0x2f5; +pub static XK_gcircumflex: libc::c_uint = 0x2f8; +pub static XK_ubreve: libc::c_uint = 0x2fd; +pub static XK_scircumflex: libc::c_uint = 0x2fe; +pub static XK_kra: libc::c_uint = 0x3a2; +pub static XK_kappa: libc::c_uint = 0x3a2; +pub static XK_Rcedilla: libc::c_uint = 0x3a3; +pub static XK_Itilde: libc::c_uint = 0x3a5; +pub static XK_Lcedilla: libc::c_uint = 0x3a6; +pub static XK_Emacron: libc::c_uint = 0x3aa; +pub static XK_Gcedilla: libc::c_uint = 0x3ab; +pub static XK_Tslash: libc::c_uint = 0x3ac; +pub static XK_rcedilla: libc::c_uint = 0x3b3; +pub static XK_itilde: libc::c_uint = 0x3b5; +pub static XK_lcedilla: libc::c_uint = 0x3b6; +pub static XK_emacron: libc::c_uint = 0x3ba; +pub static XK_gcedilla: libc::c_uint = 0x3bb; +pub static XK_tslash: libc::c_uint = 0x3bc; +pub static XK_ENG: libc::c_uint = 0x3bd; +pub static XK_eng: libc::c_uint = 0x3bf; +pub static XK_Amacron: libc::c_uint = 0x3c0; +pub static XK_Iogonek: libc::c_uint = 0x3c7; +pub static XK_Eabovedot: libc::c_uint = 0x3cc; +pub static XK_Imacron: libc::c_uint = 0x3cf; +pub static XK_Ncedilla: libc::c_uint = 0x3d1; +pub static XK_Omacron: libc::c_uint = 0x3d2; +pub static XK_Kcedilla: libc::c_uint = 0x3d3; +pub static XK_Uogonek: libc::c_uint = 0x3d9; +pub static XK_Utilde: libc::c_uint = 0x3dd; +pub static XK_Umacron: libc::c_uint = 0x3de; +pub static XK_amacron: libc::c_uint = 0x3e0; +pub static XK_iogonek: libc::c_uint = 0x3e7; +pub static XK_eabovedot: libc::c_uint = 0x3ec; +pub static XK_imacron: libc::c_uint = 0x3ef; +pub static XK_ncedilla: libc::c_uint = 0x3f1; +pub static XK_omacron: libc::c_uint = 0x3f2; +pub static XK_kcedilla: libc::c_uint = 0x3f3; +pub static XK_uogonek: libc::c_uint = 0x3f9; +pub static XK_utilde: libc::c_uint = 0x3fd; +pub static XK_umacron: libc::c_uint = 0x3fe; +pub static XK_overline: libc::c_uint = 0x47e; +pub static XK_kana_fullstop: libc::c_uint = 0x4a1; +pub static XK_kana_openingbracket: libc::c_uint = 0x4a2; +pub static XK_kana_closingbracket: libc::c_uint = 0x4a3; +pub static XK_kana_comma: libc::c_uint = 0x4a4; +pub static XK_kana_conjunctive: libc::c_uint = 0x4a5; +pub static XK_kana_middledot: libc::c_uint = 0x4a5; +pub static XK_kana_WO: libc::c_uint = 0x4a6; +pub static XK_kana_a: libc::c_uint = 0x4a7; +pub static XK_kana_i: libc::c_uint = 0x4a8; +pub static XK_kana_u: libc::c_uint = 0x4a9; +pub static XK_kana_e: libc::c_uint = 0x4aa; +pub static XK_kana_o: libc::c_uint = 0x4ab; +pub static XK_kana_ya: libc::c_uint = 0x4ac; +pub static XK_kana_yu: libc::c_uint = 0x4ad; +pub static XK_kana_yo: libc::c_uint = 0x4ae; +pub static XK_kana_tsu: libc::c_uint = 0x4af; +pub static XK_kana_tu: libc::c_uint = 0x4af; +pub static XK_prolongedsound: libc::c_uint = 0x4b0; +pub static XK_kana_A: libc::c_uint = 0x4b1; +pub static XK_kana_I: libc::c_uint = 0x4b2; +pub static XK_kana_U: libc::c_uint = 0x4b3; +pub static XK_kana_E: libc::c_uint = 0x4b4; +pub static XK_kana_O: libc::c_uint = 0x4b5; +pub static XK_kana_KA: libc::c_uint = 0x4b6; +pub static XK_kana_KI: libc::c_uint = 0x4b7; +pub static XK_kana_KU: libc::c_uint = 0x4b8; +pub static XK_kana_KE: libc::c_uint = 0x4b9; +pub static XK_kana_KO: libc::c_uint = 0x4ba; +pub static XK_kana_SA: libc::c_uint = 0x4bb; +pub static XK_kana_SHI: libc::c_uint = 0x4bc; +pub static XK_kana_SU: libc::c_uint = 0x4bd; +pub static XK_kana_SE: libc::c_uint = 0x4be; +pub static XK_kana_SO: libc::c_uint = 0x4bf; +pub static XK_kana_TA: libc::c_uint = 0x4c0; +pub static XK_kana_CHI: libc::c_uint = 0x4c1; +pub static XK_kana_TI: libc::c_uint = 0x4c1; +pub static XK_kana_TSU: libc::c_uint = 0x4c2; +pub static XK_kana_TU: libc::c_uint = 0x4c2; +pub static XK_kana_TE: libc::c_uint = 0x4c3; +pub static XK_kana_TO: libc::c_uint = 0x4c4; +pub static XK_kana_NA: libc::c_uint = 0x4c5; +pub static XK_kana_NI: libc::c_uint = 0x4c6; +pub static XK_kana_NU: libc::c_uint = 0x4c7; +pub static XK_kana_NE: libc::c_uint = 0x4c8; +pub static XK_kana_NO: libc::c_uint = 0x4c9; +pub static XK_kana_HA: libc::c_uint = 0x4ca; +pub static XK_kana_HI: libc::c_uint = 0x4cb; +pub static XK_kana_FU: libc::c_uint = 0x4cc; +pub static XK_kana_HU: libc::c_uint = 0x4cc; +pub static XK_kana_HE: libc::c_uint = 0x4cd; +pub static XK_kana_HO: libc::c_uint = 0x4ce; +pub static XK_kana_MA: libc::c_uint = 0x4cf; +pub static XK_kana_MI: libc::c_uint = 0x4d0; +pub static XK_kana_MU: libc::c_uint = 0x4d1; +pub static XK_kana_ME: libc::c_uint = 0x4d2; +pub static XK_kana_MO: libc::c_uint = 0x4d3; +pub static XK_kana_YA: libc::c_uint = 0x4d4; +pub static XK_kana_YU: libc::c_uint = 0x4d5; +pub static XK_kana_YO: libc::c_uint = 0x4d6; +pub static XK_kana_RA: libc::c_uint = 0x4d7; +pub static XK_kana_RI: libc::c_uint = 0x4d8; +pub static XK_kana_RU: libc::c_uint = 0x4d9; +pub static XK_kana_RE: libc::c_uint = 0x4da; +pub static XK_kana_RO: libc::c_uint = 0x4db; +pub static XK_kana_WA: libc::c_uint = 0x4dc; +pub static XK_kana_N: libc::c_uint = 0x4dd; +pub static XK_voicedsound: libc::c_uint = 0x4de; +pub static XK_semivoicedsound: libc::c_uint = 0x4df; +pub static XK_kana_switch: libc::c_uint = 0xFF7E; +pub static XK_Arabic_comma: libc::c_uint = 0x5ac; +pub static XK_Arabic_semicolon: libc::c_uint = 0x5bb; +pub static XK_Arabic_question_mark: libc::c_uint = 0x5bf; +pub static XK_Arabic_hamza: libc::c_uint = 0x5c1; +pub static XK_Arabic_maddaonalef: libc::c_uint = 0x5c2; +pub static XK_Arabic_hamzaonalef: libc::c_uint = 0x5c3; +pub static XK_Arabic_hamzaonwaw: libc::c_uint = 0x5c4; +pub static XK_Arabic_hamzaunderalef: libc::c_uint = 0x5c5; +pub static XK_Arabic_hamzaonyeh: libc::c_uint = 0x5c6; +pub static XK_Arabic_alef: libc::c_uint = 0x5c7; +pub static XK_Arabic_beh: libc::c_uint = 0x5c8; +pub static XK_Arabic_tehmarbuta: libc::c_uint = 0x5c9; +pub static XK_Arabic_teh: libc::c_uint = 0x5ca; +pub static XK_Arabic_theh: libc::c_uint = 0x5cb; +pub static XK_Arabic_jeem: libc::c_uint = 0x5cc; +pub static XK_Arabic_hah: libc::c_uint = 0x5cd; +pub static XK_Arabic_khah: libc::c_uint = 0x5ce; +pub static XK_Arabic_dal: libc::c_uint = 0x5cf; +pub static XK_Arabic_thal: libc::c_uint = 0x5d0; +pub static XK_Arabic_ra: libc::c_uint = 0x5d1; +pub static XK_Arabic_zain: libc::c_uint = 0x5d2; +pub static XK_Arabic_seen: libc::c_uint = 0x5d3; +pub static XK_Arabic_sheen: libc::c_uint = 0x5d4; +pub static XK_Arabic_sad: libc::c_uint = 0x5d5; +pub static XK_Arabic_dad: libc::c_uint = 0x5d6; +pub static XK_Arabic_tah: libc::c_uint = 0x5d7; +pub static XK_Arabic_zah: libc::c_uint = 0x5d8; +pub static XK_Arabic_ain: libc::c_uint = 0x5d9; +pub static XK_Arabic_ghain: libc::c_uint = 0x5da; +pub static XK_Arabic_tatweel: libc::c_uint = 0x5e0; +pub static XK_Arabic_feh: libc::c_uint = 0x5e1; +pub static XK_Arabic_qaf: libc::c_uint = 0x5e2; +pub static XK_Arabic_kaf: libc::c_uint = 0x5e3; +pub static XK_Arabic_lam: libc::c_uint = 0x5e4; +pub static XK_Arabic_meem: libc::c_uint = 0x5e5; +pub static XK_Arabic_noon: libc::c_uint = 0x5e6; +pub static XK_Arabic_ha: libc::c_uint = 0x5e7; +pub static XK_Arabic_heh: libc::c_uint = 0x5e7; +pub static XK_Arabic_waw: libc::c_uint = 0x5e8; +pub static XK_Arabic_alefmaksura: libc::c_uint = 0x5e9; +pub static XK_Arabic_yeh: libc::c_uint = 0x5ea; +pub static XK_Arabic_fathatan: libc::c_uint = 0x5eb; +pub static XK_Arabic_dammatan: libc::c_uint = 0x5ec; +pub static XK_Arabic_kasratan: libc::c_uint = 0x5ed; +pub static XK_Arabic_fatha: libc::c_uint = 0x5ee; +pub static XK_Arabic_damma: libc::c_uint = 0x5ef; +pub static XK_Arabic_kasra: libc::c_uint = 0x5f0; +pub static XK_Arabic_shadda: libc::c_uint = 0x5f1; +pub static XK_Arabic_sukun: libc::c_uint = 0x5f2; +pub static XK_Arabic_switch: libc::c_uint = 0xFF7E; +pub static XK_Serbian_dje: libc::c_uint = 0x6a1; +pub static XK_Macedonia_gje: libc::c_uint = 0x6a2; +pub static XK_Cyrillic_io: libc::c_uint = 0x6a3; +pub static XK_Ukrainian_ie: libc::c_uint = 0x6a4; +pub static XK_Ukranian_je: libc::c_uint = 0x6a4; +pub static XK_Macedonia_dse: libc::c_uint = 0x6a5; +pub static XK_Ukrainian_i: libc::c_uint = 0x6a6; +pub static XK_Ukranian_i: libc::c_uint = 0x6a6; +pub static XK_Ukrainian_yi: libc::c_uint = 0x6a7; +pub static XK_Ukranian_yi: libc::c_uint = 0x6a7; +pub static XK_Cyrillic_je: libc::c_uint = 0x6a8; +pub static XK_Serbian_je: libc::c_uint = 0x6a8; +pub static XK_Cyrillic_lje: libc::c_uint = 0x6a9; +pub static XK_Serbian_lje: libc::c_uint = 0x6a9; +pub static XK_Cyrillic_nje: libc::c_uint = 0x6aa; +pub static XK_Serbian_nje: libc::c_uint = 0x6aa; +pub static XK_Serbian_tshe: libc::c_uint = 0x6ab; +pub static XK_Macedonia_kje: libc::c_uint = 0x6ac; +pub static XK_Byelorussian_shortu: libc::c_uint = 0x6ae; +pub static XK_Cyrillic_dzhe: libc::c_uint = 0x6af; +pub static XK_Serbian_dze: libc::c_uint = 0x6af; +pub static XK_numerosign: libc::c_uint = 0x6b0; +pub static XK_Serbian_DJE: libc::c_uint = 0x6b1; +pub static XK_Macedonia_GJE: libc::c_uint = 0x6b2; +pub static XK_Cyrillic_IO: libc::c_uint = 0x6b3; +pub static XK_Ukrainian_IE: libc::c_uint = 0x6b4; +pub static XK_Ukranian_JE: libc::c_uint = 0x6b4; +pub static XK_Macedonia_DSE: libc::c_uint = 0x6b5; +pub static XK_Ukrainian_I: libc::c_uint = 0x6b6; +pub static XK_Ukranian_I: libc::c_uint = 0x6b6; +pub static XK_Ukrainian_YI: libc::c_uint = 0x6b7; +pub static XK_Ukranian_YI: libc::c_uint = 0x6b7; +pub static XK_Cyrillic_JE: libc::c_uint = 0x6b8; +pub static XK_Serbian_JE: libc::c_uint = 0x6b8; +pub static XK_Cyrillic_LJE: libc::c_uint = 0x6b9; +pub static XK_Serbian_LJE: libc::c_uint = 0x6b9; +pub static XK_Cyrillic_NJE: libc::c_uint = 0x6ba; +pub static XK_Serbian_NJE: libc::c_uint = 0x6ba; +pub static XK_Serbian_TSHE: libc::c_uint = 0x6bb; +pub static XK_Macedonia_KJE: libc::c_uint = 0x6bc; +pub static XK_Byelorussian_SHORTU: libc::c_uint = 0x6be; +pub static XK_Cyrillic_DZHE: libc::c_uint = 0x6bf; +pub static XK_Serbian_DZE: libc::c_uint = 0x6bf; +pub static XK_Cyrillic_yu: libc::c_uint = 0x6c0; +pub static XK_Cyrillic_a: libc::c_uint = 0x6c1; +pub static XK_Cyrillic_be: libc::c_uint = 0x6c2; +pub static XK_Cyrillic_tse: libc::c_uint = 0x6c3; +pub static XK_Cyrillic_de: libc::c_uint = 0x6c4; +pub static XK_Cyrillic_ie: libc::c_uint = 0x6c5; +pub static XK_Cyrillic_ef: libc::c_uint = 0x6c6; +pub static XK_Cyrillic_ghe: libc::c_uint = 0x6c7; +pub static XK_Cyrillic_ha: libc::c_uint = 0x6c8; +pub static XK_Cyrillic_i: libc::c_uint = 0x6c9; +pub static XK_Cyrillic_shorti: libc::c_uint = 0x6ca; +pub static XK_Cyrillic_ka: libc::c_uint = 0x6cb; +pub static XK_Cyrillic_el: libc::c_uint = 0x6cc; +pub static XK_Cyrillic_em: libc::c_uint = 0x6cd; +pub static XK_Cyrillic_en: libc::c_uint = 0x6ce; +pub static XK_Cyrillic_o: libc::c_uint = 0x6cf; +pub static XK_Cyrillic_pe: libc::c_uint = 0x6d0; +pub static XK_Cyrillic_ya: libc::c_uint = 0x6d1; +pub static XK_Cyrillic_er: libc::c_uint = 0x6d2; +pub static XK_Cyrillic_es: libc::c_uint = 0x6d3; +pub static XK_Cyrillic_te: libc::c_uint = 0x6d4; +pub static XK_Cyrillic_u: libc::c_uint = 0x6d5; +pub static XK_Cyrillic_zhe: libc::c_uint = 0x6d6; +pub static XK_Cyrillic_ve: libc::c_uint = 0x6d7; +pub static XK_Cyrillic_softsign: libc::c_uint = 0x6d8; +pub static XK_Cyrillic_yeru: libc::c_uint = 0x6d9; +pub static XK_Cyrillic_ze: libc::c_uint = 0x6da; +pub static XK_Cyrillic_sha: libc::c_uint = 0x6db; +pub static XK_Cyrillic_e: libc::c_uint = 0x6dc; +pub static XK_Cyrillic_shcha: libc::c_uint = 0x6dd; +pub static XK_Cyrillic_che: libc::c_uint = 0x6de; +pub static XK_Cyrillic_hardsign: libc::c_uint = 0x6df; +pub static XK_Cyrillic_YU: libc::c_uint = 0x6e0; +pub static XK_Cyrillic_A: libc::c_uint = 0x6e1; +pub static XK_Cyrillic_BE: libc::c_uint = 0x6e2; +pub static XK_Cyrillic_TSE: libc::c_uint = 0x6e3; +pub static XK_Cyrillic_DE: libc::c_uint = 0x6e4; +pub static XK_Cyrillic_IE: libc::c_uint = 0x6e5; +pub static XK_Cyrillic_EF: libc::c_uint = 0x6e6; +pub static XK_Cyrillic_GHE: libc::c_uint = 0x6e7; +pub static XK_Cyrillic_HA: libc::c_uint = 0x6e8; +pub static XK_Cyrillic_I: libc::c_uint = 0x6e9; +pub static XK_Cyrillic_SHORTI: libc::c_uint = 0x6ea; +pub static XK_Cyrillic_KA: libc::c_uint = 0x6eb; +pub static XK_Cyrillic_EL: libc::c_uint = 0x6ec; +pub static XK_Cyrillic_EM: libc::c_uint = 0x6ed; +pub static XK_Cyrillic_EN: libc::c_uint = 0x6ee; +pub static XK_Cyrillic_O: libc::c_uint = 0x6ef; +pub static XK_Cyrillic_PE: libc::c_uint = 0x6f0; +pub static XK_Cyrillic_YA: libc::c_uint = 0x6f1; +pub static XK_Cyrillic_ER: libc::c_uint = 0x6f2; +pub static XK_Cyrillic_ES: libc::c_uint = 0x6f3; +pub static XK_Cyrillic_TE: libc::c_uint = 0x6f4; +pub static XK_Cyrillic_U: libc::c_uint = 0x6f5; +pub static XK_Cyrillic_ZHE: libc::c_uint = 0x6f6; +pub static XK_Cyrillic_VE: libc::c_uint = 0x6f7; +pub static XK_Cyrillic_SOFTSIGN: libc::c_uint = 0x6f8; +pub static XK_Cyrillic_YERU: libc::c_uint = 0x6f9; +pub static XK_Cyrillic_ZE: libc::c_uint = 0x6fa; +pub static XK_Cyrillic_SHA: libc::c_uint = 0x6fb; +pub static XK_Cyrillic_E: libc::c_uint = 0x6fc; +pub static XK_Cyrillic_SHCHA: libc::c_uint = 0x6fd; +pub static XK_Cyrillic_CHE: libc::c_uint = 0x6fe; +pub static XK_Cyrillic_HARDSIGN: libc::c_uint = 0x6ff; +pub static XK_Greek_ALPHAaccent: libc::c_uint = 0x7a1; +pub static XK_Greek_EPSILONaccent: libc::c_uint = 0x7a2; +pub static XK_Greek_ETAaccent: libc::c_uint = 0x7a3; +pub static XK_Greek_IOTAaccent: libc::c_uint = 0x7a4; +pub static XK_Greek_IOTAdiaeresis: libc::c_uint = 0x7a5; +pub static XK_Greek_OMICRONaccent: libc::c_uint = 0x7a7; +pub static XK_Greek_UPSILONaccent: libc::c_uint = 0x7a8; +pub static XK_Greek_UPSILONdieresis: libc::c_uint = 0x7a9; +pub static XK_Greek_OMEGAaccent: libc::c_uint = 0x7ab; +pub static XK_Greek_accentdieresis: libc::c_uint = 0x7ae; +pub static XK_Greek_horizbar: libc::c_uint = 0x7af; +pub static XK_Greek_alphaaccent: libc::c_uint = 0x7b1; +pub static XK_Greek_epsilonaccent: libc::c_uint = 0x7b2; +pub static XK_Greek_etaaccent: libc::c_uint = 0x7b3; +pub static XK_Greek_iotaaccent: libc::c_uint = 0x7b4; +pub static XK_Greek_iotadieresis: libc::c_uint = 0x7b5; +pub static XK_Greek_iotaaccentdieresis: libc::c_uint = 0x7b6; +pub static XK_Greek_omicronaccent: libc::c_uint = 0x7b7; +pub static XK_Greek_upsilonaccent: libc::c_uint = 0x7b8; +pub static XK_Greek_upsilondieresis: libc::c_uint = 0x7b9; +pub static XK_Greek_upsilonaccentdieresis: libc::c_uint = 0x7ba; +pub static XK_Greek_omegaaccent: libc::c_uint = 0x7bb; +pub static XK_Greek_ALPHA: libc::c_uint = 0x7c1; +pub static XK_Greek_BETA: libc::c_uint = 0x7c2; +pub static XK_Greek_GAMMA: libc::c_uint = 0x7c3; +pub static XK_Greek_DELTA: libc::c_uint = 0x7c4; +pub static XK_Greek_EPSILON: libc::c_uint = 0x7c5; +pub static XK_Greek_ZETA: libc::c_uint = 0x7c6; +pub static XK_Greek_ETA: libc::c_uint = 0x7c7; +pub static XK_Greek_THETA: libc::c_uint = 0x7c8; +pub static XK_Greek_IOTA: libc::c_uint = 0x7c9; +pub static XK_Greek_KAPPA: libc::c_uint = 0x7ca; +pub static XK_Greek_LAMDA: libc::c_uint = 0x7cb; +pub static XK_Greek_LAMBDA: libc::c_uint = 0x7cb; +pub static XK_Greek_MU: libc::c_uint = 0x7cc; +pub static XK_Greek_NU: libc::c_uint = 0x7cd; +pub static XK_Greek_XI: libc::c_uint = 0x7ce; +pub static XK_Greek_OMICRON: libc::c_uint = 0x7cf; +pub static XK_Greek_PI: libc::c_uint = 0x7d0; +pub static XK_Greek_RHO: libc::c_uint = 0x7d1; +pub static XK_Greek_SIGMA: libc::c_uint = 0x7d2; +pub static XK_Greek_TAU: libc::c_uint = 0x7d4; +pub static XK_Greek_UPSILON: libc::c_uint = 0x7d5; +pub static XK_Greek_PHI: libc::c_uint = 0x7d6; +pub static XK_Greek_CHI: libc::c_uint = 0x7d7; +pub static XK_Greek_PSI: libc::c_uint = 0x7d8; +pub static XK_Greek_OMEGA: libc::c_uint = 0x7d9; +pub static XK_Greek_alpha: libc::c_uint = 0x7e1; +pub static XK_Greek_beta: libc::c_uint = 0x7e2; +pub static XK_Greek_gamma: libc::c_uint = 0x7e3; +pub static XK_Greek_delta: libc::c_uint = 0x7e4; +pub static XK_Greek_epsilon: libc::c_uint = 0x7e5; +pub static XK_Greek_zeta: libc::c_uint = 0x7e6; +pub static XK_Greek_eta: libc::c_uint = 0x7e7; +pub static XK_Greek_theta: libc::c_uint = 0x7e8; +pub static XK_Greek_iota: libc::c_uint = 0x7e9; +pub static XK_Greek_kappa: libc::c_uint = 0x7ea; +pub static XK_Greek_lamda: libc::c_uint = 0x7eb; +pub static XK_Greek_lambda: libc::c_uint = 0x7eb; +pub static XK_Greek_mu: libc::c_uint = 0x7ec; +pub static XK_Greek_nu: libc::c_uint = 0x7ed; +pub static XK_Greek_xi: libc::c_uint = 0x7ee; +pub static XK_Greek_omicron: libc::c_uint = 0x7ef; +pub static XK_Greek_pi: libc::c_uint = 0x7f0; +pub static XK_Greek_rho: libc::c_uint = 0x7f1; +pub static XK_Greek_sigma: libc::c_uint = 0x7f2; +pub static XK_Greek_finalsmallsigma: libc::c_uint = 0x7f3; +pub static XK_Greek_tau: libc::c_uint = 0x7f4; +pub static XK_Greek_upsilon: libc::c_uint = 0x7f5; +pub static XK_Greek_phi: libc::c_uint = 0x7f6; +pub static XK_Greek_chi: libc::c_uint = 0x7f7; +pub static XK_Greek_psi: libc::c_uint = 0x7f8; +pub static XK_Greek_omega: libc::c_uint = 0x7f9; +pub static XK_Greek_switch: libc::c_uint = 0xFF7E; +pub static XK_leftradical: libc::c_uint = 0x8a1; +pub static XK_topleftradical: libc::c_uint = 0x8a2; +pub static XK_horizconnector: libc::c_uint = 0x8a3; +pub static XK_topintegral: libc::c_uint = 0x8a4; +pub static XK_botintegral: libc::c_uint = 0x8a5; +pub static XK_vertconnector: libc::c_uint = 0x8a6; +pub static XK_topleftsqbracket: libc::c_uint = 0x8a7; +pub static XK_botleftsqbracket: libc::c_uint = 0x8a8; +pub static XK_toprightsqbracket: libc::c_uint = 0x8a9; +pub static XK_botrightsqbracket: libc::c_uint = 0x8aa; +pub static XK_topleftparens: libc::c_uint = 0x8ab; +pub static XK_botleftparens: libc::c_uint = 0x8ac; +pub static XK_toprightparens: libc::c_uint = 0x8ad; +pub static XK_botrightparens: libc::c_uint = 0x8ae; +pub static XK_leftmiddlecurlybrace: libc::c_uint = 0x8af; +pub static XK_rightmiddlecurlybrace: libc::c_uint = 0x8b0; +pub static XK_topleftsummation: libc::c_uint = 0x8b1; +pub static XK_botleftsummation: libc::c_uint = 0x8b2; +pub static XK_topvertsummationconnector: libc::c_uint = 0x8b3; +pub static XK_botvertsummationconnector: libc::c_uint = 0x8b4; +pub static XK_toprightsummation: libc::c_uint = 0x8b5; +pub static XK_botrightsummation: libc::c_uint = 0x8b6; +pub static XK_rightmiddlesummation: libc::c_uint = 0x8b7; +pub static XK_lessthanequal: libc::c_uint = 0x8bc; +pub static XK_notequal: libc::c_uint = 0x8bd; +pub static XK_greaterthanequal: libc::c_uint = 0x8be; +pub static XK_integral: libc::c_uint = 0x8bf; +pub static XK_therefore: libc::c_uint = 0x8c0; +pub static XK_variation: libc::c_uint = 0x8c1; +pub static XK_infinity: libc::c_uint = 0x8c2; +pub static XK_nabla: libc::c_uint = 0x8c5; +pub static XK_approximate: libc::c_uint = 0x8c8; +pub static XK_similarequal: libc::c_uint = 0x8c9; +pub static XK_ifonlyif: libc::c_uint = 0x8cd; +pub static XK_implies: libc::c_uint = 0x8ce; +pub static XK_identical: libc::c_uint = 0x8cf; +pub static XK_radical: libc::c_uint = 0x8d6; +pub static XK_includedin: libc::c_uint = 0x8da; +pub static XK_includes: libc::c_uint = 0x8db; +pub static XK_intersection: libc::c_uint = 0x8dc; +pub static XK_union: libc::c_uint = 0x8dd; +pub static XK_logicaland: libc::c_uint = 0x8de; +pub static XK_logicalor: libc::c_uint = 0x8df; +pub static XK_partialderivative: libc::c_uint = 0x8ef; +pub static XK_function: libc::c_uint = 0x8f6; +pub static XK_leftarrow: libc::c_uint = 0x8fb; +pub static XK_uparrow: libc::c_uint = 0x8fc; +pub static XK_rightarrow: libc::c_uint = 0x8fd; +pub static XK_downarrow: libc::c_uint = 0x8fe; +pub static XK_blank: libc::c_uint = 0x9df; +pub static XK_soliddiamond: libc::c_uint = 0x9e0; +pub static XK_checkerboard: libc::c_uint = 0x9e1; +pub static XK_ht: libc::c_uint = 0x9e2; +pub static XK_ff: libc::c_uint = 0x9e3; +pub static XK_cr: libc::c_uint = 0x9e4; +pub static XK_lf: libc::c_uint = 0x9e5; +pub static XK_nl: libc::c_uint = 0x9e8; +pub static XK_vt: libc::c_uint = 0x9e9; +pub static XK_lowrightcorner: libc::c_uint = 0x9ea; +pub static XK_uprightcorner: libc::c_uint = 0x9eb; +pub static XK_upleftcorner: libc::c_uint = 0x9ec; +pub static XK_lowleftcorner: libc::c_uint = 0x9ed; +pub static XK_crossinglines: libc::c_uint = 0x9ee; +pub static XK_horizlinescan1: libc::c_uint = 0x9ef; +pub static XK_horizlinescan3: libc::c_uint = 0x9f0; +pub static XK_horizlinescan5: libc::c_uint = 0x9f1; +pub static XK_horizlinescan7: libc::c_uint = 0x9f2; +pub static XK_horizlinescan9: libc::c_uint = 0x9f3; +pub static XK_leftt: libc::c_uint = 0x9f4; +pub static XK_rightt: libc::c_uint = 0x9f5; +pub static XK_bott: libc::c_uint = 0x9f6; +pub static XK_topt: libc::c_uint = 0x9f7; +pub static XK_vertbar: libc::c_uint = 0x9f8; +pub static XK_emspace: libc::c_uint = 0xaa1; +pub static XK_enspace: libc::c_uint = 0xaa2; +pub static XK_em3space: libc::c_uint = 0xaa3; +pub static XK_em4space: libc::c_uint = 0xaa4; +pub static XK_digitspace: libc::c_uint = 0xaa5; +pub static XK_punctspace: libc::c_uint = 0xaa6; +pub static XK_thinspace: libc::c_uint = 0xaa7; +pub static XK_hairspace: libc::c_uint = 0xaa8; +pub static XK_emdash: libc::c_uint = 0xaa9; +pub static XK_endash: libc::c_uint = 0xaaa; +pub static XK_signifblank: libc::c_uint = 0xaac; +pub static XK_ellipsis: libc::c_uint = 0xaae; +pub static XK_doubbaselinedot: libc::c_uint = 0xaaf; +pub static XK_onethird: libc::c_uint = 0xab0; +pub static XK_twothirds: libc::c_uint = 0xab1; +pub static XK_onefifth: libc::c_uint = 0xab2; +pub static XK_twofifths: libc::c_uint = 0xab3; +pub static XK_threefifths: libc::c_uint = 0xab4; +pub static XK_fourfifths: libc::c_uint = 0xab5; +pub static XK_onesixth: libc::c_uint = 0xab6; +pub static XK_fivesixths: libc::c_uint = 0xab7; +pub static XK_careof: libc::c_uint = 0xab8; +pub static XK_figdash: libc::c_uint = 0xabb; +pub static XK_leftanglebracket: libc::c_uint = 0xabc; +pub static XK_decimalpoint: libc::c_uint = 0xabd; +pub static XK_rightanglebracket: libc::c_uint = 0xabe; +pub static XK_marker: libc::c_uint = 0xabf; +pub static XK_oneeighth: libc::c_uint = 0xac3; +pub static XK_threeeighths: libc::c_uint = 0xac4; +pub static XK_fiveeighths: libc::c_uint = 0xac5; +pub static XK_seveneighths: libc::c_uint = 0xac6; +pub static XK_trademark: libc::c_uint = 0xac9; +pub static XK_signaturemark: libc::c_uint = 0xaca; +pub static XK_trademarkincircle: libc::c_uint = 0xacb; +pub static XK_leftopentriangle: libc::c_uint = 0xacc; +pub static XK_rightopentriangle: libc::c_uint = 0xacd; +pub static XK_emopencircle: libc::c_uint = 0xace; +pub static XK_emopenrectangle: libc::c_uint = 0xacf; +pub static XK_leftsinglequotemark: libc::c_uint = 0xad0; +pub static XK_rightsinglequotemark: libc::c_uint = 0xad1; +pub static XK_leftdoublequotemark: libc::c_uint = 0xad2; +pub static XK_rightdoublequotemark: libc::c_uint = 0xad3; +pub static XK_prescription: libc::c_uint = 0xad4; +pub static XK_minutes: libc::c_uint = 0xad6; +pub static XK_seconds: libc::c_uint = 0xad7; +pub static XK_latincross: libc::c_uint = 0xad9; +pub static XK_hexagram: libc::c_uint = 0xada; +pub static XK_filledrectbullet: libc::c_uint = 0xadb; +pub static XK_filledlefttribullet: libc::c_uint = 0xadc; +pub static XK_filledrighttribullet: libc::c_uint = 0xadd; +pub static XK_emfilledcircle: libc::c_uint = 0xade; +pub static XK_emfilledrect: libc::c_uint = 0xadf; +pub static XK_enopencircbullet: libc::c_uint = 0xae0; +pub static XK_enopensquarebullet: libc::c_uint = 0xae1; +pub static XK_openrectbullet: libc::c_uint = 0xae2; +pub static XK_opentribulletup: libc::c_uint = 0xae3; +pub static XK_opentribulletdown: libc::c_uint = 0xae4; +pub static XK_openstar: libc::c_uint = 0xae5; +pub static XK_enfilledcircbullet: libc::c_uint = 0xae6; +pub static XK_enfilledsqbullet: libc::c_uint = 0xae7; +pub static XK_filledtribulletup: libc::c_uint = 0xae8; +pub static XK_filledtribulletdown: libc::c_uint = 0xae9; +pub static XK_leftpointer: libc::c_uint = 0xaea; +pub static XK_rightpointer: libc::c_uint = 0xaeb; +pub static XK_club: libc::c_uint = 0xaec; +pub static XK_diamond: libc::c_uint = 0xaed; +pub static XK_heart: libc::c_uint = 0xaee; +pub static XK_maltesecross: libc::c_uint = 0xaf0; +pub static XK_dagger: libc::c_uint = 0xaf1; +pub static XK_doubledagger: libc::c_uint = 0xaf2; +pub static XK_checkmark: libc::c_uint = 0xaf3; +pub static XK_ballotcross: libc::c_uint = 0xaf4; +pub static XK_musicalsharp: libc::c_uint = 0xaf5; +pub static XK_musicalflat: libc::c_uint = 0xaf6; +pub static XK_malesymbol: libc::c_uint = 0xaf7; +pub static XK_femalesymbol: libc::c_uint = 0xaf8; +pub static XK_telephone: libc::c_uint = 0xaf9; +pub static XK_telephonerecorder: libc::c_uint = 0xafa; +pub static XK_phonographcopyright: libc::c_uint = 0xafb; +pub static XK_caret: libc::c_uint = 0xafc; +pub static XK_singlelowquotemark: libc::c_uint = 0xafd; +pub static XK_doublelowquotemark: libc::c_uint = 0xafe; +pub static XK_cursor: libc::c_uint = 0xaff; +pub static XK_leftcaret: libc::c_uint = 0xba3; +pub static XK_rightcaret: libc::c_uint = 0xba6; +pub static XK_downcaret: libc::c_uint = 0xba8; +pub static XK_upcaret: libc::c_uint = 0xba9; +pub static XK_overbar: libc::c_uint = 0xbc0; +pub static XK_downtack: libc::c_uint = 0xbc2; +pub static XK_upshoe: libc::c_uint = 0xbc3; +pub static XK_downstile: libc::c_uint = 0xbc4; +pub static XK_underbar: libc::c_uint = 0xbc6; +pub static XK_jot: libc::c_uint = 0xbca; +pub static XK_quad: libc::c_uint = 0xbcc; +pub static XK_uptack: libc::c_uint = 0xbce; +pub static XK_circle: libc::c_uint = 0xbcf; +pub static XK_upstile: libc::c_uint = 0xbd3; +pub static XK_downshoe: libc::c_uint = 0xbd6; +pub static XK_rightshoe: libc::c_uint = 0xbd8; +pub static XK_leftshoe: libc::c_uint = 0xbda; +pub static XK_lefttack: libc::c_uint = 0xbdc; +pub static XK_righttack: libc::c_uint = 0xbfc; +pub static XK_hebrew_doublelowline: libc::c_uint = 0xcdf; +pub static XK_hebrew_aleph: libc::c_uint = 0xce0; +pub static XK_hebrew_bet: libc::c_uint = 0xce1; +pub static XK_hebrew_beth: libc::c_uint = 0xce1; +pub static XK_hebrew_gimel: libc::c_uint = 0xce2; +pub static XK_hebrew_gimmel: libc::c_uint = 0xce2; +pub static XK_hebrew_dalet: libc::c_uint = 0xce3; +pub static XK_hebrew_daleth: libc::c_uint = 0xce3; +pub static XK_hebrew_he: libc::c_uint = 0xce4; +pub static XK_hebrew_waw: libc::c_uint = 0xce5; +pub static XK_hebrew_zain: libc::c_uint = 0xce6; +pub static XK_hebrew_zayin: libc::c_uint = 0xce6; +pub static XK_hebrew_chet: libc::c_uint = 0xce7; +pub static XK_hebrew_het: libc::c_uint = 0xce7; +pub static XK_hebrew_tet: libc::c_uint = 0xce8; +pub static XK_hebrew_teth: libc::c_uint = 0xce8; +pub static XK_hebrew_yod: libc::c_uint = 0xce9; +pub static XK_hebrew_finalkaph: libc::c_uint = 0xcea; +pub static XK_hebrew_kaph: libc::c_uint = 0xceb; +pub static XK_hebrew_lamed: libc::c_uint = 0xcec; +pub static XK_hebrew_finalmem: libc::c_uint = 0xced; +pub static XK_hebrew_mem: libc::c_uint = 0xcee; +pub static XK_hebrew_finalnun: libc::c_uint = 0xcef; +pub static XK_hebrew_nun: libc::c_uint = 0xcf0; +pub static XK_hebrew_samech: libc::c_uint = 0xcf1; +pub static XK_hebrew_samekh: libc::c_uint = 0xcf1; +pub static XK_hebrew_ayin: libc::c_uint = 0xcf2; +pub static XK_hebrew_finalpe: libc::c_uint = 0xcf3; +pub static XK_hebrew_pe: libc::c_uint = 0xcf4; +pub static XK_hebrew_finalzade: libc::c_uint = 0xcf5; +pub static XK_hebrew_finalzadi: libc::c_uint = 0xcf5; +pub static XK_hebrew_zade: libc::c_uint = 0xcf6; +pub static XK_hebrew_zadi: libc::c_uint = 0xcf6; +pub static XK_hebrew_qoph: libc::c_uint = 0xcf7; +pub static XK_hebrew_kuf: libc::c_uint = 0xcf7; +pub static XK_hebrew_resh: libc::c_uint = 0xcf8; +pub static XK_hebrew_shin: libc::c_uint = 0xcf9; +pub static XK_hebrew_taw: libc::c_uint = 0xcfa; +pub static XK_hebrew_taf: libc::c_uint = 0xcfa; +pub static XK_Hebrew_switch: libc::c_uint = 0xFF7E; + + #[repr(C)] pub struct XVisualInfo { pub visual: *mut Visual, @@ -272,6 +1269,44 @@ pub struct XMotionEvent { pub same_screen: Bool, } +#[repr(C)] +pub struct XKeyEvent { + pub type_: libc::c_int, + pub serial: libc::c_ulong, + pub send_event: Bool, + pub display: *mut Display, + pub window: Window, + pub root: Window, + pub subwindow: Window, + pub time: Time, + pub x: libc::c_int, + pub y: libc::c_int, + pub x_root: libc::c_int, + pub y_root: libc::c_int, + pub state: libc::c_uint, + pub keycode: libc::c_uint, + pub same_screen: Bool, +} + +#[repr(C)] +pub struct XButtonEvent { + pub type_: libc::c_int, + pub serial: libc::c_ulong, + pub send_event: Bool, + pub display: *mut Display, + pub window: Window, + pub root: Window, + pub subwindow: Window, + pub time: Time, + pub x: libc::c_int, + pub y: libc::c_int, + pub x_root: libc::c_int, + pub y_root: libc::c_int, + pub state: libc::c_uint, + pub button: libc::c_uint, + pub same_screen: Bool, +} + #[link(name = "GL")] #[link(name = "X11")] extern "C" { @@ -289,6 +1324,8 @@ extern "C" { pub fn XFlush(display: *mut Display); pub fn XInternAtom(display: *mut Display, atom_name: *const libc::c_char, only_if_exists: Bool) -> Atom; + pub fn XKeycodeToKeysym(display: *mut Display, keycode: KeyCode, + index: libc::c_int) -> KeySym; pub fn XMapWindow(display: *mut Display, w: Window); pub fn XNextEvent(display: *mut Display, event_return: *mut XEvent); pub fn XOpenDisplay(display_name: *const libc::c_char) -> *mut Display; diff --git a/src/x11/mod.rs b/src/x11/mod.rs index 9f773f4..a917fc1 100644 --- a/src/x11/mod.rs +++ b/src/x11/mod.rs @@ -3,6 +3,7 @@ use libc; use std::{mem, ptr}; use std::sync::atomics::AtomicBool; +mod events; mod ffi; pub struct Window { @@ -61,7 +62,9 @@ impl Window { let mut swa: ffi::XSetWindowAttributes = unsafe { mem::zeroed() }; swa.colormap = cmap; swa.event_mask = ffi::ExposureMask | ffi::ResizeRedirectMask | - ffi::VisibilityChangeMask | ffi::KeyPressMask | ffi::PointerMotionMask; + ffi::VisibilityChangeMask | ffi::KeyPressMask | ffi::PointerMotionMask | + ffi::KeyPressMask | ffi::KeyReleaseMask | ffi::ButtonPressMask | + ffi::ButtonReleaseMask; swa }; @@ -174,6 +177,30 @@ impl Window { events.push(CursorPositionChanged(event.x as uint, event.y as uint)); }, + ffi::KeyPress | ffi::KeyRelease => { + use {Pressed, Released}; + let event: &ffi::XKeyEvent = unsafe { mem::transmute(&xev) }; + + let keysym = unsafe { ffi::XKeycodeToKeysym(self.display, event.keycode as ffi::KeyCode, 0) }; + + match events::keycode_to_element(keysym as libc::c_uint) { + Some(elem) if xev.type_ == ffi::KeyPress => { + events.push(Pressed(elem)); + }, + Some(elem) if xev.type_ == ffi::KeyRelease => { + events.push(Released(elem)); + }, + _ => () + } + // + }, + + ffi::ButtonPress | ffi::ButtonRelease => { + use {Pressed, Released}; + let event: &ffi::XButtonEvent = unsafe { mem::transmute(&xev) }; + //events.push(CursorPositionChanged(event.x as uint, event.y as uint)); + }, + _ => () } -- cgit v1.2.3