Okke Formsma
de4979bf58
fix(behaviors): Fix sticky keys quick-release for normal keypresses
...
Quick release for sticky keys failed for non-layer keys. The sticky key
was released just before the key that was supposed to be modified was
handled.
The issue was caused by an error in the sticky key logic, which released
the sticky key before handling the key up event.
Fixes #696 .
4 years ago
Okke Formsma
32008825fe
fix(behaviors): Add missing hold-tap trigger
...
A hold-tap trigger was missing in the scenario where a hold-tap behavior
was queued for a while and it's timer should've run out.
4 years ago
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.
4 years ago
Okke Formsma
89ed816c67
feature(hold-tap): Retro tapping
4 years ago
Okke Formsma
62ae157c0b
refactor(hold-tap): improve switch statements
4 years ago
Okke Formsma
9c4c266b17
refactor(hold-tap): pretty print decision_moment
4 years ago
Okke Formsma
0ebf440de8
refactor(hold-tap): create press_binding and release_binding functions
4 years ago
Okke Formsma
abc60fc7cb
refactor(hold-tap): split hold state into interrupt and timer
4 years ago
Okke Formsma
200c6cabea
refactor(hold-tap): use enum for hold-tap status
4 years ago
Okke Formsma
6b7026cdd1
refactor(hold-tap): simplify flavor enum
4 years ago
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.
4 years ago
Pete Johanson
2af794eed3
feat(underglow): Convert HSB changes to absolute.
...
* Public type for HSB led color.
* New API for calculating "next" HSB based on current
state.
* Update behavior to convert the increment/decrement
commands to absolute command as well.
4 years ago
Pete Johanson
e6f168d6df
refactor(behaviors): Convert state dependent params.
...
* Allow each behavior to map a relative binding, e.g. "toggle",
to an absolute one, e.g. "on", before being invoked.
4 years ago
Pete Johanson
bb2c478af9
refactor(rgb): Expose explicit on/off command/API.
4 years ago
Pete Johanson
b84d29c384
refactor(core): Use /omit-if-no-ref/ for behaviors.
...
* Use lesser-known DT features to skip behaviors not referenced
in the user keymap
* Update the behaviors to skip code if no nodes found.
* Remove some empty config/data structs where unused in
behaviors.
4 years ago
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 .
4 years ago
Okke Formsma
4e20bf5de1
refactor(behaviors): simplify hold-taps by not using _TRANSFORM_ENTRY
4 years ago
Okke Formsma
84d19fe79b
refactor(behaviors): factor out multiple uses of _TRANSFORM_ENTRY
4 years ago
Okke Formsma
c925cf02dd
feature(sticky_keys): add quick-release
...
when quick-release is enabled, the sticky key is released immediately after another key is pressed
4 years ago
Okke Formsma
0c30b49063
refactor(modifiers): define is_mods function
4 years ago
Okke Formsma
5eeb310b2f
feat(grave-escape): implement grave-escape
...
closes #85
4 years ago
Pete Johanson
3368a81057
refactor(core): Combine `is_` and `cast_` event functions.
...
* Use a single `as_foo` generated function to conditionally
return a certain event type from a generic `zmk_event_t*`
pointer.
4 years ago
Pete Johanson
3fe2acc2d1
refactor(core): Extra event payloads to own types, refactor API.
...
* Make it easier to use *just* event payloads by defining the data,
and then having event manager macros generate "wrapper structs"
* Improve is_*/cast_* APIs to hide details of full event struct.
* Create `zmk_event_t` typedef to pass to event handlers.
* Bring event names inline w/ consistent `zmk_` prefix.
4 years ago
Pete Johanson
003db892ad
refactor(core): Extra position state change data struct.
...
* Separate header and data struct for the event.
* Remove duplicate struct in split code.
4 years ago
KemoNine
99f932a47d
(feat) Allow setting underglow color by key press
4 years ago
Okke Formsma
319ce30270
chore(behavior): use ZMK_BEHAVIOR_OPAQUE in to-layer behavior
4 years ago
Okke Formsma
fa07ba9d32
refactor(behaviors): use ZMK_BEHAVIOR_OPAQUE and ZMK_BEHAVIOR_TRANSPARENT
...
Use these instead of the magic return values 0 and 1 for
behavior_driver_api return values.
4 years ago
Okke Formsma
caa285852a
refactor(events): return 'ZMK_EV_EVENT_BUBBLE' instead of magic number 0
4 years ago
KemoNine
d207c3c30f
(feature) Add &to keycode/behavior ( #489 )
...
feat(behaviors): Add `&to` behavior to switch to a layer.
4 years ago
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
4 years ago
innovaker
89532eadeb
fix(sticky keys): add 0xFF mask to usage_page
...
Aligns unpacking of usage_page with its equivalent line in keycode-state-changed.h
PR: #520
4 years ago
Okke Formsma
b115f16f4c
refactor(sticky keys): use DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) instead of DT_NODE_EXISTS(DT_DRV_INST(0))
4 years ago
Okke Formsma
1c2796d1c9
refactor(sticky keys): use pointer to avoid repetition in store_sticky_key
4 years ago
Okke Formsma
bc8803ba50
refactor(sticky keys): rename ZMK_BHV_STICKY_KEY_POSITION_NOT_USED to ZMK_BHV_STICKY_KEY_POSITION_FREE
4 years ago
Okke Formsma
26af11b390
refactor(sticky keys): rename timer_is_started to timer_started
4 years ago
innovaker
00ca0d2f1c
refactor(app): replace `struct device *` with `const struct device *`
...
Replaced with RegExp: /(?<!const )(struct device \*)/g
See: https://docs.zephyrproject.org/latest/releases/release-notes-2.4.html
PR: #467
4 years ago
innovaker
3d7376d2e5
refactor(app): replace `config_info` with `config`
...
See: https://docs.zephyrproject.org/latest/releases/release-notes-2.4.html
PR: #467
4 years ago
innovaker
bac1f17cf6
refactor(app): replace Zephyr integer types with C99 integer types
...
u8_t → uint8_t
u16_t → uint16_t
u32_t → uint32_t
u64_t → uint64_t
s8_t → int8_t
s16_t → int16_t
s32_t → int32_t
s64_t → int64_t
Prerequisite for #223
See: https://github.com/zephyrproject-rtos/zephyr/releases/tag/zephyr-v2.4.0
PR: #467
4 years ago
Okke Formsma
e00eceb508
fix(sticky keys): fix tapping-sticky-keys bug.
...
Sticky keys should be cleared when they were tapped in rapid succession before the timer runs out.
4 years ago
Okke Formsma
f86e0fff14
fix(sticky keys): always clear sticky key when releasing the behavior
4 years ago
Okke Formsma
2ba16c2f3d
fix(sticky keys): use correct timestamp when clearing sticky key in timer
4 years ago
Okke Formsma
37946ff57b
fix(sticky keys): simplify timer management
4 years ago
Okke Formsma
3bf770a364
bugfix(sticky keys): release active sticky keys properly
...
see https://github.com/zmkfirmware/zmk/issues/445
4 years ago
Okke Formsma
76a6d7b4c5
feat(sticky keys): initial implementation
4 years ago
Okke Formsma
bee45f9b3a
feat(events): add timestamp to keycode_state_changed and sensor_event
...
These timestamps are necessary to correctly deal with delayed events due to hold-tap shenanigans.
4 years ago
Nick
076fcc1f70
fix(underglow): Fix error on release of rgb_ug
4 years ago
Pete Johanson
eff1b8223b
refactor(keys): Unify usage page.
...
* Remove need for separate `&cp` behavior, but
keep it for now for backward compat.
* Refactor sensor inc/dec as well.
4 years ago
innovaker
d748d8a749
refactor: Replace superseded key names
...
Replace deprecated key names (LCTL, NUM_0, NUM_1).
Replace abbreviated names with fully qualified names (LCTL, RGUI, NUM_0, NUM_1).
Follow-up to #21 .
4 years ago
innovaker
e925319e4c
refactor(hid): Replace deprecated HID usage page references
...
Deprecate `USAGE_KEYPAD` and replace with `HID_USAGE_KEY`.
Deprecate `USAGE_CONSUMER` and replace with `HID_USAGE_CONSUMER`.
Closes #217 .
4 years ago
Okke Formsma
4f258efbf1
initial implementation for modifiers
...
https://github.com/zmkfirmware/zmk/issues/86
4 years ago