diff options
Diffstat (limited to 'app/include/zmk/event-manager.h')
-rw-r--r-- | app/include/zmk/event-manager.h | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/app/include/zmk/event-manager.h b/app/include/zmk/event-manager.h deleted file mode 100644 index 31c5322..0000000 --- a/app/include/zmk/event-manager.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2020 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -#pragma once - -#include <stddef.h> -#include <kernel.h> -#include <zephyr/types.h> - -struct zmk_event_type { - const char *name; -}; - -struct zmk_event_header { - const struct zmk_event_type *event; - uint8_t last_listener_index; -}; - -#define ZMK_EV_EVENT_HANDLED 1 -#define ZMK_EV_EVENT_CAPTURED 2 - -typedef int (*zmk_listener_callback_t)(const struct zmk_event_header *eh); -struct zmk_listener { - zmk_listener_callback_t callback; -}; - -struct zmk_event_subscription { - const struct zmk_event_type *event_type; - const struct zmk_listener *listener; -}; - -#define ZMK_EVENT_DECLARE(event_type) \ - struct event_type *new_##event_type(); \ - bool is_##event_type(const struct zmk_event_header *eh); \ - struct event_type *cast_##event_type(const struct zmk_event_header *eh); \ - extern const struct zmk_event_type zmk_event_##event_type; - -#define ZMK_EVENT_IMPL(event_type) \ - const struct zmk_event_type zmk_event_##event_type = {.name = STRINGIFY(event_type)}; \ - const struct zmk_event_type *zmk_event_ref_##event_type __used \ - __attribute__((__section__(".event_type"))) = &zmk_event_##event_type; \ - struct event_type *new_##event_type() { \ - struct event_type *ev = (struct event_type *)k_malloc(sizeof(struct event_type)); \ - ev->header.event = &zmk_event_##event_type; \ - return ev; \ - }; \ - bool is_##event_type(const struct zmk_event_header *eh) { \ - return eh->event == &zmk_event_##event_type; \ - }; \ - struct event_type *cast_##event_type(const struct zmk_event_header *eh) { \ - return (struct event_type *)eh; \ - }; - -#define ZMK_LISTENER(mod, cb) const struct zmk_listener zmk_listener_##mod = {.callback = cb}; - -#define ZMK_SUBSCRIPTION(mod, ev_type) \ - const Z_DECL_ALIGN(struct zmk_event_subscription) \ - _CONCAT(_CONCAT(zmk_event_sub_, mod), ev_type) __used \ - __attribute__((__section__(".event_subscription"))) = { \ - .event_type = &zmk_event_##ev_type, \ - .listener = &zmk_listener_##mod, \ - }; - -#define ZMK_EVENT_RAISE(ev) zmk_event_manager_raise((struct zmk_event_header *)ev); - -#define ZMK_EVENT_RAISE_AFTER(ev, mod) \ - zmk_event_manager_raise_after((struct zmk_event_header *)ev, &zmk_listener_##mod); - -#define ZMK_EVENT_RAISE_AT(ev, mod) \ - zmk_event_manager_raise_at((struct zmk_event_header *)ev, &zmk_listener_##mod); - -#define ZMK_EVENT_RELEASE(ev) zmk_event_manager_release((struct zmk_event_header *)ev); - -int zmk_event_manager_raise(struct zmk_event_header *event); -int zmk_event_manager_raise_after(struct zmk_event_header *event, - const struct zmk_listener *listener); -int zmk_event_manager_raise_at(struct zmk_event_header *event, const struct zmk_listener *listener); -int zmk_event_manager_release(struct zmk_event_header *event); |