aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2024-09-23 16:07:01 -0500
committerFurkan Sahin <furkan-dev@proton.me>2024-09-23 16:07:01 -0500
commit2dea242e299bf9a8f48e9f52577e3e4ce78d9f6e (patch)
tree924c09bf41465a7f7be7e8fe1c758712cd3758cc /include
parent3f6dc0fbe10cd567ab04215da28c95db0fa212fe (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.h2
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;