Add ToggleKeybinds action

This can be used to better control Virtual Machines, VNC clients, nested
compositors or similar. All keybinds other than ToggleKeybinds itself are
disabled when first called, a 2nd call will restore handling of all keybinds.

Fixes #738
Fixes #810
This commit is contained in:
Consolatis 2023-03-03 18:16:46 +01:00 committed by Johan Malm
parent d571b0b28a
commit c33a404dc1
5 changed files with 35 additions and 1 deletions

View file

@ -86,6 +86,10 @@ handle_keybinding(struct server *server, uint32_t modifiers, xkb_keysym_t sym)
if (modifiers ^ keybind->modifiers) {
continue;
}
if (server->seat.inhibit_keybinds
&& !actions_contain_toggle_keybinds(&keybind->actions)) {
continue;
}
for (size_t i = 0; i < keybind->keysyms_len; i++) {
if (xkb_keysym_to_lower(sym) == keybind->keysyms[i]) {
key_state_store_pressed_keys_as_bound();