#[derive(Copy, Clone, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum Modifiers {
LCtrl = 0x01,
LShift = 0x02,
LAlt = 0x04,
LGui = 0x08,
RCtrl = 0x10,
RShift = 0x20,
RAlt = 0x40,
RGui = 0x80,
}
const HID_A: u8 = 0x04;
const HID_B: u8 = 0x05;
const HID_C: u8 = 0x06;
const HID_D: u8 = 0x07;
const HID_E: u8 = 0x08;
const HID_F: u8 = 0x09;
const HID_G: u8 = 0x0A;
const HID_H: u8 = 0x0B;
const HID_I: u8 = 0x0C;
const HID_J: u8 = 0x0D;
const HID_K: u8 = 0x0E;
const HID_L: u8 = 0x0F;
const HID_M: u8 = 0x10;
const HID_N: u8 = 0x11;
const HID_O: u8 = 0x12;
const HID_P: u8 = 0x13;
const HID_Q: u8 = 0x14;
const HID_R: u8 = 0x15;
const HID_S: u8 = 0x16;
const HID_T: u8 = 0x17;
const HID_U: u8 = 0x18;
const HID_V: u8 = 0x19;
const HID_W: u8 = 0x1A;
const HID_X: u8 = 0x1B;
const HID_Y: u8 = 0x1C;
const HID_Z: u8 = 0x1D;
const HID_1: u8 = 0x1E;
const HID_2: u8 = 0x1F;
const HID_3: u8 = 0x20;
const HID_4: u8 = 0x21;
const HID_5: u8 = 0x22;
const HID_6: u8 = 0x23;
const HID_7: u8 = 0x24;
const HID_8: u8 = 0x25;
const HID_9: u8 = 0x26;
const HID_0: u8 = 0x27;
const HID_RETURN: u8 = 0x28;
const HID_ESCAPE: u8 = 0x29;
const HID_BACKSPACE: u8 = 0x2A;
const HID_TAB: u8 = 0x2B;
const HID_SPACEBAR: u8 = 0x2C;
const HID_UNDERSCORE: u8 = 0x2D;
const HID_EQUAL: u8 = 0x2E;
const HID_OPEN_BRACE: u8 = 0x2F;
const HID_CLOSE_BRACE: u8 = 0x30;
const HID_BACKSLASH: u8 = 0x31;
const HID_HASH_TILDE: u8 = 0x32;
const HID_SEMICOLON: u8 = 0x33;
const HID_APOSTROPHE: u8 = 0x34;
const HID_GRAVE_TILDE: u8 = 0x35;
const HID_COMMA: u8 = 0x36;
const HID_DOT: u8 = 0x37;
const HID_SLASH: u8 = 0x38;
const HID_CAPS_LOCK: u8 = 0x39;
const HID_F1: u8 = 0x3A;
const HID_F2: u8 = 0x3B;
const HID_F3: u8 = 0x3C;
const HID_F4: u8 = 0x3D;
const HID_F5: u8 = 0x3E;
const HID_F6: u8 = 0x3F;
const HID_F7: u8 = 0x40;
const HID_F8: u8 = 0x41;
const HID_F9: u8 = 0x42;
const HID_F10: u8 = 0x43;
const HID_F11: u8 = 0x44;
const HID_F12: u8 = 0x45;
const HID_PRINTSCREEN: u8 = 0x46;
const HID_SCROLL_LOCK: u8 = 0x47;
const HID_PAUSE: u8 = 0x48;
const HID_INSERT: u8 = 0x49;
const HID_HOME: u8 = 0x4A;
const HID_PAGEUP: u8 = 0x4B;
const HID_DELETE: u8 = 0x4C;
const HID_END: u8 = 0x4D;
const HID_PAGEDOWN: u8 = 0x4E;
const HID_RIGHT: u8 = 0x4F;
const HID_LEFT: u8 = 0x50;
const HID_DOWN: u8 = 0x51;
const HID_UP: u8 = 0x52;
const HID_KEYPAD_NUM_LOCK: u8 = 0x53;
const HID_KEYPAD_SLASH: u8 = 0x54;
const HID_KEYPAD_ASTERISK: u8 = 0x55;
const HID_KEYPAD_MINUS: u8 = 0x56;
const HID_KEYPAD_PLUS: u8 = 0x57;
const HID_KEYPAD_ENTER: u8 = 0x58;
const HID_KEYPAD_1: u8 = 0x59;
const HID_KEYPAD_2: u8 = 0x5A;
const HID_KEYPAD_3: u8 = 0x5B;
const HID_KEYPAD_4: u8 = 0x5C;
const HID_KEYPAD_5: u8 = 0x5D;
const HID_KEYPAD_6: u8 = 0x5E;
const HID_KEYPAD_7: u8 = 0x5F;
const HID_KEYPAD_8: u8 = 0x60;
const HID_KEYPAD_9: u8 = 0x61;
const HID_KEYPAD_0: u8 = 0x62;
const HID_KEYPAD_DOT: u8 = 0x63;
const HID_LEFT_CTRL: u8 = 0xE0;
const HID_LEFT_SHIFT: u8 = 0xE1;
const HID_LEFT_ALT: u8 = 0xE2;
const HID_LEFT_GUI: u8 = 0xE3;
const HID_RIGHT_CTRL: u8 = 0xE4;
const HID_RIGHT_SHIFT: u8 = 0xE5;
const HID_RIGHT_ALT: u8 = 0xE6;
const HID_RIGHT_GUI: u8 = 0xE7;
const HID_AT102: u8 = 0x64;
const HID_APPLICATION: u8 = 0x65;
pub fn convert(usb_keycode: u8) -> crate::KeyCode {
match usb_keycode {
HID_A => crate::KeyCode::A,
HID_B => crate::KeyCode::B,
HID_C => crate::KeyCode::C,
HID_D => crate::KeyCode::D,
HID_E => crate::KeyCode::E,
HID_F => crate::KeyCode::F,
HID_G => crate::KeyCode::G,
HID_H => crate::KeyCode::H,
HID_I => crate::KeyCode::I,
HID_J => crate::KeyCode::J,
HID_K => crate::KeyCode::K,
HID_L => crate::KeyCode::L,
HID_M => crate::KeyCode::M,
HID_N => crate::KeyCode::N,
HID_O => crate::KeyCode::O,
HID_P => crate::KeyCode::P,
HID_Q => crate::KeyCode::Q,
HID_R => crate::KeyCode::R,
HID_S => crate::KeyCode::S,
HID_T => crate::KeyCode::T,
HID_U => crate::KeyCode::U,
HID_V => crate::KeyCode::V,
HID_W => crate::KeyCode::W,
HID_X => crate::KeyCode::X,
HID_Y => crate::KeyCode::Y,
HID_Z => crate::KeyCode::Z,
HID_1 => crate::KeyCode::Key1,
HID_2 => crate::KeyCode::Key2,
HID_3 => crate::KeyCode::Key3,
HID_4 => crate::KeyCode::Key4,
HID_5 => crate::KeyCode::Key5,
HID_6 => crate::KeyCode::Key6,
HID_7 => crate::KeyCode::Key7,
HID_8 => crate::KeyCode::Key8,
HID_9 => crate::KeyCode::Key9,
HID_0 => crate::KeyCode::Key0,
HID_RETURN => crate::KeyCode::Return,
HID_ESCAPE => crate::KeyCode::Escape,
HID_BACKSPACE => crate::KeyCode::Backspace,
HID_TAB => crate::KeyCode::Tab,
HID_SPACEBAR => crate::KeyCode::Spacebar,
HID_UNDERSCORE => crate::KeyCode::OemMinus,
HID_EQUAL => crate::KeyCode::OemPlus,
HID_OPEN_BRACE => crate::KeyCode::Oem4,
HID_CLOSE_BRACE => crate::KeyCode::Oem6,
HID_BACKSLASH => crate::KeyCode::Oem7,
HID_HASH_TILDE => crate::KeyCode::Oem7,
HID_SEMICOLON => crate::KeyCode::Oem1,
HID_APOSTROPHE => crate::KeyCode::Oem3,
HID_GRAVE_TILDE => crate::KeyCode::Oem8,
HID_AT102 => crate::KeyCode::Oem5,
HID_COMMA => crate::KeyCode::OemComma,
HID_DOT => crate::KeyCode::OemPeriod,
HID_SLASH => crate::KeyCode::Oem2,
HID_CAPS_LOCK => crate::KeyCode::CapsLock,
HID_F1 => crate::KeyCode::F1,
HID_F2 => crate::KeyCode::F2,
HID_F3 => crate::KeyCode::F3,
HID_F4 => crate::KeyCode::F4,
HID_F5 => crate::KeyCode::F5,
HID_F6 => crate::KeyCode::F6,
HID_F7 => crate::KeyCode::F7,
HID_F8 => crate::KeyCode::F8,
HID_F9 => crate::KeyCode::F9,
HID_F10 => crate::KeyCode::F10,
HID_F11 => crate::KeyCode::F11,
HID_F12 => crate::KeyCode::F12,
HID_PRINTSCREEN => crate::KeyCode::PrintScreen,
HID_SCROLL_LOCK => crate::KeyCode::ScrollLock,
HID_PAUSE => crate::KeyCode::PauseBreak,
HID_INSERT => crate::KeyCode::Insert,
HID_HOME => crate::KeyCode::Home,
HID_PAGEUP => crate::KeyCode::PageUp,
HID_DELETE => crate::KeyCode::Delete,
HID_END => crate::KeyCode::End,
HID_PAGEDOWN => crate::KeyCode::PageDown,
HID_RIGHT => crate::KeyCode::ArrowRight,
HID_LEFT => crate::KeyCode::ArrowLeft,
HID_DOWN => crate::KeyCode::ArrowDown,
HID_UP => crate::KeyCode::ArrowUp,
HID_KEYPAD_NUM_LOCK => crate::KeyCode::NumpadLock,
HID_KEYPAD_SLASH => crate::KeyCode::NumpadDivide,
HID_KEYPAD_ASTERISK => crate::KeyCode::NumpadMultiply,
HID_KEYPAD_MINUS => crate::KeyCode::NumpadSubtract,
HID_KEYPAD_PLUS => crate::KeyCode::NumpadAdd,
HID_KEYPAD_ENTER => crate::KeyCode::NumpadEnter,
HID_KEYPAD_1 => crate::KeyCode::Numpad1,
HID_KEYPAD_2 => crate::KeyCode::Numpad2,
HID_KEYPAD_3 => crate::KeyCode::Numpad3,
HID_KEYPAD_4 => crate::KeyCode::Numpad4,
HID_KEYPAD_5 => crate::KeyCode::Numpad5,
HID_KEYPAD_6 => crate::KeyCode::Numpad6,
HID_KEYPAD_7 => crate::KeyCode::Numpad7,
HID_KEYPAD_8 => crate::KeyCode::Numpad8,
HID_KEYPAD_9 => crate::KeyCode::Numpad9,
HID_KEYPAD_0 => crate::KeyCode::Numpad0,
HID_KEYPAD_DOT => crate::KeyCode::NumpadPeriod,
HID_LEFT_CTRL => crate::KeyCode::LControl,
HID_LEFT_SHIFT => crate::KeyCode::LShift,
HID_LEFT_ALT => crate::KeyCode::LAlt,
HID_LEFT_GUI => crate::KeyCode::LWin,
HID_APPLICATION => crate::KeyCode::Apps,
HID_RIGHT_CTRL => crate::KeyCode::RControl,
HID_RIGHT_SHIFT => crate::KeyCode::RShift,
HID_RIGHT_ALT => crate::KeyCode::RAltGr,
HID_RIGHT_GUI => crate::KeyCode::RWin,
_ => crate::KeyCode::Unknown,
}
}