summaryrefslogtreecommitdiff
path: root/app/tests
diff options
context:
space:
mode:
authorOkke Formsma <okke@formsma.nl>2021-02-27 22:34:15 +0100
committerPete Johanson <peter@peterjohanson.com>2021-03-11 16:23:45 -0500
commit0df71100581d040178bd0fe8ec0382d84dc59a40 (patch)
treef2ac229342dbe3e8632d664dece7c99a0439ca05 /app/tests
parent8ebe0cd0c88a8ffbb323784f03229889cecc4b52 (diff)
fix(combos): Fix stuck keys when pressing long combos.
To properly retrigger hold-taps when a combo is not activated, some position down events are reraised instead of released. The corresponding position up events were never reraised, causing a potential stuck key.
Diffstat (limited to 'app/tests')
-rw-r--r--app/tests/combo/combos-and-holdtaps-0/events.patterns1
-rw-r--r--app/tests/combo/combos-and-holdtaps-1/events.patterns3
-rw-r--r--app/tests/combo/combos-and-holdtaps-2/events.patterns3
-rw-r--r--app/tests/combo/layer-filter-0/events.patterns3
-rw-r--r--app/tests/combo/layer-filter-1/events.patterns3
-rw-r--r--app/tests/combo/overlapping-combos-0/events.patterns3
-rw-r--r--app/tests/combo/overlapping-combos-1/events.patterns3
-rw-r--r--app/tests/combo/overlapping-combos-2/events.patterns3
-rw-r--r--app/tests/combo/overlapping-combos-3/events.patterns3
-rw-r--r--app/tests/combo/press-release-long-combo/events.patterns1
-rw-r--r--app/tests/combo/press-release-long-combo/keycode_events.snapshot4
-rw-r--r--app/tests/combo/press-release-long-combo/native_posix.keymap35
-rw-r--r--app/tests/combo/press1-press2-release1-release2/events.patterns3
-rw-r--r--app/tests/combo/press1-press2-release2-release1/events.patterns1
-rw-r--r--app/tests/combo/press1-release1-press2-release2/events.patterns3
15 files changed, 50 insertions, 22 deletions
diff --git a/app/tests/combo/combos-and-holdtaps-0/events.patterns b/app/tests/combo/combos-and-holdtaps-0/events.patterns
index b90d786..b1342af 100644
--- a/app/tests/combo/combos-and-holdtaps-0/events.patterns
+++ b/app/tests/combo/combos-and-holdtaps-0/events.patterns
@@ -1,2 +1 @@
s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
diff --git a/app/tests/combo/combos-and-holdtaps-1/events.patterns b/app/tests/combo/combos-and-holdtaps-1/events.patterns
index b90d786..833100f 100644
--- a/app/tests/combo/combos-and-holdtaps-1/events.patterns
+++ b/app/tests/combo/combos-and-holdtaps-1/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/combos-and-holdtaps-2/events.patterns b/app/tests/combo/combos-and-holdtaps-2/events.patterns
index b90d786..833100f 100644
--- a/app/tests/combo/combos-and-holdtaps-2/events.patterns
+++ b/app/tests/combo/combos-and-holdtaps-2/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/layer-filter-0/events.patterns b/app/tests/combo/layer-filter-0/events.patterns
index b90d786..833100f 100644
--- a/app/tests/combo/layer-filter-0/events.patterns
+++ b/app/tests/combo/layer-filter-0/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ 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
index b90d786..833100f 100644
--- a/app/tests/combo/layer-filter-1/events.patterns
+++ b/app/tests/combo/layer-filter-1/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/overlapping-combos-0/events.patterns b/app/tests/combo/overlapping-combos-0/events.patterns
index b90d786..833100f 100644
--- a/app/tests/combo/overlapping-combos-0/events.patterns
+++ b/app/tests/combo/overlapping-combos-0/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/overlapping-combos-1/events.patterns b/app/tests/combo/overlapping-combos-1/events.patterns
index b90d786..833100f 100644
--- a/app/tests/combo/overlapping-combos-1/events.patterns
+++ b/app/tests/combo/overlapping-combos-1/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/overlapping-combos-2/events.patterns b/app/tests/combo/overlapping-combos-2/events.patterns
index b90d786..833100f 100644
--- a/app/tests/combo/overlapping-combos-2/events.patterns
+++ b/app/tests/combo/overlapping-combos-2/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/overlapping-combos-3/events.patterns b/app/tests/combo/overlapping-combos-3/events.patterns
index b90d786..833100f 100644
--- a/app/tests/combo/overlapping-combos-3/events.patterns
+++ b/app/tests/combo/overlapping-combos-3/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo//p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/press-release-long-combo/events.patterns b/app/tests/combo/press-release-long-combo/events.patterns
new file mode 100644
index 0000000..b1342af
--- /dev/null
+++ b/app/tests/combo/press-release-long-combo/events.patterns
@@ -0,0 +1 @@
+s/.*hid_listener_keycode_//p
diff --git a/app/tests/combo/press-release-long-combo/keycode_events.snapshot b/app/tests/combo/press-release-long-combo/keycode_events.snapshot
new file mode 100644
index 0000000..e7c0cb1
--- /dev/null
+++ b/app/tests/combo/press-release-long-combo/keycode_events.snapshot
@@ -0,0 +1,4 @@
+pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
+pressed: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00
+released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
diff --git a/app/tests/combo/press-release-long-combo/native_posix.keymap b/app/tests/combo/press-release-long-combo/native_posix.keymap
new file mode 100644
index 0000000..68736d8
--- /dev/null
+++ b/app/tests/combo/press-release-long-combo/native_posix.keymap
@@ -0,0 +1,35 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+/ {
+ combos {
+ compatible = "zmk,combos";
+ combo_one {
+ timeout-ms = <80>;
+ key-positions = <0 1 2 3>;
+ bindings = <&kp Z>;
+ };
+ };
+
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp A &kp B
+ &kp C &kp D
+ >;
+ };
+ };
+};
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(1,1,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,1,100)
+ ZMK_MOCK_RELEASE(1,1,100)
+ >;
+}; \ No newline at end of file
diff --git a/app/tests/combo/press1-press2-release1-release2/events.patterns b/app/tests/combo/press1-press2-release1-release2/events.patterns
index 5f3e4cf..833100f 100644
--- a/app/tests/combo/press1-press2-release1-release2/events.patterns
+++ b/app/tests/combo/press1-press2-release1-release2/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo/combo/p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file
diff --git a/app/tests/combo/press1-press2-release2-release1/events.patterns b/app/tests/combo/press1-press2-release2-release1/events.patterns
index b54b66b..b1342af 100644
--- a/app/tests/combo/press1-press2-release2-release1/events.patterns
+++ b/app/tests/combo/press1-press2-release2-release1/events.patterns
@@ -1,2 +1 @@
s/.*hid_listener_keycode_//p
-s/.*combo/combo/p
diff --git a/app/tests/combo/press1-release1-press2-release2/events.patterns b/app/tests/combo/press1-release1-press2-release2/events.patterns
index 5f3e4cf..833100f 100644
--- a/app/tests/combo/press1-release1-press2-release2/events.patterns
+++ b/app/tests/combo/press1-release1-press2-release2/events.patterns
@@ -1,2 +1 @@
-s/.*hid_listener_keycode_//p
-s/.*combo/combo/p \ No newline at end of file
+s/.*hid_listener_keycode_//p \ No newline at end of file