summaryrefslogtreecommitdiff
path: root/app/src
AgeCommit message (Collapse)Author
2022-02-07Behaviors: Add 'ignore-modifiers' option to sticky keysokke
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
2022-02-06fix(lighting): Proper split backlight support.Peter Johanson
Ensure the backlight behavior is run globally.
2022-02-05feat(backlight): add command to cycle brightnessAlessandro Bortolin
2022-02-05feat(backlight): add testsAlessandro Bortolin
2022-02-05refactor(backlight): code cleanupAlessandro Bortolin
2022-02-05feat(backlight): initial split supportReFil
2022-02-05feat(lighting): add backlight behaviorAlessandro Bortolin
2022-01-31refactor(splits): Minor cleanups to periph invocationPeter Johanson
* 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.
2022-01-31fix(split): Fix an off-by-one error in split svc.Peter Johanson
* Properly check end of behavior device string for null terminator.
2022-01-31fix(split): Slightly improved logging on peripherals.Peter Johanson
2022-01-31fix(split): Add define for local source.Peter Johanson
* Add `ZMK_POSITION_STATE_CHANGE_SOURCE_LOCAL` and use it consinstently to fix bug w/ local `&reset`, `&bootloader`, etc.
2022-01-31refactor(splits): Use index for event source.Peter Johanson
* Track peripherals by indexes slot, with all appropiate peripheral state stored in the slot. * Event sources tracked by peripheral slot index.
2022-01-31fix(split): Add queue for running remote behaviorsPeter Johanson
2022-01-31fix(underglow): Handle cycling effects on splits.Peter Johanson
* Convert relative effect cycling to absolute effect selection.
2022-01-31refactor(split): Clean up split GATT discovery.Pete Johanson
* 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.
2022-01-31feature(split): behavior locality support.Pete Johanson
* 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.
2022-01-30fix(behaviors): Capture mods for `&key_repeat`Peter Johanson
* When tracking the last keycode, also capture the currently held explicit modifiers to use when replaying the key later.
2022-01-30feat(behaviors): `&key_repeat` behavior + tests.Peter Johanson
* Add new `&key_repeat` behavior that captures and re-sends the most recently triggered keycode. Closes: #853
2022-01-30fix(ble): Restore BLE SC passkey entry for pairing.Peter Johanson
* Handle capturing numeric inputs while pairing and sending final passkey once six digits entered.
2021-12-02fix(hid): Implicit mods on non-key page eventsPeter Johanson
* Properly send the KEY usage page report for modifier changes when there are state changes to other usages pages that include implicit modifiers.
2021-11-28feat(behaviors): Add caps word (`&caps_word`).Peter Johanson
* Add new `&caps_word` behavior that acts like caps lock, but releases automatically when any "break" keycode is pressed.
2021-11-15feat(conditional-layers): Implement featureJonathan Rascher
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.
2021-11-09feat: hold/tap flavor tap-unless-interruptedjding
Implements new hold/tap flavor, tap-unless-interrupted Adds tests Adds docs
2021-11-04fix(split): Properly rediscover peripherals.Peter Johanson
* Handle disconnects of peripherals, and properly clean up and resume discovering for when the peripheral re-appears.
2021-11-01fix(behavior): Properly break in decision switch statement.jmding8
Co-authored-by: jding <jding@roblox.com>
2021-11-01feat(behaviors) Required keys for tap-hold behaviorsjmding8
* 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-10-20refactor(combos): Use ZMK_KEYMAP_EXTRACT_BINDINGJonathan Rascher
Now that PR #506 is merged, we can address this TODO.
2021-10-12fix(display): Increase char buffer size to fit all symbolsRichard Kjerstadius
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.
2021-10-10fix(underglow): Run clang-formatNick Winans
2021-10-10feat(underglow): Add support for configurable min/max brightnessSimon Malinge
Co-authored-by: jrhrsmit <jasper.770@gmail.com>
2021-10-04feat(hid): Kconfig for basic/full consumer usages.Peter Johanson
* 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.
2021-10-04feat(hid): Configurable NKRO HID report support.Pete Johanson
* Add Kconfig settings for NKRO or HKRO (boot compatible), HID report types for keyboard page. * Updated report storage and set/unset for each config.
2021-09-25refactor(display): Saner font selection/defaults.Peter Johanson
* Only select fonts for the default built in status screen * Leverage theme default fonts, instead of hardcoding theme details in each component.
2021-09-25refactor(display): Output/layer/battery thread safety.Peter Johanson
* Submit widget updates to display queue. * Use mutex to control access to shared state for widgets.
2021-09-25feat(display): Optional dedicated work queue.Peter Johanson
* 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.
2021-09-23fix(hog): use OR instead of AND for bitmapXudong Zheng
2021-09-18fix(hog): encrypt perm for HID report map/ref.Peter Johanson
* 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.
2021-08-27fix(display): Add proper LVGL label dep.Peter Johanson
2021-08-03fix(display): Update output status on endpoint selection change.Peter Johanson
2021-08-03feat(endpoints): Add endpoint select changed event.Peter Johanson
2021-08-03fix(usb): USB state changes in system thhread.Peter Johanson
* Use a `k_work` to send usb status events from the system workqueue thread, not the USB work thread.
2021-08-02fix(power): Manually trigger pm_low_power_devices() before sleepNick Winans
2021-08-02feat(power): Update device power management KconfigNick Winans
2021-07-17fix(display): Avoid fault w/ LVGL API usage.Peter Johanson
* 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
2021-07-17refactor(core): Move away from deprecated DT API.Pete Johanson
* 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
2021-07-17refactor(core): update power API to Zephyr v2.5.0innovaker
See: https://github.com/zephyrproject-rtos/zephyr/pull/29410 PR: https://github.com/zmkfirmware/zmk/pull/736
2021-06-13fix(behaviors): Fix timing of delayed hold-tap triggerOkke Formsma
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-08fix(combos): Check each combo key, not just lastJonathan Rascher
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.
2021-06-08fix(ble): Ignore out of range profilesJoel Spadin
Don't allow selecting a BLE profile that is out of range to avoid reading/writing past the end of the profiles array.
2021-05-09fix(behaviors): Fix sticky keys quick-release for normal keypressesOkke Formsma
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.