From f829a178f6303432d7cd4b0e2184ff36afbff4cd Mon Sep 17 00:00:00 2001 From: Junkui Zhang <364772080@qq.com> Date: Thu, 22 May 2025 14:42:04 +0800 Subject: [PATCH] fix group --- crates/gpui/src/platform/linux/keyboard.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/crates/gpui/src/platform/linux/keyboard.rs b/crates/gpui/src/platform/linux/keyboard.rs index 990967f6c59d6922f4f40e697e4d54b9c52926a6..c4239e2a390a5a07ef5b2605827f7258bbddd015 100644 --- a/crates/gpui/src/platform/linux/keyboard.rs +++ b/crates/gpui/src/platform/linux/keyboard.rs @@ -50,6 +50,7 @@ pub(crate) struct LinuxKeyboardMapper { #[cfg(any(feature = "wayland", feature = "x11"))] impl LinuxKeyboardMapper { pub(crate) fn new(group: Option) -> Self { + let group = group.unwrap_or(0); let _ = XCB_CONNECTION .xkb_use_extension(XKB_X11_MIN_MAJOR_XKB_VERSION, XKB_X11_MIN_MINOR_XKB_VERSION) .unwrap() @@ -66,6 +67,7 @@ impl LinuxKeyboardMapper { ); xkbcommon::xkb::x11::state_new_from_device(&xkb_keymap, &*XCB_CONNECTION, xkb_device_id) }; + xkb_state.update_mask(0, 0, 0, 0, 0, group); let mut letters = HashMap::default(); let mut code_to_key = HashMap::default(); @@ -76,12 +78,7 @@ impl LinuxKeyboardMapper { let mut shifted_state = xkbcommon::xkb::State::new(&keymap); let shift_mod = keymap.mod_get_index(xkbcommon::xkb::MOD_NAME_SHIFT); let shift_mask = 1 << shift_mod; - shifted_state.update_mask(shift_mask, 0, 0, 0, 0, 0); - - if let Some(group) = group { - xkb_state.update_mask(0, 0, 0, 0, 0, group); - shifted_state.update_mask(0, 0, 0, 0, 0, group); - } + shifted_state.update_mask(shift_mask, 0, 0, 0, 0, group); for scan_code in LinuxScanCodes::iter() { let keycode = Keycode::new(scan_code as u32);