sge_input 1.1.1

Input functionality for SGE
Documentation
use glium::winit::keyboard::KeyCode;

pub trait KeyToString {
    fn format_as_string(&self) -> &'static str;
}

impl KeyToString for KeyCode {
    fn format_as_string(&self) -> &'static str {
        match self {
            // --- Printable symbols ---
            KeyCode::Backquote => "`",
            KeyCode::Backslash => "\\",
            KeyCode::BracketLeft => "[",
            KeyCode::BracketRight => "]",
            KeyCode::Comma => ",",
            KeyCode::Digit0 => "0",
            KeyCode::Digit1 => "1",
            KeyCode::Digit2 => "2",
            KeyCode::Digit3 => "3",
            KeyCode::Digit4 => "4",
            KeyCode::Digit5 => "5",
            KeyCode::Digit6 => "6",
            KeyCode::Digit7 => "7",
            KeyCode::Digit8 => "8",
            KeyCode::Digit9 => "9",
            KeyCode::Equal => "=",
            KeyCode::Minus => "-",
            KeyCode::Period => ".",
            KeyCode::Quote => "'",
            KeyCode::Semicolon => ";",
            KeyCode::Slash => "/",
            KeyCode::Space => "Space",
            KeyCode::Tab => "Tab",

            // --- Letters ---
            KeyCode::KeyA => "A",
            KeyCode::KeyB => "B",
            KeyCode::KeyC => "C",
            KeyCode::KeyD => "D",
            KeyCode::KeyE => "E",
            KeyCode::KeyF => "F",
            KeyCode::KeyG => "G",
            KeyCode::KeyH => "H",
            KeyCode::KeyI => "I",
            KeyCode::KeyJ => "J",
            KeyCode::KeyK => "K",
            KeyCode::KeyL => "L",
            KeyCode::KeyM => "M",
            KeyCode::KeyN => "N",
            KeyCode::KeyO => "O",
            KeyCode::KeyP => "P",
            KeyCode::KeyQ => "Q",
            KeyCode::KeyR => "R",
            KeyCode::KeyS => "S",
            KeyCode::KeyT => "T",
            KeyCode::KeyU => "U",
            KeyCode::KeyV => "V",
            KeyCode::KeyW => "W",
            KeyCode::KeyX => "X",
            KeyCode::KeyY => "Y",
            KeyCode::KeyZ => "Z",

            // --- Modifiers ---
            KeyCode::AltLeft => "Alt",
            KeyCode::AltRight => "AltGr",
            KeyCode::ControlLeft => "Ctrl",
            KeyCode::ControlRight => "Ctrl",
            KeyCode::ShiftLeft => "Shift",
            KeyCode::ShiftRight => "Shift",
            KeyCode::SuperLeft => "Super",
            KeyCode::SuperRight => "Super",
            KeyCode::CapsLock => "CapsLock",
            KeyCode::Meta => "Meta",
            KeyCode::Hyper => "Hyper",

            // --- Editing / navigation ---
            KeyCode::Backspace => "Backspace",
            KeyCode::Delete => "Delete",
            KeyCode::Insert => "Insert",
            KeyCode::Enter => "Enter",
            KeyCode::Escape => "Esc",
            KeyCode::Home => "Home",
            KeyCode::End => "End",
            KeyCode::PageUp => "PageUp",
            KeyCode::PageDown => "PageDown",

            // --- Arrows ---
            KeyCode::ArrowUp => "",
            KeyCode::ArrowDown => "",
            KeyCode::ArrowLeft => "",
            KeyCode::ArrowRight => "",

            // --- Function keys ---
            KeyCode::F1 => "F1",
            KeyCode::F2 => "F2",
            KeyCode::F3 => "F3",
            KeyCode::F4 => "F4",
            KeyCode::F5 => "F5",
            KeyCode::F6 => "F6",
            KeyCode::F7 => "F7",
            KeyCode::F8 => "F8",
            KeyCode::F9 => "F9",
            KeyCode::F10 => "F10",
            KeyCode::F11 => "F11",
            KeyCode::F12 => "F12",
            KeyCode::F13 => "F13",
            KeyCode::F14 => "F14",
            KeyCode::F15 => "F15",
            KeyCode::F16 => "F16",
            KeyCode::F17 => "F17",
            KeyCode::F18 => "F18",
            KeyCode::F19 => "F19",
            KeyCode::F20 => "F20",
            KeyCode::F21 => "F21",
            KeyCode::F22 => "F22",
            KeyCode::F23 => "F23",
            KeyCode::F24 => "F24",
            KeyCode::F25 => "F25",
            KeyCode::F26 => "F26",
            KeyCode::F27 => "F27",
            KeyCode::F28 => "F28",
            KeyCode::F29 => "F29",
            KeyCode::F30 => "F30",
            KeyCode::F31 => "F31",
            KeyCode::F32 => "F32",
            KeyCode::F33 => "F33",
            KeyCode::F34 => "F34",
            KeyCode::F35 => "F35",

            // --- Numpad ---
            KeyCode::NumLock => "NumLock",
            KeyCode::Numpad0 => "Num0",
            KeyCode::Numpad1 => "Num1",
            KeyCode::Numpad2 => "Num2",
            KeyCode::Numpad3 => "Num3",
            KeyCode::Numpad4 => "Num4",
            KeyCode::Numpad5 => "Num5",
            KeyCode::Numpad6 => "Num6",
            KeyCode::Numpad7 => "Num7",
            KeyCode::Numpad8 => "Num8",
            KeyCode::Numpad9 => "Num9",
            KeyCode::NumpadAdd => "Num+",
            KeyCode::NumpadSubtract => "Num-",
            KeyCode::NumpadMultiply => "Num*",
            KeyCode::NumpadDivide => "Num/",
            KeyCode::NumpadDecimal => "Num.",
            KeyCode::NumpadEnter => "NumEnter",
            KeyCode::NumpadEqual => "Num=",
            KeyCode::NumpadComma => "Num,",
            KeyCode::NumpadStar => "Num*",
            KeyCode::NumpadHash => "Num#",
            KeyCode::NumpadParenLeft => "Num(",
            KeyCode::NumpadParenRight => "Num)",

            // --- Media / system ---
            KeyCode::PrintScreen => "PrintScreen",
            KeyCode::ScrollLock => "ScrollLock",
            KeyCode::Pause => "Pause",
            KeyCode::Power => "Power",
            KeyCode::Sleep => "Sleep",
            KeyCode::WakeUp => "Wake",
            KeyCode::AudioVolumeMute => "Mute",
            KeyCode::AudioVolumeDown => "Vol-",
            KeyCode::AudioVolumeUp => "Vol+",
            KeyCode::MediaPlayPause => "Play/Pause",
            KeyCode::MediaStop => "Stop",
            KeyCode::MediaTrackNext => "Next",
            KeyCode::MediaTrackPrevious => "Prev",
            KeyCode::MediaSelect => "Media",

            // --- Browser ---
            KeyCode::BrowserBack => "BrowserBack",
            KeyCode::BrowserForward => "BrowserForward",
            KeyCode::BrowserHome => "BrowserHome",
            KeyCode::BrowserRefresh => "BrowserRefresh",
            KeyCode::BrowserSearch => "BrowserSearch",
            KeyCode::BrowserStop => "BrowserStop",
            KeyCode::BrowserFavorites => "BrowserFav",

            // --- Launch / apps ---
            KeyCode::LaunchApp1 => "App1",
            KeyCode::LaunchApp2 => "App2",
            KeyCode::LaunchMail => "Mail",

            // --- International / IME ---
            KeyCode::IntlBackslash => "\\",
            KeyCode::IntlRo => "Ro",
            KeyCode::IntlYen => "¥",
            KeyCode::Convert => "Convert",
            KeyCode::NonConvert => "NonConvert",
            KeyCode::KanaMode => "Kana",
            KeyCode::Lang1 => "Lang1",
            KeyCode::Lang2 => "Lang2",
            KeyCode::Lang3 => "Lang3",
            KeyCode::Lang4 => "Lang4",
            KeyCode::Lang5 => "Lang5",
            KeyCode::Hiragana => "Hiragana",
            KeyCode::Katakana => "Katakana",

            // --- Misc / legacy ---
            KeyCode::ContextMenu => "Menu",
            KeyCode::Fn => "Fn",
            KeyCode::FnLock => "FnLock",
            KeyCode::Help => "Help",
            KeyCode::Eject => "Eject",
            KeyCode::Turbo => "Turbo",
            KeyCode::Abort => "Abort",
            KeyCode::Resume => "Resume",
            KeyCode::Suspend => "Suspend",
            KeyCode::Again => "Again",
            KeyCode::Copy => "Copy",
            KeyCode::Cut => "Cut",
            KeyCode::Find => "Find",
            KeyCode::Open => "Open",
            KeyCode::Paste => "Paste",
            KeyCode::Props => "Props",
            KeyCode::Select => "Select",
            KeyCode::Undo => "Undo",
            &_ => "Unknown key",
        }
    }
}