Files
fluxer/fluxer_desktop/native/windows-input-hook/src/keymap.rs
T

586 lines
12 KiB
Rust

// SPDX-License-Identifier: AGPL-3.0-or-later
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct KeyMapU16 {
pub code: u16,
pub name: &'static str,
}
pub mod windows {
use super::KeyMapU16;
pub const VK_TABLE: &[KeyMapU16] = &[
KeyMapU16 {
code: 0x1b,
name: "Escape",
},
KeyMapU16 {
code: 0x70,
name: "F1",
},
KeyMapU16 {
code: 0x71,
name: "F2",
},
KeyMapU16 {
code: 0x72,
name: "F3",
},
KeyMapU16 {
code: 0x73,
name: "F4",
},
KeyMapU16 {
code: 0x74,
name: "F5",
},
KeyMapU16 {
code: 0x75,
name: "F6",
},
KeyMapU16 {
code: 0x76,
name: "F7",
},
KeyMapU16 {
code: 0x77,
name: "F8",
},
KeyMapU16 {
code: 0x78,
name: "F9",
},
KeyMapU16 {
code: 0x79,
name: "F10",
},
KeyMapU16 {
code: 0x7a,
name: "F11",
},
KeyMapU16 {
code: 0x7b,
name: "F12",
},
KeyMapU16 {
code: 0x7c,
name: "F13",
},
KeyMapU16 {
code: 0x7d,
name: "F14",
},
KeyMapU16 {
code: 0x7e,
name: "F15",
},
KeyMapU16 {
code: 0x7f,
name: "F16",
},
KeyMapU16 {
code: 0x80,
name: "F17",
},
KeyMapU16 {
code: 0x81,
name: "F18",
},
KeyMapU16 {
code: 0x82,
name: "F19",
},
KeyMapU16 {
code: 0x83,
name: "F20",
},
KeyMapU16 {
code: 0x84,
name: "F21",
},
KeyMapU16 {
code: 0x85,
name: "F22",
},
KeyMapU16 {
code: 0x86,
name: "F23",
},
KeyMapU16 {
code: 0x87,
name: "F24",
},
KeyMapU16 {
code: 0x13,
name: "Pause",
},
KeyMapU16 {
code: 0x2c,
name: "PrintScreen",
},
KeyMapU16 {
code: 0x91,
name: "ScrollLock",
},
KeyMapU16 {
code: 0x90,
name: "NumLock",
},
KeyMapU16 {
code: 0x5d,
name: "ContextMenu",
},
KeyMapU16 {
code: 0xc0,
name: "Backquote",
},
KeyMapU16 {
code: 0x31,
name: "1",
},
KeyMapU16 {
code: 0x32,
name: "2",
},
KeyMapU16 {
code: 0x33,
name: "3",
},
KeyMapU16 {
code: 0x34,
name: "4",
},
KeyMapU16 {
code: 0x35,
name: "5",
},
KeyMapU16 {
code: 0x36,
name: "6",
},
KeyMapU16 {
code: 0x37,
name: "7",
},
KeyMapU16 {
code: 0x38,
name: "8",
},
KeyMapU16 {
code: 0x39,
name: "9",
},
KeyMapU16 {
code: 0x30,
name: "0",
},
KeyMapU16 {
code: 0xbd,
name: "Minus",
},
KeyMapU16 {
code: 0xbb,
name: "Equal",
},
KeyMapU16 {
code: 0x08,
name: "Backspace",
},
KeyMapU16 {
code: 0x09,
name: "Tab",
},
KeyMapU16 {
code: 0x51,
name: "Q",
},
KeyMapU16 {
code: 0x57,
name: "W",
},
KeyMapU16 {
code: 0x45,
name: "E",
},
KeyMapU16 {
code: 0x52,
name: "R",
},
KeyMapU16 {
code: 0x54,
name: "T",
},
KeyMapU16 {
code: 0x59,
name: "Y",
},
KeyMapU16 {
code: 0x55,
name: "U",
},
KeyMapU16 {
code: 0x49,
name: "I",
},
KeyMapU16 {
code: 0x4f,
name: "O",
},
KeyMapU16 {
code: 0x50,
name: "P",
},
KeyMapU16 {
code: 0xdb,
name: "BracketLeft",
},
KeyMapU16 {
code: 0xdd,
name: "BracketRight",
},
KeyMapU16 {
code: 0xdc,
name: "Backslash",
},
KeyMapU16 {
code: 0x14,
name: "CapsLock",
},
KeyMapU16 {
code: 0x41,
name: "A",
},
KeyMapU16 {
code: 0x53,
name: "S",
},
KeyMapU16 {
code: 0x44,
name: "D",
},
KeyMapU16 {
code: 0x46,
name: "F",
},
KeyMapU16 {
code: 0x47,
name: "G",
},
KeyMapU16 {
code: 0x48,
name: "H",
},
KeyMapU16 {
code: 0x4a,
name: "J",
},
KeyMapU16 {
code: 0x4b,
name: "K",
},
KeyMapU16 {
code: 0x4c,
name: "L",
},
KeyMapU16 {
code: 0xba,
name: "Semicolon",
},
KeyMapU16 {
code: 0xde,
name: "Quote",
},
KeyMapU16 {
code: 0x0d,
name: "Enter",
},
KeyMapU16 {
code: 0xa0,
name: "ShiftLeft",
},
KeyMapU16 {
code: 0x5a,
name: "Z",
},
KeyMapU16 {
code: 0x58,
name: "X",
},
KeyMapU16 {
code: 0x43,
name: "C",
},
KeyMapU16 {
code: 0x56,
name: "V",
},
KeyMapU16 {
code: 0x42,
name: "B",
},
KeyMapU16 {
code: 0x4e,
name: "N",
},
KeyMapU16 {
code: 0x4d,
name: "M",
},
KeyMapU16 {
code: 0xbc,
name: "Comma",
},
KeyMapU16 {
code: 0xbe,
name: "Period",
},
KeyMapU16 {
code: 0xbf,
name: "Slash",
},
KeyMapU16 {
code: 0xa1,
name: "ShiftRight",
},
KeyMapU16 {
code: 0xa2,
name: "ControlLeft",
},
KeyMapU16 {
code: 0x5b,
name: "MetaLeft",
},
KeyMapU16 {
code: 0xa4,
name: "AltLeft",
},
KeyMapU16 {
code: 0x20,
name: "Space",
},
KeyMapU16 {
code: 0xa5,
name: "AltRight",
},
KeyMapU16 {
code: 0x5c,
name: "MetaRight",
},
KeyMapU16 {
code: 0xa3,
name: "ControlRight",
},
KeyMapU16 {
code: 0x60,
name: "Numpad0",
},
KeyMapU16 {
code: 0x61,
name: "Numpad1",
},
KeyMapU16 {
code: 0x62,
name: "Numpad2",
},
KeyMapU16 {
code: 0x63,
name: "Numpad3",
},
KeyMapU16 {
code: 0x64,
name: "Numpad4",
},
KeyMapU16 {
code: 0x65,
name: "Numpad5",
},
KeyMapU16 {
code: 0x66,
name: "Numpad6",
},
KeyMapU16 {
code: 0x67,
name: "Numpad7",
},
KeyMapU16 {
code: 0x68,
name: "Numpad8",
},
KeyMapU16 {
code: 0x69,
name: "Numpad9",
},
KeyMapU16 {
code: 0x6a,
name: "NumpadMultiply",
},
KeyMapU16 {
code: 0x6b,
name: "NumpadAdd",
},
KeyMapU16 {
code: 0x6c,
name: "NumpadComma",
},
KeyMapU16 {
code: 0x6d,
name: "NumpadSubtract",
},
KeyMapU16 {
code: 0x6e,
name: "NumpadDecimal",
},
KeyMapU16 {
code: 0x6f,
name: "NumpadDivide",
},
KeyMapU16 {
code: 0x92,
name: "NumpadEqual",
},
KeyMapU16 {
code: 0x0c,
name: "Numpad5",
},
KeyMapU16 {
code: 0x25,
name: "ArrowLeft",
},
KeyMapU16 {
code: 0x26,
name: "ArrowUp",
},
KeyMapU16 {
code: 0x27,
name: "ArrowRight",
},
KeyMapU16 {
code: 0x28,
name: "ArrowDown",
},
KeyMapU16 {
code: 0x2d,
name: "Insert",
},
KeyMapU16 {
code: 0x2e,
name: "Delete",
},
KeyMapU16 {
code: 0x24,
name: "Home",
},
KeyMapU16 {
code: 0x23,
name: "End",
},
KeyMapU16 {
code: 0x21,
name: "PageUp",
},
KeyMapU16 {
code: 0x22,
name: "PageDown",
},
KeyMapU16 {
code: 0xad,
name: "AudioVolumeMute",
},
KeyMapU16 {
code: 0xae,
name: "AudioVolumeDown",
},
KeyMapU16 {
code: 0xaf,
name: "AudioVolumeUp",
},
KeyMapU16 {
code: 0xb0,
name: "MediaTrackNext",
},
KeyMapU16 {
code: 0xb1,
name: "MediaTrackPrevious",
},
KeyMapU16 {
code: 0xb2,
name: "MediaStop",
},
KeyMapU16 {
code: 0xb3,
name: "MediaPlayPause",
},
KeyMapU16 {
code: 0xa6,
name: "BrowserBack",
},
KeyMapU16 {
code: 0xa7,
name: "BrowserForward",
},
KeyMapU16 {
code: 0xa8,
name: "BrowserRefresh",
},
KeyMapU16 {
code: 0xa9,
name: "BrowserStop",
},
KeyMapU16 {
code: 0xaa,
name: "BrowserSearch",
},
KeyMapU16 {
code: 0xab,
name: "BrowserFavorites",
},
KeyMapU16 {
code: 0xac,
name: "BrowserHome",
},
KeyMapU16 {
code: 0xb4,
name: "LaunchMail",
},
KeyMapU16 {
code: 0xb5,
name: "LaunchMediaPlayer",
},
KeyMapU16 {
code: 0xb6,
name: "LaunchApp1",
},
KeyMapU16 {
code: 0xb7,
name: "LaunchApp2",
},
KeyMapU16 {
code: 0x1c,
name: "Convert",
},
KeyMapU16 {
code: 0x1d,
name: "NonConvert",
},
KeyMapU16 {
code: 0x15,
name: "KanaMode",
},
KeyMapU16 {
code: 0x5f,
name: "Sleep",
},
];
pub fn vk_to_name(vk: u16) -> Option<&'static str> {
VK_TABLE
.iter()
.find(|entry| entry.code == vk)
.map(|entry| entry.name)
}
}
pub fn fallback_name(prefix_value: impl std::fmt::Display) -> String {
format!("Key{prefix_value}")
}