summaryrefslogtreecommitdiff
path: root/app/src/combo.c
AgeCommit message (Collapse)Author
2021-06-08fix(combos): Check each combo key, not just lastJonathan Rascher
The current combo completion check only makes sure the last key in the combo is set. This works when the combo is typed correctly initially, or when reraising events in a combo of length two. However, it fails for longer combos since the last event in pressed_keys might be set, but the first (or subsequent) event in pressed_keys can be NULL thanks to release_pressed_keys. Also added a regression test.
2021-03-11fix(combos): Fix stuck keys when pressing long combos.Okke Formsma
To properly retrigger hold-taps when a combo is not activated, some position down events are reraised instead of released. The corresponding position up events were never reraised, causing a potential stuck key.
2021-02-03Feat combo layers (#661)KemoNine
feat(combos): add layer filtering Co-authored-by: KemoNine <mcrosson@kemonine.info>
2021-01-20refactor(core): Combine `is_` and `cast_` event functions.Pete Johanson
* Use a single `as_foo` generated function to conditionally return a certain event type from a generic `zmk_event_t*` pointer.
2021-01-20refactor(core): Extra event payloads to own types, refactor API.Pete Johanson
* Make it easier to use *just* event payloads by defining the data, and then having event manager macros generate "wrapper structs" * Improve is_*/cast_* APIs to hide details of full event struct. * Create `zmk_event_t` typedef to pass to event handlers. * Bring event names inline w/ consistent `zmk_` prefix.
2021-01-13feat(combos): initial implementationOkke Formsma
closes #45