use graphite_editor::messages::input_mapper::utility_types::input_keyboard::{Key, ModifierKeys}; use winit::keyboard::{KeyCode, ModifiersState, PhysicalKey}; pub fn translate_physical_winit(physical: PhysicalKey) -> Key { let PhysicalKey::Code(code) = physical else { return Key::Unidentified; }; translate_code(code) } pub fn translate_modifiers_winit(m: ModifiersState) -> ModifierKeys { let mut out = ModifierKeys::empty(); if m.shift_key() { out |= ModifierKeys::SHIFT; } if m.alt_key() { out |= ModifierKeys::ALT; } if m.control_key() { out |= ModifierKeys::CONTROL; } if m.meta_key() { out |= ModifierKeys::META_OR_COMMAND; } out } fn translate_code(code: KeyCode) -> Key { match code { KeyCode::Digit0 | KeyCode::Numpad0 => Key::Digit0, KeyCode::Digit1 | KeyCode::Numpad1 => Key::Digit1, KeyCode::Digit2 | KeyCode::Numpad2 => Key::Digit2, KeyCode::Digit3 | KeyCode::Numpad3 => Key::Digit3, KeyCode::Digit4 | KeyCode::Numpad4 => Key::Digit4, KeyCode::Digit5 | KeyCode::Numpad5 => Key::Digit5, KeyCode::Digit6 | KeyCode::Numpad6 => Key::Digit6, KeyCode::Digit7 | KeyCode::Numpad7 => Key::Digit7, KeyCode::Digit8 | KeyCode::Numpad8 => Key::Digit8, KeyCode::Digit9 | KeyCode::Numpad9 => Key::Digit9, KeyCode::KeyA => Key::KeyA, KeyCode::KeyB => Key::KeyB, KeyCode::KeyC => Key::KeyC, KeyCode::KeyD => Key::KeyD, KeyCode::KeyE => Key::KeyE, KeyCode::KeyF => Key::KeyF, KeyCode::KeyG => Key::KeyG, KeyCode::KeyH => Key::KeyH, KeyCode::KeyI => Key::KeyI, KeyCode::KeyJ => Key::KeyJ, KeyCode::KeyK => Key::KeyK, KeyCode::KeyL => Key::KeyL, KeyCode::KeyM => Key::KeyM, KeyCode::KeyN => Key::KeyN, KeyCode::KeyO => Key::KeyO, KeyCode::KeyP => Key::KeyP, KeyCode::KeyQ => Key::KeyQ, KeyCode::KeyR => Key::KeyR, KeyCode::KeyS => Key::KeyS, KeyCode::KeyT => Key::KeyT, KeyCode::KeyU => Key::KeyU, KeyCode::KeyV => Key::KeyV, KeyCode::KeyW => Key::KeyW, KeyCode::KeyX => Key::KeyX, KeyCode::KeyY => Key::KeyY, KeyCode::KeyZ => Key::KeyZ, KeyCode::Backquote => Key::Backquote, KeyCode::Backslash => Key::Backslash, KeyCode::BracketLeft => Key::BracketLeft, KeyCode::BracketRight => Key::BracketRight, KeyCode::Comma | KeyCode::NumpadComma => Key::Comma, KeyCode::Equal | KeyCode::NumpadEqual => Key::Equal, KeyCode::Minus | KeyCode::NumpadSubtract => Key::Minus, KeyCode::Period | KeyCode::NumpadDecimal => Key::Period, KeyCode::Quote => Key::Quote, KeyCode::Semicolon => Key::Semicolon, KeyCode::Slash | KeyCode::NumpadDivide => Key::Slash, KeyCode::AltLeft | KeyCode::AltRight => Key::Alt, KeyCode::MetaLeft | KeyCode::MetaRight => Key::Meta, KeyCode::ShiftLeft | KeyCode::ShiftRight => Key::Shift, KeyCode::ControlLeft | KeyCode::ControlRight => Key::Control, KeyCode::Backspace => Key::Backspace, KeyCode::CapsLock => Key::CapsLock, KeyCode::ContextMenu => Key::ContextMenu, KeyCode::Enter | KeyCode::NumpadEnter => Key::Enter, KeyCode::Space => Key::Space, KeyCode::Tab => Key::Tab, KeyCode::Delete => Key::Delete, KeyCode::End => Key::End, KeyCode::Help => Key::Help, KeyCode::Home => Key::Home, KeyCode::Insert => Key::Insert, KeyCode::PageDown => Key::PageDown, KeyCode::PageUp => Key::PageUp, KeyCode::ArrowDown => Key::ArrowDown, KeyCode::ArrowLeft => Key::ArrowLeft, KeyCode::ArrowRight => Key::ArrowRight, KeyCode::ArrowUp => Key::ArrowUp, KeyCode::NumLock => Key::NumLock, KeyCode::NumpadAdd => Key::NumpadAdd, KeyCode::NumpadHash => Key::NumpadHash, KeyCode::NumpadMultiply | KeyCode::NumpadStar => Key::NumpadMultiply, KeyCode::NumpadParenLeft => Key::NumpadParenLeft, KeyCode::NumpadParenRight => Key::NumpadParenRight, KeyCode::Escape => Key::Escape, KeyCode::F1 => Key::F1, KeyCode::F2 => Key::F2, KeyCode::F3 => Key::F3, KeyCode::F4 => Key::F4, KeyCode::F5 => Key::F5, KeyCode::F6 => Key::F6, KeyCode::F7 => Key::F7, KeyCode::F8 => Key::F8, KeyCode::F9 => Key::F9, KeyCode::F10 => Key::F10, KeyCode::F11 => Key::F11, KeyCode::F12 => Key::F12, KeyCode::F13 => Key::F13, KeyCode::F14 => Key::F14, KeyCode::F15 => Key::F15, KeyCode::F16 => Key::F16, KeyCode::F17 => Key::F17, KeyCode::F18 => Key::F18, KeyCode::F19 => Key::F19, KeyCode::F20 => Key::F20, KeyCode::F21 => Key::F21, KeyCode::F22 => Key::F22, KeyCode::F23 => Key::F23, KeyCode::F24 => Key::F24, KeyCode::Fn => Key::Fn, KeyCode::FnLock => Key::FnLock, KeyCode::PrintScreen => Key::PrintScreen, KeyCode::ScrollLock => Key::ScrollLock, KeyCode::Pause => Key::Pause, _ => Key::Unidentified, } }