mirror of
https://github.com/labwc/labwc.git
synced 2026-04-16 08:21:26 -04:00
Add overrideInhibition to keyboard.keybind
This commit is contained in:
parent
8b32422b93
commit
7affc4d145
4 changed files with 15 additions and 3 deletions
|
|
@ -760,7 +760,8 @@ References:
|
|||
Stores the keyboard layout either globally or per window and restores
|
||||
it when switching back to the window. Default is global.
|
||||
|
||||
*<keyboard><keybind key="" layoutDependent="" onRelease="" allowWhenLocked="">*
|
||||
*<keyboard><keybind key="" layoutDependent="" onRelease="" allowWhenLocked=""
|
||||
overrideInhibition="">*
|
||||
Define a *key* binding in the format *modifier-key*, where supported
|
||||
modifiers are:
|
||||
- S (shift)
|
||||
|
|
@ -808,6 +809,11 @@ References:
|
|||
*allowWhenLocked* [yes|no]
|
||||
Make this keybind work even if the screen is locked. Default is no.
|
||||
|
||||
*overrideInhibition* [yes|no]
|
||||
Make this keybind work even if the view inhibits keybinds. Default is no.
|
||||
This can be used to prevent W-Tab and similar keybinds from being
|
||||
delivered to Virtual Machines, VNC clients or nested compositors.
|
||||
|
||||
*onRelease* [yes|no]
|
||||
When yes, fires the keybind action when the key or key
|
||||
combination is released, rather than first pressed. This is useful to
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ struct keybind {
|
|||
struct wl_list actions; /* struct action.link */
|
||||
struct wl_list link; /* struct rcxml.keybinds */
|
||||
bool on_release;
|
||||
bool override_inhibition;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -602,6 +602,7 @@ fill_keybind(xmlNode *node)
|
|||
lab_xml_get_bool(node, "onRelease", &keybind->on_release);
|
||||
lab_xml_get_bool(node, "layoutDependent", &keybind->use_syms_only);
|
||||
lab_xml_get_bool(node, "allowWhenLocked", &keybind->allow_when_locked);
|
||||
lab_xml_get_bool(node, "overrideInhibition", &keybind->override_inhibition);
|
||||
|
||||
append_parsed_actions(node, &keybind->actions);
|
||||
}
|
||||
|
|
@ -1706,6 +1707,8 @@ deduplicate_key_bindings(void)
|
|||
wl_list_remove(¤t->link);
|
||||
keybind_destroy(current);
|
||||
cleared++;
|
||||
} else if (actions_contain_toggle_keybinds(¤t->actions)) {
|
||||
current->override_inhibition = true;
|
||||
}
|
||||
}
|
||||
if (replaced) {
|
||||
|
|
|
|||
|
|
@ -203,9 +203,11 @@ match_keybinding_for_sym(uint32_t modifiers,
|
|||
if (modifiers ^ keybind->modifiers) {
|
||||
continue;
|
||||
}
|
||||
if (!(keybind->override_inhibition)) {
|
||||
if (view_inhibits_actions(server.active_view, &keybind->actions)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (sym == XKB_KEY_NoSymbol) {
|
||||
/* Use keycodes */
|
||||
if (keybind_contains_keycode(keybind, xkb_keycode)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue