Age | Commit message (Collapse) | Author |
|
To combine multiple sticky modifiers, the sticky keys must ignore
other (sticky) modifier keypresses.
This behavior is important for "callum-style mods", where all modifiers
are sticky mods.
Fixes #829
|
|
Ensure the backlight behavior is run globally.
|
|
|
|
|
|
|
|
|
|
|
|
* Add strlcpy from public domain version.
* Leverage strlcpy to detect truncation of behavior dev strs, and log.
* Use `offsetof` for cleaner detection on peripheral side.
|
|
* Properly check end of behavior device string for null terminator.
|
|
|
|
* Add `ZMK_POSITION_STATE_CHANGE_SOURCE_LOCAL` and use
it consinstently to fix bug w/ local `&reset`, `&bootloader`, etc.
|
|
* Track peripherals by indexes slot, with all appropiate peripheral
state stored in the slot.
* Event sources tracked by peripheral slot index.
|
|
|
|
* Convert relative effect cycling to absolute effect selection.
|
|
* Use Zephyr auto CCC discovery instead of doing it ourselves.
* Split service versus characteristic discovery into dedicated
steps in the flow.
* Fix for not searching properly when connecting to a peripheral
a second time.
|
|
* GATT characteristic allowing passng data + behavior
label to invoke the behavior on the peripheral side.
* Behaviors have a locality setting to specify where they run.
* Build reset/power/RGB on peripheral.
|
|
* When tracking the last keycode, also capture the currently held
explicit modifiers to use when replaying the key later.
|
|
* Add new `&key_repeat` behavior that captures and re-sends
the most recently triggered keycode.
Closes: #853
|
|
* Handle capturing numeric inputs while pairing and sending
final passkey once six digits entered.
|
|
* Properly send the KEY usage page report for modifier changes
when there are state changes to other usages pages that
include implicit modifiers.
|
|
* Add new `&caps_word` behavior that acts like caps lock, but
releases automatically when any "break" keycode is pressed.
|
|
This is a generalization of the existing concept of tri-layer support
that's already well known. Essentially, a conditional-layer
configuration activates a particular layer (the then-layer) when one or
more other layers (the if-layers) are activated.
This is commonly used on ortho keyboards to activate a third "adjust"
layer while the primary two layers ("lower" and "raise") are active.
|
|
Implements new hold/tap flavor, tap-unless-interrupted
Adds tests
Adds docs
|
|
* Handle disconnects of peripherals, and properly clean up
and resume discovering for when the peripheral re-appears.
|
|
Co-authored-by: jding <jding@roblox.com>
|
|
* 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.
|
|
Now that PR #506 is merged, we can address this TODO.
|
|
Recent refactoring of the font handling seems to have broken the display
of the last symbol of the output status widget. From my analysis the
last symbol is truncated because the buffer simply is too small.
Increasing the buffer size to 9 fits all three possible symbols.
|
|
|
|
Co-authored-by: jrhrsmit <jasper.770@gmail.com>
|
|
* Add ZMK_HID_CONSUMER_REPORT_USAGES choice to allow choosing
between full consumer usage range, with poor OS compat,
or basic consumer usage range, with broader compat.
|
|
* Add Kconfig settings for NKRO or HKRO (boot compatible), HID
report types for keyboard page.
* Updated report storage and set/unset for each config.
|
|
* Only select fonts for the default built in status screen
* Leverage theme default fonts, instead of hardcoding theme
details in each component.
|
|
* Submit widget updates to display queue.
* Use mutex to control access to shared state for widgets.
|
|
* Add new Kconfig settingsx to allow selecting system or dedicated
work queue for performing UI updates.
* Allow UI updates to not block other system tasks when display is
updating, especially important for e-ink displays.
|
|
|
|
* Workaround for ensuring macOS pairing happens early enough,
for their stack, we require encryption for the hids report map and
report ref characteristics as well, to trigger pairing ealier in the
connection process for macOS.
|
|
|
|
|
|
|
|
* Use a `k_work` to send usb status events from the system
workqueue thread, not the USB work thread.
|
|
|
|
|
|
* Increment the tick from within the ISR itself.
* Don't call task handler until in the display callback.
PR: https://github.com/zmkfirmware/zmk/pull/736
|
|
* Move to `DEVICE_DT_INST_DEFINE` everywhere.
See: https://docs.zephyrproject.org/2.5.0/releases/release-notes-2.5.html#deprecated-in-this-release
PR: https://github.com/zmkfirmware/zmk/pull/736
|
|
See: https://github.com/zephyrproject-rtos/zephyr/pull/29410
PR: https://github.com/zmkfirmware/zmk/pull/736
|
|
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.
|
|
The current combo completion check only makes sure the last key in the
combo is set. This works when the combo is typed correctly initially, or
when reraising events in a combo of length two. However, it fails for
longer combos since the last event in pressed_keys might be set, but the
first (or subsequent) event in pressed_keys can be NULL thanks to
release_pressed_keys.
Also added a regression test.
|
|
Don't allow selecting a BLE profile that is out of range to avoid
reading/writing past the end of the profiles array.
|
|
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.
|