Preserve num lock state when loading custom keymap

This commit is contained in:
mgabor3141
2026-02-07 14:26:03 +01:00
committed by Ivan Molodetskikh
parent 74d2b18603
commit 8d583fe854
+12 -2
View File
@@ -1376,10 +1376,20 @@ impl State {
let keymap = std::fs::read_to_string(xkb_file).context("failed to read xkb_file")?;
let xkb = self.niri.seat.get_keyboard().unwrap();
xkb.set_keymap_from_string(self, keymap)
let keyboard = self.niri.seat.get_keyboard().unwrap();
let num_lock = keyboard.modifier_state().num_lock;
keyboard
.set_keymap_from_string(self, keymap)
.context("failed to set keymap")?;
// Restore num lock to its previous value.
let mut mods_state = keyboard.modifier_state();
if mods_state.num_lock != num_lock {
mods_state.num_lock = num_lock;
keyboard.set_modifier_state(mods_state);
}
Ok(())
}