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

@ -22,6 +22,8 @@ struct action *action_create(const char *action_name);
void action_arg_add_str(struct action *action, char *key, const char *value);
void action_arg_from_xml_node(struct action *action, char *nodename, char *content);
bool actions_contain_toggle_keybinds(struct wl_list *action_list);
void actions_run(struct view *activator, struct server *server,
struct wl_list *actions, uint32_t resize_edges);
void action_list_free(struct wl_list *action_list);

View file

@ -121,6 +121,9 @@ struct seat {
struct wlr_idle *wlr_idle;
struct wlr_idle_inhibit_manager_v1 *wlr_idle_inhibit_manager;
/* In support for ToggleKeybinds */
bool inhibit_keybinds;
/* Used to hide the workspace OSD after switching workspaces */
struct wl_event_source *workspace_osd_timer;
bool workspace_osd_shown_by_modifier;