Created
November 11, 2015 15:33
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub mod KeyboardEventConstants { | |
pub const DOM_KEY_LOCATION_STANDARD: u32 = 0; | |
pub const DOM_KEY_LOCATION_LEFT: u32 = 1; | |
pub const DOM_KEY_LOCATION_RIGHT: u32 = 2; | |
pub const DOM_KEY_LOCATION_NUMPAD: u32 = 3; | |
} // mod KeyboardEventConstants | |
pub enum Key { | |
Space, | |
Apostrophe, | |
Comma, | |
Minus, | |
Period, | |
Slash, | |
Num0, | |
Num1, | |
Num2, | |
Num3, | |
Num4, | |
Num5, | |
Num6, | |
Num7, | |
Num8, | |
Num9, | |
Semicolon, | |
Equal, | |
A, | |
B, | |
C, | |
D, | |
E, | |
F, | |
G, | |
H, | |
I, | |
J, | |
K, | |
L, | |
M, | |
N, | |
O, | |
P, | |
Q, | |
R, | |
S, | |
T, | |
U, | |
V, | |
W, | |
X, | |
Y, | |
Z, | |
LeftBracket, | |
Backslash, | |
RightBracket, | |
GraveAccent, | |
World1, | |
World2, | |
Escape, | |
Enter, | |
Tab, | |
Backspace, | |
Insert, | |
Delete, | |
Right, | |
Left, | |
Down, | |
Up, | |
PageUp, | |
PageDown, | |
Home, | |
End, | |
CapsLock, | |
ScrollLock, | |
NumLock, | |
PrintScreen, | |
Pause, | |
F1, | |
F2, | |
F3, | |
F4, | |
F5, | |
F6, | |
F7, | |
F8, | |
F9, | |
F10, | |
F11, | |
F12, | |
F13, | |
F14, | |
F15, | |
F16, | |
F17, | |
F18, | |
F19, | |
F20, | |
F21, | |
F22, | |
F23, | |
F24, | |
F25, | |
Kp0, | |
Kp1, | |
Kp2, | |
Kp3, | |
Kp4, | |
Kp5, | |
Kp6, | |
Kp7, | |
Kp8, | |
Kp9, | |
KpDecimal, | |
KpDivide, | |
KpMultiply, | |
KpSubtract, | |
KpAdd, | |
KpEnter, | |
KpEqual, | |
LeftShift, | |
LeftControl, | |
LeftAlt, | |
LeftSuper, | |
RightShift, | |
RightControl, | |
RightAlt, | |
RightSuper, | |
Menu, | |
} | |
fn key_from_string(key_string: &str, location: u32) -> Option<Key> { | |
match key_string { | |
" " => Some(Key::Space), | |
"\"" => Some(Key::Apostrophe), | |
"'" => Some(Key::Apostrophe), | |
"<" => Some(Key::Comma), | |
"," => Some(Key::Comma), | |
"_" => Some(Key::Minus), | |
"-" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Minus), | |
">" => Some(Key::Period), | |
"." if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Period), | |
"?" => Some(Key::Slash), | |
"/" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Slash), | |
"~" => Some(Key::GraveAccent), | |
"`" => Some(Key::GraveAccent), | |
")" => Some(Key::Num0), | |
"0" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num0), | |
"!" => Some(Key::Num1), | |
"1" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num1), | |
"@" => Some(Key::Num2), | |
"2" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num2), | |
"#" => Some(Key::Num3), | |
"3" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num3), | |
"$" => Some(Key::Num4), | |
"4" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num4), | |
"%" => Some(Key::Num5), | |
"5" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num5), | |
"^" => Some(Key::Num6), | |
"6" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num6), | |
"&" => Some(Key::Num7), | |
"7" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num7), | |
"*" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num8), | |
"8" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num8), | |
"(" => Some(Key::Num9), | |
"9" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Num9), | |
":" => Some(Key::Semicolon), | |
";" => Some(Key::Semicolon), | |
"+" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Equal), | |
"=" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Equal), | |
"A" => Some(Key::A), | |
"a" => Some(Key::A), | |
"B" => Some(Key::B), | |
"b" => Some(Key::B), | |
"C" => Some(Key::C), | |
"c" => Some(Key::C), | |
"D" => Some(Key::D), | |
"d" => Some(Key::D), | |
"E" => Some(Key::E), | |
"e" => Some(Key::E), | |
"F" => Some(Key::F), | |
"f" => Some(Key::F), | |
"G" => Some(Key::G), | |
"g" => Some(Key::G), | |
"H" => Some(Key::H), | |
"h" => Some(Key::H), | |
"I" => Some(Key::I), | |
"i" => Some(Key::I), | |
"J" => Some(Key::J), | |
"j" => Some(Key::J), | |
"K" => Some(Key::K), | |
"k" => Some(Key::K), | |
"L" => Some(Key::L), | |
"l" => Some(Key::L), | |
"M" => Some(Key::M), | |
"m" => Some(Key::M), | |
"N" => Some(Key::N), | |
"n" => Some(Key::N), | |
"O" => Some(Key::O), | |
"o" => Some(Key::O), | |
"P" => Some(Key::P), | |
"p" => Some(Key::P), | |
"Q" => Some(Key::Q), | |
"q" => Some(Key::Q), | |
"R" => Some(Key::R), | |
"r" => Some(Key::R), | |
"S" => Some(Key::S), | |
"s" => Some(Key::S), | |
"T" => Some(Key::T), | |
"t" => Some(Key::T), | |
"U" => Some(Key::U), | |
"u" => Some(Key::U), | |
"V" => Some(Key::V), | |
"v" => Some(Key::V), | |
"W" => Some(Key::W), | |
"w" => Some(Key::W), | |
"X" => Some(Key::X), | |
"x" => Some(Key::X), | |
"Y" => Some(Key::Y), | |
"y" => Some(Key::Y), | |
"Z" => Some(Key::Z), | |
"z" => Some(Key::Z), | |
"{" => Some(Key::LeftBracket), | |
"[" => Some(Key::LeftBracket), | |
"|" => Some(Key::Backslash), | |
"\\" => Some(Key::Backslash), | |
"}" => Some(Key::RightBracket), | |
"]" => Some(Key::RightBracket), | |
"Escape" => Some(Key::Escape), | |
"Enter" if location == KeyboardEventConstants::DOM_KEY_LOCATION_STANDARD => Some(Key::Enter), | |
"Tab" => Some(Key::Tab), | |
"Backspace" => Some(Key::Backspace), | |
"Insert" => Some(Key::Insert), | |
"Delete" => Some(Key::Delete), | |
"ArrowRight" => Some(Key::Right), | |
"ArrowLeft" => Some(Key::Left), | |
"ArrowDown" => Some(Key::Down), | |
"ArrowUp" => Some(Key::Up), | |
"PageUp" => Some(Key::PageUp), | |
"PageDown" => Some(Key::PageDown), | |
"Home" => Some(Key::Home), | |
"End" => Some(Key::End), | |
"CapsLock" => Some(Key::CapsLock), | |
"ScrollLock" => Some(Key::ScrollLock), | |
"NumLock" => Some(Key::NumLock), | |
"PrintScreen" => Some(Key::PrintScreen), | |
"Pause" => Some(Key::Pause), | |
"F1" => Some(Key::F1), | |
"F2" => Some(Key::F2), | |
"F3" => Some(Key::F3), | |
"F4" => Some(Key::F4), | |
"F5" => Some(Key::F5), | |
"F6" => Some(Key::F6), | |
"F7" => Some(Key::F7), | |
"F8" => Some(Key::F8), | |
"F9" => Some(Key::F9), | |
"F10" => Some(Key::F10), | |
"F11" => Some(Key::F11), | |
"F12" => Some(Key::F12), | |
"F13" => Some(Key::F13), | |
"F14" => Some(Key::F14), | |
"F15" => Some(Key::F15), | |
"F16" => Some(Key::F16), | |
"F17" => Some(Key::F17), | |
"F18" => Some(Key::F18), | |
"F19" => Some(Key::F19), | |
"F20" => Some(Key::F20), | |
"F21" => Some(Key::F21), | |
"F22" => Some(Key::F22), | |
"F23" => Some(Key::F23), | |
"F24" => Some(Key::F24), | |
"F25" => Some(Key::F25), | |
"0" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp0), | |
"1" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp1), | |
"2" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp2), | |
"3" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp3), | |
"4" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp4), | |
"5" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp5), | |
"6" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp6), | |
"7" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp7), | |
"8" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp8), | |
"9" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::Kp9), | |
"." if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpDecimal), | |
"/" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpDivide), | |
"*" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpMultiply), | |
"-" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpSubtract), | |
"+" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpAdd), | |
"Enter" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpEnter), | |
"=" if location == KeyboardEventConstants::DOM_KEY_LOCATION_NUMPAD => Some(Key::KpEqual), | |
"Shift" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT => Some(Key::LeftShift), | |
"Control" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT => Some(Key::LeftControl), | |
"Alt" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT => Some(Key::LeftAlt), | |
"Super" if location == KeyboardEventConstants::DOM_KEY_LOCATION_LEFT => Some(Key::LeftSuper), | |
"Shift" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT => Some(Key::RightShift), | |
"Control" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT => Some(Key::RightControl), | |
"Alt" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT => Some(Key::RightAlt), | |
"Super" if location == KeyboardEventConstants::DOM_KEY_LOCATION_RIGHT => Some(Key::RightSuper), | |
"ContextMenu" => Some(Key::Menu), | |
_ => None | |
} | |
} | |
fn main() { } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment