forked from zmkfirmware/zmk
-
Notifications
You must be signed in to change notification settings - Fork 64
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Squashed commit of the following: commit f18eeab Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 28 15:59:55 2022 -0400 Clean up expected test output commit f05b251 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 28 09:32:43 2022 -0400 Explicitly specify default masked_mods in test Just so that the test can be run on branches with different defaults commit 278dc67 Author: urob <978080+urob@users.noreply.github.com> Date: Wed Jul 27 22:40:37 2022 -0400 Document masked_mods limitation with hold-taps commit 386b5d1 Author: urob <978080+urob@users.noreply.github.com> Date: Mon Jul 25 22:07:13 2022 -0400 Update expected test output Explicit mods no longer clear implicit mods that are being held. See zmkfirmware#1114 (comment) for details commit b4dad62 Author: urob <978080+urob@users.noreply.github.com> Date: Sun Jul 24 11:08:39 2022 -0400 Explain how to fully disable masked_mods commit 00a0235 Author: urob <978080+urob@users.noreply.github.com> Date: Sun Jul 24 11:05:44 2022 -0400 Add mod-morph tests commit bfba42f Author: urob <978080+urob@users.noreply.github.com> Date: Sun Jul 24 02:17:34 2022 -0400 Fix doc formatting commit 67412ed Author: urob <978080+urob@users.noreply.github.com> Date: Sun Jul 24 01:50:54 2022 -0400 Fix clang-format commit ebc127d Author: urob <978080+urob@users.noreply.github.com> Date: Sun Jul 24 01:04:13 2022 -0400 Update docs for mod-morph commit 44297de Author: urob <978080+urob@users.noreply.github.com> Date: Sun Jul 24 00:24:18 2022 -0400 Set masked-mods to mods if unspecified commit 7c647b0 Author: urob <978080+urob@users.noreply.github.com> Date: Mon Jul 18 20:31:24 2022 -0400 Trigger-mods are unused commit 4cf66a4 Author: urob <978080+urob@users.noreply.github.com> Date: Mon Jul 18 19:57:46 2022 -0400 Don't mask implicit mods commit 89dac4c Author: Kostas Karachalios <vrinek@hey.com> Date: Tue Jun 28 09:43:02 2022 +0200 Add some whitespace for clarity commit e96f516 Merge: 2cac694 ef3eb33 Author: Kostas Karachalios <vrinek@hey.com> Date: Mon Jun 27 21:11:20 2022 +0200 Merge remote-tracking branch 'origin/main' into masked-mod-morphs-untested commit 2cac694 Author: Kostas Karachalios <vrinek@hey.com> Date: Thu Feb 3 19:00:03 2022 +0100 feat(behaviors): Allow mod-morph to swallow mods Revert "fix(hid): Implicit mods on non-key page events" This reverts commit 6ef1e70. masked mods Unrevert "fix(hid): Implicit mods on non-key page events" Fix docs Lint code with clang-format
- Loading branch information
Showing
22 changed files
with
551 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,3 +14,6 @@ properties: | |
mods: | ||
type: int | ||
required: true | ||
masked_mods: | ||
type: int | ||
required: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
s/.*hid_listener_keycode_pressed.*keycode/--- pressed: keycode/p | ||
s/.*hid_listener_keycode_released.*keycode/--- released: keycode/p | ||
s/.*hid_register_mod.*Modifiers set to /reg explicit: Modifiers set to /p | ||
s/.*hid_unregister_mod.*Modifiers set to /unreg explicit: Modifiers set to /p | ||
s/.*hid_implicit_modifiers_press.*Modifiers set to /reg implicit: Modifiers set to /p | ||
s/.*hid_implicit_modifiers_release.*Modifiers set to /unreg implicit: Modifiers set to /p | ||
s/.*hid_masked_modifiers_set.*Modifiers set to /mask mods: Modifiers set to /p | ||
s/.*hid_masked_modifiers_clear.*Modifiers set to /unmask mods: Modifiers set to /p |
46 changes: 46 additions & 0 deletions
46
app/tests/mod-morph/default_mask_no_implicit/keycode_events.snapshot
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
--- pressed: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x00 | ||
unmask mods: Modifiers set to 0x00 | ||
--- released: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x00 | ||
--- pressed: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x02 | ||
reg implicit: Modifiers set to 0x02 | ||
mask mods: Modifiers set to 0x00 | ||
--- pressed: keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x00 | ||
unmask mods: Modifiers set to 0x02 | ||
--- released: keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x02 | ||
--- released: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x00 | ||
unreg implicit: Modifiers set to 0x00 | ||
--- pressed: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x04 | ||
reg implicit: Modifiers set to 0x04 | ||
--- pressed: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x04 | ||
unmask mods: Modifiers set to 0x04 | ||
--- released: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x04 | ||
--- released: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x00 | ||
unreg implicit: Modifiers set to 0x00 | ||
--- pressed: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x04 | ||
reg implicit: Modifiers set to 0x04 | ||
--- pressed: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x06 | ||
reg implicit: Modifiers set to 0x06 | ||
mask mods: Modifiers set to 0x04 | ||
--- pressed: keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x04 | ||
unmask mods: Modifiers set to 0x06 | ||
--- released: keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x06 | ||
--- released: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x04 | ||
unreg implicit: Modifiers set to 0x04 | ||
--- released: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x00 | ||
unreg implicit: Modifiers set to 0x00 |
56 changes: 56 additions & 0 deletions
56
app/tests/mod-morph/default_mask_no_implicit/native_posix_64.keymap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#include <dt-bindings/zmk/keys.h> | ||
#include <behaviors.dtsi> | ||
#include <dt-bindings/zmk/kscan_mock.h> | ||
|
||
|
||
&kscan { | ||
events = < | ||
/* A */ | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
|
||
/* B */ | ||
ZMK_MOCK_PRESS(1,0,10) | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(1,0,10) | ||
|
||
/* LALT + A */ | ||
ZMK_MOCK_PRESS(0,0,10) | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(0,0,10) | ||
|
||
/* LALT + B */ | ||
ZMK_MOCK_PRESS(0,0,10) | ||
ZMK_MOCK_PRESS(1,0,10) | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(1,0,10) | ||
ZMK_MOCK_RELEASE(0,0,10) | ||
>; | ||
}; | ||
|
||
/ { | ||
behaviors { | ||
mod_morph: mod_morph { | ||
compatible = "zmk,behavior-mod-morph"; | ||
label = "MOD_MORPH_TEST"; | ||
#binding-cells = <0>; | ||
bindings = <&kp A>, <&kp B>; | ||
mods = <(MOD_LSFT|MOD_RSFT)>; | ||
}; | ||
}; | ||
|
||
keymap { | ||
compatible = "zmk,keymap"; | ||
label ="Default keymap"; | ||
|
||
default_layer { | ||
bindings = < | ||
&kp LEFT_ALT &mod_morph | ||
&kp LEFT_SHIFT &kp RIGHT_SHIFT | ||
>; | ||
}; | ||
}; | ||
}; |
8 changes: 8 additions & 0 deletions
8
app/tests/mod-morph/default_mask_yes_implicit/events.patterns
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
s/.*hid_listener_keycode_pressed.*keycode/--- pressed: keycode/p | ||
s/.*hid_listener_keycode_released.*keycode/--- released: keycode/p | ||
s/.*hid_register_mod.*Modifiers set to /reg explicit: Modifiers set to /p | ||
s/.*hid_unregister_mod.*Modifiers set to /unreg explicit: Modifiers set to /p | ||
s/.*hid_implicit_modifiers_press.*Modifiers set to /reg implicit: Modifiers set to /p | ||
s/.*hid_implicit_modifiers_release.*Modifiers set to /unreg implicit: Modifiers set to /p | ||
s/.*hid_masked_modifiers_set.*Modifiers set to /mask mods: Modifiers set to /p | ||
s/.*hid_masked_modifiers_clear.*Modifiers set to /unmask mods: Modifiers set to /p |
46 changes: 46 additions & 0 deletions
46
app/tests/mod-morph/default_mask_yes_implicit/keycode_events.snapshot
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
--- pressed: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x00 | ||
unmask mods: Modifiers set to 0x00 | ||
--- released: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x00 | ||
--- pressed: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x02 | ||
reg implicit: Modifiers set to 0x02 | ||
mask mods: Modifiers set to 0x00 | ||
--- pressed: keycode 0x05 implicit_mods 0x02 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x02 | ||
unmask mods: Modifiers set to 0x02 | ||
--- released: keycode 0x05 implicit_mods 0x02 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x02 | ||
--- released: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x00 | ||
unreg implicit: Modifiers set to 0x00 | ||
--- pressed: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x04 | ||
reg implicit: Modifiers set to 0x04 | ||
--- pressed: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x04 | ||
unmask mods: Modifiers set to 0x04 | ||
--- released: keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x04 | ||
--- released: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x00 | ||
unreg implicit: Modifiers set to 0x00 | ||
--- pressed: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x04 | ||
reg implicit: Modifiers set to 0x04 | ||
--- pressed: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
reg explicit: Modifiers set to 0x06 | ||
reg implicit: Modifiers set to 0x06 | ||
mask mods: Modifiers set to 0x04 | ||
--- pressed: keycode 0x05 implicit_mods 0x02 explicit_mods 0x00 | ||
reg implicit: Modifiers set to 0x06 | ||
unmask mods: Modifiers set to 0x06 | ||
--- released: keycode 0x05 implicit_mods 0x02 explicit_mods 0x00 | ||
unreg implicit: Modifiers set to 0x06 | ||
--- released: keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x04 | ||
unreg implicit: Modifiers set to 0x04 | ||
--- released: keycode 0xE2 implicit_mods 0x00 explicit_mods 0x00 | ||
unreg explicit: Modifiers set to 0x00 | ||
unreg implicit: Modifiers set to 0x00 |
56 changes: 56 additions & 0 deletions
56
app/tests/mod-morph/default_mask_yes_implicit/native_posix_64.keymap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#include <dt-bindings/zmk/keys.h> | ||
#include <behaviors.dtsi> | ||
#include <dt-bindings/zmk/kscan_mock.h> | ||
|
||
|
||
&kscan { | ||
events = < | ||
/* A */ | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
|
||
/* LSFT + B */ | ||
ZMK_MOCK_PRESS(1,0,10) | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(1,0,10) | ||
|
||
/* LALT + A */ | ||
ZMK_MOCK_PRESS(0,0,10) | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(0,0,10) | ||
|
||
/* LALT + LSFT + B */ | ||
ZMK_MOCK_PRESS(0,0,10) | ||
ZMK_MOCK_PRESS(1,0,10) | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(1,0,10) | ||
ZMK_MOCK_RELEASE(0,0,10) | ||
>; | ||
}; | ||
|
||
/ { | ||
behaviors { | ||
mod_morph: mod_morph { | ||
compatible = "zmk,behavior-mod-morph"; | ||
label = "MOD_MORPH_TEST"; | ||
#binding-cells = <0>; | ||
bindings = <&kp A>, <&kp LS(B)>; | ||
mods = <(MOD_LSFT|MOD_RSFT)>; | ||
}; | ||
}; | ||
|
||
keymap { | ||
compatible = "zmk,keymap"; | ||
label ="Default keymap"; | ||
|
||
default_layer { | ||
bindings = < | ||
&kp LEFT_ALT &mod_morph | ||
&kp LEFT_SHIFT &kp RIGHT_SHIFT | ||
>; | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
s/.*hid_listener_keycode_pressed.*keycode/--- pressed: keycode/p | ||
s/.*hid_listener_keycode_released.*keycode/--- released: keycode/p | ||
s/.*hid_register_mod.*Modifiers set to /reg explicit: Modifiers set to /p | ||
s/.*hid_unregister_mod.*Modifiers set to /unreg explicit: Modifiers set to /p | ||
s/.*hid_implicit_modifiers_press.*Modifiers set to /reg implicit: Modifiers set to /p | ||
s/.*hid_implicit_modifiers_release.*Modifiers set to /unreg implicit: Modifiers set to /p | ||
s/.*hid_masked_modifiers_set.*Modifiers set to /mask mods: Modifiers set to /p | ||
s/.*hid_masked_modifiers_clear.*Modifiers set to /unmask mods: Modifiers set to /p |
Empty file.
59 changes: 59 additions & 0 deletions
59
app/tests/mod-morph/morph-into-hold-tap/native_posix_64.keymap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#include <dt-bindings/zmk/keys.h> | ||
#include <behaviors.dtsi> | ||
#include <dt-bindings/zmk/kscan_mock.h> | ||
|
||
/* | ||
This test fails when the hold-tap resolves as tap, because &mod_morph is then released | ||
when the hold-tap decision is made but before the keypress is registered. | ||
*/ | ||
|
||
&kscan { | ||
events = < | ||
/* Shift + tap &mod_morph --> expect B (but get Shift + B) */ | ||
ZMK_MOCK_PRESS(0,0,10) | ||
ZMK_MOCK_PRESS(0,1,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(0,0,10) | ||
|
||
/* Shift + hold &mod_morph --> expect and get D (no shift) */ | ||
ZMK_MOCK_PRESS(0,0,10) | ||
ZMK_MOCK_PRESS(0,1,200) | ||
ZMK_MOCK_PRESS(1,0,10) | ||
ZMK_MOCK_RELEASE(1,0,10) | ||
ZMK_MOCK_RELEASE(0,1,10) | ||
ZMK_MOCK_RELEASE(0,0,10) | ||
>; | ||
}; | ||
|
||
/ { | ||
behaviors { | ||
mod_morph: mod_morph { | ||
compatible = "zmk,behavior-mod-morph"; | ||
label = "MOD_MORPH_TEST"; | ||
#binding-cells = <0>; | ||
bindings = <&kp A>, << 1 B>; | ||
mods = <(MOD_LSFT|MOD_RSFT)>; | ||
masked_mods = <(MOD_LSFT|MOD_RSFT)>; // same as default, added in case default gets changed | ||
}; | ||
|
||
}; | ||
|
||
keymap { | ||
compatible = "zmk,keymap"; | ||
label ="Default keymap"; | ||
|
||
default_layer { | ||
bindings = < | ||
&kp LEFT_SHIFT &mod_morph | ||
&kp C &none | ||
>; | ||
}; | ||
|
||
second_layer { | ||
bindings = < | ||
&trans &trans | ||
&kp D &none | ||
>; | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
This test fails when the hold-tap is decided to resolve as tap. In this case, as soon as | ||
the hold-tap decision is made, the mod-morph is released. This triggers the | ||
`.binding_released` function of the `mod-morph` behavior, clearing the `masked_mods` | ||
before the actual tap-binding of the `hold-tap` gets registered. | ||
|
||
If the hold-tap is decided to resolve as hold, the mod-morph isn't released, and | ||
`masked_mods` are cleared correctly. |
Oops, something went wrong.