summaryrefslogtreecommitdiff
path: root/app/src/event_manager.c
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2020-07-31 23:32:04 -0400
committerGitHub <noreply@github.com>2020-07-31 23:32:04 -0400
commit24ec83c234bb76b9a7f04678251723ba4918201e (patch)
tree62c9ef9b1411806c7baddb73bd83fefd8105cccf /app/src/event_manager.c
parentf269b26ea1cdd61e39f13c6e11cbdfcdc6a0bd5c (diff)
parent8a07938d9b03567ba11fc3e86a4fefb0ac098646 (diff)
Merge pull request #69 from petejohanson/behaviors/mod-tap-usability-fixes
Improve mod-tap behaviour
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);