fix: Prevent system hang on double Caps Lock press

This commit is contained in:
ZeusCraft10 2025-12-26 12:03:06 -05:00 committed by Jacob Kauffmann
parent fdf015cbcf
commit 21679f215a

View file

@ -1774,11 +1774,15 @@ impl State {
&& handle.modified_sym() == Keysym::Caps_Lock && handle.modified_sym() == Keysym::Caps_Lock
&& (modifiers.serialized.locked & 2) != 0 && (modifiers.serialized.locked & 2) != 0
{ {
let seat = seat.clone();
let key_code = event.key_code();
self.common.event_loop_handle.insert_idle(move |state| {
if let Some(keyboard) = seat.get_keyboard() {
let serial = SERIAL_COUNTER.next_serial(); let serial = SERIAL_COUNTER.next_serial();
let time = self.common.clock.now().as_millis(); let time = state.common.clock.now().as_millis();
keyboard.input( keyboard.input(
self, state,
event.key_code(), key_code,
KeyState::Pressed, KeyState::Pressed,
serial, serial,
time, time,
@ -1786,14 +1790,16 @@ impl State {
); );
let serial = SERIAL_COUNTER.next_serial(); let serial = SERIAL_COUNTER.next_serial();
keyboard.input( keyboard.input(
self, state,
event.key_code(), key_code,
KeyState::Released, KeyState::Released,
serial, serial,
time, time,
|_, _, _| FilterResult::<()>::Forward, |_, _, _| FilterResult::<()>::Forward,
); );
} }
});
}
} else if event.state() == KeyState::Pressed } else if event.state() == KeyState::Pressed
&& self && self
.common .common