Commit Graph

22 Commits

Author SHA1 Message Date
Peter Johanson 5b5b3ff2eb fix(tests): Fix hex formatting. 2022-05-19 10:55:23 -04:00
Peter Johanson 64dadfb336 refactor(tests): Move remaining tests to posix 64.
* Update docs and fix up a few lingering tests
  to consistently use native_posix_64 target.
2022-05-19 10:55:23 -04:00
Andrew Rae b5efc7a7eb
feat(behaviors): Add `global-quick-tap` 2022-04-27 13:33:22 +01:00
Peter Johanson 953f5212a8 refactor(tests): Move to native_posix_64 target.
* Allows removing multilib from docker images
* Run properly in aarch64 host docker
  containers for testing on Rasberry Pi.
* Small sticky-keys fix to initialize w/ correct
  constant for max uin32_t value.
2022-04-03 00:10:29 -04:00
Peter Johanson 8afe124153 fix(tests): Fix snapshots to account for formatting changes. 2022-04-03 00:10:29 -04:00
jding 4e62319982 feat: hold/tap flavor tap-unless-interrupted
Implements new hold/tap flavor, tap-unless-interrupted
Adds tests
Adds docs
2021-11-09 01:07:05 -05:00
jmding8 19ee7849f8
feat(behaviors) Required keys for tap-hold behaviors
* Add optional `hold-trigger-key-positions` hold-tap configuration
* Leverage configuration for decision making around when to trigger
  hold decision in hold-taps.
* Add docs for new configuration.
* Tests for the new config/decision logic.
2021-11-01 12:37:20 -04:00
Okke Formsma efa497c69b fix(behaviors): Fix timing of delayed hold-tap trigger
A hold-tap timer event would be triggered too soon if the hold-tap
was delayed for longer than its tapping-term. This may cause
accidental hold behavior when the correct behavior would be tap.

By queuing the timer event instead of executing it immediately,
other delayed events get a chance to be processed properly.
2021-06-13 10:44:18 -04:00
Okke Formsma 0c1940bb79 feature(hold-tap): no-hold-flash for retro taps
This is an improvement on retro-tap, solving the 'flashing hold' issue
users people experience.

When the tapping-term expires, the hold key is normally pressed. When
retro-tap is enabled, this is undesirable; only an interrupted hold-tap
should trigger the hold behavior.

This change disables the hold behavior for the 'STATUS_HOLD_TIMER'
state when retro-tap is enabled, and makes sure the
'STATUS_HOLD_INTERRUPT' state will be triggered when appropriate.
2021-02-24 07:24:27 -05:00
Okke Formsma 89ed816c67 feature(hold-tap): Retro tapping 2021-02-24 07:24:27 -05:00
Okke Formsma 9c4c266b17 refactor(hold-tap): pretty print decision_moment 2021-02-24 07:24:27 -05:00
Okke Formsma abc60fc7cb refactor(hold-tap): split hold state into interrupt and timer 2021-02-24 07:24:27 -05:00
Okke Formsma af9d6e9b05 style(hold-tap)!: Write hold-tap params with dashes
tapping_term_ms -> tapping-term-ms
quick_tap_ms -> quick-tap-ms

The old style works, although it's deprecated.
2021-02-10 07:55:12 -05:00
Okke Formsma 9a7908b632 behaviors(hold-tap): Implement quick_tap_ms (TAPPING_FORCE_HOLD)
Tap-and-hold a hold-tap to hold the tap behavior so it can repeat.
After a tap, if the same key is pressed within `quick_tap_ms`, the
tap behavior is always picked.

This is useful for things like `&ht LSHFT BACKSPACE` where holding
the backspace is required.

Implements #288.
2021-02-02 15:28:16 -05:00
Okke Formsma 7b7701ae90 feature(modifiers): add explicit modifiers
this makes LS(LEFT_CONTROL) work as if shift and control were both
pressed explicitly. Previously, the left shift would have been released
as soon as another key was pressed. The implicit behavior is useful in
case of LS(NUMBER_1) when rolling over to other keys.

Also see #361.
2021-01-24 23:30:41 -05:00
innovaker 842aa5a842 refactor: replace filename hyphens with underscores
Aligns *.h and *.c to underscore naming convention.

These were kept (with warnings) for backwards compatibility with external boards/shields:
- kscan-mock.h
- matrix-transform.h
They should be removed in the future.

PR: #523
2020-12-28 01:15:35 -05:00
innovaker aebe90908d test: Replace superseded key names in test keymaps
Replace deprecated key names (LSFT, LCTL, RCTL, M_NEXT).

Replace abbreviated names with fully qualified names (LSFT, LCTL, LALT, LGUI, RGUI).

Follow-up to #21.
2020-11-03 23:50:54 -05:00
Okke Formsma 4f258efbf1 initial implementation for modifiers
https://github.com/zmkfirmware/zmk/issues/86
2020-11-03 00:19:37 -05:00
Okke Formsma d38740cebf
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
2020-10-10 17:32:53 -04:00
Okke Formsma c5ca664411 some fixes based on feedback 2020-09-02 15:26:06 +02:00
Okke Formsma f6a9c1ee57 rename tests 2020-09-02 15:10:46 +02:00
Okke Formsma c33931c72c Initial implementation of hold-tap 2020-09-01 19:41:08 +02:00