From b97df599c56cdf0e6d23db5b74d8ea552753dfe6 Mon Sep 17 00:00:00 2001 From: Kirill Chibisov Date: Wed, 28 Jun 2023 02:02:12 +0400 Subject: [PATCH] On Linux, fix wrong layout for key_without_modifiers The layout was hardcoded to zero, so the keys were sent for whatever user configured first. --- src/platform_impl/linux/common/xkb_state.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/platform_impl/linux/common/xkb_state.rs b/src/platform_impl/linux/common/xkb_state.rs index d31c5610..541c186d 100644 --- a/src/platform_impl/linux/common/xkb_state.rs +++ b/src/platform_impl/linux/common/xkb_state.rs @@ -524,10 +524,12 @@ impl<'a> KeyEventResults<'a> { // This will become a pointer to an array which libxkbcommon owns, so we don't need to deallocate it. let mut keysyms = ptr::null(); let keysym_count = unsafe { + let layout = (XKBH.xkb_state_key_get_layout)(self.state.xkb_state, self.keycode); (XKBH.xkb_keymap_key_get_syms_by_level)( self.state.xkb_keymap, self.keycode, - 0, + layout, + // NOTE: The level should be zero to ignore modifiers. 0, &mut keysyms, )