use std::str::FromStr;
#[derive(Debug, Eq, PartialEq, Hash, Copy, Clone)]
pub enum KeyCode {
Again,
AltLeft,
AltRight,
ArrowDown,
ArrowLeft,
ArrowRight,
ArrowUp,
AudioVolumeDown,
AudioVolumeMute,
AudioVolumeUp,
Backquote,
Backslash,
Backspace,
BracketLeft,
BracketRight,
BrowserBack,
BrowserFavorites,
BrowserForward,
BrowserHome,
BrowserRefresh,
BrowserSearch,
BrowserStop,
Cancel,
CapsLock,
Comma,
ContextMenu,
ControlLeft,
ControlRight,
Convert,
Copy,
Cut,
Delete,
Digit0,
Digit1,
Digit2,
Digit3,
Digit4,
Digit5,
Digit6,
Digit7,
Digit8,
Digit9,
Eject,
End,
Enter,
Equal,
Escape,
F1,
F10,
F11,
F12,
F13,
F14,
F15,
F16,
F17,
F18,
F19,
F2,
F20,
F21,
F22,
F23,
F24,
F3,
F4,
F5,
F6,
F7,
F8,
F9,
Find,
Fn,
HangulMode,
Hanja,
Help,
Home,
Insert,
IntlBackslash,
IntlRo,
IntlYen,
KanaMode,
KeyA,
KeyB,
KeyC,
KeyD,
KeyE,
KeyF,
KeyG,
KeyH,
KeyI,
KeyJ,
KeyK,
KeyL,
KeyM,
KeyN,
KeyO,
KeyP,
KeyQ,
KeyR,
KeyS,
KeyT,
KeyU,
KeyV,
KeyW,
KeyX,
KeyY,
KeyZ,
Lang1,
Lang2,
LaunchApp1,
LaunchApp2,
LaunchMail,
LaunchMediaPlayer,
MediaPlayPause,
MediaSelect,
MediaStop,
MediaTrackNext,
MediaTrackPrevious,
MetaLeft,
MetaRight,
Minus,
NonConvert,
NumLock,
Numpad0,
Numpad1,
Numpad2,
Numpad3,
Numpad4,
Numpad5,
Numpad6,
Numpad7,
Numpad8,
Numpad9,
NumpadAdd,
NumpadChangeSign,
NumpadComma,
NumpadDecimal,
NumpadDivide,
NumpadEnter,
NumpadEqual,
NumpadMultiply,
NumpadParenLeft,
NumpadParenRight,
NumpadSubtract,
Open,
OSLeft,
OSRight,
PageDown,
PageUp,
Paste,
Pause,
Period,
Power,
PrintScreen,
Props,
Quote,
RomanCharacters,
ScrollLock,
Select,
Semicolon,
ShiftLeft,
ShiftRight,
Slash,
Sleep,
Space,
Tab,
Undo,
VolumeDown,
VolumeMute,
VolumeUp,
WakeUp,
}
impl FromStr for KeyCode {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
use self::KeyCode::*;
Ok(match s {
"Again" => Again,
"AltLeft" => AltLeft,
"AltRight" => AltRight,
"ArrowDown" => ArrowDown,
"ArrowLeft" => ArrowLeft,
"ArrowRight" => ArrowRight,
"ArrowUp" => ArrowUp,
"AudioVolumeDown" => AudioVolumeDown,
"AudioVolumeMute" => AudioVolumeMute,
"AudioVolumeUp" => AudioVolumeUp,
"Backquote" => Backquote,
"Backslash" => Backslash,
"Backspace" => Backspace,
"BracketLeft" => BracketLeft,
"BracketRight" => BracketRight,
"BrowserBack" => BrowserBack,
"BrowserFavorites" => BrowserFavorites,
"BrowserForward" => BrowserForward,
"BrowserHome" => BrowserHome,
"BrowserRefresh" => BrowserRefresh,
"BrowserSearch" => BrowserSearch,
"BrowserStop" => BrowserStop,
"Cancel" => Cancel,
"CapsLock" => CapsLock,
"Comma" => Comma,
"ContextMenu" => ContextMenu,
"ControlLeft" => ControlLeft,
"ControlRight" => ControlRight,
"Convert" => Convert,
"Copy" => Copy,
"Cut" => Cut,
"Delete" => Delete,
"Digit0" => Digit0,
"Digit1" => Digit1,
"Digit2" => Digit2,
"Digit3" => Digit3,
"Digit4" => Digit4,
"Digit5" => Digit5,
"Digit6" => Digit6,
"Digit7" => Digit7,
"Digit8" => Digit8,
"Digit9" => Digit9,
"Eject" => Eject,
"End" => End,
"Enter" => Enter,
"Equal" => Equal,
"Escape" => Escape,
"F1" => F1,
"F10" => F10,
"F11" => F11,
"F12" => F12,
"F13" => F13,
"F14" => F14,
"F15" => F15,
"F16" => F16,
"F17" => F17,
"F18" => F18,
"F19" => F19,
"F2" => F2,
"F20" => F20,
"F21" => F21,
"F22" => F22,
"F23" => F23,
"F24" => F24,
"F3" => F3,
"F4" => F4,
"F5" => F5,
"F6" => F6,
"F7" => F7,
"F8" => F8,
"F9" => F9,
"Find" => Find,
"Fn" => Fn,
"HangulMode" => HangulMode,
"Hanja" => Hanja,
"Help" => Help,
"Home" => Home,
"Insert" => Insert,
"IntlBackslash" => IntlBackslash,
"IntlRo" => IntlRo,
"IntlYen" => IntlYen,
"KanaMode" => KanaMode,
"KeyA" => KeyA,
"KeyB" => KeyB,
"KeyC" => KeyC,
"KeyD" => KeyD,
"KeyE" => KeyE,
"KeyF" => KeyF,
"KeyG" => KeyG,
"KeyH" => KeyH,
"KeyI" => KeyI,
"KeyJ" => KeyJ,
"KeyK" => KeyK,
"KeyL" => KeyL,
"KeyM" => KeyM,
"KeyN" => KeyN,
"KeyO" => KeyO,
"KeyP" => KeyP,
"KeyQ" => KeyQ,
"KeyR" => KeyR,
"KeyS" => KeyS,
"KeyT" => KeyT,
"KeyU" => KeyU,
"KeyV" => KeyV,
"KeyW" => KeyW,
"KeyX" => KeyX,
"KeyY" => KeyY,
"KeyZ" => KeyZ,
"Lang1" => Lang1,
"Lang2" => Lang2,
"LaunchApp1" => LaunchApp1,
"LaunchApp2" => LaunchApp2,
"LaunchMail" => LaunchMail,
"LaunchMediaPlayer" => LaunchMediaPlayer,
"MediaPlayPause" => MediaPlayPause,
"MediaSelect" => MediaSelect,
"MediaStop" => MediaStop,
"MediaTrackNext" => MediaTrackNext,
"MediaTrackPrevious" => MediaTrackPrevious,
"MetaLeft" => MetaLeft,
"MetaRight" => MetaRight,
"Minus" => Minus,
"NonConvert" => NonConvert,
"NumLock" => NumLock,
"Numpad0" => Numpad0,
"Numpad1" => Numpad1,
"Numpad2" => Numpad2,
"Numpad3" => Numpad3,
"Numpad4" => Numpad4,
"Numpad5" => Numpad5,
"Numpad6" => Numpad6,
"Numpad7" => Numpad7,
"Numpad8" => Numpad8,
"Numpad9" => Numpad9,
"NumpadAdd" => NumpadAdd,
"NumpadChangeSign" => NumpadChangeSign,
"NumpadComma" => NumpadComma,
"NumpadDecimal" => NumpadDecimal,
"NumpadDivide" => NumpadDivide,
"NumpadEnter" => NumpadEnter,
"NumpadEqual" => NumpadEqual,
"NumpadMultiply" => NumpadMultiply,
"NumpadParenLeft" => NumpadParenLeft,
"NumpadParenRight" => NumpadParenRight,
"NumpadSubtract" => NumpadSubtract,
"Open" => Open,
"OSLeft" => OSLeft,
"OSRight" => OSRight,
"PageDown" => PageDown,
"PageUp" => PageUp,
"Paste" => Paste,
"Pause" => Pause,
"Period" => Period,
"Power" => Power,
"PrintScreen" => PrintScreen,
"Props" => Props,
"Quote" => Quote,
"RomanCharacters" => RomanCharacters,
"ScrollLock" => ScrollLock,
"Select" => Select,
"Semicolon" => Semicolon,
"ShiftLeft" => ShiftLeft,
"ShiftRight" => ShiftRight,
"Slash" => Slash,
"Sleep" => Sleep,
"Space" => Space,
"Tab" => Tab,
"Undo" => Undo,
"VolumeDown" => VolumeDown,
"VolumeMute" => VolumeMute,
"VolumeUp" => VolumeUp,
"WakeUp" => WakeUp,
_ => return Err(()),
})
}
}