mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 05:25:40 +09:00
586 lines
12 KiB
Rust
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}")
|
|
}
|