pub fn vk_to_cgkeycode(value: Vk) -> Option<CGKeyCode> {
let result = match value {
Vk::VolumeMute => CGKeyCode( KeyCode::MUTE ),
Vk::VolumeDown => CGKeyCode( KeyCode::VOLUME_DOWN ),
Vk::VolumeUp => CGKeyCode( KeyCode::VOLUME_UP ),
Vk::_0 => CGKeyCode( KeyCodeExt::kVK_ANSI_0 ),
Vk::_1 => CGKeyCode( KeyCodeExt::kVK_ANSI_1 ),
Vk::_2 => CGKeyCode( KeyCodeExt::kVK_ANSI_2 ),
Vk::_3 => CGKeyCode( KeyCodeExt::kVK_ANSI_3 ),
Vk::_4 => CGKeyCode( KeyCodeExt::kVK_ANSI_4 ),
Vk::_5 => CGKeyCode( KeyCodeExt::kVK_ANSI_5 ),
Vk::_6 => CGKeyCode( KeyCodeExt::kVK_ANSI_6 ),
Vk::_7 => CGKeyCode( KeyCodeExt::kVK_ANSI_7 ),
Vk::_8 => CGKeyCode( KeyCodeExt::kVK_ANSI_8 ),
Vk::_9 => CGKeyCode( KeyCodeExt::kVK_ANSI_9 ),
Vk::A => CGKeyCode( KeyCodeExt::kVK_ANSI_A ),
Vk::B => CGKeyCode( KeyCodeExt::kVK_ANSI_B ),
Vk::C => CGKeyCode( KeyCodeExt::kVK_ANSI_C ),
Vk::CapsLock => CGKeyCode( KeyCode::CAPS_LOCK ),
Vk::D => CGKeyCode( KeyCodeExt::kVK_ANSI_D ),
Vk::Backspace => CGKeyCode( KeyCode::DELETE ),
Vk::Delete => CGKeyCode( KeyCode::FORWARD_DELETE ),
Vk::DownArrow => CGKeyCode( KeyCode::DOWN_ARROW ),
Vk::E => CGKeyCode( KeyCodeExt::kVK_ANSI_E ),
Vk::End => CGKeyCode( KeyCode::END ),
Vk::Escape => CGKeyCode( KeyCode::ESCAPE ),
Vk::F => CGKeyCode( KeyCodeExt::kVK_ANSI_F ),
Vk::F1 => CGKeyCode( KeyCode::F1 ),
Vk::F10 => CGKeyCode( KeyCode::F10 ),
Vk::F11 => CGKeyCode( KeyCode::F11 ),
Vk::F12 => CGKeyCode( KeyCode::F12 ),
Vk::F13 => CGKeyCode( KeyCode::F13 ),
Vk::F14 => CGKeyCode( KeyCode::F14 ),
Vk::F15 => CGKeyCode( KeyCode::F15 ),
Vk::F16 => CGKeyCode( KeyCode::F16 ),
Vk::F17 => CGKeyCode( KeyCode::F17 ),
Vk::F18 => CGKeyCode( KeyCode::F18 ),
Vk::F19 => CGKeyCode( KeyCode::F19 ),
Vk::F2 => CGKeyCode( KeyCode::F2 ),
Vk::F20 => CGKeyCode( KeyCode::F20 ),
Vk::F3 => CGKeyCode( KeyCode::F3 ),
Vk::F4 => CGKeyCode( KeyCode::F4 ),
Vk::F5 => CGKeyCode( KeyCode::F5 ),
Vk::F6 => CGKeyCode( KeyCode::F6 ),
Vk::F7 => CGKeyCode( KeyCode::F7 ),
Vk::F8 => CGKeyCode( KeyCode::F8 ),
Vk::F9 => CGKeyCode( KeyCode::F9 ),
Vk::G => CGKeyCode( KeyCodeExt::kVK_ANSI_G ),
Vk::H => CGKeyCode( KeyCodeExt::kVK_ANSI_H ),
Vk::Help => CGKeyCode( KeyCode::HELP ),
Vk::Home => CGKeyCode( KeyCode::HOME ),
Vk::I => CGKeyCode( KeyCodeExt::kVK_ANSI_I ),
Vk::J => CGKeyCode( KeyCodeExt::kVK_ANSI_J ),
Vk::K => CGKeyCode( KeyCodeExt::kVK_ANSI_K ),
Vk::L => CGKeyCode( KeyCodeExt::kVK_ANSI_L ),
Vk::LeftMenu => CGKeyCode( KeyCode::OPTION ),
Vk::Alt => CGKeyCode( KeyCode::OPTION ),
Vk::LeftArrow => CGKeyCode( KeyCode::LEFT_ARROW ),
Vk::Control => CGKeyCode( KeyCode::CONTROL ),
Vk::LeftControl => CGKeyCode( KeyCode::CONTROL ),
Vk::LeftWin => CGKeyCode( KeyCode::COMMAND ),
Vk::LeftShift => CGKeyCode( KeyCode::SHIFT ),
Vk::Shift => CGKeyCode( KeyCode::SHIFT ),
Vk::M => CGKeyCode( KeyCodeExt::kVK_ANSI_M ),
Vk::N => CGKeyCode( KeyCodeExt::kVK_ANSI_N ),
Vk::O => CGKeyCode( KeyCodeExt::kVK_ANSI_O ),
Vk::P => CGKeyCode( KeyCodeExt::kVK_ANSI_P ),
Vk::PageDown => CGKeyCode( KeyCode::PAGE_DOWN ),
Vk::PageUp => CGKeyCode( KeyCode::PAGE_UP ),
Vk::Q => CGKeyCode( KeyCodeExt::kVK_ANSI_Q ),
Vk::R => CGKeyCode( KeyCodeExt::kVK_ANSI_R ),
Vk::Enter => CGKeyCode( KeyCode::RETURN ),
Vk::RightMenu => CGKeyCode( KeyCode::RIGHT_OPTION ),
Vk::RightArrow => CGKeyCode( KeyCode::RIGHT_ARROW ),
Vk::RightControl => CGKeyCode( KeyCode::RIGHT_CONTROL ),
Vk::RightWin => CGKeyCode( KeyCode::RIGHT_COMMAND ),
Vk::RightShift => CGKeyCode( KeyCode::RIGHT_SHIFT ),
Vk::S => CGKeyCode( KeyCodeExt::kVK_ANSI_S ),
Vk::Space => CGKeyCode( KeyCode::SPACE ),
Vk::T => CGKeyCode( KeyCodeExt::kVK_ANSI_T ),
Vk::Tab => CGKeyCode( KeyCode::TAB ),
Vk::U => CGKeyCode( KeyCodeExt::kVK_ANSI_U ),
Vk::UpArrow => CGKeyCode( KeyCode::UP_ARROW ),
Vk::V => CGKeyCode( KeyCodeExt::kVK_ANSI_V ),
Vk::W => CGKeyCode( KeyCodeExt::kVK_ANSI_W ),
Vk::X => CGKeyCode( KeyCodeExt::kVK_ANSI_X ),
Vk::Y => CGKeyCode( KeyCodeExt::kVK_ANSI_Y ),
Vk::Z => CGKeyCode( KeyCodeExt::kVK_ANSI_Z ),
Vk::Numpad0 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad0 ),
Vk::Numpad1 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad1 ),
Vk::Numpad2 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad2 ),
Vk::Numpad3 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad3 ),
Vk::Numpad4 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad4 ),
Vk::Numpad5 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad5 ),
Vk::Numpad6 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad6 ),
Vk::Numpad7 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad7 ),
Vk::Numpad8 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad8 ),
Vk::Numpad9 => CGKeyCode( KeyCodeExt::kVK_ANSI_Keypad9 ),
Vk::Subtract => CGKeyCode( KeyCodeExt::kVK_ANSI_KeypadMinus ),
Vk::Divide => CGKeyCode( KeyCodeExt::kVK_ANSI_KeypadDivide ),
Vk::Decimal => CGKeyCode( KeyCodeExt::kVK_ANSI_KeypadDecimal ),
Vk::Add => CGKeyCode( KeyCodeExt::kVK_ANSI_KeypadPlus ),
Vk::Multiply => CGKeyCode( KeyCodeExt::kVK_ANSI_KeypadMultiply ),
_ => return None,
};
Some(result)
}
impl crate::convert::Convert<Vk, CGKeyCode> for crate::convert::Converter {
fn convert(value: Vk) -> Option<CGKeyCode> {
vk_to_cgkeycode(value)
}
}