mirror of
https://github.com/wez/wezterm.git
synced 2024-09-20 11:17:15 +03:00
window: track phys_code on macos
We don't do anything useful with it yet refs: https://github.com/wez/wezterm/issues/1483
This commit is contained in:
parent
b15907f61f
commit
d714c5d5b6
@ -509,6 +509,9 @@ pub struct KeyEvent {
|
||||
pub raw_modifiers: Modifiers,
|
||||
pub raw_code: Option<u32>,
|
||||
|
||||
/// The physical location of the key on an ANSI-Standard US layout
|
||||
pub phys_code: Option<PhysKeyCode>,
|
||||
|
||||
/// How many times this key repeats
|
||||
pub repeat_count: u16,
|
||||
|
||||
|
@ -1,5 +1,137 @@
|
||||
#![allow(non_upper_case_globals)]
|
||||
#![allow(dead_code)]
|
||||
use std::collections::HashMap;
|
||||
use wezterm_input_types::PhysKeyCode;
|
||||
|
||||
fn build_map() -> HashMap<u16, PhysKeyCode> {
|
||||
[
|
||||
(kVK_ANSI_A, PhysKeyCode::A),
|
||||
(kVK_ANSI_S, PhysKeyCode::S),
|
||||
(kVK_ANSI_D, PhysKeyCode::D),
|
||||
(kVK_ANSI_F, PhysKeyCode::F),
|
||||
(kVK_ANSI_H, PhysKeyCode::H),
|
||||
(kVK_ANSI_G, PhysKeyCode::G),
|
||||
(kVK_ANSI_Z, PhysKeyCode::Z),
|
||||
(kVK_ANSI_X, PhysKeyCode::X),
|
||||
(kVK_ANSI_C, PhysKeyCode::C),
|
||||
(kVK_ANSI_V, PhysKeyCode::V),
|
||||
(kVK_ANSI_B, PhysKeyCode::B),
|
||||
(kVK_ANSI_Q, PhysKeyCode::Q),
|
||||
(kVK_ANSI_W, PhysKeyCode::W),
|
||||
(kVK_ANSI_E, PhysKeyCode::E),
|
||||
(kVK_ANSI_R, PhysKeyCode::R),
|
||||
(kVK_ANSI_Y, PhysKeyCode::Y),
|
||||
(kVK_ANSI_T, PhysKeyCode::T),
|
||||
(kVK_ANSI_1, PhysKeyCode::K1),
|
||||
(kVK_ANSI_2, PhysKeyCode::K2),
|
||||
(kVK_ANSI_3, PhysKeyCode::K3),
|
||||
(kVK_ANSI_4, PhysKeyCode::K4),
|
||||
(kVK_ANSI_6, PhysKeyCode::K6),
|
||||
(kVK_ANSI_5, PhysKeyCode::K5),
|
||||
(kVK_ANSI_Equal, PhysKeyCode::Equal),
|
||||
(kVK_ANSI_9, PhysKeyCode::K9),
|
||||
(kVK_ANSI_7, PhysKeyCode::K7),
|
||||
(kVK_ANSI_Minus, PhysKeyCode::Minus),
|
||||
(kVK_ANSI_8, PhysKeyCode::K8),
|
||||
(kVK_ANSI_0, PhysKeyCode::K0),
|
||||
(kVK_ANSI_RightBracket, PhysKeyCode::RightBracket),
|
||||
(kVK_ANSI_O, PhysKeyCode::O),
|
||||
(kVK_ANSI_U, PhysKeyCode::U),
|
||||
(kVK_ANSI_LeftBracket, PhysKeyCode::LeftBracket),
|
||||
(kVK_ANSI_I, PhysKeyCode::I),
|
||||
(kVK_ANSI_P, PhysKeyCode::P),
|
||||
(kVK_ANSI_L, PhysKeyCode::L),
|
||||
(kVK_ANSI_J, PhysKeyCode::J),
|
||||
(kVK_ANSI_Quote, PhysKeyCode::Quote),
|
||||
(kVK_ANSI_K, PhysKeyCode::K),
|
||||
(kVK_ANSI_Semicolon, PhysKeyCode::Semicolon),
|
||||
(kVK_ANSI_Backslash, PhysKeyCode::Backslash),
|
||||
(kVK_ANSI_Comma, PhysKeyCode::Comma),
|
||||
(kVK_ANSI_Slash, PhysKeyCode::Slash),
|
||||
(kVK_ANSI_N, PhysKeyCode::N),
|
||||
(kVK_ANSI_M, PhysKeyCode::M),
|
||||
(kVK_ANSI_Period, PhysKeyCode::Period),
|
||||
(kVK_ANSI_Grave, PhysKeyCode::Grave),
|
||||
(kVK_ANSI_KeypadDecimal, PhysKeyCode::KeypadDecimal),
|
||||
(kVK_ANSI_KeypadMultiply, PhysKeyCode::KeypadMultiply),
|
||||
(kVK_ANSI_KeypadPlus, PhysKeyCode::KeypadPlus),
|
||||
(kVK_ANSI_KeypadClear, PhysKeyCode::KeypadClear),
|
||||
(kVK_ANSI_KeypadDivide, PhysKeyCode::KeypadDivide),
|
||||
(kVK_ANSI_KeypadEnter, PhysKeyCode::KeypadEnter),
|
||||
(kVK_ANSI_KeypadMinus, PhysKeyCode::KeypadMinus),
|
||||
(kVK_ANSI_KeypadEquals, PhysKeyCode::KeypadEquals),
|
||||
(kVK_ANSI_Keypad0, PhysKeyCode::Keypad0),
|
||||
(kVK_ANSI_Keypad1, PhysKeyCode::Keypad1),
|
||||
(kVK_ANSI_Keypad2, PhysKeyCode::Keypad2),
|
||||
(kVK_ANSI_Keypad3, PhysKeyCode::Keypad3),
|
||||
(kVK_ANSI_Keypad4, PhysKeyCode::Keypad4),
|
||||
(kVK_ANSI_Keypad5, PhysKeyCode::Keypad5),
|
||||
(kVK_ANSI_Keypad6, PhysKeyCode::Keypad6),
|
||||
(kVK_ANSI_Keypad7, PhysKeyCode::Keypad7),
|
||||
(kVK_ANSI_Keypad8, PhysKeyCode::Keypad8),
|
||||
(kVK_ANSI_Keypad9, PhysKeyCode::Keypad9),
|
||||
(kVK_Return, PhysKeyCode::Return),
|
||||
(kVK_Tab, PhysKeyCode::Tab),
|
||||
(kVK_Space, PhysKeyCode::Space),
|
||||
(kVK_Delete, PhysKeyCode::Delete),
|
||||
(kVK_Escape, PhysKeyCode::Escape),
|
||||
(kVK_Command, PhysKeyCode::LeftWindows),
|
||||
(kVK_Shift, PhysKeyCode::LeftShift),
|
||||
(kVK_CapsLock, PhysKeyCode::CapsLock),
|
||||
(kVK_Option, PhysKeyCode::LeftAlt),
|
||||
(kVK_Control, PhysKeyCode::LeftControl),
|
||||
(kVK_RightCommand, PhysKeyCode::RightWindows),
|
||||
(kVK_RightShift, PhysKeyCode::RightShift),
|
||||
(kVK_RightOption, PhysKeyCode::RightAlt),
|
||||
(kVK_RightControl, PhysKeyCode::RightControl),
|
||||
(kVK_Function, PhysKeyCode::Function),
|
||||
(kVK_F17, PhysKeyCode::F17),
|
||||
(kVK_VolumeUp, PhysKeyCode::VolumeUp),
|
||||
(kVK_VolumeDown, PhysKeyCode::VolumeDown),
|
||||
(kVK_Mute, PhysKeyCode::Mute),
|
||||
(kVK_F18, PhysKeyCode::F18),
|
||||
(kVK_F19, PhysKeyCode::F19),
|
||||
(kVK_F20, PhysKeyCode::F20),
|
||||
(kVK_F5, PhysKeyCode::F5),
|
||||
(kVK_F6, PhysKeyCode::F6),
|
||||
(kVK_F7, PhysKeyCode::F7),
|
||||
(kVK_F3, PhysKeyCode::F3),
|
||||
(kVK_F8, PhysKeyCode::F8),
|
||||
(kVK_F9, PhysKeyCode::F9),
|
||||
(kVK_F11, PhysKeyCode::F11),
|
||||
(kVK_F13, PhysKeyCode::F13),
|
||||
(kVK_F16, PhysKeyCode::F16),
|
||||
(kVK_F14, PhysKeyCode::F14),
|
||||
(kVK_F10, PhysKeyCode::F10),
|
||||
(kVK_F12, PhysKeyCode::F12),
|
||||
(kVK_F15, PhysKeyCode::F15),
|
||||
(kVK_Help, PhysKeyCode::Help),
|
||||
(kVK_Home, PhysKeyCode::Home),
|
||||
(kVK_PageUp, PhysKeyCode::PageUp),
|
||||
(kVK_ForwardDelete, PhysKeyCode::ForwardDelete),
|
||||
(kVK_F4, PhysKeyCode::F4),
|
||||
(kVK_End, PhysKeyCode::End),
|
||||
(kVK_F2, PhysKeyCode::F2),
|
||||
(kVK_PageDown, PhysKeyCode::PageDown),
|
||||
(kVK_F1, PhysKeyCode::F1),
|
||||
(kVK_LeftArrow, PhysKeyCode::LeftArrow),
|
||||
(kVK_RightArrow, PhysKeyCode::RightArrow),
|
||||
(kVK_DownArrow, PhysKeyCode::DownArrow),
|
||||
(kVK_UpArrow, PhysKeyCode::UpArrow),
|
||||
]
|
||||
.iter()
|
||||
.map(|&tuple| tuple)
|
||||
.collect()
|
||||
}
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
static ref MAP: HashMap<u16, PhysKeyCode> = build_map();
|
||||
}
|
||||
|
||||
pub fn vkey_to_phys(vkey: u16) -> Option<PhysKeyCode> {
|
||||
MAP.get(&vkey).copied()
|
||||
}
|
||||
|
||||
pub const kVK_ANSI_A: u16 = 0x00;
|
||||
pub const kVK_ANSI_S: u16 = 0x01;
|
||||
pub const kVK_ANSI_D: u16 = 0x02;
|
||||
|
@ -1389,6 +1389,7 @@ impl WindowView {
|
||||
modifiers,
|
||||
raw_modifiers: Modifiers::NONE,
|
||||
raw_code: None,
|
||||
phys_code: None,
|
||||
repeat_count: 1,
|
||||
key_is_down: true,
|
||||
}
|
||||
@ -1444,6 +1445,7 @@ impl WindowView {
|
||||
modifiers: Modifiers::NONE,
|
||||
raw_modifiers: Modifiers::NONE,
|
||||
raw_code: None,
|
||||
phys_code: None,
|
||||
repeat_count: 1,
|
||||
key_is_down,
|
||||
}
|
||||
@ -1949,6 +1951,7 @@ impl WindowView {
|
||||
modifiers,
|
||||
raw_modifiers,
|
||||
raw_code: Some(virtual_key as u32),
|
||||
phys_code: super::keycodes::vkey_to_phys(virtual_key),
|
||||
repeat_count: 1,
|
||||
key_is_down,
|
||||
}
|
||||
|
@ -1300,6 +1300,7 @@ unsafe fn ime_composition(
|
||||
raw_key: None,
|
||||
raw_modifiers: Modifiers::NONE,
|
||||
raw_code: None,
|
||||
phys_code: None,
|
||||
modifiers: Modifiers::NONE,
|
||||
repeat_count: 1,
|
||||
key_is_down: true,
|
||||
@ -1855,6 +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,
|
||||
modifiers,
|
||||
repeat_count: 1,
|
||||
key_is_down: !releasing,
|
||||
@ -1957,6 +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,
|
||||
modifiers,
|
||||
repeat_count: repeat,
|
||||
key_is_down: !releasing,
|
||||
|
@ -197,6 +197,7 @@ impl Keyboard {
|
||||
raw_key: None,
|
||||
raw_modifiers,
|
||||
raw_code: Some(xcode),
|
||||
phys_code: None,
|
||||
repeat_count: 1,
|
||||
key_is_down: pressed,
|
||||
})
|
||||
|
@ -428,6 +428,7 @@ impl XWindowInner {
|
||||
raw_key: None,
|
||||
raw_modifiers: Modifiers::NONE,
|
||||
raw_code: None,
|
||||
phys_code: None,
|
||||
modifiers: Modifiers::NONE,
|
||||
repeat_count: 1,
|
||||
key_is_down: true,
|
||||
|
Loading…
Reference in New Issue
Block a user