mirror of
https://github.com/wez/wezterm.git
synced 2024-09-20 11:17:15 +03:00
window: track phys_code on Windows
We don't do anything useful with it yet refs: https://github.com/wez/wezterm/issues/1483
This commit is contained in:
parent
d714c5d5b6
commit
45631389c3
133
window/src/os/windows/keycodes.rs
Normal file
133
window/src/os/windows/keycodes.rs
Normal file
@ -0,0 +1,133 @@
|
||||
use std::collections::HashMap;
|
||||
use wezterm_input_types::PhysKeyCode;
|
||||
use winapi::shared::minwindef::WPARAM;
|
||||
use winapi::um::winuser::*;
|
||||
|
||||
fn build_map() -> HashMap<WPARAM, PhysKeyCode> {
|
||||
[
|
||||
(0x41, PhysKeyCode::A),
|
||||
(0x53, PhysKeyCode::S),
|
||||
(0x44, PhysKeyCode::D),
|
||||
(0x46, PhysKeyCode::F),
|
||||
(0x48, PhysKeyCode::H),
|
||||
(0x47, PhysKeyCode::G),
|
||||
(0x5a, PhysKeyCode::Z),
|
||||
(0x58, PhysKeyCode::X),
|
||||
(0x43, PhysKeyCode::C),
|
||||
(0x56, PhysKeyCode::V),
|
||||
(0x42, PhysKeyCode::B),
|
||||
(0x51, PhysKeyCode::Q),
|
||||
(0x57, PhysKeyCode::W),
|
||||
(0x45, PhysKeyCode::E),
|
||||
(0x52, PhysKeyCode::R),
|
||||
(0x59, PhysKeyCode::Y),
|
||||
(0x54, PhysKeyCode::T),
|
||||
(0x31, PhysKeyCode::K1),
|
||||
(0x32, PhysKeyCode::K2),
|
||||
(0x33, PhysKeyCode::K3),
|
||||
(0x34, PhysKeyCode::K4),
|
||||
(0x36, PhysKeyCode::K6),
|
||||
(0x35, PhysKeyCode::K5),
|
||||
(VK_OEM_PLUS, PhysKeyCode::Equal),
|
||||
(0x39, PhysKeyCode::K9),
|
||||
(0x37, PhysKeyCode::K7),
|
||||
(VK_OEM_MINUS, PhysKeyCode::Minus),
|
||||
(0x38, PhysKeyCode::K8),
|
||||
(0x30, PhysKeyCode::K0),
|
||||
(VK_OEM_6, PhysKeyCode::RightBracket),
|
||||
(0x4f, PhysKeyCode::O),
|
||||
(0x55, PhysKeyCode::U),
|
||||
(VK_OEM_4, PhysKeyCode::LeftBracket),
|
||||
(0x49, PhysKeyCode::I),
|
||||
(0x50, PhysKeyCode::P),
|
||||
(0x4c, PhysKeyCode::L),
|
||||
(0x4a, PhysKeyCode::J),
|
||||
(VK_OEM_7, PhysKeyCode::Quote),
|
||||
(0x4b, PhysKeyCode::K),
|
||||
(VK_OEM_1, PhysKeyCode::Semicolon), // FIXME: OEM "can vary by keyboard!"
|
||||
(VK_OEM_5, PhysKeyCode::Backslash),
|
||||
(VK_OEM_COMMA, PhysKeyCode::Comma),
|
||||
(VK_OEM_2, PhysKeyCode::Slash),
|
||||
(0x4e, PhysKeyCode::N),
|
||||
(0x4d, PhysKeyCode::M),
|
||||
(VK_OEM_PERIOD, PhysKeyCode::Period),
|
||||
(VK_OEM_3, PhysKeyCode::Grave),
|
||||
(VK_DECIMAL, PhysKeyCode::KeypadDecimal),
|
||||
(VK_MULTIPLY, PhysKeyCode::KeypadMultiply),
|
||||
(VK_ADD, PhysKeyCode::KeypadPlus),
|
||||
(VK_CLEAR, PhysKeyCode::KeypadClear),
|
||||
(VK_DIVIDE, PhysKeyCode::KeypadDivide),
|
||||
// (kVK_ANSI_KeypadEnter, PhysKeyCode::KeypadEnter),
|
||||
(VK_SUBTRACT, PhysKeyCode::KeypadMinus),
|
||||
// (kVK_ANSI_KeypadEquals, PhysKeyCode::KeypadEquals),
|
||||
(VK_NUMPAD0, PhysKeyCode::Keypad0),
|
||||
(VK_NUMPAD1, PhysKeyCode::Keypad1),
|
||||
(VK_NUMPAD2, PhysKeyCode::Keypad2),
|
||||
(VK_NUMPAD3, PhysKeyCode::Keypad3),
|
||||
(VK_NUMPAD4, PhysKeyCode::Keypad4),
|
||||
(VK_NUMPAD5, PhysKeyCode::Keypad5),
|
||||
(VK_NUMPAD6, PhysKeyCode::Keypad6),
|
||||
(VK_NUMPAD7, PhysKeyCode::Keypad7),
|
||||
(VK_NUMPAD8, PhysKeyCode::Keypad8),
|
||||
(VK_NUMPAD9, PhysKeyCode::Keypad9),
|
||||
(VK_RETURN, PhysKeyCode::Return),
|
||||
(VK_TAB, PhysKeyCode::Tab),
|
||||
(VK_SPACE, PhysKeyCode::Space),
|
||||
(VK_BACK, PhysKeyCode::Delete),
|
||||
(VK_ESCAPE, PhysKeyCode::Escape),
|
||||
(VK_LWIN, PhysKeyCode::LeftWindows),
|
||||
(VK_LSHIFT, PhysKeyCode::LeftShift),
|
||||
(VK_CAPITAL, PhysKeyCode::CapsLock),
|
||||
(VK_LMENU, PhysKeyCode::LeftAlt),
|
||||
(VK_LCONTROL, PhysKeyCode::LeftControl),
|
||||
(VK_RWIN, PhysKeyCode::RightWindows),
|
||||
(VK_RSHIFT, PhysKeyCode::RightShift),
|
||||
(VK_RMENU, PhysKeyCode::RightAlt),
|
||||
(VK_RCONTROL, PhysKeyCode::RightControl),
|
||||
// (VK_Function, PhysKeyCode::Function),
|
||||
(VK_F17, PhysKeyCode::F17),
|
||||
(VK_VOLUME_UP, PhysKeyCode::VolumeUp),
|
||||
(VK_VOLUME_DOWN, PhysKeyCode::VolumeDown),
|
||||
(VK_VOLUME_MUTE, PhysKeyCode::Mute),
|
||||
(VK_F18, PhysKeyCode::F18),
|
||||
(VK_F19, PhysKeyCode::F19),
|
||||
(VK_F20, PhysKeyCode::F20),
|
||||
(VK_F5, PhysKeyCode::F5),
|
||||
(VK_F6, PhysKeyCode::F6),
|
||||
(VK_F7, PhysKeyCode::F7),
|
||||
(VK_F3, PhysKeyCode::F3),
|
||||
(VK_F8, PhysKeyCode::F8),
|
||||
(VK_F9, PhysKeyCode::F9),
|
||||
(VK_F11, PhysKeyCode::F11),
|
||||
(VK_F13, PhysKeyCode::F13),
|
||||
(VK_F16, PhysKeyCode::F16),
|
||||
(VK_F14, PhysKeyCode::F14),
|
||||
(VK_F10, PhysKeyCode::F10),
|
||||
(VK_F12, PhysKeyCode::F12),
|
||||
(VK_F15, PhysKeyCode::F15),
|
||||
(VK_HELP, PhysKeyCode::Help),
|
||||
(VK_HOME, PhysKeyCode::Home),
|
||||
(VK_PRIOR, PhysKeyCode::PageUp),
|
||||
(VK_DELETE, PhysKeyCode::ForwardDelete),
|
||||
(VK_F4, PhysKeyCode::F4),
|
||||
(VK_END, PhysKeyCode::End),
|
||||
(VK_F2, PhysKeyCode::F2),
|
||||
(VK_NEXT, PhysKeyCode::PageDown),
|
||||
(VK_F1, PhysKeyCode::F1),
|
||||
(VK_LEFT, PhysKeyCode::LeftArrow),
|
||||
(VK_RIGHT, PhysKeyCode::RightArrow),
|
||||
(VK_DOWN, PhysKeyCode::DownArrow),
|
||||
(VK_UP, PhysKeyCode::UpArrow),
|
||||
]
|
||||
.iter()
|
||||
.map(|&(k, v)| (k as WPARAM, v))
|
||||
.collect()
|
||||
}
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
static ref MAP: HashMap<WPARAM, PhysKeyCode> = build_map();
|
||||
}
|
||||
|
||||
pub fn vkey_to_phys(vkey: WPARAM) -> Option<PhysKeyCode> {
|
||||
MAP.get(&vkey).copied()
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
pub mod connection;
|
||||
pub mod event;
|
||||
mod keycodes;
|
||||
mod wgl;
|
||||
pub mod window;
|
||||
|
||||
|
@ -1856,7 +1856,7 @@ unsafe fn key(hwnd: HWND, msg: UINT, wparam: WPARAM, lparam: LPARAM) -> Option<L
|
||||
raw_key: None,
|
||||
raw_modifiers: Modifiers::NONE,
|
||||
raw_code: Some(wparam as u32),
|
||||
phys_code: None,
|
||||
phys_code: super::keycodes::vkey_to_phys(wparam),
|
||||
modifiers,
|
||||
repeat_count: 1,
|
||||
key_is_down: !releasing,
|
||||
@ -1959,7 +1959,7 @@ unsafe fn key(hwnd: HWND, msg: UINT, wparam: WPARAM, lparam: LPARAM) -> Option<L
|
||||
raw_key: if is_composed { raw } else { None },
|
||||
raw_modifiers,
|
||||
raw_code: Some(wparam as u32),
|
||||
phys_code: None,
|
||||
phys_code: super::keycodes::vkey_to_phys(wparam),
|
||||
modifiers,
|
||||
repeat_count: repeat,
|
||||
key_is_down: !releasing,
|
||||
|
Loading…
Reference in New Issue
Block a user