summaryrefslogtreecommitdiff
path: root/app/tests/momentary-layer/3-covered
diff options
context:
space:
mode:
authorOkke Formsma <okke@formsma.nl>2020-11-11 16:40:13 +0100
committerPete Johanson <peter@peterjohanson.com>2020-11-16 17:19:27 -0500
commite48a6b659c6da4afd56f2c3e3fa56d291ebf80e4 (patch)
treeb1d4d267a28feb380f7c28df76a006b3070a46fa /app/tests/momentary-layer/3-covered
parent2871dca9bfce2588e23da0905d7142ef5ff1c1a1 (diff)
fix momentary layer bug when top layer is not &trans
Key release events released keys on the wrong layer if the 'top layer' was not &trans above the &mo key. base <&mo 1> layer 1 <&kp B> This was caused by overwriting `zmk_keymap_active_behavior_layer[position]` after the &mo key was handled.
Diffstat (limited to 'app/tests/momentary-layer/3-covered')
-rw-r--r--app/tests/momentary-layer/3-covered/events.patterns3
-rw-r--r--app/tests/momentary-layer/3-covered/keycode_events.snapshot2
-rw-r--r--app/tests/momentary-layer/3-covered/native_posix.keymap33
3 files changed, 38 insertions, 0 deletions
diff --git a/app/tests/momentary-layer/3-covered/events.patterns b/app/tests/momentary-layer/3-covered/events.patterns
new file mode 100644
index 0000000..08b1e98
--- /dev/null
+++ b/app/tests/momentary-layer/3-covered/events.patterns
@@ -0,0 +1,3 @@
+s/.*hid_listener_keycode/kp/p
+s/.*mo_keymap_binding/mo/p
+s/.*keymap_position_state_changed/kp_st/p \ No newline at end of file
diff --git a/app/tests/momentary-layer/3-covered/keycode_events.snapshot b/app/tests/momentary-layer/3-covered/keycode_events.snapshot
new file mode 100644
index 0000000..87d1281
--- /dev/null
+++ b/app/tests/momentary-layer/3-covered/keycode_events.snapshot
@@ -0,0 +1,2 @@
+mo_pressed: position 1 layer 1
+mo_released: position 1 layer 1
diff --git a/app/tests/momentary-layer/3-covered/native_posix.keymap b/app/tests/momentary-layer/3-covered/native_posix.keymap
new file mode 100644
index 0000000..2484d8b
--- /dev/null
+++ b/app/tests/momentary-layer/3-covered/native_posix.keymap
@@ -0,0 +1,33 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+/*
+this test verifies that the correct key is released when a layer is enabled "on top"
+and the original key is "covered".
+*/
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &trans &mo 1
+ &trans &trans>;
+ };
+
+ layer_1 {
+ bindings = <
+ &trans &kp A
+ &trans &trans>;
+ };
+ };
+};
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ >;
+};