summaryrefslogtreecommitdiff
path: root/app/tests/combo/overlapping-combos-0
diff options
context:
space:
mode:
Diffstat (limited to 'app/tests/combo/overlapping-combos-0')
-rw-r--r--app/tests/combo/overlapping-combos-0/events.patterns2
-rw-r--r--app/tests/combo/overlapping-combos-0/keycode_events.snapshot20
-rw-r--r--app/tests/combo/overlapping-combos-0/native_posix.keymap117
3 files changed, 139 insertions, 0 deletions
diff --git a/app/tests/combo/overlapping-combos-0/events.patterns b/app/tests/combo/overlapping-combos-0/events.patterns
new file mode 100644
index 0000000..b90d786
--- /dev/null
+++ b/app/tests/combo/overlapping-combos-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/overlapping-combos-0/keycode_events.snapshot b/app/tests/combo/overlapping-combos-0/keycode_events.snapshot
new file mode 100644
index 0000000..ec63b77
--- /dev/null
+++ b/app/tests/combo/overlapping-combos-0/keycode_events.snapshot
@@ -0,0 +1,20 @@
+pressed: usage_page 0x07 keycode 0x1b mods 0x00
+released: usage_page 0x07 keycode 0x1b mods 0x00
+pressed: usage_page 0x07 keycode 0x1b mods 0x00
+released: usage_page 0x07 keycode 0x1b mods 0x00
+pressed: usage_page 0x07 keycode 0x1b mods 0x00
+released: usage_page 0x07 keycode 0x1b mods 0x00
+pressed: usage_page 0x07 keycode 0x1b mods 0x00
+released: usage_page 0x07 keycode 0x1b mods 0x00
+pressed: usage_page 0x07 keycode 0x1b mods 0x00
+released: usage_page 0x07 keycode 0x1b mods 0x00
+pressed: usage_page 0x07 keycode 0x1b mods 0x00
+released: usage_page 0x07 keycode 0x1b mods 0x00
+pressed: usage_page 0x07 keycode 0x1c mods 0x00
+released: usage_page 0x07 keycode 0x1c mods 0x00
+pressed: usage_page 0x07 keycode 0x1c mods 0x00
+released: usage_page 0x07 keycode 0x1c mods 0x00
+pressed: usage_page 0x07 keycode 0x1c mods 0x00
+released: usage_page 0x07 keycode 0x1c mods 0x00
+pressed: usage_page 0x07 keycode 0x1c mods 0x00
+released: usage_page 0x07 keycode 0x1c mods 0x00
diff --git a/app/tests/combo/overlapping-combos-0/native_posix.keymap b/app/tests/combo/overlapping-combos-0/native_posix.keymap
new file mode 100644
index 0000000..e3cbf43
--- /dev/null
+++ b/app/tests/combo/overlapping-combos-0/native_posix.keymap
@@ -0,0 +1,117 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+/*
+ combo 0 timeout inf
+ combo 01 timeout inf
+ combo 0123 timeout inf
+ press 012 in any combination, release any of those keys
+ expected: combo 012 on key-release
+ */
+
+/* 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 2>;
+ bindings = <&kp X>;
+ };
+
+ combo_two {
+ timeout-ms = <TIMEOUT>;
+ key-positions = <0 2>;
+ bindings = <&kp Y>;
+ };
+
+ combo_three {
+ timeout-ms = <TIMEOUT>;
+ key-positions = <1>;
+ bindings = <&kp Z>;
+ };
+ };
+
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp A &kp B
+ &kp C &none
+ >;
+ };
+ };
+};
+&kscan {
+ events = <
+ /* all permutations of combo one press, combo triggered by release */
+ /* while debugging these, you may want to set the release_timer to a high number */
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+
+ /* all permutations of combo two press and release, combo triggered by release */
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,2,10)
+ ZMK_MOCK_RELEASE(0,2,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ >;
+}; \ No newline at end of file