Commit Graph

9 Commits

Author SHA1 Message Date
xs5871
17f2961c0b fix pystack exhaust during resume_process_key.
Instead of handling resumed key events in a deep stack, buffer them
until the next main loop iteration. New resume events that may be emitted
during handling of old resumes are prepended to that buffer, i.e. take
precedence over events that happen deeper into the buffer/event stack.
Logical replay order is thus preserved.
2022-10-08 13:36:00 -07:00
xs5871
f9203dbb85 fix stack exhaustion for certain hold-tap actions 2022-09-11 21:48:52 -07:00
xs5871
5a85c6cfb3 move validators and metas to their respective modules 2022-07-24 15:19:20 -07:00
xs5871
bb2ddc1e33 fix tapdance reporting key in wrong order 2022-06-30 00:37:04 -07:00
xs5871
e829bc83de fix tapdance crash and add unit-tests 2022-06-30 00:37:04 -07:00
xs5871
51f07d8558 refactor tapdance on top of holdtap 2022-05-06 20:29:26 -07:00
xs5871
da3e87ee2d convert matrix report from row/col byte array to linear key_number. 2022-02-19 18:01:33 -08:00
xs5871
1c6b25517a implement hold-tap interrupt for Layers 2022-02-13 14:47:02 -08:00
xs5871
a62d39a252
make TapDance a module (#281)
* extract tapdance logic into a module

* clean out old tapdance code

* canonicalize key variable names

* split _process_tap_dance into td_pressed and td_released

* implement consistent argument order

* update documentation

* implement Module.process_key for key interception and modification

* fix tapdance realesing instead of pressing

* fix: default parameters in key handler

* cleanup holdtap

* add error handling to modules process_key

* fix: key released too late

Tapped keys didn't release on a "key released" event, but waited for a
timeout. Resulted in, for example, modifiers applying to keys after the
modifier was released.

* fix lint/formatting

* fix tap_time reference in modtap + minimal documentation

* fix lint
2022-01-18 05:21:05 +00:00