From 155cc45051f602821bd805e3cb0b4ac24d8aa873 Mon Sep 17 00:00:00 2001 From: MoonlightWave-12 <135532-MoonlightWave-12@users.noreply.gitlab.gnome.org> Date: Tue, 15 Oct 2024 17:44:36 +0200 Subject: [PATCH] submission.rs: Restore active modifiers after changing keymaps and clear all modifiers when changing layouts. Fixes #373 Part-of: --- src/submission.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/submission.rs b/src/submission.rs index dddaa771..3a282fdb 100644 --- a/src/submission.rs +++ b/src/submission.rs @@ -296,10 +296,13 @@ impl Submission { fn select_keymap(&mut self, idx: usize, time: Timestamp) { if self.keymap_idx != Some(idx) { self.keymap_idx = Some(idx); + let modifiers = self.modifiers_active.clone(); self.clear_all_modifiers(); self.release_all_virtual_keys(time); let keymap = &self.keymap_fds[idx]; self.virtual_keyboard.update_keymap(keymap); + self.modifiers_active = modifiers; + self.update_modifiers(); } } @@ -316,5 +319,8 @@ impl Submission { // However, self.keymap_idx needs to become Option<> // in order to force update on new layouts. self.select_keymap(0, time); + + // Reset modifiers when changing layouts. + self.clear_all_modifiers(); } }