diff options
author | Pete Johanson <peter@peterjohanson.com> | 2020-07-31 00:07:16 -0400 |
---|---|---|
committer | Pete Johanson <peter@peterjohanson.com> | 2020-07-31 00:07:16 -0400 |
commit | f548f2a87c670a2b56507bc104e1af39fa3846e7 (patch) | |
tree | e67f674281b03ec58c9c349cd1df497395b4cead /app/src/event_manager.c | |
parent | f269b26ea1cdd61e39f13c6e11cbdfcdc6a0bd5c (diff) |
Initial stab at mod-tap improvements.
* Not working: Roll over + mod-tap with multiple
mod-tap bindings!
Diffstat (limited to 'app/src/event_manager.c')
-rw-r--r-- | app/src/event_manager.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/app/src/event_manager.c b/app/src/event_manager.c index 3edba10..5d2e9ed 100644 --- a/app/src/event_manager.c +++ b/app/src/event_manager.c @@ -55,6 +55,22 @@ int zmk_event_manager_raise(struct zmk_event_header *event) return zmk_event_manager_handle_from(event, 0); } +int zmk_event_manager_raise_after(struct zmk_event_header *event, const struct zmk_listener *listener) +{ + u8_t len = __event_subscriptions_end - __event_subscriptions_start; + for (int i = 0; i < len; i++) { + struct zmk_event_subscription *ev_sub = __event_subscriptions_start + i; + + if (ev_sub->event_type == event->event && ev_sub->listener == listener) { + return zmk_event_manager_handle_from(event, i+1); + } + } + + LOG_WRN("Unable to find where to raise this after event"); + + return -EINVAL; +} + int zmk_event_manager_release(struct zmk_event_header *event) { return zmk_event_manager_handle_from(event, event->last_listener_index + 1); |