diff --git a/app/tests/momentary-layer-lock/1-normal/events.patterns b/app/tests/momentary-layer-lock/1-normal/events.patterns new file mode 100644 index 00000000..a7191624 --- /dev/null +++ b/app/tests/momentary-layer-lock/1-normal/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*set_layer_state: layer_changed:/layer_changed:/p +s/.*mo_keymap_binding/mo/p \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/1-normal/keycode_events.snapshot b/app/tests/momentary-layer-lock/1-normal/keycode_events.snapshot new file mode 100644 index 00000000..4f7655be --- /dev/null +++ b/app/tests/momentary-layer-lock/1-normal/keycode_events.snapshot @@ -0,0 +1,5 @@ +mo_pressed: position 1 layer 1 +layer_changed: layer 1 state 1 +mo_released: position 1 layer 1 +kp_pressed: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 diff --git a/app/tests/momentary-layer-lock/1-normal/native_posix_64.keymap b/app/tests/momentary-layer-lock/1-normal/native_posix_64.keymap new file mode 100644 index 00000000..d53ebd7d --- /dev/null +++ b/app/tests/momentary-layer-lock/1-normal/native_posix_64.keymap @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include "../behavior_keymap.dtsi" + +&kscan { + events = < + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(1,0,10) + ZMK_MOCK_RELEASE(0,1,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/2-deactivate-locked/events.patterns b/app/tests/momentary-layer-lock/2-deactivate-locked/events.patterns new file mode 100644 index 00000000..a7191624 --- /dev/null +++ b/app/tests/momentary-layer-lock/2-deactivate-locked/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*set_layer_state: layer_changed:/layer_changed:/p +s/.*mo_keymap_binding/mo/p \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/2-deactivate-locked/keycode_events.snapshot b/app/tests/momentary-layer-lock/2-deactivate-locked/keycode_events.snapshot new file mode 100644 index 00000000..f204ceaf --- /dev/null +++ b/app/tests/momentary-layer-lock/2-deactivate-locked/keycode_events.snapshot @@ -0,0 +1,10 @@ +mo_pressed: position 1 layer 1 +layer_changed: layer 1 state 1 +mo_released: position 1 layer 1 +kp_pressed: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +mo_pressed: position 1 layer 1 +mo_released: position 1 layer 1 +layer_changed: layer 1 state 0 +kp_pressed: usage_page 0x07 keycode 0x27 implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x27 implicit_mods 0x00 explicit_mods 0x00 diff --git a/app/tests/momentary-layer-lock/2-deactivate-locked/native_posix_64.keymap b/app/tests/momentary-layer-lock/2-deactivate-locked/native_posix_64.keymap new file mode 100644 index 00000000..b9146f78 --- /dev/null +++ b/app/tests/momentary-layer-lock/2-deactivate-locked/native_posix_64.keymap @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include "../behavior_keymap.dtsi" + +&kscan { + events = < + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(1,0,10) + ZMK_MOCK_RELEASE(0,1,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_RELEASE(0,1,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/3-default-fallback/events.patterns b/app/tests/momentary-layer-lock/3-default-fallback/events.patterns new file mode 100644 index 00000000..a7191624 --- /dev/null +++ b/app/tests/momentary-layer-lock/3-default-fallback/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*set_layer_state: layer_changed:/layer_changed:/p +s/.*mo_keymap_binding/mo/p \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/3-default-fallback/keycode_events.snapshot b/app/tests/momentary-layer-lock/3-default-fallback/keycode_events.snapshot new file mode 100644 index 00000000..196fd278 --- /dev/null +++ b/app/tests/momentary-layer-lock/3-default-fallback/keycode_events.snapshot @@ -0,0 +1,9 @@ +mo_pressed: position 1 layer 1 +layer_changed: layer 1 state 1 +mo_released: position 1 layer 1 +kp_pressed: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +layer_changed: layer 1 state 0 +layer_changed: layer 0 state 1 +kp_pressed: usage_page 0x07 keycode 0x27 implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x27 implicit_mods 0x00 explicit_mods 0x00 diff --git a/app/tests/momentary-layer-lock/3-default-fallback/native_posix_64.keymap b/app/tests/momentary-layer-lock/3-default-fallback/native_posix_64.keymap new file mode 100644 index 00000000..c134cd19 --- /dev/null +++ b/app/tests/momentary-layer-lock/3-default-fallback/native_posix_64.keymap @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include "../behavior_keymap.dtsi" + +&kscan { + events = < + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(1,0,10) + ZMK_MOCK_RELEASE(0,1,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(1,0,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/4-relock/events.patterns b/app/tests/momentary-layer-lock/4-relock/events.patterns new file mode 100644 index 00000000..a7191624 --- /dev/null +++ b/app/tests/momentary-layer-lock/4-relock/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*set_layer_state: layer_changed:/layer_changed:/p +s/.*mo_keymap_binding/mo/p \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/4-relock/keycode_events.snapshot b/app/tests/momentary-layer-lock/4-relock/keycode_events.snapshot new file mode 100644 index 00000000..50a99eb8 --- /dev/null +++ b/app/tests/momentary-layer-lock/4-relock/keycode_events.snapshot @@ -0,0 +1,9 @@ +mo_pressed: position 1 layer 1 +layer_changed: layer 1 state 1 +mo_released: position 1 layer 1 +kp_pressed: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +mo_pressed: position 1 layer 1 +mo_released: position 1 layer 1 +kp_pressed: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 diff --git a/app/tests/momentary-layer-lock/4-relock/native_posix_64.keymap b/app/tests/momentary-layer-lock/4-relock/native_posix_64.keymap new file mode 100644 index 00000000..6575ddc8 --- /dev/null +++ b/app/tests/momentary-layer-lock/4-relock/native_posix_64.keymap @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include "../behavior_keymap.dtsi" + +&kscan { + events = < + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(1,0,10) + ZMK_MOCK_RELEASE(0,1,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_PRESS(1,0,10) + ZMK_MOCK_RELEASE(1,0,10) + ZMK_MOCK_RELEASE(0,1,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/5-custom/events.patterns b/app/tests/momentary-layer-lock/5-custom/events.patterns new file mode 100644 index 00000000..a7191624 --- /dev/null +++ b/app/tests/momentary-layer-lock/5-custom/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*set_layer_state: layer_changed:/layer_changed:/p +s/.*mo_keymap_binding/mo/p \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/5-custom/keycode_events.snapshot b/app/tests/momentary-layer-lock/5-custom/keycode_events.snapshot new file mode 100644 index 00000000..4f7655be --- /dev/null +++ b/app/tests/momentary-layer-lock/5-custom/keycode_events.snapshot @@ -0,0 +1,5 @@ +mo_pressed: position 1 layer 1 +layer_changed: layer 1 state 1 +mo_released: position 1 layer 1 +kp_pressed: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x1E implicit_mods 0x00 explicit_mods 0x00 diff --git a/app/tests/momentary-layer-lock/5-custom/native_posix_64.keymap b/app/tests/momentary-layer-lock/5-custom/native_posix_64.keymap new file mode 100644 index 00000000..bf942116 --- /dev/null +++ b/app/tests/momentary-layer-lock/5-custom/native_posix_64.keymap @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include "../behavior_keymap.dtsi" + +&kscan { + events = < + ZMK_MOCK_PRESS(0,1,10) + ZMK_MOCK_PRESS(1,1,10) + ZMK_MOCK_RELEASE(1,1,10) + ZMK_MOCK_RELEASE(0,1,10) + + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/6-custom-fallback/events.patterns b/app/tests/momentary-layer-lock/6-custom-fallback/events.patterns new file mode 100644 index 00000000..a7191624 --- /dev/null +++ b/app/tests/momentary-layer-lock/6-custom-fallback/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*set_layer_state: layer_changed:/layer_changed:/p +s/.*mo_keymap_binding/mo/p \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/6-custom-fallback/keycode_events.snapshot b/app/tests/momentary-layer-lock/6-custom-fallback/keycode_events.snapshot new file mode 100644 index 00000000..c96d1b4c --- /dev/null +++ b/app/tests/momentary-layer-lock/6-custom-fallback/keycode_events.snapshot @@ -0,0 +1,2 @@ +kp_pressed: usage_page 0x07 keycode 0x09 implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x09 implicit_mods 0x00 explicit_mods 0x00 diff --git a/app/tests/momentary-layer-lock/6-custom-fallback/native_posix_64.keymap b/app/tests/momentary-layer-lock/6-custom-fallback/native_posix_64.keymap new file mode 100644 index 00000000..f5e698bb --- /dev/null +++ b/app/tests/momentary-layer-lock/6-custom-fallback/native_posix_64.keymap @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include "../behavior_keymap.dtsi" + +&kscan { + events = < + ZMK_MOCK_PRESS(1,1,10) + ZMK_MOCK_RELEASE(1,1,10) + >; +}; \ No newline at end of file diff --git a/app/tests/momentary-layer-lock/behavior_keymap.dtsi b/app/tests/momentary-layer-lock/behavior_keymap.dtsi new file mode 100644 index 00000000..a3f6cf84 --- /dev/null +++ b/app/tests/momentary-layer-lock/behavior_keymap.dtsi @@ -0,0 +1,27 @@ +/ { + behaviors{ + kp_molock: kp_molock { + compatible = "zmk,behavior-momentary-layer-lock"; + label = "KP_MOLOCK"; + #binding-cells = <0>; + bindings = <&kp F>; + }; + }; + + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp N0 &mo 1 + &molock &kp_molock>; + }; + + layer_1 { + bindings = < + &kp N1 &trans + &trans &trans>; + }; + }; +};