pub fn vk_to_usage(value: Vk) -> Option<Usage> {
let result = match value {
Vk::MouseLeft => Button::Button(1) .usage(),
Vk::MouseRight => Button::Button(2) .usage(),
Vk::MouseMiddle => Button::Button(3) .usage(),
Vk::MouseX1 => Button::Button(4) .usage(),
Vk::MouseX2 => Button::Button(5) .usage(),
Vk::BrowserBack => Consumer::ACBack .usage(),
Vk::BrowserFavorites => Consumer::ACBookmarks .usage(),
Vk::BrowserForward => Consumer::ACForward .usage(),
Vk::BrowserHome => Consumer::ACHome .usage(),
Vk::BrowserRefresh => Consumer::ACRefresh .usage(),
Vk::BrowserSearch => Consumer::ACSearch .usage(),
Vk::BrowserStop => Consumer::ACStop .usage(),
Vk::StartMail => Consumer::ALEmailReader .usage(),
Vk::SelectMedia => Consumer::MediaSelection .usage(),
Vk::VolumeMute => Consumer::Mute .usage(),
Vk::MediaPlayPause => Consumer::PlayPause .usage(),
Vk::NextTrack => Consumer::ScanNextTrack .usage(),
Vk::PrevTrack => Consumer::ScanPreviousTrack .usage(),
Vk::MediaStop => Consumer::Stop .usage(),
Vk::VolumeDown => Consumer::VolumeDecrement .usage(),
Vk::VolumeUp => Consumer::VolumeIncrement .usage(),
Vk::Sleep => GenericDesktop::SystemSleep .usage(),
Vk::_0 => KeyboardKeypad::Keyboard0andRightBracket .usage(),
Vk::_1 => KeyboardKeypad::Keyboard1andBang .usage(),
Vk::_2 => KeyboardKeypad::Keyboard2andAt .usage(),
Vk::_3 => KeyboardKeypad::Keyboard3andHash .usage(),
Vk::_4 => KeyboardKeypad::Keyboard4andDollar .usage(),
Vk::_5 => KeyboardKeypad::Keyboard5andPercent .usage(),
Vk::_6 => KeyboardKeypad::Keyboard6andCaret .usage(),
Vk::_7 => KeyboardKeypad::Keyboard7andAmpersand .usage(),
Vk::_8 => KeyboardKeypad::Keyboard8andStar .usage(),
Vk::_9 => KeyboardKeypad::Keyboard9andLeftBracket .usage(),
Vk::A => KeyboardKeypad::KeyboardA .usage(),
Vk::Apps => KeyboardKeypad::KeyboardApplication .usage(),
Vk::B => KeyboardKeypad::KeyboardB .usage(),
Vk::Oem5 => KeyboardKeypad::KeyboardBackslashandPipe .usage(),
Vk::C => KeyboardKeypad::KeyboardC .usage(),
Vk::Cancel => KeyboardKeypad::KeyboardCancel .usage(),
Vk::CapsLock => KeyboardKeypad::KeyboardCapsLock .usage(),
Vk::Clear => KeyboardKeypad::KeyboardClear .usage(),
Vk::Comma => KeyboardKeypad::KeyboardCommaandLessThan .usage(),
Vk::D => KeyboardKeypad::KeyboardD .usage(),
Vk::Minus => KeyboardKeypad::KeyboardDashandUnderscore .usage(),
Vk::Backspace => KeyboardKeypad::KeyboardDelete .usage(),
Vk::Delete => KeyboardKeypad::KeyboardDeleteForward .usage(),
Vk::DownArrow => KeyboardKeypad::KeyboardDownArrow .usage(),
Vk::E => KeyboardKeypad::KeyboardE .usage(),
Vk::End => KeyboardKeypad::KeyboardEnd .usage(),
Vk::Plus => KeyboardKeypad::KeyboardEqualsandPlus .usage(),
Vk::Escape => KeyboardKeypad::KeyboardEscape .usage(),
Vk::Execute => KeyboardKeypad::KeyboardExecute .usage(),
Vk::F => KeyboardKeypad::KeyboardF .usage(),
Vk::F1 => KeyboardKeypad::KeyboardF1 .usage(),
Vk::F10 => KeyboardKeypad::KeyboardF10 .usage(),
Vk::F11 => KeyboardKeypad::KeyboardF11 .usage(),
Vk::F12 => KeyboardKeypad::KeyboardF12 .usage(),
Vk::F13 => KeyboardKeypad::KeyboardF13 .usage(),
Vk::F14 => KeyboardKeypad::KeyboardF14 .usage(),
Vk::F15 => KeyboardKeypad::KeyboardF15 .usage(),
Vk::F16 => KeyboardKeypad::KeyboardF16 .usage(),
Vk::F17 => KeyboardKeypad::KeyboardF17 .usage(),
Vk::F18 => KeyboardKeypad::KeyboardF18 .usage(),
Vk::F19 => KeyboardKeypad::KeyboardF19 .usage(),
Vk::F2 => KeyboardKeypad::KeyboardF2 .usage(),
Vk::F20 => KeyboardKeypad::KeyboardF20 .usage(),
Vk::F21 => KeyboardKeypad::KeyboardF21 .usage(),
Vk::F22 => KeyboardKeypad::KeyboardF22 .usage(),
Vk::F23 => KeyboardKeypad::KeyboardF23 .usage(),
Vk::F24 => KeyboardKeypad::KeyboardF24 .usage(),
Vk::F3 => KeyboardKeypad::KeyboardF3 .usage(),
Vk::F4 => KeyboardKeypad::KeyboardF4 .usage(),
Vk::F5 => KeyboardKeypad::KeyboardF5 .usage(),
Vk::F6 => KeyboardKeypad::KeyboardF6 .usage(),
Vk::F7 => KeyboardKeypad::KeyboardF7 .usage(),
Vk::F8 => KeyboardKeypad::KeyboardF8 .usage(),
Vk::F9 => KeyboardKeypad::KeyboardF9 .usage(),
Vk::Oem2 => KeyboardKeypad::KeyboardForwardSlashandQuestionMark.usage(),
Vk::G => KeyboardKeypad::KeyboardG .usage(),
Vk::Oem3 => KeyboardKeypad::KeyboardGraveAccentandTilde .usage(),
Vk::H => KeyboardKeypad::KeyboardH .usage(),
Vk::Help => KeyboardKeypad::KeyboardHelp .usage(),
Vk::Home => KeyboardKeypad::KeyboardHome .usage(),
Vk::I => KeyboardKeypad::KeyboardI .usage(),
Vk::Insert => KeyboardKeypad::KeyboardInsert .usage(),
Vk::J => KeyboardKeypad::KeyboardJ .usage(),
Vk::K => KeyboardKeypad::KeyboardK .usage(),
Vk::L => KeyboardKeypad::KeyboardL .usage(),
Vk::LeftMenu => KeyboardKeypad::KeyboardLeftAlt .usage(),
Vk::Alt => KeyboardKeypad::KeyboardLeftAlt .usage(),
Vk::Oem7 => KeyboardKeypad::KeyboardLeftAposandDouble .usage(),
Vk::LeftArrow => KeyboardKeypad::KeyboardLeftArrow .usage(),
Vk::Oem4 => KeyboardKeypad::KeyboardLeftBrace .usage(),
Vk::Control => KeyboardKeypad::KeyboardLeftControl .usage(),
Vk::LeftControl => KeyboardKeypad::KeyboardLeftControl .usage(),
Vk::LeftWin => KeyboardKeypad::KeyboardLeftGUI .usage(),
Vk::LeftShift => KeyboardKeypad::KeyboardLeftShift .usage(),
Vk::Shift => KeyboardKeypad::KeyboardLeftShift .usage(),
Vk::M => KeyboardKeypad::KeyboardM .usage(),
Vk::N => KeyboardKeypad::KeyboardN .usage(),
Vk::Oem102 => KeyboardKeypad::KeyboardNonUSBackslashandPipe .usage(),
Vk::O => KeyboardKeypad::KeyboardO .usage(),
Vk::P => KeyboardKeypad::KeyboardP .usage(),
Vk::PageDown => KeyboardKeypad::KeyboardPageDown .usage(),
Vk::PageUp => KeyboardKeypad::KeyboardPageUp .usage(),
Vk::Pause => KeyboardKeypad::KeyboardPause .usage(),
Vk::Period => KeyboardKeypad::KeyboardPeriodandGreaterThan .usage(),
Vk::PrintScreen => KeyboardKeypad::KeyboardPrintScreen .usage(),
Vk::Q => KeyboardKeypad::KeyboardQ .usage(),
Vk::R => KeyboardKeypad::KeyboardR .usage(),
Vk::Enter => KeyboardKeypad::KeyboardReturnEnter .usage(),
Vk::RightMenu => KeyboardKeypad::KeyboardRightAlt .usage(),
Vk::RightArrow => KeyboardKeypad::KeyboardRightArrow .usage(),
Vk::Oem6 => KeyboardKeypad::KeyboardRightBrace .usage(),
Vk::RightControl => KeyboardKeypad::KeyboardRightControl .usage(),
Vk::RightWin => KeyboardKeypad::KeyboardRightGUI .usage(),
Vk::RightShift => KeyboardKeypad::KeyboardRightShift .usage(),
Vk::S => KeyboardKeypad::KeyboardS .usage(),
Vk::Scroll => KeyboardKeypad::KeyboardScrollLock .usage(),
Vk::Select => KeyboardKeypad::KeyboardSelect .usage(),
Vk::Oem1 => KeyboardKeypad::KeyboardSemiColonandColon .usage(),
Vk::Space => KeyboardKeypad::KeyboardSpacebar .usage(),
Vk::T => KeyboardKeypad::KeyboardT .usage(),
Vk::Tab => KeyboardKeypad::KeyboardTab .usage(),
Vk::U => KeyboardKeypad::KeyboardU .usage(),
Vk::UpArrow => KeyboardKeypad::KeyboardUpArrow .usage(),
Vk::V => KeyboardKeypad::KeyboardV .usage(),
Vk::W => KeyboardKeypad::KeyboardW .usage(),
Vk::X => KeyboardKeypad::KeyboardX .usage(),
Vk::Y => KeyboardKeypad::KeyboardY .usage(),
Vk::Z => KeyboardKeypad::KeyboardZ .usage(),
Vk::Numpad0 => KeyboardKeypad::Keypad0andInsert .usage(),
Vk::Numpad1 => KeyboardKeypad::Keypad1andEnd .usage(),
Vk::Numpad2 => KeyboardKeypad::Keypad2andDownArrow .usage(),
Vk::Numpad3 => KeyboardKeypad::Keypad3andPageDn .usage(),
Vk::Numpad4 => KeyboardKeypad::Keypad4andLeftArrow .usage(),
Vk::Numpad5 => KeyboardKeypad::Keypad5 .usage(),
Vk::Numpad6 => KeyboardKeypad::Keypad6andRightArrow .usage(),
Vk::Numpad7 => KeyboardKeypad::Keypad7andHome .usage(),
Vk::Numpad8 => KeyboardKeypad::Keypad8andUpArrow .usage(),
Vk::Numpad9 => KeyboardKeypad::Keypad9andPageUp .usage(),
Vk::Subtract => KeyboardKeypad::KeypadDash .usage(),
Vk::Divide => KeyboardKeypad::KeypadForwardSlash .usage(),
Vk::Numlock => KeyboardKeypad::KeypadNumLockandClear .usage(),
Vk::Decimal => KeyboardKeypad::KeypadPeriodandDelete .usage(),
Vk::Add => KeyboardKeypad::KeypadPlus .usage(),
Vk::Multiply => KeyboardKeypad::KeypadStar .usage(),
_ => return None,
};
Some(result)
}
impl crate::convert::Convert<Vk, Usage> for crate::convert::Converter {
fn convert(value: Vk) -> Option<Usage> {
vk_to_usage(value)
}
}