From e48a6b659c6da4afd56f2c3e3fa56d291ebf80e4 Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Wed, 11 Nov 2020 16:40:13 +0100 Subject: 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. --- .../2-early-key-release/events.patterns | 2 ++ .../2-early-key-release/keycode_events.snapshot | 4 +++ .../2-early-key-release/native_posix.keymap | 32 ++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 app/tests/momentary-layer/2-early-key-release/events.patterns create mode 100644 app/tests/momentary-layer/2-early-key-release/keycode_events.snapshot create mode 100644 app/tests/momentary-layer/2-early-key-release/native_posix.keymap (limited to 'app/tests/momentary-layer/2-early-key-release') diff --git a/app/tests/momentary-layer/2-early-key-release/events.patterns b/app/tests/momentary-layer/2-early-key-release/events.patterns new file mode 100644 index 0000000..bd7b488 --- /dev/null +++ b/app/tests/momentary-layer/2-early-key-release/events.patterns @@ -0,0 +1,2 @@ +s/.*hid_listener_keycode/kp/p +s/.*mo_keymap_binding/mo/p \ No newline at end of file diff --git a/app/tests/momentary-layer/2-early-key-release/keycode_events.snapshot b/app/tests/momentary-layer/2-early-key-release/keycode_events.snapshot new file mode 100644 index 0000000..82ebc67 --- /dev/null +++ b/app/tests/momentary-layer/2-early-key-release/keycode_events.snapshot @@ -0,0 +1,4 @@ +kp_pressed: usage_page 0x07 keycode 0x05 mods 0x00 +mo_pressed: position 1 layer 1 +kp_released: usage_page 0x07 keycode 0x05 mods 0x00 +mo_released: position 1 layer 1 diff --git a/app/tests/momentary-layer/2-early-key-release/native_posix.keymap b/app/tests/momentary-layer/2-early-key-release/native_posix.keymap new file mode 100644 index 0000000..9ffa5f6 --- /dev/null +++ b/app/tests/momentary-layer/2-early-key-release/native_posix.keymap @@ -0,0 +1,32 @@ +#include +#include +#include +#include "../behavior_keymap.dtsi" + +/ { + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp B &mo 1 + &none &none>; + }; + + layer_1 { + bindings = < + &kp C &none + &none &none>; + }; + }; +}; + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_RELEASE(0,0,10) + ZMK_MOCK_RELEASE(0,1,10) + >; +}; \ No newline at end of file -- cgit v1.2.3