summaryrefslogtreecommitdiff
path: root/app/src/event_manager.c
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2020-07-31 00:07:16 -0400
committerPete Johanson <peter@peterjohanson.com>2020-07-31 00:07:16 -0400
commitf548f2a87c670a2b56507bc104e1af39fa3846e7 (patch)
treee67f674281b03ec58c9c349cd1df497395b4cead /app/src/event_manager.c
parentf269b26ea1cdd61e39f13c6e11cbdfcdc6a0bd5c (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.c16
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);