remote/viewer/src/keymap.rs

74 lines
2.1 KiB
Rust

//! minifb::Key → Set-1 扫描码映射。返回 (扫描码, 是否扩展键)。
use minifb::Key;
pub fn map(k: Key) -> Option<(u16, bool)> {
use Key::*;
Some(match k {
A => (0x1E, false),
B => (0x30, false),
C => (0x2E, false),
D => (0x20, false),
E => (0x12, false),
F => (0x21, false),
G => (0x22, false),
H => (0x23, false),
I => (0x17, false),
J => (0x24, false),
K => (0x25, false),
L => (0x26, false),
M => (0x32, false),
N => (0x31, false),
O => (0x18, false),
P => (0x19, false),
Q => (0x10, false),
R => (0x13, false),
S => (0x1F, false),
T => (0x14, false),
U => (0x16, false),
V => (0x2F, false),
W => (0x11, false),
X => (0x2D, false),
Y => (0x15, false),
Z => (0x2C, false),
Key1 => (0x02, false),
Key2 => (0x03, false),
Key3 => (0x04, false),
Key4 => (0x05, false),
Key5 => (0x06, false),
Key6 => (0x07, false),
Key7 => (0x08, false),
Key8 => (0x09, false),
Key9 => (0x0A, false),
Key0 => (0x0B, false),
Space => (0x39, false),
Enter => (0x1C, false),
Backspace => (0x0E, false),
Tab => (0x0F, false),
CapsLock => (0x3A, false),
Backquote => (0x29, false),
Minus => (0x0C, false),
Equal => (0x0D, false),
Backslash => (0x2B, false),
Comma => (0x33, false),
Period => (0x34, false),
Slash => (0x35, false),
Semicolon => (0x27, false),
Apostrophe => (0x28, false),
LeftShift => (0x2A, false),
LeftCtrl => (0x1D, false),
LeftAlt => (0x38, false),
LeftSuper => (0x5B, true),
Up => (0x48, true),
Down => (0x50, true),
Left => (0x4B, true),
Right => (0x4D, true),
Home => (0x47, true),
End => (0x4F, true),
Delete => (0x53, true),
PageUp => (0x49, true),
PageDown => (0x51, true),
_ => return None,
})
}