diff options
| author | Jonathan Rascher <jon@bcat.name> | 2021-10-02 01:15:21 -0400 | 
|---|---|---|
| committer | Pete Johanson <peter@peterjohanson.com> | 2021-11-15 05:49:23 -0500 | 
| commit | 30ed2375335acf47da0216c6832ecfd30ea7097c (patch) | |
| tree | 3afce67c523eab8f9e73b95c0adc6237f8f057a2 | |
| parent | 6cd1734851c31884cdf14b40fddc5a9df273b296 (diff) | |
test(conditional-layers): Add tests for edge cases
6 files changed, 155 insertions, 0 deletions
| diff --git a/app/tests/conditional-layer/chained-activation/events.patterns b/app/tests/conditional-layer/chained-activation/events.patterns new file mode 100644 index 0000000..14ded79 --- /dev/null +++ b/app/tests/conditional-layer/chained-activation/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*mo_keymap_binding/mo/p +s/.*conditional_layer/cl/p diff --git a/app/tests/conditional-layer/chained-activation/keycode_events.snapshot b/app/tests/conditional-layer/chained-activation/keycode_events.snapshot new file mode 100644 index 0000000..422b075 --- /dev/null +++ b/app/tests/conditional-layer/chained-activation/keycode_events.snapshot @@ -0,0 +1,10 @@ +mo_pressed: position 2 layer 1 +mo_pressed: position 3 layer 2 +cl_activate: layer 3 +cl_activate: layer 4 +kp_pressed: usage_page 0x07 keycode 0x0c implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x0c implicit_mods 0x00 explicit_mods 0x00 +mo_released: position 3 layer 2 +cl_deactivate: layer 3 +cl_deactivate: layer 4 +mo_released: position 2 layer 1 diff --git a/app/tests/conditional-layer/chained-activation/native_posix.keymap b/app/tests/conditional-layer/chained-activation/native_posix.keymap new file mode 100644 index 0000000..d799cc5 --- /dev/null +++ b/app/tests/conditional-layer/chained-activation/native_posix.keymap @@ -0,0 +1,62 @@ +#include <behaviors.dtsi> +#include <dt-bindings/zmk/keys.h> +#include <dt-bindings/zmk/kscan_mock.h> + +/ { +    conditional_layers { +        compatible = "zmk,conditional-layers"; +        conditional_layer_1 { +            if-layers = <1 2>; +            then-layer = <3>; +        }; +        conditional_layer_2 { +            if-layers = <1 3>; +            then-layer = <4>; +        }; +    }; + +    keymap { +        compatible = "zmk,keymap"; +        default_layer { +            bindings = < +                &kp A &kp B +                &mo 1 &mo 2 +            >; +        }; +        layer_1 { +            bindings = < +                &kp C &kp D +                &trans &trans +            >; +        }; +        layer_2 { +            bindings = < +                &kp E &kp F +                &trans &trans +            >; +        }; +        layer_3 { +            bindings = < +                &kp G &kp H +                &trans &trans +            >; +        }; +        layer_4 { +            bindings = < +                &kp I &kp J +                &trans &trans +            >; +        }; +    }; +}; + +&kscan { +    events = < +        ZMK_MOCK_PRESS(1,0,10) +        ZMK_MOCK_PRESS(1,1,10) +        ZMK_MOCK_PRESS(0,0,10) +        ZMK_MOCK_RELEASE(0,0,10) +        ZMK_MOCK_RELEASE(1,1,10) +        ZMK_MOCK_RELEASE(1,0,10) +    >; +}; diff --git a/app/tests/conditional-layer/mo-overlap/events.patterns b/app/tests/conditional-layer/mo-overlap/events.patterns new file mode 100644 index 0000000..14ded79 --- /dev/null +++ b/app/tests/conditional-layer/mo-overlap/events.patterns @@ -0,0 +1,3 @@ +s/.*hid_listener_keycode/kp/p +s/.*mo_keymap_binding/mo/p +s/.*conditional_layer/cl/p diff --git a/app/tests/conditional-layer/mo-overlap/keycode_events.snapshot b/app/tests/conditional-layer/mo-overlap/keycode_events.snapshot new file mode 100644 index 0000000..0200d8d --- /dev/null +++ b/app/tests/conditional-layer/mo-overlap/keycode_events.snapshot @@ -0,0 +1,17 @@ +mo_pressed: position 1 layer 3 +cl_deactivate: layer 3 +kp_pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 +mo_pressed: position 2 layer 1 +mo_pressed: position 3 layer 2 +cl_activate: layer 3 +kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00 +mo_released: position 3 layer 2 +cl_deactivate: layer 3 +mo_released: position 2 layer 1 +kp_pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 +mo_released: position 1 layer 3 +kp_pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 +kp_released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 diff --git a/app/tests/conditional-layer/mo-overlap/native_posix.keymap b/app/tests/conditional-layer/mo-overlap/native_posix.keymap new file mode 100644 index 0000000..1518fc8 --- /dev/null +++ b/app/tests/conditional-layer/mo-overlap/native_posix.keymap @@ -0,0 +1,60 @@ +#include <behaviors.dtsi> +#include <dt-bindings/zmk/keys.h> +#include <dt-bindings/zmk/kscan_mock.h> + +/ { +    conditional_layers { +        compatible = "zmk,conditional-layers"; +        tri_layer { +            if-layers = <1 2>; +            then-layer = <3>; +        }; +    }; + +    keymap { +        compatible = "zmk,keymap"; +        default_layer { +            bindings = < +                &kp A &mo 3 +                &mo 1 &mo 2 +            >; +        }; +        layer_1 { +            bindings = < +                &kp B &trans +                &trans &trans +            >; +        }; +        layer_2 { +            bindings = < +                &kp C &trans +                &trans &trans +            >; +        }; +        layer_3 { +            bindings = < +                &kp D &trans +                &trans &trans +            >; +        }; +    }; +}; + +&kscan { +    events = < +        ZMK_MOCK_PRESS(0,1,10) +        ZMK_MOCK_PRESS(0,0,10) +        ZMK_MOCK_RELEASE(0,0,10) +        ZMK_MOCK_PRESS(1,0,10) +        ZMK_MOCK_PRESS(1,1,10) +        ZMK_MOCK_PRESS(0,0,10) +        ZMK_MOCK_RELEASE(0,0,10) +        ZMK_MOCK_RELEASE(1,1,10) +        ZMK_MOCK_RELEASE(1,0,10) +        ZMK_MOCK_PRESS(0,0,10) +        ZMK_MOCK_RELEASE(0,0,10) +        ZMK_MOCK_RELEASE(0,1,10) +        ZMK_MOCK_PRESS(0,0,10) +        ZMK_MOCK_RELEASE(0,0,10) +    >; +}; | 
