make keybind handling much much safer

This commit is contained in:
Squibid 2025-10-26 22:52:05 -04:00
parent 78da941645
commit 3b6685c25f

View file

@ -77,7 +77,8 @@ fn handleKey(_: *wl.Listener(*wlr.Keyboard.event.Key), event: *wlr.Keyboard.even
var handled = false; var handled = false;
const modifiers = server.seat.keyboard_group.keyboard.getModifiers(); const modifiers = server.seat.keyboard_group.keyboard.getModifiers();
for (server.seat.keyboard_group.keyboard.xkb_state.?.keyGetSyms(keycode)) |sym| { if (server.seat.keyboard_group.keyboard.xkb_state) |xkb_state| {
for (xkb_state.keyGetSyms(keycode)) |sym| {
if (server.keymaps.get(Keymap.hash(modifiers, sym))) |map| { if (server.keymaps.get(Keymap.hash(modifiers, sym))) |map| {
if (event.state == .pressed and map.lua_press_ref_idx > 0) { if (event.state == .pressed and map.lua_press_ref_idx > 0) {
map.callback(false); map.callback(false);
@ -88,6 +89,7 @@ fn handleKey(_: *wl.Listener(*wlr.Keyboard.event.Key), event: *wlr.Keyboard.even
} }
} }
} }
}
if (!handled) { if (!handled) {
server.seat.wlr_seat.setKeyboard(&server.seat.keyboard_group.keyboard); server.seat.wlr_seat.setKeyboard(&server.seat.keyboard_group.keyboard);