espanso/espanso-inject/src/x11/raw_keys.rs

107 lines
2.8 KiB
Rust
Raw Normal View History

use crate::keys::Key;
pub fn convert_key_to_sym(key: &Key) -> Option<u32> {
match key {
Key::Alt => Some(0xFFE9),
Key::CapsLock => Some(0xFFE5),
Key::Control => Some(0xFFE3),
Key::Meta => Some(0xFFEB),
Key::NumLock => Some(0xFF7F),
Key::Shift => Some(0xFFE1),
// Whitespace
Key::Enter => Some(0xFF0D),
Key::Tab => Some(0xFF09),
Key::Space => Some(0x20),
// Navigation
Key::ArrowDown => Some(0xFF54),
Key::ArrowLeft => Some(0xFF51),
Key::ArrowRight => Some(0xFF53),
Key::ArrowUp => Some(0xFF52),
Key::End => Some(0xFF57),
Key::Home => Some(0xFF50),
Key::PageDown => Some(0xFF56),
Key::PageUp => Some(0xFF55),
// UI keys
Key::Escape => Some(0xFF1B),
// Editing keys
Key::Backspace => Some(0xFF08),
Key::Insert => Some(0xff63),
Key::Delete => Some(0xffff),
// Function keys
Key::F1 => Some(0xFFBE),
Key::F2 => Some(0xFFBF),
Key::F3 => Some(0xFFC0),
Key::F4 => Some(0xFFC1),
Key::F5 => Some(0xFFC2),
Key::F6 => Some(0xFFC3),
Key::F7 => Some(0xFFC4),
Key::F8 => Some(0xFFC5),
Key::F9 => Some(0xFFC6),
Key::F10 => Some(0xFFC7),
Key::F11 => Some(0xFFC8),
Key::F12 => Some(0xFFC9),
Key::F13 => Some(0xFFCA),
Key::F14 => Some(0xFFCB),
Key::F15 => Some(0xFFCC),
Key::F16 => Some(0xFFCD),
Key::F17 => Some(0xFFCE),
Key::F18 => Some(0xFFCF),
Key::F19 => Some(0xFFD0),
Key::F20 => Some(0xFFD1),
Key::A => Some(0x0061),
Key::B => Some(0x0062),
Key::C => Some(0x0063),
Key::D => Some(0x0064),
Key::E => Some(0x0065),
Key::F => Some(0x0066),
Key::G => Some(0x0067),
Key::H => Some(0x0068),
Key::I => Some(0x0069),
Key::J => Some(0x006a),
Key::K => Some(0x006b),
Key::L => Some(0x006c),
Key::M => Some(0x006d),
Key::N => Some(0x006e),
Key::O => Some(0x006f),
Key::P => Some(0x0070),
Key::Q => Some(0x0071),
Key::R => Some(0x0072),
Key::S => Some(0x0073),
Key::T => Some(0x0074),
Key::U => Some(0x0075),
Key::V => Some(0x0076),
Key::W => Some(0x0077),
Key::X => Some(0x0078),
Key::Y => Some(0x0079),
Key::Z => Some(0x007a),
Key::N0 => Some(0x0030),
Key::N1 => Some(0x0031),
Key::N2 => Some(0x0032),
Key::N3 => Some(0x0033),
Key::N4 => Some(0x0034),
Key::N5 => Some(0x0035),
Key::N6 => Some(0x0036),
Key::N7 => Some(0x0037),
Key::N8 => Some(0x0038),
Key::N9 => Some(0x0039),
Key::Numpad0 => Some(0xffb0),
Key::Numpad1 => Some(0xffb1),
Key::Numpad2 => Some(0xffb2),
Key::Numpad3 => Some(0xffb3),
Key::Numpad4 => Some(0xffb4),
Key::Numpad5 => Some(0xffb5),
Key::Numpad6 => Some(0xffb6),
Key::Numpad7 => Some(0xffb7),
Key::Numpad8 => Some(0xffb8),
Key::Numpad9 => Some(0xffb9),
Key::Raw(code) => Some(*code as u32),
}
}