summaryrefslogtreecommitdiff
path: root/app/include/zmk/events/keycode_state_changed.h
diff options
context:
space:
mode:
authorinnovaker <66737976+innovaker@users.noreply.github.com>2020-12-22 15:56:00 +0000
committerPete Johanson <peter@peterjohanson.com>2020-12-28 01:15:35 -0500
commit842aa5a842e117b7b00e49258ca0bde44dc0c789 (patch)
tree5202f081b9af5480610645aa53eab11d45a09105 /app/include/zmk/events/keycode_state_changed.h
parent6927abee6ef0c604fae1c8544fc933a56be14e77 (diff)
refactor: replace filename hyphens with underscores
Aligns *.h and *.c to underscore naming convention. These were kept (with warnings) for backwards compatibility with external boards/shields: - kscan-mock.h - matrix-transform.h They should be removed in the future. PR: #523
Diffstat (limited to 'app/include/zmk/events/keycode_state_changed.h')
-rw-r--r--app/include/zmk/events/keycode_state_changed.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/app/include/zmk/events/keycode_state_changed.h b/app/include/zmk/events/keycode_state_changed.h
new file mode 100644
index 0000000..28282b6
--- /dev/null
+++ b/app/include/zmk/events/keycode_state_changed.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2020 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#pragma once
+
+#include <zephyr.h>
+#include <dt-bindings/zmk/modifiers.h>
+#include <dt-bindings/zmk/hid_usage_pages.h>
+#include <zmk/event_manager.h>
+#include <zmk/keys.h>
+
+struct keycode_state_changed {
+ struct zmk_event_header header;
+ uint8_t usage_page;
+ uint32_t keycode;
+ uint8_t implicit_modifiers;
+ bool state;
+ int64_t timestamp;
+};
+
+ZMK_EVENT_DECLARE(keycode_state_changed);
+
+static inline struct keycode_state_changed *
+keycode_state_changed_from_encoded(uint32_t encoded, bool pressed, int64_t timestamp) {
+ uint16_t page = HID_USAGE_PAGE(encoded) & 0xFF;
+ uint16_t id = HID_USAGE_ID(encoded);
+ zmk_mod_flags implicit_mods = SELECT_MODS(encoded);
+
+ if (!page) {
+ page = HID_USAGE_KEY;
+ }
+
+ struct keycode_state_changed *ev = new_keycode_state_changed();
+ ev->usage_page = page;
+ ev->keycode = id;
+ ev->implicit_modifiers = implicit_mods;
+ ev->state = pressed;
+ ev->timestamp = timestamp;
+ return ev;
+}