summaryrefslogtreecommitdiff
path: root/app/tests
diff options
context:
space:
mode:
authorKemoNine <mcrosson@users.noreply.github.com>2021-02-03 23:33:09 -0500
committerGitHub <noreply@github.com>2021-02-03 23:33:09 -0500
commitcd503ed17bb141bd54a777a375b5706acf884318 (patch)
tree2e9095fad05e8eb0d0545e0a662aca2d6b3084f6 /app/tests
parent9205ea1c705504844ad3b9e31d6fbd437cb76aba (diff)
Feat combo layers (#661)
feat(combos): add layer filtering Co-authored-by: KemoNine <mcrosson@kemonine.info>
Diffstat (limited to 'app/tests')
-rw-r--r--app/tests/combo/layer-filter-0/events.patterns2
-rw-r--r--app/tests/combo/layer-filter-0/keycode_events.snapshot8
-rw-r--r--app/tests/combo/layer-filter-0/native_posix.keymap78
-rw-r--r--app/tests/combo/layer-filter-1/events.patterns2
-rw-r--r--app/tests/combo/layer-filter-1/keycode_events.snapshot4
-rw-r--r--app/tests/combo/layer-filter-1/native_posix.keymap40
6 files changed, 134 insertions, 0 deletions
diff --git a/app/tests/combo/layer-filter-0/events.patterns b/app/tests/combo/layer-filter-0/events.patterns
new file mode 100644
index 0000000..b90d786
--- /dev/null
+++ b/app/tests/combo/layer-filter-0/events.patterns
@@ -0,0 +1,2 @@
+s/.*hid_listener_keycode_//p
+s/.*combo//p \ No newline at end of file
diff --git a/app/tests/combo/layer-filter-0/keycode_events.snapshot b/app/tests/combo/layer-filter-0/keycode_events.snapshot
new file mode 100644
index 0000000..f845fd1
--- /dev/null
+++ b/app/tests/combo/layer-filter-0/keycode_events.snapshot
@@ -0,0 +1,8 @@
+pressed: usage_page 0x07 keycode 0x1b implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x1b implicit_mods 0x00 explicit_mods 0x00
+pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
+pressed: usage_page 0x07 keycode 0x1c implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x1c implicit_mods 0x00 explicit_mods 0x00
+pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
diff --git a/app/tests/combo/layer-filter-0/native_posix.keymap b/app/tests/combo/layer-filter-0/native_posix.keymap
new file mode 100644
index 0000000..aac330f
--- /dev/null
+++ b/app/tests/combo/layer-filter-0/native_posix.keymap
@@ -0,0 +1,78 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+/* it is useful to set timeout to a large value when attaching a debugger. */
+#define TIMEOUT (60*60*1000)
+
+/ {
+ combos {
+ compatible = "zmk,combos";
+ combo_one {
+ timeout-ms = <TIMEOUT>;
+ key-positions = <0 1>;
+ bindings = <&kp X>;
+ layers = <0>;
+ };
+
+ combo_two {
+ timeout-ms = <TIMEOUT>;
+ key-positions = <0 1>;
+ bindings = <&kp Y>;
+ layers = <1>;
+ };
+
+ combo_three {
+ timeout-ms = <TIMEOUT>;
+ key-positions = <0 2>;
+ bindings = <&kp Z>;
+ };
+ };
+
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp A &kp B
+ &kp C &tog 1
+ >;
+ };
+
+ filtered_layer {
+ bindings = <
+ &kp A &kp B
+ &kp C &tog 0
+ >;
+ };
+ };
+};
+
+&kscan {
+ events = <
+ /* Combo One */
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ /* Combo Three */
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(1,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(1,1,10)
+ /* Toggle Layer */
+ ZMK_MOCK_PRESS(1,1,10)
+ ZMK_MOCK_RELEASE(1,1,10)
+ /* Combo Two */
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ /* Combo Three */
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(1,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(1,1,10)
+ >;
+}; \ No newline at end of file
diff --git a/app/tests/combo/layer-filter-1/events.patterns b/app/tests/combo/layer-filter-1/events.patterns
new file mode 100644
index 0000000..b90d786
--- /dev/null
+++ b/app/tests/combo/layer-filter-1/events.patterns
@@ -0,0 +1,2 @@
+s/.*hid_listener_keycode_//p
+s/.*combo//p \ No newline at end of file
diff --git a/app/tests/combo/layer-filter-1/keycode_events.snapshot b/app/tests/combo/layer-filter-1/keycode_events.snapshot
new file mode 100644
index 0000000..bb47d85
--- /dev/null
+++ b/app/tests/combo/layer-filter-1/keycode_events.snapshot
@@ -0,0 +1,4 @@
+pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
+pressed: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00
diff --git a/app/tests/combo/layer-filter-1/native_posix.keymap b/app/tests/combo/layer-filter-1/native_posix.keymap
new file mode 100644
index 0000000..995f27e
--- /dev/null
+++ b/app/tests/combo/layer-filter-1/native_posix.keymap
@@ -0,0 +1,40 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+/* it is useful to set timeout to a large value when attaching a debugger. */
+#define TIMEOUT (60*60*1000)
+
+/ {
+ combos {
+ compatible = "zmk,combos";
+ combo_one {
+ timeout-ms = <TIMEOUT>;
+ key-positions = <0 1>;
+ bindings = <&kp X>;
+ layers = <1>;
+ };
+ };
+
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp A &kp B
+ &kp C &tog 1
+ >;
+ };
+ };
+};
+
+&kscan {
+ events = <
+ /* Combo One */
+ 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