Add timestamps to position and behavior events (#147)

* Add timestamps to position events and behaviors.

- Take original event timestamps into consideration so nested tap-holds have proper timing.
- Add position and timestamp to keycode state changed event so the one-shot behavior can properly identify other keypresses and timings.
- Add timestamp to position events received from peripheral

* reduce number of arguments to behaviors
This commit is contained in:
Okke Formsma
2020-10-10 23:32:53 +02:00
committed by GitHub
parent fc6c01fd69
commit d38740cebf
21 changed files with 248 additions and 122 deletions

View File

@@ -0,0 +1,4 @@
s/.*hid_listener_keycode/kp/p
s/.*mo_keymap_binding/mo/p
s/.*on_hold_tap_binding/ht_binding/p
s/.*decide_hold_tap/ht_decide/p

View File

@@ -0,0 +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
ht_binding_pressed: 1 new undecided hold_tap
ht_decide: 1 decided hold (balanced event 3)
kp_pressed: usage_page 0x07 keycode 0xe0
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
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
ht_binding_released: 2 cleaning up hold-tap
kp_released: usage_page 0x07 keycode 0xe2
ht_binding_released: 3 cleaning up hold-tap

View File

@@ -0,0 +1,41 @@
#include <dt-bindings/zmk/keys.h>
#include <behaviors.dtsi>
#include <dt-bindings/zmk/kscan-mock.h>
/ {
behaviors {
ht_bal: behavior_hold_tap_balanced {
compatible = "zmk,behavior-hold-tap";
label = "HOLD_TAP_BALANCED";
#binding-cells = <2>;
flavor = "balanced";
tapping_term_ms = <300>;
bindings = <&kp>, <&kp>;
};
};
keymap {
compatible = "zmk,keymap";
label ="Default keymap";
default_layer {
bindings = <
&ht_bal LSFT F &ht_bal LCTL J
&ht_bal LGUI H &ht_bal LALT L
>;
};
};
};
&kscan {
events = <
ZMK_MOCK_PRESS(0,0,100)
ZMK_MOCK_PRESS(0,1,100)
ZMK_MOCK_PRESS(1,0,100)
ZMK_MOCK_PRESS(1,1,100)
ZMK_MOCK_RELEASE(0,0,100)
ZMK_MOCK_RELEASE(0,1,100)
ZMK_MOCK_RELEASE(1,0,100)
ZMK_MOCK_RELEASE(1,1,100)
>;
};