diff --git a/app/src/combo.c b/app/src/combo.c index e24b510a..13ed1709 100644 --- a/app/src/combo.c +++ b/app/src/combo.c @@ -253,7 +253,7 @@ static int release_pressed_keys() { if (i == 0) { LOG_DBG("combo: releasing position event %d", as_zmk_position_state_changed(captured_event)->position); - ZMK_EVENT_RAISE_AFTER(captured_event, combo); + ZMK_EVENT_RELEASE(captured_event) } else { // reprocess events (see tests/combo/fully-overlapping-combos-3 for why this is needed) LOG_DBG("combo: reraising position event %d", diff --git a/app/src/event_manager.c b/app/src/event_manager.c index eef5d839..471432a8 100644 --- a/app/src/event_manager.c +++ b/app/src/event_manager.c @@ -25,6 +25,7 @@ int zmk_event_manager_handle_from(zmk_event_t *event, uint8_t start_index) { if (ev_sub->event_type != event->event) { continue; } + event->last_listener_index = i; ret = ev_sub->listener->callback(event); switch (ret) { case ZMK_EV_EVENT_BUBBLE: @@ -35,7 +36,6 @@ int zmk_event_manager_handle_from(zmk_event_t *event, uint8_t start_index) { goto release; case ZMK_EV_EVENT_CAPTURED: LOG_DBG("Listener captured the event"); - event->last_listener_index = i; // Listeners are expected to free events they capture return 0; default: