summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/dt-bindings/zmk/keys.h27
-rw-r--r--include/zmk/endpoints.h1
-rw-r--r--include/zmk/hid.h4
-rw-r--r--include/zmk/keys.h6
-rw-r--r--include/zmk/kscan-mock.h2
5 files changed, 29 insertions, 11 deletions
diff --git a/include/dt-bindings/zmk/keys.h b/include/dt-bindings/zmk/keys.h
index 5a2d97a..93b5ba3 100644
--- a/include/dt-bindings/zmk/keys.h
+++ b/include/dt-bindings/zmk/keys.h
@@ -74,11 +74,22 @@
#define ZC_CSTM(n) (0xFF + n)
-#define MOD_LCTL 0x00
-#define MOD_LSFT 0x01
-#define MOD_LALT 0x02
-#define MOD_LGUI 0x03
-#define MOD_RCTL 0x04
-#define MOD_RSFT 0x05
-#define MOD_RALT 0x06
-#define MOD_RGUI 0x07 \ No newline at end of file
+#define MOD_LCTL (1 << 0x00)
+#define MOD_LSFT (1 << 0x01)
+#define MOD_LALT (1 << 0x02)
+#define MOD_LGUI (1 << 0x03)
+#define MOD_RCTL (1 << 0x04)
+#define MOD_RSFT (1 << 0x05)
+#define MOD_RALT (1 << 0x06)
+#define MOD_RGUI (1 << 0x07)
+
+#define ZK_ACTION(k) (k >> 24)
+#define _ACTION(a) (a << 24)
+#define _ACTION_MODS(m) (m << 16)
+#define ZK_MODS(a) ((a >> 16) & 0xFF)
+
+#define ZMK_ACTION_KEY 0x01
+#define ZMK_ACTION_MOD_TAP 0x01
+#define ZMK_ACTION_ONE_SHOT 0x02
+
+#define MT(mods, kc) (_ACTION(ZMK_ACTION_MOD_TAP) + _ACTION_MODS(mods) + kc)
diff --git a/include/zmk/endpoints.h b/include/zmk/endpoints.h
index 42734aa..666f00d 100644
--- a/include/zmk/endpoints.h
+++ b/include/zmk/endpoints.h
@@ -3,4 +3,5 @@
#include <zmk/keys.h>
int zmk_endpoints_init();
+int zmk_endpoints_send_report();
int zmk_endpoints_send_key_event(struct zmk_key_event key_event);
diff --git a/include/zmk/hid.h b/include/zmk/hid.h
index 8fbcf4f..3767b78 100644
--- a/include/zmk/hid.h
+++ b/include/zmk/hid.h
@@ -97,12 +97,14 @@ static const u8_t zmk_hid_report_desc[] = {
struct zmk_hid_report
{
- u8_t modifiers;
+ zmk_mod_flags modifiers;
u8_t keys[13];
} __packed;
int zmk_hid_register_mod(zmk_mod modifier);
int zmk_hid_unregister_mod(zmk_mod modifier);
+int zmk_hid_register_mods(zmk_mod_flags modifiers);
+int zmk_hid_unregister_mods(zmk_mod_flags modifiers);
int zmk_hid_press_key(zmk_key key);
int zmk_hid_release_key(zmk_key key);
diff --git a/include/zmk/keys.h b/include/zmk/keys.h
index be05784..6966bba 100644
--- a/include/zmk/keys.h
+++ b/include/zmk/keys.h
@@ -3,11 +3,15 @@
#include <zephyr.h>
#include <dt-bindings/zmk/keys.h>
-typedef u64_t zmk_key;
+typedef u32_t zmk_key;
+typedef u8_t zmk_action;
typedef u8_t zmk_mod;
+typedef u8_t zmk_mod_flags;
struct zmk_key_event
{
+ u32_t column;
+ u32_t row;
zmk_key key;
bool pressed;
}; \ No newline at end of file
diff --git a/include/zmk/kscan-mock.h b/include/zmk/kscan-mock.h
index b19cafb..d481899 100644
--- a/include/zmk/kscan-mock.h
+++ b/include/zmk/kscan-mock.h
@@ -1,6 +1,6 @@
#pragma once
-#define ZMK_MOCK_IS_PRESS(v) (v & (0x01 << 31))
+#define ZMK_MOCK_IS_PRESS(v) ((v & (0x01 << 31)) != 0)
#define ZMK_MOCK_PRESS(row, col, msec) (row + (col << 8) + (msec << 16) + (0x01 << 31))
#define ZMK_MOCK_RELEASE(row, col, msec) (row + (col << 8) + (msec << 16))
#define ZMK_MOCK_ROW(v) (v & 0xFF)