diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2024-09-23 16:07:01 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2024-09-23 16:07:01 -0500 |
| commit | 2dea242e299bf9a8f48e9f52577e3e4ce78d9f6e (patch) | |
| tree | 924c09bf41465a7f7be7e8fe1c758712cd3758cc /include | |
| parent | 3f6dc0fbe10cd567ab04215da28c95db0fa212fe (diff) | |
input/keyboard: extend bindsym --to-code to work with duplicate matchesbindsym-tocode-dup-children
This modifies `get_active_binding` to treat bindsym --to-codes
separately: per each keysym `i` in `binding->keys`, look through the list of
matching keycodes in `binding->translations[i]`.
Another solution is to take the cartesian product of all syms and make a
binding per each product. This makes retranslation more difficult though
because the dups from the old layout have to be cleared out before
translating to the new `xkb_layout`. Whether by retaining a parent
binding, searching through all bindings for matching `binding->command`,
or some other ref count structure, that would introduce more complexity
than modifying get_active binding to account for dups. Notice this
requires no changes to the existing retranslation logic.
Diffstat (limited to 'include')
| -rw-r--r-- | include/sway/config.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/sway/config.h b/include/sway/config.h index 3c380933..399ed6a7 100644 --- a/include/sway/config.h +++ b/include/sway/config.h @@ -62,7 +62,7 @@ struct sway_binding { char *input; uint32_t flags; list_t *keys; // sorted in ascending order - list_t *syms; // sorted in ascending order; NULL if BINDING_CODE is not set + list_t **translations; // translations[i] = all keycodes for keysym keys[i] uint32_t modifiers; xkb_layout_index_t group; char *command; |
