summaryrefslogtreecommitdiff
path: root/app/tests
diff options
context:
space:
mode:
authorOkke Formsma <okke@formsma.nl>2020-09-02 22:30:09 +0200
committerPete Johanson <peter@peterjohanson.com>2020-11-03 00:19:37 -0500
commit4f258efbf1602e212a808cc10915050a1b46e140 (patch)
treeed7601514e31895139ab91314610b2d570b1d326 /app/tests
parenta9e729b427800fab230fc1fcdacd3cbdb6bedc19 (diff)
initial implementation for modifiers
https://github.com/zmkfirmware/zmk/issues/86
Diffstat (limited to 'app/tests')
-rw-r--r--app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot4
-rw-r--r--app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot4
-rw-r--r--app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot16
-rw-r--r--app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot4
-rw-r--r--app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot4
-rw-r--r--app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot4
-rw-r--r--app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot4
-rw-r--r--app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot8
-rw-r--r--app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot8
-rw-r--r--app/tests/keypress/behavior_keymap.dtsi16
-rw-r--r--app/tests/keypress/cp-press-release/keycode_events.snapshot4
-rw-r--r--app/tests/keypress/cp-press-release/native_posix.keymap2
-rw-r--r--app/tests/keypress/kp-press-release/keycode_events.snapshot4
-rw-r--r--app/tests/keypress/kp-press-release/native_posix.keymap5
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns4
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot17
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap27
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns4
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot9
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap25
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns4
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot18
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap27
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns4
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot18
-rw-r--r--app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap28
-rw-r--r--app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns4
-rw-r--r--app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot8
-rw-r--r--app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap27
-rw-r--r--app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending9
-rw-r--r--app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns4
-rw-r--r--app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot8
-rw-r--r--app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap27
-rw-r--r--app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns4
-rw-r--r--app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot13
-rw-r--r--app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap27
-rw-r--r--app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns4
-rw-r--r--app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot13
-rw-r--r--app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap27
-rw-r--r--app/tests/momentary-layer/early-key-release/keycode_events.snapshot4
-rw-r--r--app/tests/momentary-layer/normal/keycode_events.snapshot4
-rw-r--r--app/tests/toggle-layer/early-key-release/keycode_events.snapshot8
-rw-r--r--app/tests/toggle-layer/normal/keycode_events.snapshot4
-rw-r--r--app/tests/transparent/layered/keycode_events.snapshot4
69 files changed, 508 insertions, 163 deletions
diff --git a/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot
index 5f6a266..c088e5e 100644
--- a/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/1-dn-up/keycode_events.snapshot
@@ -1,5 +1,5 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (balanced event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot
index ddda1ae..a8b5d1f 100644
--- a/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/2-dn-timer-up/keycode_events.snapshot
@@ -1,5 +1,5 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot
index a435103..ca458c7 100644
--- a/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0xe4
+kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (balanced event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0xe4
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe4 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
index c0da94f..ef4dfa5 100644
--- a/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0xe4
+kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe4
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe4 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot
index ce6e7b7..70a3353 100644
--- a/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0x07
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
ht_decide: 0 decided tap (balanced event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
index 1ec384a..121f007 100644
--- a/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0x07
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
ht_decide: 0 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
index 8a1980b..ae9dcc9 100644
--- a/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
@@ -1,10 +1,10 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_pressed: 1 new undecided hold_tap
ht_decide: 1 decided tap (balanced event 0)
-kp_pressed: usage_page 0x07 keycode 0x0d
-kp_released: usage_page 0x07 keycode 0x0d
+kp_pressed: usage_page 0x07 keycode 0x0d mods 0x00
+kp_released: usage_page 0x07 keycode 0x0d mods 0x00
ht_binding_released: 1 cleaning up hold-tap
-kp_released: usage_page 0x07 keycode 0xe1
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
index b89b21d..c1e03ad 100644
--- a/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
index 798e2ee..95330e6 100644
--- a/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (balanced event 2)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot
index 798e2ee..95330e6 100644
--- a/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (balanced event 2)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot b/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
index 5c9f4e3..63219ee 100644
--- a/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (balanced event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
diff --git a/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot b/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot
index 806896f..dda02dd 100644
--- a/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot
+++ b/app/tests/hold-tap/balanced/many-nested/keycode_events.snapshot
@@ -1,20 +1,20 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_pressed: 1 new undecided hold_tap
ht_decide: 1 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe0
+kp_pressed: usage_page 0x07 keycode 0xe0 mods 0x00
ht_binding_pressed: 2 new undecided hold_tap
ht_binding_released: 0 cleaning up hold-tap
ht_decide: 2 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe3
+kp_pressed: usage_page 0x07 keycode 0xe3 mods 0x00
ht_binding_pressed: 3 new undecided hold_tap
ht_binding_released: 1 cleaning up hold-tap
ht_decide: 3 decided hold (balanced event 3)
-kp_pressed: usage_page 0x07 keycode 0xe2
-kp_released: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe0
-kp_released: usage_page 0x07 keycode 0xe3
+kp_pressed: usage_page 0x07 keycode 0xe2 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe0 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe3 mods 0x00
ht_binding_released: 2 cleaning up hold-tap
-kp_released: usage_page 0x07 keycode 0xe2
+kp_released: usage_page 0x07 keycode 0xe2 mods 0x00
ht_binding_released: 3 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot
index cf787d8..2eb6475 100644
--- a/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/1-dn-up/keycode_events.snapshot
@@ -1,5 +1,5 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (hold-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot
index 03329d5..86517aa 100644
--- a/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/2-dn-timer-up/keycode_events.snapshot
@@ -1,5 +1,5 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (hold-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot
index adf4fe2..b7434c6 100644
--- a/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0xe4
+kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (hold-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0xe4
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe4 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
index 69b64a9..ffb6aad 100644
--- a/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0xe4
+kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (hold-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe4
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe4 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot
index b06a1d7..1254fed 100644
--- a/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0x07
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
ht_decide: 0 decided tap (hold-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
index bf31955..ba7b48b 100644
--- a/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0x07
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
ht_decide: 0 decided hold (hold-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
index 3ed7de0..c8acfc1 100644
--- a/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
@@ -1,10 +1,10 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (hold-preferred event 1)
-kp_pressed: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_pressed: 1 new undecided hold_tap
ht_decide: 1 decided tap (hold-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x0d
-kp_released: usage_page 0x07 keycode 0x0d
+kp_pressed: usage_page 0x07 keycode 0x0d mods 0x00
+kp_released: usage_page 0x07 keycode 0x0d mods 0x00
ht_binding_released: 1 cleaning up hold-tap
-kp_released: usage_page 0x07 keycode 0xe1
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
index e0b57fd..97cd07b 100644
--- a/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (hold-preferred event 1)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
index e0b57fd..97cd07b 100644
--- a/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (hold-preferred event 1)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot
index e0b57fd..97cd07b 100644
--- a/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (hold-preferred event 1)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot b/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
index cac579d..2a21d92 100644
--- a/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
+++ b/app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (hold-preferred event 1)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
diff --git a/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot
index 2a250fb..57e4fcd 100644
--- a/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/1-dn-up/keycode_events.snapshot
@@ -1,5 +1,5 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (tap-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot
index 4f1ee63..71ba8da 100644
--- a/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/2-dn-timer-up/keycode_events.snapshot
@@ -1,5 +1,5 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (tap-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot
index 87d1406..0bc731f 100644
--- a/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0xe4
+kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (tap-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0xe4
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe4 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
index 7455d2a..6a3398f 100644
--- a/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0xe4
+kp_pressed: usage_page 0x07 keycode 0xe4 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (tap-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe4
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe4 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot
index 3d7eaf1..e518582 100644
--- a/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0x07
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
ht_decide: 0 decided tap (tap-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
index 059d99c..b3b0673 100644
--- a/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
-kp_pressed: usage_page 0x07 keycode 0x07
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
ht_binding_pressed: 0 new undecided hold_tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
ht_decide: 0 decided hold (tap-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
index a8cf490..7f45421 100644
--- a/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/keycode_events.snapshot
@@ -1,10 +1,10 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (tap-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_pressed: 1 new undecided hold_tap
ht_decide: 1 decided tap (tap-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x0d
-kp_released: usage_page 0x07 keycode 0x0d
+kp_pressed: usage_page 0x07 keycode 0x0d mods 0x00
+kp_released: usage_page 0x07 keycode 0x0d mods 0x00
ht_binding_released: 1 cleaning up hold-tap
-kp_released: usage_page 0x07 keycode 0xe1
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
index 92a3569..ade0d3e 100644
--- a/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (tap-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
index 92a3569..ade0d3e 100644
--- a/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided hold (tap-preferred event 3)
-kp_pressed: usage_page 0x07 keycode 0xe1
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0xe1
+kp_pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0xe1 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot
index bc8aa8e..418312c 100644
--- a/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (tap-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
diff --git a/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot b/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
index b106f13..c0b4c0b 100644
--- a/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
+++ b/app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/keycode_events.snapshot
@@ -1,7 +1,7 @@
ht_binding_pressed: 0 new undecided hold_tap
ht_decide: 0 decided tap (tap-preferred event 0)
-kp_pressed: usage_page 0x07 keycode 0x09
-kp_pressed: usage_page 0x07 keycode 0x07
-kp_released: usage_page 0x07 keycode 0x09
+kp_pressed: usage_page 0x07 keycode 0x09 mods 0x00
+kp_pressed: usage_page 0x07 keycode 0x07 mods 0x00
+kp_released: usage_page 0x07 keycode 0x09 mods 0x00
ht_binding_released: 0 cleaning up hold-tap
-kp_released: usage_page 0x07 keycode 0x07
+kp_released: usage_page 0x07 keycode 0x07 mods 0x00
diff --git a/app/tests/keypress/behavior_keymap.dtsi b/app/tests/keypress/behavior_keymap.dtsi
index 34c445c..3a45809 100644
--- a/app/tests/keypress/behavior_keymap.dtsi
+++ b/app/tests/keypress/behavior_keymap.dtsi
@@ -9,20 +9,8 @@
default_layer {
bindings = <
- &kp B &mo 1
- &kp D &kp G>;
- };
-
- lower_layer {
- bindings = <
- &cp M_NEXT &trans
- &kp L &kp J>;
- };
-
- raise_layer {
- bindings = <
- &kp W &kp U
- &kp X &kp M>;
+ &kp B &none
+ &cp M_NEXT &none>;
};
};
};
diff --git a/app/tests/keypress/cp-press-release/keycode_events.snapshot b/app/tests/keypress/cp-press-release/keycode_events.snapshot
index f1ef0ed..95d24a4 100644
--- a/app/tests/keypress/cp-press-release/keycode_events.snapshot
+++ b/app/tests/keypress/cp-press-release/keycode_events.snapshot
@@ -1,2 +1,2 @@
-pressed: usage_page 0x0c keycode 0xb5
-released: usage_page 0x0c keycode 0xb5
+pressed: usage_page 0x0c keycode 0xb5 mods 0x00
+pressed: usage_page 0x0c keycode 0xb5 mods 0x00
diff --git a/app/tests/keypress/cp-press-release/native_posix.keymap b/app/tests/keypress/cp-press-release/native_posix.keymap
index 0e86f93..bf93af7 100644
--- a/app/tests/keypress/cp-press-release/native_posix.keymap
+++ b/app/tests/keypress/cp-press-release/native_posix.keymap
@@ -1,5 +1,5 @@
#include "../behavior_keymap.dtsi"
&kscan {
- events = <ZMK_MOCK_PRESS(0,1,10) ZMK_MOCK_PRESS(0,0,10) ZMK_MOCK_RELEASE(0,0,10) ZMK_MOCK_RELEASE(0,1,10)>;
+ events = <ZMK_MOCK_PRESS(1,0,10) ZMK_MOCK_PRESS(1,0,10)>;
}; \ No newline at end of file
diff --git a/app/tests/keypress/kp-press-release/keycode_events.snapshot b/app/tests/keypress/kp-press-release/keycode_events.snapshot
index f1ef0ed..80cac20 100644
--- a/app/tests/keypress/kp-press-release/keycode_events.snapshot
+++ b/app/tests/keypress/kp-press-release/keycode_events.snapshot
@@ -1,2 +1,2 @@
-pressed: usage_page 0x0c keycode 0xb5
-released: usage_page 0x0c keycode 0xb5
+pressed: usage_page 0x07 keycode 0x05 mods 0x00
+released: usage_page 0x07 keycode 0x05 mods 0x00
diff --git a/app/tests/keypress/kp-press-release/native_posix.keymap b/app/tests/keypress/kp-press-release/native_posix.keymap
index 7f73690..279b084 100644
--- a/app/tests/keypress/kp-press-release/native_posix.keymap
+++ b/app/tests/keypress/kp-press-release/native_posix.keymap
@@ -1,8 +1,5 @@
-#include <dt-bindings/zmk/keys.h>
-#include <behaviors.dtsi>
-#include <dt-bindings/zmk/kscan-mock.h>
#include "../behavior_keymap.dtsi"
&kscan {
- events = <ZMK_MOCK_PRESS(0,1,10) ZMK_MOCK_PRESS(0,0,10) ZMK_MOCK_RELEASE(0,0,10) ZMK_MOCK_RELEASE(0,1,10)>;
+ events = <ZMK_MOCK_PRESS(0,0,10) ZMK_MOCK_RELEASE(0,0,10)>;
}; \ No newline at end of file
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot
new file mode 100644
index 0000000..6218e65
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/keycode_events.snapshot
@@ -0,0 +1,17 @@
+pressed: usage_page 0x07 keycode 0xe0 mods 0x00
+reg: Modifier 0 count 1
+reg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+pressed: usage_page 0x07 keycode 0xe0 mods 0x00
+reg: Modifier 0 count 2
+reg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+released: usage_page 0x07 keycode 0xe0 mods 0x00
+unreg: Modifier 0 count: 1
+unreg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+released: usage_page 0x07 keycode 0xe0 mods 0x00
+unreg: Modifier 0 count: 0
+unreg: Modifier 0 released
+unreg: Modifiers set to 0x00
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap
new file mode 100644
index 0000000..6150094
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/native_posix.keymap
@@ -0,0 +1,27 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LCTL &kp LCTL
+ &kp LSFT &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot
new file mode 100644
index 0000000..4232428
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/keycode_events.snapshot
@@ -0,0 +1,9 @@
+pressed: usage_page 0x07 keycode 0xe0 mods 0x00
+reg: Modifier 0 count 1
+reg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+released: usage_page 0x07 keycode 0xe0 mods 0x00
+unreg: Modifier 0 count: 0
+unreg: Modifier 0 released
+unreg: Modifiers set to 0x00
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap
new file mode 100644
index 0000000..3324584
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/native_posix.keymap
@@ -0,0 +1,25 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LCTL &kp LCTL
+ &kp LSFT &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot
new file mode 100644
index 0000000..60d829a
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/keycode_events.snapshot
@@ -0,0 +1,18 @@
+pressed: usage_page 0x07 keycode 0xe0 mods 0x00
+reg: Modifier 0 count 1
+reg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+reg: Modifier 1 count 1
+reg: Modifiers set to 0x03
+mods: Modifiers set to 0x03
+released: usage_page 0x07 keycode 0xe0 mods 0x00
+unreg: Modifier 0 count: 0
+unreg: Modifier 0 released
+unreg: Modifiers set to 0x02
+mods: Modifiers set to 0x02
+released: usage_page 0x07 keycode 0xe1 mods 0x00
+unreg: Modifier 1 count: 0
+unreg: Modifier 1 released
+unreg: Modifiers set to 0x00
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap
new file mode 100644
index 0000000..b6f9631
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/native_posix.keymap
@@ -0,0 +1,27 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(1,0,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ ZMK_MOCK_RELEASE(1,0,10)
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LCTL &kp LCTL
+ &kp LSFT &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot
new file mode 100644
index 0000000..b4755e5
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/keycode_events.snapshot
@@ -0,0 +1,18 @@
+pressed: usage_page 0x07 keycode 0xe0 mods 0x00
+reg: Modifier 0 count 1
+reg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+pressed: usage_page 0x07 keycode 0xe1 mods 0x00
+reg: Modifier 1 count 1
+reg: Modifiers set to 0x03
+mods: Modifiers set to 0x03
+released: usage_page 0x07 keycode 0xe1 mods 0x00
+unreg: Modifier 1 count: 0
+unreg: Modifier 1 released
+unreg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+released: usage_page 0x07 keycode 0xe0 mods 0x00
+unreg: Modifier 0 count: 0
+unreg: Modifier 0 released
+unreg: Modifiers set to 0x00
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap
new file mode 100644
index 0000000..3fedad2
--- /dev/null
+++ b/app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/native_posix.keymap
@@ -0,0 +1,28 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(1,0,10)
+ ZMK_MOCK_RELEASE(1,0,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LCTL &kp LCTL
+ &kp LSFT &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot
new file mode 100644
index 0000000..61dd271
--- /dev/null
+++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/keycode_events.snapshot
@@ -0,0 +1,8 @@
+pressed: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x02
+pressed: usage_page 0x07 keycode 0x04 mods 0x01
+mods: Modifiers set to 0x01
+released: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x01
+released: usage_page 0x07 keycode 0x04 mods 0x01
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap
new file mode 100644
index 0000000..c603c00
--- /dev/null
+++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/native_posix.keymap
@@ -0,0 +1,27 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LC(A) &kp LS(B)
+ &kp LCTL &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending
new file mode 100644
index 0000000..3f49005
--- /dev/null
+++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/pending
@@ -0,0 +1,9 @@
+This test fails because the hid_listener_keycode_released function
+releases implicit modifiers always, even if they were not set by the
+key that's going up. Also see the comment in that function:
+
+ If LC(A) is pressed, then LS(B), then LC(A) is released, the shift for B will be released
+ prematurely. This causes if LS(B) to repeat like Bbbbbbbb when pressed for a long time.
+ Solving this would require keeping track of which key's implicit modifiers are currently
+ active and only releasing modifiers at that time.
+
diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot
new file mode 100644
index 0000000..e8a231f
--- /dev/null
+++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/keycode_events.snapshot
@@ -0,0 +1,8 @@
+pressed: usage_page 0x07 keycode 0x04 mods 0x01
+mods: Modifiers set to 0x01
+pressed: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x02
+released: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x00
+released: usage_page 0x07 keycode 0x04 mods 0x01
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap
new file mode 100644
index 0000000..109d60e
--- /dev/null
+++ b/app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/native_posix.keymap
@@ -0,0 +1,27 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(0,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ ZMK_MOCK_RELEASE(0,0,10)
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LC(A) &kp LS(B)
+ &none &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot
new file mode 100644
index 0000000..40c5841
--- /dev/null
+++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/keycode_events.snapshot
@@ -0,0 +1,13 @@
+pressed: usage_page 0x07 keycode 0xe0 mods 0x00
+reg: Modifier 0 count 1
+reg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+pressed: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x03
+released: usage_page 0x07 keycode 0xe0 mods 0x00
+unreg: Modifier 0 count: 0
+unreg: Modifier 0 released
+unreg: Modifiers set to 0x00
+mods: Modifiers set to 0x00
+released: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap
new file mode 100644
index 0000000..d381e4b
--- /dev/null
+++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/native_posix.keymap
@@ -0,0 +1,27 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(1,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(1,0,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LC(A) &kp LS(B)
+ &kp LCTL &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns
new file mode 100644
index 0000000..cbf21af
--- /dev/null
+++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns
@@ -0,0 +1,4 @@
+s/.*hid_listener_keycode_//p
+s/.*hid_register_mod/reg/p
+s/.*hid_unregister_mod/unreg/p
+s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p \ No newline at end of file
diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot
new file mode 100644
index 0000000..5df571b
--- /dev/null
+++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/keycode_events.snapshot
@@ -0,0 +1,13 @@
+pressed: usage_page 0x07 keycode 0xe0 mods 0x00
+reg: Modifier 0 count 1
+reg: Modifiers set to 0x01
+mods: Modifiers set to 0x01
+pressed: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x03
+released: usage_page 0x07 keycode 0x05 mods 0x02
+mods: Modifiers set to 0x01
+released: usage_page 0x07 keycode 0xe0 mods 0x00
+unreg: Modifier 0 count: 0
+unreg: Modifier 0 released
+unreg: Modifiers set to 0x00
+mods: Modifiers set to 0x00
diff --git a/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap
new file mode 100644
index 0000000..b47b5f7
--- /dev/null
+++ b/app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/native_posix.keymap
@@ -0,0 +1,27 @@
+#include <dt-bindings/zmk/keys.h>
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/kscan-mock.h>
+
+
+&kscan {
+ events = <
+ ZMK_MOCK_PRESS(1,0,10)
+ ZMK_MOCK_PRESS(0,1,10)
+ ZMK_MOCK_RELEASE(0,1,10)
+ ZMK_MOCK_RELEASE(1,0,10)
+ >;
+};
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+ label ="Default keymap";
+
+ default_layer {
+ bindings = <
+ &kp LC(A) &kp LS(B)
+ &kp LCTL &none
+ >;
+ };
+ };
+};
diff --git a/app/tests/momentary-layer/early-key-release/keycode_events.snapshot b/app/tests/momentary-layer/early-key-release/keycode_events.snapshot
index 474eef7..82ebc67 100644
--- a/app/tests/momentary-layer/early-key-release/keycode_events.snapshot
+++ b/app/tests/momentary-layer/early-key-release/keycode_events.snapshot
@@ -1,4 +1,4 @@
-kp_pressed: usage_page 0x07 keycode 0x05
+kp_pressed: usage_page 0x07 keycode 0x05 mods 0x00
mo_pressed: position 1 layer 1
-kp_released: usage_page 0x07 keycode 0x05
+kp_released: usage_page 0x07 keycode 0x05 mods 0x00
mo_released: position 1 layer 1
diff --git a/app/tests/momentary-layer/normal/keycode_events.snapshot b/app/tests/momentary-layer/normal/keycode_events.snapshot
index 9dc6101..247128f 100644
--- a/app/tests/momentary-layer/normal/keycode_events.snapshot
+++ b/app/tests/momentary-layer/normal/keycode_events.snapshot
@@ -1,4 +1,4 @@
mo_pressed: position 1 layer 1
-kp_pressed: usage_page 0x0c keycode 0xb5
-kp_released: usage_page 0x0c keycode 0xb5
+kp_pressed: usage_page 0x0c keycode 0xb5 mods 0x00
+kp_released: usage_page 0x0c keycode 0xb5 mods 0x00
mo_released: position 1 layer 1
diff --git a/app/tests/toggle-layer/early-key-release/keycode_events.snapshot b/app/tests/toggle-layer/early-key-release/keycode_events.snapshot
index 3ac017c..6b4d50b 100644
--- a/app/tests/toggle-layer/early-key-release/keycode_events.snapshot
+++ b/app/tests/toggle-layer/early-key-release/keycode_events.snapshot
@@ -1,6 +1,6 @@
-kp_pressed: usage_page 0x07 keycode 0x05
+kp_pressed: usage_page 0x07 keycode 0x05 mods 0x00
tog_pressed: position 1 layer 1
-kp_released: usage_page 0x07 keycode 0x05
+kp_released: usage_page 0x07 keycode 0x05 mods 0x00
tog_released: position 1 layer 1
-kp_pressed: usage_page 0x0c keycode 0xb5
-kp_released: usage_page 0x0c keycode 0xb5
+kp_pressed: usage_page 0x0c keycode 0xb5 mods 0x00
+kp_released: usage_page 0x0c keycode 0xb5 mods 0x00
diff --git a/app/tests/toggle-layer/normal/keycode_events.snapshot b/app/tests/toggle-layer/normal/keycode_events.snapshot
index 42174cc..d03295e 100644
--- a/app/tests/toggle-layer/normal/keycode_events.snapshot
+++ b/app/tests/toggle-layer/normal/keycode_events.snapshot
@@ -1,4 +1,4 @@
tog_pressed: position 1 layer 1
tog_released: position 1 layer 1
-kp_pressed: usage_page 0x0c keycode 0xb5
-kp_released: usage_page 0x0c keycode 0xb5
+kp_pressed: usage_page 0x0c keycode 0xb5 mods 0x00
+kp_released: usage_page 0x0c keycode 0xb5 mods 0x00
diff --git a/app/tests/transparent/layered/keycode_events.snapshot b/app/tests/transparent/layered/keycode_events.snapshot
index d0bd245..5e707b8 100644
--- a/app/tests/transparent/layered/keycode_events.snapshot
+++ b/app/tests/transparent/layered/keycode_events.snapshot
@@ -1,2 +1,2 @@
-kp_pressed: usage_page 0x07 keycode 0x04
-kp_released: usage_page 0x07 keycode 0x04
+kp_pressed: usage_page 0x07 keycode 0x04 mods 0x00
+kp_released: usage_page 0x07 keycode 0x04 mods 0x00