145 lines
4.5 KiB
Rust
145 lines
4.5 KiB
Rust
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,
|
|
}
|
|
}
|