summaryrefslogblamecommitdiffstats
path: root/native/src/input/keyboard/key_code.rs
blob: 207ddeac972548c3b25057843ca462c7be11ec0b (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                                        





                                                                            

                                                                   
                      
















































                                              
                                  


























           
                          
             
                   
           
                                            

          
                                   











             

              

          
                                  























































































                                            

                         
































































































































                                                                              
             





































                                                                                


         
/// The symbolic name of a keyboard key.
///
/// This is mostly the `KeyCode` type found in [`winit`].
///
/// If you are using [`winit`], consider enabling the `winit` feature to get
/// conversion implementations for free!
///
/// [`winit`]: https://docs.rs/winit/0.20.0-alpha3/winit/
#[derive(Debug, Hash, Ord, PartialOrd, PartialEq, Eq, Clone, Copy)]
#[repr(u32)]
#[allow(missing_docs)]
pub enum KeyCode {
    /// The '1' key over the letters.
    Key1,
    /// The '2' key over the letters.
    Key2,
    /// The '3' key over the letters.
    Key3,
    /// The '4' key over the letters.
    Key4,
    /// The '5' key over the letters.
    Key5,
    /// The '6' key over the letters.
    Key6,
    /// The '7' key over the letters.
    Key7,
    /// The '8' key over the letters.
    Key8,
    /// The '9' key over the letters.
    Key9,
    /// The '0' key over the 'O' and 'P' keys.
    Key0,

    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,

    /// The Escape key, next to F1
    Escape,

    F1,
    F2,
    F3,
    F4,
    F5,
    F6,
    F7,
    F8,
    F9,
    F10,
    F11,
    F12,
    F13,
    F14,
    F15,
    F16,
    F17,
    F18,
    F19,
    F20,
    F21,
    F22,
    F23,
    F24,

    /// Print Screen/SysRq
    Snapshot,
    /// Scroll Lock
    Scroll,
    /// Pause/Break key, next to Scroll lock
    Pause,

    /// `Insert`, next to Backspace
    Insert,
    Home,
    Delete,
    End,
    PageDown,
    PageUp,

    Left,
    Up,
    Right,
    Down,

    Backspace,
    Enter,
    Space,

    /// The "Compose" key on Linux
    Compose,

    Caret,

    Numlock,
    Numpad0,
    Numpad1,
    Numpad2,
    Numpad3,
    Numpad4,
    Numpad5,
    Numpad6,
    Numpad7,
    Numpad8,
    Numpad9,

    AbntC1,
    AbntC2,
    Add,
    Apostrophe,
    Apps,
    At,
    Ax,
    Backslash,
    Calculator,
    Capital,
    Colon,
    Comma,
    Convert,
    Decimal,
    Divide,
    Equals,
    Grave,
    Kana,
    Kanji,
    LAlt,
    LBracket,
    LControl,
    LShift,
    LWin,
    Mail,
    MediaSelect,
    MediaStop,
    Minus,
    Multiply,
    Mute,
    MyComputer,
    NavigateForward,  // also called "Prior"
    NavigateBackward, // also called "Next"
    NextTrack,
    NoConvert,
    NumpadComma,
    NumpadEnter,
    NumpadEquals,
    OEM102,
    Period,
    PlayPause,
    Power,
    PrevTrack,
    RAlt,
    RBracket,
    RControl,
    RShift,
    RWin,
    Semicolon,
    Slash,
    Sleep,
    Stop,
    Subtract,
    Sysrq,
    Tab,
    Underline,
    Unlabeled,
    VolumeDown,
    VolumeUp,
    Wake,
    WebBack,
    WebFavorites,
    WebForward,
    WebHome,
    WebRefresh,
    WebSearch,
    WebStop,
    Yen,
    Copy,
    Paste,
    Cut,
}

#[cfg(feature = "winit")]
impl From<winit::event::VirtualKeyCode> for KeyCode {
    fn from(virtual_keycode: winit::event::VirtualKeyCode) -> Self {
        match virtual_keycode {
            winit::event::VirtualKeyCode::Key1 => KeyCode::Key1,
            winit::event::VirtualKeyCode::Key2 => KeyCode::Key2,
            winit::event::VirtualKeyCode::Key3 => KeyCode::Key3,
            winit::event::VirtualKeyCode::Key4 => KeyCode::Key4,
            winit::event::VirtualKeyCode::Key5 => KeyCode::Key5,
            winit::event::VirtualKeyCode::Key6 => KeyCode::Key6,
            winit::event::VirtualKeyCode::Key7 => KeyCode::Key7,
            winit::event::VirtualKeyCode::Key8 => KeyCode::Key8,
            winit::event::VirtualKeyCode::Key9 => KeyCode::Key9,
            winit::event::VirtualKeyCode::Key0 => KeyCode::Key0,
            winit::event::VirtualKeyCode::A => KeyCode::A,
            winit::event::VirtualKeyCode::B => KeyCode::B,
            winit::event::VirtualKeyCode::C => KeyCode::C,
            winit::event::VirtualKeyCode::D => KeyCode::D,
            winit::event::VirtualKeyCode::E => KeyCode::E,
            winit::event::VirtualKeyCode::F => KeyCode::F,
            winit::event::VirtualKeyCode::G => KeyCode::G,
            winit::event::VirtualKeyCode::H => KeyCode::H,
            winit::event::VirtualKeyCode::I => KeyCode::I,
            winit::event::VirtualKeyCode::J => KeyCode::J,
            winit::event::VirtualKeyCode::K => KeyCode::K,
            winit::event::VirtualKeyCode::L => KeyCode::L,
            winit::event::VirtualKeyCode::M => KeyCode::M,
            winit::event::VirtualKeyCode::N => KeyCode::N,
            winit::event::VirtualKeyCode::O => KeyCode::O,
            winit::event::VirtualKeyCode::P => KeyCode::P,
            winit::event::VirtualKeyCode::Q => KeyCode::Q,
            winit::event::VirtualKeyCode::R => KeyCode::R,
            winit::event::VirtualKeyCode::S => KeyCode::S,
            winit::event::VirtualKeyCode::T => KeyCode::T,
            winit::event::VirtualKeyCode::U => KeyCode::U,
            winit::event::VirtualKeyCode::V => KeyCode::V,
            winit::event::VirtualKeyCode::W => KeyCode::W,
            winit::event::VirtualKeyCode::X => KeyCode::X,
            winit::event::VirtualKeyCode::Y => KeyCode::Y,
            winit::event::VirtualKeyCode::Z => KeyCode::Z,
            winit::event::VirtualKeyCode::Escape => KeyCode::Escape,
            winit::event::VirtualKeyCode::F1 => KeyCode::F1,
            winit::event::VirtualKeyCode::F2 => KeyCode::F2,
            winit::event::VirtualKeyCode::F3 => KeyCode::F3,
            winit::event::VirtualKeyCode::F4 => KeyCode::F4,
            winit::event::VirtualKeyCode::F5 => KeyCode::F5,
            winit::event::VirtualKeyCode::F6 => KeyCode::F6,
            winit::event::VirtualKeyCode::F7 => KeyCode::F7,
            winit::event::VirtualKeyCode::F8 => KeyCode::F8,
            winit::event::VirtualKeyCode::F9 => KeyCode::F9,
            winit::event::VirtualKeyCode::F10 => KeyCode::F10,
            winit::event::VirtualKeyCode::F11 => KeyCode::F11,
            winit::event::VirtualKeyCode::F12 => KeyCode::F12,
            winit::event::VirtualKeyCode::F13 => KeyCode::F13,
            winit::event::VirtualKeyCode::F14 => KeyCode::F14,
            winit::event::VirtualKeyCode::F15 => KeyCode::F15,
            winit::event::VirtualKeyCode::F16 => KeyCode::F16,
            winit::event::VirtualKeyCode::F17 => KeyCode::F17,
            winit::event::VirtualKeyCode::F18 => KeyCode::F18,
            winit::event::VirtualKeyCode::F19 => KeyCode::F19,
            winit::event::VirtualKeyCode::F20 => KeyCode::F20,
            winit::event::VirtualKeyCode::F21 => KeyCode::F21,
            winit::event::VirtualKeyCode::F22 => KeyCode::F22,
            winit::event::VirtualKeyCode::F23 => KeyCode::F23,
            winit::event::VirtualKeyCode::F24 => KeyCode::F24,
            winit::event::VirtualKeyCode::Snapshot => KeyCode::Snapshot,
            winit::event::VirtualKeyCode::Scroll => KeyCode::Scroll,
            winit::event::VirtualKeyCode::Pause => KeyCode::Pause,
            winit::event::VirtualKeyCode::Insert => KeyCode::Insert,
            winit::event::VirtualKeyCode::Home => KeyCode::Home,
            winit::event::VirtualKeyCode::Delete => KeyCode::Delete,
            winit::event::VirtualKeyCode::End => KeyCode::End,
            winit::event::VirtualKeyCode::PageDown => KeyCode::PageDown,
            winit::event::VirtualKeyCode::PageUp => KeyCode::PageUp,
            winit::event::VirtualKeyCode::Left => KeyCode::Left,
            winit::event::VirtualKeyCode::Up => KeyCode::Up,
            winit::event::VirtualKeyCode::Right => KeyCode::Right,
            winit::event::VirtualKeyCode::Down => KeyCode::Down,
            winit::event::VirtualKeyCode::Back => KeyCode::Backspace,
            winit::event::VirtualKeyCode::Return => KeyCode::Enter,
            winit::event::VirtualKeyCode::Space => KeyCode::Space,
            winit::event::VirtualKeyCode::Compose => KeyCode::Compose,
            winit::event::VirtualKeyCode::Caret => KeyCode::Caret,
            winit::event::VirtualKeyCode::Numlock => KeyCode::Numlock,
            winit::event::VirtualKeyCode::Numpad0 => KeyCode::Numpad0,
            winit::event::VirtualKeyCode::Numpad1 => KeyCode::Numpad1,
            winit::event::VirtualKeyCode::Numpad2 => KeyCode::Numpad2,
            winit::event::VirtualKeyCode::Numpad3 => KeyCode::Numpad3,
            winit::event::VirtualKeyCode::Numpad4 => KeyCode::Numpad4,
            winit::event::VirtualKeyCode::Numpad5 => KeyCode::Numpad5,
            winit::event::VirtualKeyCode::Numpad6 => KeyCode::Numpad6,
            winit::event::VirtualKeyCode::Numpad7 => KeyCode::Numpad7,
            winit::event::VirtualKeyCode::Numpad8 => KeyCode::Numpad8,
            winit::event::VirtualKeyCode::Numpad9 => KeyCode::Numpad9,
            winit::event::VirtualKeyCode::AbntC1 => KeyCode::AbntC1,
            winit::event::VirtualKeyCode::AbntC2 => KeyCode::AbntC2,
            winit::event::VirtualKeyCode::Add => KeyCode::Add,
            winit::event::VirtualKeyCode::Apostrophe => KeyCode::Apostrophe,
            winit::event::VirtualKeyCode::Apps => KeyCode::Apps,
            winit::event::VirtualKeyCode::At => KeyCode::At,
            winit::event::VirtualKeyCode::Ax => KeyCode::Ax,
            winit::event::VirtualKeyCode::Backslash => KeyCode::Backslash,
            winit::event::VirtualKeyCode::Calculator => KeyCode::Calculator,
            winit::event::VirtualKeyCode::Capital => KeyCode::Capital,
            winit::event::VirtualKeyCode::Colon => KeyCode::Colon,
            winit::event::VirtualKeyCode::Comma => KeyCode::Comma,
            winit::event::VirtualKeyCode::Convert => KeyCode::Convert,
            winit::event::VirtualKeyCode::Decimal => KeyCode::Decimal,
            winit::event::VirtualKeyCode::Divide => KeyCode::Divide,
            winit::event::VirtualKeyCode::Equals => KeyCode::Equals,
            winit::event::VirtualKeyCode::Grave => KeyCode::Grave,
            winit::event::VirtualKeyCode::Kana => KeyCode::Kana,
            winit::event::VirtualKeyCode::Kanji => KeyCode::Kanji,
            winit::event::VirtualKeyCode::LAlt => KeyCode::LAlt,
            winit::event::VirtualKeyCode::LBracket => KeyCode::LBracket,
            winit::event::VirtualKeyCode::LControl => KeyCode::LControl,
            winit::event::VirtualKeyCode::LShift => KeyCode::LShift,
            winit::event::VirtualKeyCode::LWin => KeyCode::LWin,
            winit::event::VirtualKeyCode::Mail => KeyCode::Mail,
            winit::event::VirtualKeyCode::MediaSelect => KeyCode::MediaSelect,
            winit::event::VirtualKeyCode::MediaStop => KeyCode::MediaStop,
            winit::event::VirtualKeyCode::Minus => KeyCode::Minus,
            winit::event::VirtualKeyCode::Multiply => KeyCode::Multiply,
            winit::event::VirtualKeyCode::Mute => KeyCode::Mute,
            winit::event::VirtualKeyCode::MyComputer => KeyCode::MyComputer,
            winit::event::VirtualKeyCode::NavigateForward => {
                KeyCode::NavigateForward
            }
            winit::event::VirtualKeyCode::NavigateBackward => {
                KeyCode::NavigateBackward
            }
            winit::event::VirtualKeyCode::NextTrack => KeyCode::NextTrack,
            winit::event::VirtualKeyCode::NoConvert => KeyCode::NoConvert,
            winit::event::VirtualKeyCode::NumpadComma => KeyCode::NumpadComma,
            winit::event::VirtualKeyCode::NumpadEnter => KeyCode::NumpadEnter,
            winit::event::VirtualKeyCode::NumpadEquals => KeyCode::NumpadEquals,
            winit::event::VirtualKeyCode::OEM102 => KeyCode::OEM102,
            winit::event::VirtualKeyCode::Period => KeyCode::Period,
            winit::event::VirtualKeyCode::PlayPause => KeyCode::PlayPause,
            winit::event::VirtualKeyCode::Power => KeyCode::Power,
            winit::event::VirtualKeyCode::PrevTrack => KeyCode::PrevTrack,
            winit::event::VirtualKeyCode::RAlt => KeyCode::RAlt,
            winit::event::VirtualKeyCode::RBracket => KeyCode::RBracket,
            winit::event::VirtualKeyCode::RControl => KeyCode::RControl,
            winit::event::VirtualKeyCode::RShift => KeyCode::RShift,
            winit::event::VirtualKeyCode::RWin => KeyCode::RWin,
            winit::event::VirtualKeyCode::Semicolon => KeyCode::Semicolon,
            winit::event::VirtualKeyCode::Slash => KeyCode::Slash,
            winit::event::VirtualKeyCode::Sleep => KeyCode::Sleep,
            winit::event::VirtualKeyCode::Stop => KeyCode::Stop,
            winit::event::VirtualKeyCode::Subtract => KeyCode::Subtract,
            winit::event::VirtualKeyCode::Sysrq => KeyCode::Sysrq,
            winit::event::VirtualKeyCode::Tab => KeyCode::Tab,
            winit::event::VirtualKeyCode::Underline => KeyCode::Underline,
            winit::event::VirtualKeyCode::Unlabeled => KeyCode::Unlabeled,
            winit::event::VirtualKeyCode::VolumeDown => KeyCode::VolumeDown,
            winit::event::VirtualKeyCode::VolumeUp => KeyCode::VolumeUp,
            winit::event::VirtualKeyCode::Wake => KeyCode::Wake,
            winit::event::VirtualKeyCode::WebBack => KeyCode::WebBack,
            winit::event::VirtualKeyCode::WebFavorites => KeyCode::WebFavorites,
            winit::event::VirtualKeyCode::WebForward => KeyCode::WebForward,
            winit::event::VirtualKeyCode::WebHome => KeyCode::WebHome,
            winit::event::VirtualKeyCode::WebRefresh => KeyCode::WebRefresh,
            winit::event::VirtualKeyCode::WebSearch => KeyCode::WebSearch,
            winit::event::VirtualKeyCode::WebStop => KeyCode::WebStop,
            winit::event::VirtualKeyCode::Yen => KeyCode::Yen,
            winit::event::VirtualKeyCode::Copy => KeyCode::Copy,
            winit::event::VirtualKeyCode::Paste => KeyCode::Paste,
            winit::event::VirtualKeyCode::Cut => KeyCode::Cut,
        }
    }
}