Commit Graph

21 Commits

Author SHA1 Message Date
xs5871
178afdfeb1 implement multiple-choice for holdtap repeat 2022-10-14 08:25:44 -07:00
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
565ec8353b continue/finish holdtap-repeat 2022-10-02 09:54:52 -07:00
Aldoo
5efd2688d7 Support for tap behavior autorepeat for modtap and layertap keys.
Faulty logic corrected

Possibly a bug could happen whenever entering ht_press with a non-empty key_state outside of repeat context (but can it really happen?)

Some formatting to make github tests happy

Documentation for repeat behavior.

Make the tests happy again!

same...
2022-10-02 09:54:52 -07:00
xs5871
0b4b98f5fb add debug info for holdtap key resolution 2022-09-15 08:57:14 -07:00
xs5871
f9203dbb85 fix stack exhaustion for certain hold-tap actions 2022-09-11 21:48:52 -07:00
xs5871
aee793a300 missed some pre_process to resume_process conversions 2022-08-31 18:22:52 -07:00
xs5871
c95efbe8ea refactor handling of key processing resume to KMKKeyboard 2022-08-31 18:22:52 -07:00
xs5871
9d555209b8 add continue-with-module-nr-idx to key processing 2022-08-31 18:22:52 -07:00
xs5871
5a85c6cfb3 move validators and metas to their respective modules 2022-07-24 15:19:20 -07:00
xs5871
614961521d fix inconsistencies with chained holdtap keys 2022-06-11 12:42:49 -07:00
xs5871
0751f6ca5f prepare holdtap for tapdance refactor 2022-05-06 20:29:26 -07:00
xs5871
ee4cce32cb implements oneshot/sticky keys. 2022-02-13 16:43:14 -08:00
xs5871
1c6b25517a implement hold-tap interrupt for Layers 2022-02-13 14:47:02 -08:00
xs5871
a685618480 implement hold-tap interrupt on other key tap (i.e. release) 2022-02-13 14:47:02 -08:00
xs5871
7573556f33 fix hold-tap key interrupted by other hold-tap key 2022-02-13 14:47:02 -08:00
xs5871
f30206c7d5 implement per-key tap_time. 2022-02-13 14:47:02 -08:00
xs5871
21c058aaa8 add hold-tap interrupt behavior: prefer hold.
The interrupt resolution of hold-tap keys can now be set to resolve to
either tap or hold key. The default mod-tap is set to prefer hold.
2022-02-13 14:47:02 -08:00
Christian Tu
b6201d43d4 unit tests for execution in desktop dev environment 2022-02-01 00:48:23 -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
Christian Tu
99577357f6 move HoldTap to its own file 2021-09-25 11:07:33 +02:00