Commit Graph

73 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
a97e655d08 fix typo 2022-09-26 00:17:23 -07:00
xs5871
f2fb4eecf4 add type hinting for kmk_keyboard 2022-09-22 15:35:14 -07:00
Ian Pearce
ea3f59340d Set sandbox.matrix_update
Previously only secondary_matrix_update was set on sandbox.
2022-09-19 07:51:45 +00:00
xs5871
aee793a300 missed some pre_process to resume_process conversions 2022-08-31 18:22:52 -07:00
xs5871
57c61ced85 add type hints to KMKKeyboard.resume_process_key 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
f0544465c7 remove reference to disfunct KMK_RELEASE. 2022-08-03 20:11:00 +00:00
xs5871
2a7654f852 cleanup unused KMKKeyboard attributes
squash cleanup KMKKeyboard
2022-07-24 15:19:20 -07:00
xs5871
3f3bd93109 implement global debug interface. 2022-07-22 09:21:30 -07:00
crazyiop
ffcfc9835d update format to fstring 2022-06-12 09:31:15 +00:00
crazyiop
6068b60cac tweak the debug output to make them more readable 2022-06-12 09:31:15 +00:00
xs5871
b6146365b3 fix crash on releasing dropped key presses 2022-05-23 15:59:52 -07:00
John Morrison
73e95bfdde Change to be an extension 2022-05-08 20:10:41 +00:00
John Morrison
9f964aba36 Allow strings in keymap. Replace with keys in keyboard _init cycle. 2022-05-08 20:10:41 +00:00
Steven Wilde
f2b8c7106e Move the changes to keypad.py 2022-05-04 16:40:48 +00:00
Steven Wilde
30252099cd Fix crash when typing quickly on a split board 2022-05-04 16:40:48 +00:00
John Morrison
6c2d64843b Align debug messages with method called 2022-05-02 16:50:54 -07:00
xs5871
fb5ecf7e38 refactor debug output 2022-04-23 14:25:21 -07:00
xs5871
642790b2e7 remove keyboard.current_key (never actually used) 2022-04-23 14:25:21 -07:00
xs5871
e04a01c25e factor out module pre-processing 2022-04-23 14:25:21 -07:00
xs5871
7ff77b97bb implement support for multiple scanners at once
fixup
2022-04-17 18:33:14 -07:00
xs5871
b3ec37e274 expose keypad options through scanner init 2022-04-11 18:26:43 -07:00
xs5871
175f0c6a97 introduce consistent naming scheme 2022-04-11 17:07:12 -07:00
xs5871
e395e89864 provide default coord_mapping from scanners 2022-04-11 17:07:12 -07:00
xs5871
8ac497d99b Make CPs keypad.KeyMatrix scanner the default. 2022-04-11 17:07:12 -07:00
xs5871
7431192e95 move old matrix to kmk.scanners.digitalio_matrix 2022-04-09 14:40:40 -07:00
xs5871
cc70c8f4a8 fix failing unit test.
During timeout processing, cancelations have to take immediate effect,
but new 0-delay timeouts have to be moved to the next cycle.
2022-04-02 10:06:27 -07:00
xs5871
07a485b04d implement stricter and more consistent timeouts.
- stricter timeouts: Instead of adding an entire millisecond, use a list
  of timeouts that are supposed to be handled on the same tick. This
  reduces the delay between target tick and actual tick, especially for
  many timeouts issued to the same tick, i.e. combos.
- consistent timeouts: Timeouts are now guaranteed to be handled in the
  order they were issued. Timer rollover is handled properly.

caveat / change to the interface: the returned `timeout_key` is a tuple
of the target timeout tick and the index of the timeout at that tick.
2022-03-31 16:13:32 -07:00
xs5871
5c33fd3a9f implement combo/chord/sequence module 2022-03-14 19:27:12 -07:00
zyxwars
c46d18ecb7 fix wrong commit 2022-03-12 08:37:05 -08:00
zyxwars
2d005048cc Temp fix del coord crash 2022-03-12 08:37:05 -08:00
xs5871
54ae022846 fix keypad matrix init and unguarded debug print. 2022-02-27 09:58:57 -08:00
Ellie T
2fce09986e Adding Pimoroni Keybow and Keybow 2040 2022-02-20 18:42:38 -08:00
Ellie
57ba0fe8b2 Custom matrix scanners
- Introduce Scanner base class for MatrixScanner
- Create new Scanner using built-in keypad module
- Allow overriding the scanner used by KMKKeyboard
2022-02-20 12:00:15 -08: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
Patrick McQuay
1c82f7d387 apply vylders fix and also figure out how to set _is_target correctly, as well as make it work nicely with ble. 2022-02-05 18:00:03 -08:00
xs5871
2874d49d20 disable hid_send on secondary split 2022-02-05 16:38:41 -08:00
patrickmcquay
7fbda871c2 real fix for swallowing keys, use a buffer and only process one key at a time. 2022-02-04 08:37:19 -08:00
Patrick McQuay
c09cd48218 fix for dropping keys 2022-02-04 08:37:19 -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
xs5871
410cf7af07 fix: catch IndexError when looking up key in keymap 2021-12-12 20:53:02 -08:00
Josh Klar
8063898eb2
fix: resolve #276 (reimplement #142) by allowing custom matrix scanners 2021-12-06 12:02:35 -08:00
xs5871
3e91f63c88 fix tapdance with momentary modifiers; tap-timeout per tap.
Improves handling of momentary modifiers (i.e. different actions on hold or
press/release) as tapdance targets.
tap_time is reset for each consecutive single tap, instead of being
applied to the entire tap sequence.
2021-10-19 00:16:49 -07:00
Josh Klar
0a2f62a90b
Merge pull request #247 from xs5871/fix-tapdance
fix tapdancing
2021-09-25 22:14:48 +00:00
Christian Tu
abaafbd8c5 Merge remote-tracking branch 'upstream/master' into hold-tap 2021-09-25 11:13:41 +02:00
xs5871
8a15378733
fix tapdancing 2021-09-24 13:33:03 +00:00