* blog: Add blog post on pinning ZMK version
* docs: apply suggestions from code review
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
* docs: bump date for correctly pinned template
---------
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
feat(split): Runtime selection of split transport
Allow building multiple split transports, and select an active
one based on the transport availability. Wired split availability
depends on additional `detect-gpios` which must be a GPIO pin
that goes active when a wired connection is present.
feat(split): Suspend/resume wired UART devices.
To better support runtime split support, suspend/resume the UART
as necessary to save power when not using the UART.
docs(split): Document adjusting nRF52 UART interrupt priorities
For wired split on nRF52, you may need to adjust the priority for UART
interrupts lower, to ensure the interrupts used for timing sensitive
BT operations can run when needed, so document this in our pinctrl docs.
refactor(split): Restore use of aync UART on nRF52.
With fixes for Zephyr UART driver, re-enable using async API on nRF52.
fix(split): Minor wired split fixes.
Various minor fixes for wired split to avoid spurious TX in half duplex,
etc.
fix: Unconditionally define HID payloads to avoid error.
Don't conditionally define HID indicator payload, to avoid compilation
errors.
docs(split): Expand on details of split transports.
Expand the split keyboard documentation with a more fleshed out section
on the available split trasnports, and what is and isn't supported by
each, including the runtime selection functionality.
---------
Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>
* docs: Add secondary functions for the keypad number keys
* docs: Change descriptions of secondary functions for the keypad number keys
The descriptions were updated to match those of the USB HID usage tables.
* Reference combos by index, not 32-bit pointers, and store bitfields
instead of arrays in several places, to bring down our flash/RAM usage.
* Use bit field to track candidate combos, to avoid needing an explicit
`ZMK_COMBO_MAX_COMBOS_PER_KEY` setting.
* Determine the max keys per combo automatically from the devicetree,
so we remove the ZMK_COMBO_MAX_KEYS_PER_COMBO Kconfig symbol.
refactor(split): Refactor split code for extension
Extract central/peripheral code to allow for plugging in alternate
transports, instead of tying all split logic to BT.
feat(split): Add full-duplex wired split support
* Depends on full-duplex hardware UART for communication.
* Supports all existing central commands/peripheral events, including
sensors/inputs from peripherals.
* Only one wired split peripheral supported (for now)
* Relies on chosen `zmk,split-uart` referencing the UART device.
docs: Add wired split config docs.
Migrate split to its own dedicated config file, and add details
on wired split config.
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
fix: Properly override stack size on RP2040
Move the system work queue stack size override on RP2040 ouf of
a `ZMK_BLE` conditional so it is properly applied generally for that
SoC.
---------
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
refactor(behaviors): Add max-held tap-dance config
Add new `CONFIG_ZMK_BEHAVIOR_TAP_DANCE_MAX_HELD` config for reducing RAM
usage on more constrained devices.
refactor(behaviors): Move defaults to Kconfig.defaults
docs: Inline simple physical layouts in new shield guide
docs: Fix broken anchor in module creation
docs: Make physical layout transform label consistent and comment
Zephyr is still working on the plan upstream for generically controlling
display "backlight" pins with GPIO/PWM, so in the meantime, add our
own chosen property `zmk,display-led` that is set to an LED device child
to allow blanking/unblanking of devices that use a dedicated backlight
control pin.
To be able to save on flash space, for layouts on space constrained
devices that don't require rotation, make key rotation props
optional behind a new Kconfig flag.
docs: Move battery sensing hardware integration to new page
docs: Refactor lighting hardware integrations to new category
docs: Link to pin control page from lighting pages
docs: Consolidate lighting feature pages
docs: Remove incorrect redirect
docs: Consolidate lighting config pages
docs: Add missing code fence languages in pointing
docs: Fix default msc exponent in example
docs: Make pointing hardware integration follow semantic structure
refactor(pointing): Allow stopping event propagation
Allow input processors to return a special value if a given input event
should not be further processed/propagated.
feat(pointing): Add behavior input processor
Add the ability to intercept certain input events and trigger behaviors
when they occur.
Co-authored-by: Jorge Villalobos <minusfive@users.noreply.github.com>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>