summaryrefslogtreecommitdiff
path: root/app/src/behaviors/behavior_hid.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/behaviors/behavior_hid.c')
-rw-r--r--app/src/behaviors/behavior_hid.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/app/src/behaviors/behavior_hid.c b/app/src/behaviors/behavior_hid.c
index 1ac7404..b901450 100644
--- a/app/src/behaviors/behavior_hid.c
+++ b/app/src/behaviors/behavior_hid.c
@@ -13,18 +13,16 @@
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
+#include <zmk/event-manager.h>
+#include <zmk/events/keycode-state-changed.h>
#include <zmk/hid.h>
#include <zmk/endpoints.h>
struct behavior_hid_config { };
struct behavior_hid_data { };
-static int behavior_hid_init(struct device *dev)
-{
- return 0;
-};
-static int on_keycode_pressed(struct device *dev, u8_t usage_page, u32_t keycode)
+static int behaviour_hid_keycode_pressed(u8_t usage_page, u32_t keycode)
{
int err;
LOG_DBG("keycode %d", keycode);
@@ -49,7 +47,7 @@ static int on_keycode_pressed(struct device *dev, u8_t usage_page, u32_t keycode
return zmk_endpoints_send_report(usage_page);
}
-static int on_keycode_released(struct device *dev, u8_t usage_page, u32_t keycode)
+static int behaviour_hid_keycode_released(u8_t usage_page, u32_t keycode)
{
int err;
LOG_DBG("keycode %d", keycode);
@@ -73,6 +71,28 @@ static int on_keycode_released(struct device *dev, u8_t usage_page, u32_t keycod
return zmk_endpoints_send_report(usage_page);
}
+
+int behavior_hid_listener(const struct zmk_event_header *eh)
+{
+ if (is_keycode_state_changed(eh)) {
+ const struct keycode_state_changed *ev = cast_keycode_state_changed(eh);
+ if (ev->state) {
+ behaviour_hid_keycode_pressed(ev->usage_page, ev->keycode);
+ } else {
+ behaviour_hid_keycode_released(ev->usage_page, ev->keycode);
+ }
+ }
+ return 0;
+}
+
+ZMK_LISTENER(behavior_hid, behavior_hid_listener);
+ZMK_SUBSCRIPTION(behavior_hid, keycode_state_changed);
+
+static int behavior_hid_init(struct device *dev)
+{
+ return 0;
+};
+
static int on_modifiers_pressed(struct device *dev, zmk_mod_flags modifiers)
{
LOG_DBG("modifiers %d", modifiers);
@@ -90,13 +110,10 @@ static int on_modifiers_released(struct device *dev, zmk_mod_flags modifiers)
}
static const struct behavior_driver_api behavior_hid_driver_api = {
- .keycode_pressed = on_keycode_pressed,
- .keycode_released = on_keycode_released,
.modifiers_pressed = on_modifiers_pressed,
.modifiers_released = on_modifiers_released
};
-
static const struct behavior_hid_config behavior_hid_config = {};
static struct behavior_hid_data behavior_hid_data;