summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2020-05-24 23:13:33 -0400
committerPete Johanson <peter@peterjohanson.com>2020-05-24 23:13:33 -0400
commit76a433fc392be31e56df256b630a21e61775d0af (patch)
tree6845d7cd69f18284ee47dc415930850ffffc6fd4
parent53aadc4f931a27d7b1350ea99cdc79106e138ad3 (diff)
Clean up and implement MT release w/o mod press.
-rw-r--r--boards/native_posix.overlay5
-rw-r--r--include/dt-bindings/zmk/keys.h1
-rw-r--r--src/endpoints.c3
-rw-r--r--src/handlers.c12
4 files changed, 14 insertions, 7 deletions
diff --git a/boards/native_posix.overlay b/boards/native_posix.overlay
index cd71191..1d692d4 100644
--- a/boards/native_posix.overlay
+++ b/boards/native_posix.overlay
@@ -13,7 +13,8 @@
rows = <2>;
columns = <2>;
- events = <ZMK_MOCK_PRESS(0,0,800) ZMK_MOCK_RELEASE(0,0,800)>;
+ events = <ZMK_MOCK_PRESS(0,1,300) ZMK_MOCK_PRESS(0,0,300) ZMK_MOCK_RELEASE(0,0,300) ZMK_MOCK_RELEASE(0,1,300)>;
+ // events = <ZMK_MOCK_PRESS(0,0,800) ZMK_MOCK_RELEASE(0,0,800) ZMK_MOCK_PRESS(0,1,800) ZMK_MOCK_RELEASE(0,1,800)>;
};
keymap0: keymap {
@@ -29,7 +30,7 @@
label = "DEFAULT";
keys =
<
- KC_A KC_B
+ KC_A MT(MOD_LSFT, KC_B)
KC_C KC_D
>;
};
diff --git a/include/dt-bindings/zmk/keys.h b/include/dt-bindings/zmk/keys.h
index 93b5ba3..c266de0 100644
--- a/include/dt-bindings/zmk/keys.h
+++ b/include/dt-bindings/zmk/keys.h
@@ -86,6 +86,7 @@
#define ZK_ACTION(k) (k >> 24)
#define _ACTION(a) (a << 24)
#define _ACTION_MODS(m) (m << 16)
+#define ZK_KEY(a) (a & 0xFFFF)
#define ZK_MODS(a) ((a >> 16) & 0xFF)
#define ZMK_ACTION_KEY 0x01
diff --git a/src/endpoints.c b/src/endpoints.c
index 3f2d576..668380a 100644
--- a/src/endpoints.c
+++ b/src/endpoints.c
@@ -56,9 +56,6 @@ int zmk_endpoints_send_report()
int zmk_endpoints_send_key_event(struct zmk_key_event key_event)
{
- struct zmk_hid_report *report;
- int err;
-
LOG_DBG("key %d, state %d\n", key_event.key, key_event.pressed);
if (key_event.pressed)
diff --git a/src/handlers.c b/src/handlers.c
index 8c463a9..ff969b1 100644
--- a/src/handlers.c
+++ b/src/handlers.c
@@ -32,8 +32,16 @@ bool zmk_handle_action(zmk_action action, struct zmk_key_event *key_event)
zmk_hid_unregister_mods(mods);
if (action_effect_pending & BIT(flattened_index))
{
- // Allow baseline keycode to flow to the endpoints!
- return true;
+ struct zmk_key_event non_mod_event =
+ {
+ .row = key_event->row,
+ .column = key_event->column,
+ .key = ZK_KEY(key_event->key),
+ .pressed = true};
+
+ zmk_handle_key(non_mod_event);
+ non_mod_event.pressed = false;
+ zmk_handle_key(non_mod_event);
}
else
{