Compare commits

..

737 Commits

Author SHA1 Message Date
Pete Johanson
485dea4497 chore(main): release 0.4.0 2026-03-19 14:49:22 -06:00
Peter Cock
9278505975 fix(core): One tick kscan wait on RP2350 (#3255)
Override kscan tick wait time on RP2350 as well, to match RP2040.
2026-03-19 16:48:06 -04:00
dependabot[bot]
ff9d326939 chore(deps): bump actions/checkout from 4 to 5 (#3033)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-19 08:44:05 -06:00
André A. Gomes
df2e979d7e fix(ci): Skip build on empty build matrix (#3271)
Closes #3179
2026-03-16 10:37:54 -07:00
Pete Johanson
8feeb52eaf fix(ci): Better safeguards for ZMK variant build check (#3277)
Add an early guard to bail during the board compat check to ensure we
don't error out for out-of-tree boards with no ZMK variant.
2026-03-09 09:08:02 -06:00
Cem Aksoylar
714bbe30b0 docs: Fix #import to #include in dongle docs (#3276) 2026-03-05 15:38:51 -08:00
Pete Johanson
a23aa009d7 Add ZMK_BOARD_COMPAT symbol, that we can enable for our ZMK variants (#3265)
feat: Add ZMK_BOARD_COMPAT Kconfig symbol, and check for it

To properly detect users selecting a base board ID, when a ZMK variant
is available, add a ZMK_BOARD_COMPAT Kconfig symbol that the ZMK
variants will enable, allowing us to detect using the bare varand and
warn/error in CI so users don't end up with passing CI that results in
an unusable firmware due to missing ZMK enablement for keyboard name,
settings storage, etc.

refactor(boards): Add ZMK_BOARD_COMPAT to ZMK board variants

To clearly indicate the ZMK board variants are set up for ZMK usage,
select the ZMK_BOARD_COMPAT symbols for them.

fix(boards): Fix pillbug board.yml to report extension

Properly not the ZMK variant is part of an extension of the existing
pillbug board.
2026-03-03 10:39:11 -05:00
André A. Gomes
2a9ac3ba7f docs: Update Linux compatibility of C_AC_NEXT_KEYBOARD_LAYOUT_SELECT (#3268) 2026-03-02 11:39:08 -08:00
André A. Gomes
27afcb11ef docs: Add QMK comparison note for quick-tap-ms (#3257) 2026-02-27 13:19:37 -08:00
André A. Gomes
61f9ae4de2 docs: Replace deprecated variable names (#3260) 2026-02-27 13:17:36 -08:00
Seth Milliken
f6c629e895 fix: replace removed K_THREAD_STACK_MEMBER with K_KERNEL_STACK_MEMBER (#3218)
c.f.  https://docs.zephyrproject.org/latest/releases/release-notes-4.0.html#removed-apis-in-this-release
2026-02-26 18:14:36 -07:00
Seth Milliken
536375e45e fix: nice!view built-in widgets render failure from insufficient memory (#3243)
fixes #3219
2026-02-26 18:08:54 -07:00
André A. Gomes
e108e319c0 docs: Minor grammar fixes. (#3258) 2026-02-26 09:06:40 +00:00
Pete Johanson
9490391e1e fix(split): Use correct Kconfig for bumping TX buffers for discovery (#3216)
Newer Zephyr uses a different Kconfig value to control buffers for GATT
client discovery, so adjust our defaults to bump the correct value

Fixes: #3156
2026-02-18 03:16:16 -05:00
Pete Johanson
ed0fa157b1 docs: Fix up board IDs in the Zephyr 4.1 blog post to add ZMK variant (#3247)
Update the board revision/ID migration section of the Zephyr 4.1 blog
post to include the ZMK variant (`//zmk`).
2026-02-17 23:06:45 -08:00
Léo Cazenave
39a14154a9 docs: Fix C code examples in new behavior documentation (#3242) 2026-02-16 19:26:40 -08:00
Lucas SAUDON
5cfc67a334 fix(shields): Proper transparent binding in sofle raise layer (#3238)
Fix one binding in the Sofle raise layer that should be transparent in the stock keymap.
2026-02-15 12:18:40 -07:00
Peter Cock
75c9d5f6fd All 9 International & all 9 language keys recognized on macOS 15.6.1 (#3059)
* All nine International key recognized on macOS 15.6.1

Testing with Karabiner-EventViewer, reported as:
* international1
* japanese_pc_katakana
* international3
* japanese_pc_xfer
* international5
* international6
* japanese_pc_nfer
* international8
* international9

* All nine language keys recognized on macOS 15.6.1

Testing with Karabiner-EventViewer, reported as:
* japanese_eisuu (leave Japanese mode)
* japanese_kana (enter Japanese mode)
* lang3
* lang4
* lang5
* lang6
* lang7
* lang8
* lang9

* Insert line-break for style

* Move macOS Japanese notes to footnotes
2026-02-12 23:19:45 +01:00
Nicolas Munnich
e742da8e47 docs: Add new board guide (#3181)
* docs: Add new board guide

* docs: apply feedback from review
2026-02-12 20:26:11 +01:00
Pete Johanson
ada1542940 fix(ci): Pin @actions/artifact to a compatible release (#3230)
Fix build uploads by pinning our package version.
2026-02-12 02:24:12 -05:00
Pete Johanson
6690d535e6 refactor(core): Adjust our approach for upstream Zephyr boards (#3145)
refactor(core): Adjust our approach for upstream Zephyr boards

Move to using proper HWMv2 board extensions
https://docs.zephyrproject.org/4.1.0/hardware/porting/board_porting.html#board-extensions

for extending upstream Zephyr boards for use with ZMK. With this change,
using upstream Zephyr board IDs directly, e.g. `seeeduino_xiao` will be
stock versions as found upstream. To use a board variant that is tuned
for ZMK use, use the `zmk` variant, e.g. `seeeduino_xiao//zmk` which is
shorthand for `seeeduino_xiao/samd21g18a/zmk`.

refactor(boards): Move to ZMK specific variants for the nRFMicro board

For consistency, adjust the nRFMicro board definition to offer a
"vanilla" Zephyr board, and then ZMK variants, e.g.
`nrfmicro/nrf52840/zmk`.

refactor(boards): Move to ZMK specific variant for the bluemicro840 board

For consistency, adjust the bluemicro840 board definition to offer a
"vanilla" Zephyr board, and then ZMK variant, e.g. `bluemicro840//zmk`.

refactor(boards): Make tofu65 to ZMK variant by default

Make the standard Tofu65 board ID be `tofu65/rp2040/zmk` or
`tofu65//zmk` by shorthand.

refactor(boards): Move BDN9 to ZMK variant by default

Make the standard BDN9 board ID be `bdn9/stm32f072xb/zmk` or
`bdn9//zmk` by shorthand.

refactor(boards): Move Puchi BLE to ZMK variant by default

Make the standard Puchi BLE board ID be `puchi_ble/nrf52840/zmk` or
`puchi_ble//zmk` by shorthand.

refactor(boards): Move Adv360 Pro to ZMK variant by default

Make the standard Adv360 Pro board ID be `adv360pro_left/nrf52840/zmk` or
`adv360pro_left//zmk` by shorthand and for right as well.

refactor(boards): Move nRF52840 M2 to ZMK variant by default

Make the standard nRF52840 M2 board ID be `nrf52840_m2/nrf52840/zmk` or
`nrf52840_m2//zmk` by shorthand.

refactor(boards): Move Pillbug to ZMK variant by default

Make the standard Pillbug board ID be `pillbug/nrf52840/zmk` or
`pillbug//zmk` by shorthand.

refactor(boards): Move s40nc to ZMK variant by default

Make the standard s40nc board ID be `s40nc/nrf52840/zmk` or
`s40nc//zmk` by shorthand.

refactor(boards): Move nice!60 to ZMK variant by default

Make the standard nice!60 board ID be `nice60/nrf52840/zmk` or
`nice60//zmk` by shorthand.

refactor(boards): Move planck to ZMK variant by default

Make the standard planck board ID be `planck/stm32f303xc/zmk` or
`planck//zmk` by shorthand.

refactor(boards): Move preonic to ZMK variant by default

Make the standard preonic board ID be `preonic/stm32f303xc/zmk` or
`preonic//zmk` by shorthand.

refactor(boards): Move ferris to ZMK variant by default

Make the standard ferris board ID be `ferris/stm32f072xb/zmk` or
`ferris//zmk` by shorthand.

refactor(boards): Move Proton-C to ZMK variant by default

Make the standard Proton-C board ID be `proton_c/stm32f303xc/zmk` or
`proton_c//zmk` by shorthand.

refactor(boards): Move Corneish Zen to ZMK variant by default

Make the standard Corneish Zen board ID be `corneish_zen_left/nrf52840/zmk` or
`corneish_zen_left//zmk` by shorthand and for right as well.

refactor(boards): Move nice!nano to ZMK variant by default

Make the standard nice!nano board ID be `nice_nano/nrf52840/zmk` or
`nice_nano//zmk` by shorthand.

refactor(boards): Move mikoto to ZMK variant by default

Make the standard mikoto board ID be `mikoto/nrf52840/zmk` or
`mikoto//zmk` by shorthand.

refactor(boards): Move Polarity Works boards to ZMK variants

Make the standard Polarity Works board IDs be `zmk` variants.

doc: Update docs/blog post to reference ZMK variants

* Update Zephyr 4.1 blog post to mention ZMK variants
* Add note to hardware support page about variants

docs: Fix up shield board overlays for new board IDs

Adjust our documentation to properly use the correct qualified board
overlay file names that match our new board conventions.
2026-02-12 01:53:54 -05:00
Joel Spadin
6e7e0de2b6 feat(endpoints): add "no endpoint" value (#3140)
feat(endpoints): add "no endpoint" value

This adds ZMK_TRANSPORT_NONE, which can be set as the preferred
endpoint transport if you wish to prevent the keyboard from sending any
output. More usefully, it also is used to indicate that the preferred
endpoint is not available and it could not fall back to an available
one. To go along with this, many endpoint functions are renamed for
consistency, and a few new functions are added:

- zmk_endpoint_get_preferred_transport() returns the value that was set
  with zmk_endpoint_set_preferred_transport().

- zmk_endpoint_get_preferred() returns the endpoint that will be used
  if it is available. This endpoint always has the same transport as
  zmk_endpoint_get_preferred_transport().

- zmk_endpoint_is_connected() is a shortcut to check if the keyboard is
  actually connected to an endpoint.

This change is based on #2572 but without the option to disable endpoint
fallback. It does refactor code to allow adding that feature later.

fix(endpoints): Add endpoint setting upgrade

Adding ZMK_TRANSPORT_NONE at the start of enum zmk_transport results in
the preferred transport setting no longer representing the same values
when it is saved with earlier firmware and loaded with newer firmware.

To fix this, the "endpoints/preferred" setting is now deprecated and
replaced by "endpoints/preferred2". If the old setting is present, it
is interpreted as the old enum type, upgraded to the new type, and saved
immediately to the new setting. The old setting is then deleted.

To avoid this happening again in the future, enum zmk_transport now has
explicit values assigned to identifier, and a comment is also added to
explain that existing values must not be changed.

fix: Set default transport according to enabled transports

The default value for preferred_transport is now set to USB only if
CONFIG_ZMK_USB is enabled. If not, it falls back to BLE if
CONFIG_ZMK_BLE is enabled, then to "none" if nothing is enabled.
2026-02-12 01:51:42 -05:00
dependabot[bot]
ac7f75b859 chore(deps): bump lodash from 4.17.21 to 4.17.23 in /docs (#3211)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 19:55:24 +01:00
Joel Spadin
354cff9c36 fix(docs): Improve ZMK setup instructions (#3209)
* fix(docs): Improve link and code highlight contrast

Reset the theme's primary colors to the defaults, since the color of
links was a bit too low contrast in the dark theme. The default primary
color is a very similar but slightly lighter shade of blue.

The background color of highlighted lines in code blocks is also fairly
low contrast, but it needs to be in order to keep the text readable. To
add contrast here, we now add a colored block to the left side of a
highlighted line.

* fix(docs): Improve ZMK setup instructions

This makes several improvements to the instructions for installing and
using ZMK CLI:

- Windows Terminal is also named "Terminal", so reworded the terminal
  instructions to not separate Windows from other OSes.

- Specified that Windows Terminal should always be used on Windows, as
  on older installations of Windows, the default terminal when opening
  PowerShell may be the legacy console host, which may not support some
  of the VT sequences used by ZMK CLI.

- Switched from pipx to uv. This eliminates the need for instructions
  on installing Python, as uv will automatically install a supported
  version of Python if needed.

- Updated the instructions for running "zmk init", as ZMK CLI version
  0.4.0 switched from immediately asking for a repo URL to prompting
  the user to select between creating a new repo or cloning an existing
  one first.

- Since for a new user, having a keymap compile successfully on the
  first attempt after modifying it may be the exception rather than the
  norm, added a note about error messages in GitHub actions with a link
  to the troubleshooting page.

Also added instructions for updating ZMK CLI to the latest version on
the ZMK CLI page.
2026-01-17 20:00:01 -06:00
Willow Herring
ab46f48dde fix(keymap): Fix overflow in get/set bindings (#3205)
With the binding referenced to as uint8_t the keymap would be incorrect if more than 256 positions were in use, going to a uint16_t gives large enough headroom to not have to worry
2026-01-16 18:55:13 -05:00
Pete Johanson
24487bd974 feat(pointing): Release pressed keys on disconnect (#3204)
Match the behavior for key press release on split peripheral disconnect,
and track pressed input keys to release them as needed on disconnect.
2026-01-14 13:17:43 -05:00
Cem Aksoylar
88db5f34fe docs: Fix build.yaml references (#3203)
Fixes #3191
2026-01-13 07:16:45 +00:00
Xudong Zheng
9fc10ddc22 refactor(ble): use Zephyr macros for advertising data (#3173) 2026-01-11 17:12:28 -07:00
Nicolas Munnich
19582174f3 chore: Add basic tests for Studio's layer manipulation (#3164)
chore: Add test behaviors for Studio testing

chore: Add basic tests for studio layer adjustment

chore: Fixes from code review
2026-01-07 19:01:05 -05:00
cormoran
70ab6b243a fix(studio): avoid decoding buffer overflow (#3185)
This patch fixes studio rpc bug. Protobuf decoding buffer overflows when
multiple frames are in rx buffer.
2026-01-07 18:09:13 -05:00
Pete Johanson
f85ec7e7a2 SoC: stm32c0 support (#3174)
deps: Use hal_stm32 with stm32c0 USB device fixes.

Pull in ZMK fork of hal_stm32 with USB device driver fixes for stm32c0.

feat: Add nBOOT_SEL bit setup for STM32 G0/C0 targets

Newer STM32 C0 and G0 series SoCs do not by default allow use of the
BOOT0 pin/button to enter the bootloader once something has been flash
to the device, which is a change from previous series, and usually not
what's wanted for keyboards running ZMK. To address this, add some
optional, but default initialization code to check the nBOOT_SEL bit and
override it if necessary to ensure BOOT pin/button functionality.

docs: Extract bootloader config into a dedicated page.

Pull the bootloader intergration options out of the system configuration
page into their own dedicated one.

Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>

---------

Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>
2026-01-07 18:05:13 -05:00
dependabot[bot]
43b09e0fae chore(deps-dev): bump typescript-eslint (#3192)
Bumps the development group in /docs with 1 update: [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `typescript-eslint` from 8.51.0 to 8.52.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.52.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.52.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-07 23:22:33 +01:00
Solodros
abce9deab7 fix(hid): initialize missing d_scroll_x field in mouse report (#3196)
The static mouse_report definition did not initialize the d_scroll_x
field. The zmk_hid_mouse_report_body structure contains five fields
(buttons, d_x, d_y, d_scroll_y, d_scroll_x), but d_scroll_x was left
uninitialized.

Initialize d_scroll_x to 0 to ensure all fields in the mouse report
are properly initialized and avoid potential undefined behavior.
2026-01-07 17:16:24 -05:00
Solodros
36dbf46764 fix(split): correct async UART RX buffer definition (#3193)
The RX buffer was previously defined as [RX_BUFFER_SIZE/2][2], which
created (RX_BUFFER_SIZE/2) small 2-byte buffers instead of the two
(RX_BUFFER_SIZE/2)-byte buffers required for DMA ping-pong operation.

Update the buffer definition to [2][RX_BUFFER_SIZE/2] and apply the
fix to both the central and peripheral wired split implementations.

This prevents potential DMA RX data corruption when using async UART.
2026-01-07 17:04:52 -05:00
Cem Aksoylar
cb786cd7d6 docs: Remove unneeded led strip config (#3186) 2026-01-02 21:02:29 +01:00
dependabot[bot]
76bf2e5774 chore(deps): bump qs from 6.14.0 to 6.14.1 in /docs (#3183)
Bumps [qs](https://github.com/ljharb/qs) from 6.14.0 to 6.14.1.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.14.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 18:01:18 +01:00
Nicolas Munnich
fee2404d5d docs: remove new shield clean room warning (#3180) 2025-12-30 10:04:58 -08:00
dependabot[bot]
f002882eca chore(deps-dev): bump typescript-eslint (#3178)
Bumps the development group in /docs with 1 update: [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `typescript-eslint` from 8.50.1 to 8.51.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.51.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.51.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-30 10:56:32 +00:00
Nicolas Munnich
340e35c461 docs: Add redirect setup script informing users to switch to ZMK CLI (#3168) 2025-12-29 10:26:00 -08:00
snoyer
40e06f3c00 feat(shields): Add Studio support to boardsource3x4 (#3154)
* feat(shields): Add Studio support to boardsource3x4

* rename default transform

* add position maps
2025-12-28 08:32:42 +00:00
Nicolas Munnich
a9e0befcb6 docs: Also remove the erroneous default value for (#3170)
layers property in combos config
2025-12-25 07:34:48 +00:00
Nicolas Munnich
8568d02b0b docs: Fix layers property of config combo page (#3167) 2025-12-24 17:07:26 +01:00
Alexander Krikun
308de56fb9 fix(core): support magic bootloader values for nRF52833 (#3163)
Enable ZMK_BOOTMODE_MAGIC_VALUE_BOOTLOADER_TYPE_ADAFRUIT_NRF52 for
nRF52833, add nrf52833_uf2_boot_mode.dtsi as a copy of the nRF52840 file
for easy inclusion.

Enable retention for all nrfmicro subvariants (as this is the only
in-tree board that uses the nRF52833).

This fixes &bootloader for nRF52833 boards post-4.1 upgrade.
2025-12-24 08:16:59 -07:00
dependabot[bot]
b68b29d053 chore(deps-dev): bump the development group across 1 directory with 2 updates (#3162)
Bumps the development group with 2 updates in the /docs directory: [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) and [webpack](https://github.com/webpack/webpack).


Updates `typescript-eslint` from 8.50.0 to 8.50.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.50.1/packages/typescript-eslint)

Updates `webpack` from 5.104.0 to 5.104.1
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.104.0...v5.104.1)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.50.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development
- dependency-name: webpack
  dependency-version: 5.104.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-24 08:41:41 +00:00
Nicolas Munnich
8266433d6b chore(ci): Add warning about being on main branch when build fails (#3159) 2025-12-22 23:05:23 +00:00
hyx0329
118359c83e fix(usb): Prevent unexpected USB disconnection caused by USB SOF (#3070)
ZMK doesn't use SOF. Disable this to prevent unexpected USB
disconnection. The disconnection is observed under 3 circumstances on a
Linux host:

1. Keyboard just performed a firmware upgrade and USB is kept connected.
2. Keyboard is woken from USB power source and USB is kept connected.
3. Keyboard is connected when host is booting, and when Linux is just
   initialized.

Disabling SOF processing will not affect boot protocol switching.

Tested on Makerdiary M60.
2025-12-18 00:52:27 -05:00
Robert U
edb36b5838 docs: Update native posix instructions for zephyr 4.1 (#3151) 2025-12-18 00:46:55 -05:00
Niclas
45de943485 build: add support for local config builds via act (#3124)
Adds support for building the firmware in the config-repo locally via
[act](https://github.com/nektos/act).

Linux example command:
```shell
act --artifact-server-path $PWD/.artifacts
```

MacOS (M2) example command:
```shell
act --artifact-server-path $PWD/.artifacts \
--container-architecture \
linux/amd64 --container-daemon-socket -
2025-12-18 00:46:05 -05:00
Nicolas Munnich
040238a97d chore(docs): Update docusaurus (#3147)
dunno why dependabot didn't update these 3 together
2025-12-17 18:04:39 +01:00
Nicolas Munnich
ce73101049 docs: Update hardware integration page with Zephyr 4.1 board setup (#3138)
* docs: Update hardware integration page with Zephyr 4.1 board setup

* docs: Apply suggestions from code review

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-12-17 00:21:52 +00:00
dependabot[bot]
c64bda4160 chore(deps-dev): bump the development group across 1 directory with 12 updates (#3099)
Bumps the development group with 12 updates in the /docs directory:

| Package | From | To |
| --- | --- | --- |
| [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) | `3.9.1` | `3.9.2` |
| [@docusaurus/tsconfig](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-tsconfig) | `3.7.0` | `3.9.2` |
| [@docusaurus/types](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-types) | `3.9.1` | `3.9.2` |
| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.23.0` | `9.38.0` |
| [eslint](https://github.com/eslint/eslint) | `9.23.0` | `9.38.0` |
| [eslint-plugin-mdx](https://github.com/mdx-js/eslint-mdx) | `3.3.2` | `3.6.2` |
| [globals](https://github.com/sindresorhus/globals) | `16.0.0` | `16.4.0` |
| [prettier](https://github.com/prettier/prettier) | `3.5.3` | `3.6.2` |
| [string-replace-loader](https://github.com/Va1/string-replace-loader) | `3.1.0` | `3.2.0` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.8.2` | `5.9.3` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.30.1` | `8.46.1` |
| [webpack](https://github.com/webpack/webpack) | `5.98.0` | `5.102.1` |



Updates `@docusaurus/module-type-aliases` from 3.9.1 to 3.9.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.9.2/packages/docusaurus-module-type-aliases)

Updates `@docusaurus/tsconfig` from 3.7.0 to 3.9.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.9.2/packages/docusaurus-tsconfig)

Updates `@docusaurus/types` from 3.9.1 to 3.9.2
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.9.2/packages/docusaurus-types)

Updates `@eslint/js` from 9.23.0 to 9.38.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v9.38.0/packages/js)

Updates `eslint` from 9.23.0 to 9.38.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.23.0...v9.38.0)

Updates `eslint-plugin-mdx` from 3.3.2 to 3.6.2
- [Release notes](https://github.com/mdx-js/eslint-mdx/releases)
- [Changelog](https://github.com/mdx-js/eslint-mdx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mdx-js/eslint-mdx/compare/eslint-plugin-mdx@3.3.2...eslint-plugin-mdx@3.6.2)

Updates `globals` from 16.0.0 to 16.4.0
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.0.0...v16.4.0)

Updates `prettier` from 3.5.3 to 3.6.2
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.5.3...3.6.2)

Updates `string-replace-loader` from 3.1.0 to 3.2.0
- [Release notes](https://github.com/Va1/string-replace-loader/releases)
- [Commits](https://github.com/Va1/string-replace-loader/commits)

Updates `typescript` from 5.8.2 to 5.9.3
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.8.2...v5.9.3)

Updates `typescript-eslint` from 8.30.1 to 8.46.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.46.1/packages/typescript-eslint)

Updates `webpack` from 5.98.0 to 5.102.1
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.98.0...v5.102.1)

---
updated-dependencies:
- dependency-name: "@docusaurus/module-type-aliases"
  dependency-version: 3.9.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development
- dependency-name: "@docusaurus/tsconfig"
  dependency-version: 3.9.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: "@docusaurus/types"
  dependency-version: 3.9.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development
- dependency-name: "@eslint/js"
  dependency-version: 9.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: eslint
  dependency-version: 9.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: eslint-plugin-mdx
  dependency-version: 3.6.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: globals
  dependency-version: 16.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: prettier
  dependency-version: 3.6.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: string-replace-loader
  dependency-version: 3.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: typescript
  dependency-version: 5.9.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: typescript-eslint
  dependency-version: 8.46.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: webpack
  dependency-version: 5.102.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-17 00:06:59 +01:00
dependabot[bot]
ce8d9a3627 chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /docs (#3146)
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-16 22:38:34 +01:00
dependabot[bot]
7b31fb83c0 chore(deps): bump js-yaml from 4.1.0 to 4.1.1 in /docs (#3113)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-16 21:18:04 +01:00
dependabot[bot]
0e05ee73b7 chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /docs (#3123)
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.3.1 to 1.3.2.
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-version: 1.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-16 21:16:53 +01:00
Joel Spadin
930b5cc058 docs: Replace user setup script with ZMK CLI (#3137)
This deletes the Bash and PowerShell setup scripts in favor of using
ZMK CLI. The old setup scripts are broken, since the config repo
template uses ZMK version 0.3, while the setup scripts use hardware
metadata from the main branch. ZMK CLI doesn't have this issue, because
it clones the version of ZMK listed in the config repo to get hardware
metadata.

Much of the "Installing ZMK" page has been rewritten to give
instructions for installing ZMK CLI and using it to create and modify
a config repo. The previously-hidden page on ZMK CLI has been added to
the sidebar and repurposed into general documentation for the tool.
2025-12-14 16:20:35 -06:00
Joel Spadin
8987f3979d fix: Fix redundant const warning (#3139)
Fixed a build warning about "const" being used twice.
2025-12-14 16:39:39 -05:00
Nicolas Munnich
cb6ecc1774 docs: Remove references to nice_nano_v2, seeeduino_xiao_ble and nrfmicro_13 (#3135) 2025-12-14 12:57:24 -08:00
Cem Aksoylar
8af2f130a8 docs: Update Corne-ish Zen mentions for Zephyr 4.1 upgrade renames (#3143)
* docs: Fix mentions of Corne-ish Zen for HWMv2 change

* blog: Add Corne-ish Zen to renamed boards in Zephyr 4.1
2025-12-14 07:15:54 +00:00
carrefinho
90b3ad2c9e blog: Merge duplicate "Getting The Changes" sections in Zephyr 4.1 post (#3142) 2025-12-13 20:38:58 -08:00
Joel Spadin
c0990410da fix: Add "optional" folder to .gitignore (#3141)
Zephyr now has some modules that get placed under /optional/modules
instead of /modules. Added that to .gitignore so Git doesn't try to
treat those like Git modules.
2025-12-13 17:37:14 -06:00
carrefinho
fed2cf69da blog: Clarify west upgrade command in Zephyr 4.1 update post (#3133) 2025-12-11 21:08:03 -08:00
Jakob Linke
958fa78806 fix(behaviors): correctly handle sensor rotation remainder (#3084)
The original condition was always true, this commit fixes the condition
to correctly handle the remainder for sensor rotation behaviors by using
abs().

Co-authored-by: schuay <schuay@users.noreply.github.com>
2025-12-10 03:49:34 -05:00
Nicolas Munnich
3c0f0af947 chore(tests): Write test builds to logfile (#3125)
* tempfile necessary because running build command makes directory pristine,
interfering with the build log being written.
* Should be automatically picked up by the artifacts in CI tests
2025-12-10 03:45:08 -05:00
Pete Johanson
779c9876d1 docs: Move the Zephyr 4.1 blog post to a specific pinned date (#3131)
Avoid shifting URLs by pinning to the actual post date.
2025-12-09 19:49:10 -05:00
Pete Johanson
c06fa48ce5 feat!: Move to zephyr v4.1 (#3060)
refactor: Move to Zephyr v4.1.0

Move to Zephyr v4.1.0, with various build/compilation fixes needed for
basic use.

refactor(tests): Move to native_sim for tests.

feat(core): (Optionally) use Zephyr keyboard input devices

Add ability to assign a keyboard `input` device to a physical layout,
or use a chosen `zmk,matrix-input`.

fix(pointing): Refactor for changes to input API

Pass NULL user_data to input callbacks.

fix(tests): Fix BLE test to account for Zephyr changes

Handle additional read callback invocation once all matching
characteristic have been read.

fix(sensors): Initialize sensor data to 0 before fetching.

Be sure we don't get back any uninitialized data by initializing
the channel data to 0 before calling into the sensor API.

refactor(input): Adjust split input to input API changes.

Input callbacks now have a user_data parameter, adjust accordingly.

chore(bluetooth): Minor cleanup of split BT code after refactor

Small fixes and remove commented dead code left after the split
refactor.

refactor: Fix up BLE tests after Zephyr upgrade.

Minor changes to snapshots based on newer Zephyr version.

refactor(boards): Move to upstream xiao_ble board ID.

Move to official upstream board definition for the Seeed XIAO BLE.

refactor: Adjust metadata schema for HWMv2 board IDs w/ qualifiers

Adjust our ZMK metadata to allow for board IDs that include qualifiers
with slash delimeters.

refactor!(boards): Move nice!nano to HWMv2, and proper revisioning

Upgrade the nice!nano board to HWMv2, under the proper nicekeyboards
vendor directory, and with proper revisions. Includes a breaking change
to default the `2.0.0` version instead of the much older v1 (`1.0.0`).

fix: Disable Nordic dt-bindings header checks.

Disable the recently added Nordic dt-bindings header checks, which cause
issues for our HID related headers.

fix(studio): Correct `memset` usage.

Use the correct memset call to clear our RPC memory.

fix: Refactor for new Zephyr PM API

Adjustments to our PM code to match Zephyr PM APIs.

refactor(ble): Use correct BT opt for connectable.

Adjust for upstream Zephyr BT API changes for advertising options.

refactor(boards): Move MakerDiary M2 board to HWMv2.

Run the HWMv2 script to convert the MakerDiary M2 board.

fix(studio): Correct usage of thread analyzer API

Fix up the RPC code that invoke the thread analyzer API to account for
API changes.

chore: Remove nanopb module override.

Leverage nanopb version that's used by Zephyr.

feat(core): mapper for magic bootloader values.

To trigger bootloaders that use a magic value in RAM to trigger
bootloader mode, add a mapping retained memory driver that maps
write/read of boot mode values to a special magic value stored
in the actually backing RAM.

feat(behaviors): Add retention boot mode to reset.

Support new generic Zephyr retention boot mode API in the reset
behavior.

feat: Add double tap to enter bootloader functionality

Add ability to enter the bootloader if double tapping reset within the
specified window.

refactor(CI): Move to 4.1 container tags.

Move to the new 4.1 tagged container, to ensure updated SDK, Python
packages, etc.

refactor(boards): Move nRFMicro to HWMv2

Refactor nRFMicro to HWMv2, using proper SoC, revisions, and variants
(for flipped). Also move to devicetree setup of DCDC/HV DCDC.

refactor(boards): Move QMK Proton-C to HWMv2

Move Proton-C to HWMv2 for use with Zephyr 4.1.

chore(ci): Adjust core coverage for new board IDs.

Use correct board IDs, with qualifiers, for our core coverage testing.

refactor(boards): Move BDN9 to HWMv2

Move BDN9 to HWMv2, using the base `bdn9` ID, no longer including the
`_rev2` suffix in the ID.

refactor(boards): Move nice!60 to HWMv2

Migrate nice!60 to HWMv2.

refactor: Adjust how we're searching/loading keymap files

Use new post_boards_shields extension point for loading keymap files
from board/shield directories.

refactor(boards): Move planck rev6 to HWMv2.

Move Planck board definition to HWMv2, including versioning tweaks.

refactor(boards): Move OLKB Preonic to HWMv2

Move Preonic board definition to HWMv2 and remove `_rev3` variant
suffix in favor of board versioning with `3.0.0` as the default.

chore(deps): Pull in Zephyr optional group for nanopb.

Ensure we enable nanopb by adding +optional group filter.

fix(ci): Prevent slash characters in artifact names.

Move to HWMv2 means board IDs often include slashes, so replace those
with underscores when doing file uploads.

fix(usb): Adjust Kconfig settings for USB.

* Ensure USB isn't initialized automatically before we do, which can
  happen if USB CDC logging is used/enabled for a given board.
* Adjust USB HID to initialize the USB class/interface before we enable
  the USB device itself.

fix(display): Fix setting the small font for the mono theme.

Adjust for modified mono theme init function to pass the small font.

chore(ci): Fix changed board IDs for core coverage.

Adjust board IDs for our core coverage after move to HWMv2 and board
versioning consistently.

* planck_rev6 -> planck
* bdn9_rev2 -> bdn9

fix(underglow): Remove use of removed Kconfig WS2812 symbol

refactor(boards): Move PW CKP boards to HWMv2

Migrate the bt60, bt65, and bt75 to HWMv2.

refactor(boards): Move Puchi BLE to HWMv2

Migrate the Puchi BLE to HWMv2.

refactor(boards): Migrate Ferris rev02 to HWMv2.

Move Ferris rev02 to HMWv2, and remove the revision from the ID.

refactor(boards): Move Pillbug to HWMv2

Migrate the MechWild PillBug board to HWMv2.

refactor(boards): Migrate s40nc to HWMv2

Move the ShortyFortyNoCordy (s40nc) to HWMv2.

refactor(boards): Move bluemicro840 board to HWMv2.

Migrate bluemicro840 board to HWMv2, set up boot mode retention.

fix(boards): Retore bootloader support on XIAO BLE.

Set up necessary boot mode/retention to properly set GPREGRET to trigger
Adafruit bootloader to run on the XIAO BLE.

refactor(boards): Move Adv360 Pro to HWMv2.

Migrate Adv360 Pro left/right to HWMv2.

refactor(boards): Move Glove80 to HMWv2

Refactor the MoErgo Glove80 left/right to HWMv2.

refactor(boards): Move Mikoto to HMWv2.

Migrate Mikoto to HWMv2, with non-exact matching, tweaks to I2C
selection to imply it for the 7.2.0 revision for the fuel gauge.

refactor(boards): Move kbdfans Tofu65 2.0 to HMWv2

Move Tofu65 2.0 to HMWv2, with ID of just `tofu65`.

refactor(boards): Remove dz60rgb board

Remove dz60rgb, it's no longer readily available and we have other
current stm32 reference designs for testing.

refactor(boards): Move Corneish Zen to HMWv2

Move Corneish Zen to HMWv2, with IDs of
`corneish_zen_left`/`corneish_zen_right`.

refactor(boards): Migrate Corne-ish Zen status screen

* refactor(boards): Add boot mode to the nice!nano using common dtsi

* Add a new .dtsi for setting up nRF52 boot mode/retained memory
  settings
* Adjust XIAO BLE to use the new include file
* Add boot mode to to the nice!nano

refactor(boards): Add boot mode support to nice!60 board

Enable boot mode for nice!60 board.

refactor(boards): Adjust Zephyr board metadata file locations

Move the ZMK metadata files for upstream Zephyr boards to align with the
HWMv2 directory structure that uses the vendor ID for the parent
directory for a board directory.

fix: Don't enable ZMK Display by default for a few shields

By convention, avoid enabling ZMK Display by default on shields that may
be built with under-resourced controllers (e.g. nRF52833 based ones).

fix: Remove usage of renamed Kconfig from core coverage.

Avoid using WS2812_LED_STRIP, since that Kconfig was renamed/split into
SPI/GPIO/I2S symbols.

refactor(boards): Adjust XIAO RP2040 override names, bootloader support

Adjust the .conf/.overlay files to match the proper naming for the
XIAO rp2040 board. Also add the necessary Kconfig/DTS bits for
supporting bootloader using retained memory/boot mode retention.

fix(display): Adjust stack sizes for display usage.

Updated LVGL is bumping our stack size, so adjust the system work queue
and dedicated display queue stack sizes as needed to account for this.

feat(display): Add thread name to dedicated display queue.

When thread names are enabled, pass a name to the dedicated display
queue for better tracibility when using the thread analyzer.

docs(blog): Add Zephyr upgrade post

docs: Add bootloader integration page

Add a dedicated page to outline steps to set up bootloader integration
using the boot retention mechanism in newer Zephyr versions.

fix(display): port nice!view display code

* remove `lv_` prefix from old LVGL methods

doc: Update local setup docs to use `west packages pip`

Install Zephyr deps using the newer `west packages pip --install`.

Signed-off-by: Peter Johanson <peter@peterjohanson.com>

refactor(split): Adjust BT split code for newer Zephyr APIs.

refactor(boards): Adjust upstream RP2040 boards for boot mode retention

Add necessary DTS/Kconfig settings to upstream RP2040 boards so they can
use the ZMK bootloader functionality using the boot mode retention
infrastructure.

docs: Update Zephyr docs links to 4.1.0 version.

Update all links to the Zephyr docs to the 4.1.0 versions to match our
Zephyr version in use.

docs: Add a note about using CMake v3 for maximum compatibility.

Some optional modules, like libmetal, which is used on nRF5340,
specifically require CMake v3, so add a note in the native toolchain
setup about this.

feat(pointing): Handle INPUT_BTN_TOUCH codes for mouse buttons

Translate INPUT_BTN_TOUCH input codes into button 0 press/release for
HID layer.

chore(pointing): Clean up some warning messages.

Properly check return code from queue-ing messages, and fix up some type
warnings in our logging calls.

* Fix input event codes line numbers

fix(studio): Properly serialize GATT RPC indications.

fix(core): Set a system work queue stack size of 2048 by default

We use a fair amount of stack even without BLE or RP2040, so default to
2048 by default everywhere, and constrained platforms can lowes this if
they really need.

refactor(core): Move away from deprecated DIS Kconfig symbols

Use the correct Device Information Service Kconfig symbols for our model
number and manufacturer.

refactor: Move upstream Zephyr board overrides to extensions dirs

Newer Zephyr supports "board extensions" to formally do what we've added
in ourselves via some hacks, so move all our board overlay/config file
overrides for upstream Zephyr boards into that correct structure.

fix(boards): Add xiao_ble sd_partition label for nosd snippet compat

Upstream xiao_ble uses different naming convention for the partition
labels, so add an additional label for the SD range, so the existing
nrf52840-nosd snippet will still work with the board.

fix(core): Don't force CBPRINTF_NANO, for proper formatting.

The nano CBPRINTF implementation lacks some padded formatting needed to
ensure consistent formatting of BLE addresses, which we use to store
keys as strings in a few places, so use the complete CBPRINTF by default
now.

fix(boards): Remove some references to old nice_nano_v2 board ID.

The nice!nano board definition now properly uses versioning, so avoid
referring to it with old `nice_nano_v2` board ID.

fix(boards): Remove nano overlays for old nice_nano_v2 board ID.

With board versioning in place, we can remove the unused
`nice_nano_v2.overlay` files from shields.

---------

Signed-off-by: Peter Johanson <peter@peterjohanson.com>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Nicolas Munnich <munnich@lipn.univ-paris13.fr>
Co-authored-by: snoyer <noyer.stephane@gmail.com>
2025-12-09 19:43:22 -05:00
Pete Johanson
abb64ba316 docs: Build fix on release branches (#3130)
Small build fix for the navbar label for the version dropdown, when
building in release version branches.
2025-12-07 04:04:51 -05:00
Pete Johanson
8de5b120aa docs: Add release version to the docs, with links and warning banner (#3122)
Add versions to the sidebar of the documentation, and when viewing the
deployment on zmk.dev, which tracks `main`, add a banner warning about
possibly prefering the docs for a particular stable release.
2025-12-07 03:43:13 -05:00
Genteure
ece2ce11b8 fix(split): int to pointer cast in bas proxy (#3105)
Direct int to pointer cast causing build to fail in some build environments.
2025-12-07 02:38:05 -05:00
Willow Herring
d32ffb0a33 fix(split): Properly return from command handler (#3120) 2025-12-06 23:09:31 -05:00
Cem Aksoylar
83eafcbf9b refactor(Kconfig): Move BT_DEVICE_APPEARANCE to defaults (#3128) 2025-12-06 15:58:18 -07:00
Artem
ad7fbfef92 feat(ble): Use appearance set in the BT_DEVICE_APPEARANCE config (#3115)
Properly use the BT_DEVICE_APPEARANCE Zephyr symbol to advertise
the correct appearance, allowing overrides, for e.g. mice.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-12-04 13:53:47 -05:00
Kurtis Lew
e34793e8c7 feat(docs): Update New Behavior Guide (#3107) 2025-11-16 16:02:35 -08:00
Nicolas Munnich
5138c6fb14 feat: Allow layer behaviors to "lock" layers on (#2717)
* refactor(core)!: Allow layer behaviors to "lock" layers on

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

* docs: Added documentation note on locking layers

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-11-14 23:13:35 +01:00
Peter Cock
f9be3ed9c0 docs: List some of the commonly used MCUs (#3111) 2025-11-08 14:05:53 -08:00
Willow Herring
7738924349 feat(split): Add HID indicators and physical layout set to Wired split (#3103) 2025-11-02 17:01:08 -07:00
dependabot[bot]
4ec69cb7e6 chore(deps): bump webpack-dev-server, @docusaurus/core, @docusaurus/preset-classic and @docusaurus/theme-mermaid (#3080)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-30 12:05:36 -07:00
Andrés Mejía
61de01abb0 feat(layouts): Add physical layout for Redox shield 2025-09-16 23:23:46 +02:00
dependabot[bot]
c44343509a chore(deps): bump brace-expansion in /docs (#3067)
Bumps  and [brace-expansion](https://github.com/juliangruber/brace-expansion). These dependencies needed to be updated together.

Updates `brace-expansion` from 1.1.11 to 1.1.12
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

Updates `brace-expansion` from 2.0.1 to 2.0.2
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
- dependency-name: brace-expansion
  dependency-version: 2.0.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-12 22:23:33 +02:00
dependabot[bot]
540bf2c32b chore(deps): bump mermaid from 11.6.0 to 11.10.1 in /docs (#3042)
Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 11.6.0 to 11.10.1.
- [Release notes](https://github.com/mermaid-js/mermaid/releases)
- [Commits](https://github.com/mermaid-js/mermaid/compare/mermaid@11.6.0...mermaid@11.10.1)

---
updated-dependencies:
- dependency-name: mermaid
  dependency-version: 11.10.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-12 22:17:59 +02:00
Peter Cock
df3db57c4c docs: K_VOLUME_UP and K_VOLUME_DOWN work in macOS (#3057)
Tested via ZMK Studio, both the 'keyboard' and the
'consumer' volume up/down work on macOS Sequoia 15.6.1
2025-09-12 14:08:17 +01:00
Aurélien Vallée
197d104fc9 chore(shields): Add missing display-name for existing keymaps (#3048) 2025-09-10 15:48:33 -07:00
Nicolas Munnich
522971f41d fix(ci): disable nrf5340dk from being built in our CI (#3066)
This build is currently broken, and will be fixed once we bump to 4.1.
2025-09-10 10:30:09 -07:00
Peter Cock
d28f73bcfa docs: documenting PASTE/COPY/CUT keycodes on macOS (#3058)
* Testing PASTE/COPY/CUT on macOS

Testing using ZMK Studio v0.3.1 to send these keys.

Using Karabiner-EventViewer, nothing from C_AC_CUT, C_AC_COPY, C_AC_PASTE, nor from paste special which I assume would be called C_AC_PASTE_SPECIAL (while for example C_AC_SEARCH was detected).

Did see K_CUT, K_COPY, K_PASTE, but they appear to do nothing by default.

* Add macOS footnote for editing keys K_CUT, K_COPY, K_PASTE

* Add macOS testing for K_UNDO, K_REDO etc.

    C_AC_UNDO - not even registering as a keypress

    K_UNDO - detected as a keypress, but no effect. Does not act like command+z

    C_AC_REDO - not even registering as a keypress

    K_AGAIN aka K_REDO - detected as a keypress, but no effect. Does not act like shift+command+z

* None of the six 'Input Assist' consumer keys work on macOS

Testing using ZMK Studio v0.3.1 to send these keys with macOS 15.6.1 (ARM),
and watching for keypresses with Karabiner-EventViewer v15.5.0.
2025-09-09 19:52:41 +02:00
Thomas Oberndörfer
d5ba120d79 docs: Fix hold-trigger-on-release description (#3065) 2025-09-09 19:48:24 +02:00
Adrien LUDWIG
8d06a9b713 docs: fix missing link and example introduction (#3064)
* docs: fix example introduction

* docs: fix missing link
2025-09-08 18:15:41 +02:00
Chris Helming
9a8fdd66ea docs: Add missing semicolon to kscan.md composite example (#3052) 2025-09-02 20:42:30 -07:00
Pete Johanson
0b5a103c18 fix(core): Generate correct keymap layer names for all builds (#3047)
Properly account for studio and non-studio builds for the generation of
the layer names stored within the keymap system.

Fixes #3045
2025-08-26 03:26:20 -06:00
Cem Aksoylar
f09e551929 docs: Add warning box for clearing settings for splits, generalize troubleshooting procedure (#3039)
Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>
2025-08-19 17:27:21 -07:00
Nicolas Munnich
ee69b9e3c7 docs: Add a dedicated page on ZMK events (#2815)
* docs: Added a dedicated page on ZMK events

* docs: Apply suggestions from code review

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

* docs: Apply suggestions from code review

Bring the code snipper in new-behavior back, touchups on the page

* docs: clarify "calling" hold tap

Adjustment after feedback from code review

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-08-18 23:45:16 +02:00
Cem Aksoylar
5144de677d docs: Document usage of persistent settings explicitly (#3036) 2025-08-18 12:04:35 -07:00
Kurtis Lew
5225952f96 chore(docs): Typo in CMake Arguments example code blocks (#3038) 2025-08-18 09:15:58 +01:00
Cem Aksoylar
9fcce45cb5 docs: Fix remaining typos for requirements extras (#3035) 2025-08-16 22:29:11 -07:00
Nicolas Munnich
62007e500b docs: Add devicetree primer (#2715)
* docs: Add devicetree primer

* docs: Apply suggestions from code review

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

* docs: Move devicetree property types into primer and link to primer

* docs: Changes from code review

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-08-16 10:05:27 +02:00
Nicolas Munnich
ccf20a1f5c feat(boards/shields): Add settings for Rpi Pico and add tester_rpi_pico shield (#2900)
* feat(boards): Properly support settings for RPi Pico board.

* feat(shields): Add a tester_rpi_pico shield

---------

Co-authored-by: Peter Johanson <peter@peterjohanson.com>
2025-08-10 22:00:35 +01:00
Marius Petcu
c7fae18ae1 feat(boards): add support for nrf52840dongle_nrf52840 (#3011)
This adds additional required configs for the Nordic NRF52840 Dongle (PCA10059),
which was already supported by Zephyr, but didn't have flash settings
and Bluetooth enabled.
2025-08-08 23:47:03 +01:00
Nicolas Munnich
61da930ed5 chore(ci): Set days before issue stale to 1000 (#3022) 2025-08-08 13:13:57 -04:00
Maxim
3609ac6fc8 docs: fix typo for pip requirements (#3029) 2025-08-07 23:33:38 +02:00
Peter Cock
45700887ba Suggest using cu for USB log viewing on macOS (#3027)
* Suggest using cu for USB log viewing on macOS

It may not be as friendly, but cu should be available while tio could be hard to install.

* Polish wording

Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>

* Suggest "man cu" for how to use this tool

---------

Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>
2025-08-07 23:26:17 +02:00
Artem
a8a392807e chore(docs): correct a misleading _defconfig description (#3015)
* docs: correct a misleading _defconfig description

* chore(docs): improve _defconfig description

Co-authored-by: Joel Spadin <joelspadin@gmail.com>

---------

Co-authored-by: Joel Spadin <joelspadin@gmail.com>
2025-08-05 00:20:39 +01:00
Nicolas Munnich
f3233c1b60 fix(ci): Fix release please template bump (#3021) 2025-08-04 18:54:03 -04:00
Nicolas Munnich
919bce7962 fix(docs): Tweak layer tap example to be clearer (#3023) 2025-08-04 23:44:16 +01:00
dependabot[bot]
cc19ff7c5b chore(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /docs (#2929)
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.7 to 2.0.9.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.9)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 2.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 22:54:01 +01:00
dependabot[bot]
90363719a2 chore(deps): bump on-headers and compression in /docs (#2999)
---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 22:32:36 +01:00
dependabot[bot]
e57bf5af37 chore(deps): bump the docusaurus-minor-patch group across 1 directory with 3 updates (#2973)
Bumps the docusaurus-minor-patch group with 3 updates in the /docs directory: [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus), [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) and [@docusaurus/theme-mermaid](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-theme-mermaid).


Updates `@docusaurus/core` from 3.8.0 to 3.8.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.8.1/packages/docusaurus)

Updates `@docusaurus/preset-classic` from 3.8.0 to 3.8.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.8.1/packages/docusaurus-preset-classic)

Updates `@docusaurus/theme-mermaid` from 3.8.0 to 3.8.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.8.1/packages/docusaurus-theme-mermaid)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-version: 3.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus-minor-patch
- dependency-name: "@docusaurus/preset-classic"
  dependency-version: 3.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus-minor-patch
- dependency-name: "@docusaurus/theme-mermaid"
  dependency-version: 3.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: docusaurus-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 22:29:08 +01:00
Léon Hagenaars-Keus
9aaf87c6d2 docs: Updated putty link (#3020)
Solves issue #3019 (incorrect putty link)

- putty.org is not affiliated with the putty software
- the site now hosts links to interviews about a recent pandemic
- this pull request updates the link to the actual project page

Co-authored-by: Léon Hagenaars-Keus <lhagenaars@sogyo.nl>
2025-08-04 13:16:38 +01:00
Pete Johanson
edf5c0814f chore(main): release 0.3.0 (#2858) 2025-08-01 18:44:20 -04:00
Nicolas Munnich
6c266b7123 chore(ci): Automatically bump version in user config template when releasing a new version (#3016) 2025-08-01 18:27:45 -04:00
Robert U
c25e927a2f chore(ci): Optimize build workflow (#2757)
* Use treeless clones in workflows
* Replace yaml2json with yq

Github's ubuntu runners come with `yq` installed, which can replace
piping `yaml2json` to `jq`. It also saves installing `yaml2json`.

It's worth noting that the `yq` version installed is the `go` version
(which has a slightly different syntax than the competing `python`
version).
2025-07-31 18:36:04 -04:00
Nicolas Munnich
c86f0d6ff4 chore: Add some basic encoder tests (#2845)
Adds some encoder tests for rotating, and basic layers.
Mock Kscans don't seem to interact nicely, slightly on the hacky side.
However, better to have hacky tests than no tests.
2025-07-31 18:29:59 -04:00
Genteure
af967667b0 fix(core): Correctly sync BAS battery level (#2977)
Fix BAS battery level showing 100% if controller boots up with 0% battery charge.

Closes zmkfirmware/zmk#2972
2025-07-31 17:51:21 -04:00
Pete Johanson
2ae5185419 fix(split): Compile and run properly in wired polling mode. (#3012)
Fixes for regressions from split refactors that broke polling mode
specifically.

Co-authored-by: honorless <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-07-31 17:09:25 -04:00
Pete Johanson
1530ae36c2 fix(split): Enable wired split by default if DTS is set (#3010)
Remove the previous condition on ZMK_SPLIT_WIRED that only enabled it if
!ZMK_BLE. We'll defer to the `depends on` to ensure the DTS exists to
use wired split to make that decision on enabling the feature.
2025-07-30 13:43:46 -04:00
Cem Aksoylar
1bac680c4f fix(behaviors): Correct macro release state for parametrized macros (#2942)
test(behaviors): Add parametrized macro test that fails

fix(behaviors): Correct macro release state for parametrized
2025-07-29 18:39:26 -04:00
snoyer
d09087f4dc feat(display): nice!view individual profile status (#2265)
Allow the nice!view widget to display the status of each profile by:

- not adding a circle around the number if the profile is not bound
- drawing a dashed circle around the number if a profile is bound but not connected
2025-07-26 18:46:51 +02:00
Nicolas Munnich
6d7bbc8670 feat(ci): Add stale GitHub Action to automatically close stale PRs (#2924)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-07-21 19:11:56 +02:00
Joel Spadin
8059e671b2 fix(boards): Disable high voltage DC-DC by default (#2995)
Given a typical setup of a battery at ~4 V and a nice!nano v2 running at
3.3 V, I measured a small increase in power usage (using a Nordic PPK2)
when SOC_DCDC_NRF52X_HV was enabled. This changes the nice_nano_v2 and
mikoto boards so this option is disabled by default.

Fixes #2990
2025-07-21 17:14:29 +02:00
Cem Aksoylar
61325ee82c docs: Document requirements-extra.txt and endpoint selection for Studio (#3001)
* docs: Document requirements-extra.txt for Studio builds

* docs: Note endpoint selection requirement for Studio

* docs: Fix indents in list items in native setup page

Add this file to .prettierignore because it messes all the additional indents.
There is also no way to make prettier ignore a range of lines in MDX files AFAICT.

* Revert "docs: Fix indents in list items in native setup page"

This reverts commit 6d8aeba801.
2025-07-21 17:11:06 +02:00
Tobias Adolph
342d838913 fix(ble,hid): Fix smooth scrolling over BLE (#2998)
- Use correct MIN16 value in hid report. -32768 in 2's compliment is 8000(hex)
- Initialize resolution multiplier array
- Properly implement `read_hids_mouse_feature_report`

Fixes: #2957

Co-authored-by: Tobias Adolph <43353209+adolto@users.noreply.github.comgit>
2025-07-20 09:13:18 -06:00
Dimitri Krassovski
7292df02d4 feat(shields): Add a physical layout for a_dux (#3000) 2025-07-19 21:44:05 -07:00
snoyer
fe91cc6625 refactor(ble): add functions to check if profile is open/connected by address (#2993)
Helper functions for BLE profile statuses.
2025-07-19 07:51:53 -06:00
Joel Spadin
cef7af4408 fix: Fix build with Studio and USB but not UART (#2996)
Changed CONFIG_ZMK_STUDIO_TRANSPORT_UART to automatically enable itself
whenever a zmk,studio-rpc-uart chosen node is specified. The previous
behavior of enabling if CONFIG_ZMK_USB was enabled broke builds when
CONFIG_ZMK_STUDIO was enabled but the chosen node wasn't specified.
2025-07-11 22:07:38 -06:00
snoyer
9e905d6593 feat(ble): Add function to get profile address by index (#2992) 2025-07-09 20:25:11 -06:00
Nicolas Munnich
e93cd31a58 blog: Add blog post on pinning ZMK version (#2974)
* 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>
2025-07-03 17:27:11 +02:00
Pete Johanson
6b44d33db2 feat(split): Runtime selection of split transport (#2886)
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>
2025-06-16 03:45:25 -04:00
badjeff
462d48b78e feat(pointing): Allow peripheral input processing to stop propagation (#2844)
Allow peripheral input processors to prevent event propagation to centrals.

---------

Co-authored-by: Pete Johanson <peter@peterjohanson.com>
2025-06-16 02:23:25 -04:00
ouj4k2q5
eb99b4ede0 fix(docs): Fix soft off waker configuration example (#2960) 2025-06-08 17:24:21 +02:00
George Norton
239baa4875 feat(metadata): Add metadata to the mouse_key_press behavior (#2950)
Adds metadata to the mouse key press behavior so that mouse buttons can be
configured through studio
2025-06-02 14:32:18 -04:00
Cem Aksoylar
9da5d3ba82 fix(display): Make stock battery widget depend on the right symbol (#2953) 2025-06-02 07:25:08 -06:00
dependabot[bot]
f568b25e56 chore(deps): bump the docusaurus-minor-patch group (#2948) 2025-06-01 23:21:14 -07:00
Pete Johanson
cb00077273 chore(docs): Fix prettier warnings (#2952)
* chore(docs): Fix prettier warnings
2025-06-01 12:02:39 -07:00
cormoran
461f5c832f fix(pointing): Avoids mutex leak for default layer toggle event (#2934)
Remove unnecessary special check for toggle of layer 0,
to avoid mutex leak.
2025-05-09 20:01:17 -04:00
Steven Sheldon
879cff7595 docs: Document the default flavor of layer-tap (#2937) 2025-05-08 11:43:48 -07:00
FearlessSpiff
ad6a181d7e feat(shield): Add underglow for reviung5 (#2191) 2025-05-05 20:46:21 +02:00
Omar L.
f1b944b1ef docs: Add secondary functions for the keypad number keys (#2933)
* 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.
2025-04-30 17:32:22 +01:00
Aasim-A
4235c8b491 chore: Add typescript support to eslint, fix errors (#2923) 2025-04-22 20:51:41 -07:00
Pete Johanson
e3030bfcc8 fix(combos): Properly clean up all old candidates. (#2928) 2025-04-22 01:17:12 -04:00
Pete Johanson
00ff486931 fix(combos): Restore prompts for two deprecated Kconfigs (#2926)
Restore prompts for deprecated combo Kconfig symbols, to avoid errors
for existing builds that set them explicitly.
2025-04-21 02:47:39 -04:00
Pete Johanson
c4ee8ab86b refactor(combos): Reduce RAM usage, simplify config (#2849)
* 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.
2025-04-20 05:01:22 -04:00
romil-soni
d9576c5534 fix(docs): remove title as alt text (#2922) 2025-04-20 10:41:13 +02:00
Xudong Zheng
c6738ce2e5 refactor(split): use LOG_HEXDUMP_DBG() to print position state data (#2854)
The previous code prints one line per byte, making debugging difficult.
2025-04-20 04:36:52 -04:00
Joel Spadin
2a7ab8ed0a Improve VS Code Python settings (#2860)
chore: Fix deprecated vscode Python formatter

The python.formatting.provider setting was deprecated in favor of
having a separate extension for each Python formatter and using
editor.defaultFormatter instead. This adds a recommendation for the
Black formatter extension and selects it for Python files.

chore: Limit vscode Python analysis paths

This limits vscode's Python analysis to the scripts folders so it
doesn't slow down trying to scan all of Zephyr.
2025-04-20 04:34:15 -04:00
Tobias Adolph
2c0e7daced fix(hid): Fix scroll value truncation (#2865)
Fix 8 bit truncation of 16 bit scroll values when passed into
functions `zmk_hid_mouse_scroll_set` and
`zmk_hid_mouse_scroll_update`.

Fixes: #2864

Co-authored-by: Tobias Adolph <43353209+adolto@users.noreply.github.comgit>
2025-04-20 04:28:51 -04:00
Tygo van den Hurk
84772ebf14 fix: changed shebang to make scripts more platform independent (#2893)
See for example this thread:

https://stackoverflow.com/questions/21612980/why-is-usr-bin-env-bash-superior-to-bin-bash

on why its better to use '#!/usr/bin/env bash' instead.
Without this change these scripts will not run on some
platforms. This is not a breaking change for the
platforms it already works on.
2025-04-20 04:23:31 -04:00
Genteure
7823a43f62 docs: fix path typo in module-creation.md (#2920) 2025-04-16 09:53:56 -07:00
dependabot[bot]
90bca78300 chore(deps): bump estree-util-value-to-estree in /docs (#2914) 2025-04-07 21:54:32 -07:00
Will Hack
a34839f001 chore(eslint): upgrade to eslint v9 and flat config (#2909) 2025-04-06 18:16:03 -07:00
Maximilian Engl
6f85f48b19 fix(split): add source to battery event (#2901) 2025-04-04 10:43:51 -07:00
dependabot[bot]
9aadc3e5ab chore(deps): bump image-size from 1.2.0 to 1.2.1 in /docs (#2903) 2025-04-03 22:54:30 -07:00
Nicolas Munnich
1c76bcb0a1 blog: Add meeting notes from February (#2890)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-03-25 19:20:50 +01:00
Cem Aksoylar
d733fbafa5 docs: Document missing user-defined input processors (#2895) 2025-03-25 14:35:38 +01:00
Nicolas Munnich
49f86f7ed0 docs: Update hold-tap page (#2888)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-03-23 18:12:50 -07:00
Pete Johanson
5bb39ec3ea fix(split): Conditionally build all split code (#2884)
Don't add the split CMake subdirectory unless the feature is enabled.
2025-03-18 18:49:59 -04:00
Pete Johanson
147c340c6e Feature: Full-Duplex Wired Split (#2766)
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>
2025-03-18 02:48:32 -04:00
Genteure
5ba7e260f4 docs: update name of XIAO boards (#2869) 2025-03-17 15:15:57 -07:00
Cem Aksoylar
bffbccc748 chore(deps): npm update on docs (#2878) 2025-03-16 20:47:42 -07:00
Cem Aksoylar
b366df8b17 docs: Fix powershell tab in user setup (#2879) 2025-03-16 20:14:48 -07:00
JJGadgets
4da89bd997 fix(ci): pin tj-actions/changed-files due to compromise (#2874)
Ideally it's be swapped out for an alternative but for now this is to mitigate.
2025-03-15 02:25:01 -04:00
idesignstuff
5d9920406c Update container.mdx for clarity about ZMK repo folder location (#2868) 2025-03-10 21:52:30 -07:00
Cem Aksoylar
f5a838b4bd docs: Fix wakeup-source property location for composite kscan (#2861) 2025-03-09 14:59:57 -07:00
Allister MacLeod
eb170c930f feat(shields): Add physical layouts for tester_xiao and tester_pro_micro (#2852)
feat(shields): Add tester_xiao layouts

Added two layouts for the XIAO tester shield:

 - Keys arranged to match the XIAO pinout, viewed from the front
 - Single row of eleven keys

These layouts are abstractions since the tester_xiao shield may be
used in a situation where the "keys" are actually jumper wires on a
breadboard or the like.

feat(shields): Add tester_pro_micro layouts

Added two layouts for the Pro Micro tester shield:

 - Keys arranged to match the Pro Micro pinout, viewed from the front
 - Single row of eighteen keys
2025-03-07 19:22:25 -07:00
Pete Johanson
241ff39556 chore(main): release 0.2.1 (#2851) 2025-03-02 07:45:12 -07:00
Pete Johanson
f20e6ea759 fix(behaviors): Proper comma separated device list (#2850)
Properly generate the comma separated list of devs in caps word/
key repeat.
2025-03-02 06:49:07 -07:00
Pete Johanson
fadafc7759 chore(main): release 0.2.0 (#2693) 2025-03-01 11:29:58 -07:00
Pete Johanson
1e3e62c13d fix(pointing): Temp layer threading protection. (#2729)
fix(pointing): Temp layer threading protection.

Ensure all layer operations occur on the system work queue thread.

Fixes: #2719

fix(pointing): Handle layer events to disable events

Make the temp layer input processor propely handle layers getting
deactivated externally before the temp layer timeout.

Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2025-02-28 20:37:55 -05:00
Pete Johanson
21f54e7238 refactor(behaviors): Remove unneeded init funcs. (#2843)
Initialization functions are optional for Zephyr drivers, so remove
all our superfluous empty init functions.
2025-02-26 17:54:29 -05:00
Cem Aksoylar
7186528f77 fix(behaviors): Make multiple sticky keys work on same key position (#2758)
test(behaviors): Add same position sticky key tests

fix(behaviors): Make multiple sticky keys work on same key position

refactor(behaviors): Remove unused param2 in sticky keys
2025-02-26 17:54:08 -05:00
Pete Johanson
9406d39d14 refactor(behaviors): Small caps word RAM reduction. (#2842)
Don't use lazy initialized in-memory array of devices.
2025-02-26 17:01:04 -05:00
Nicolas Munnich
82216be635 chore: Add a deprecation warning to config/boards (#2811) 2025-02-26 15:16:50 -05:00
Xudong Zheng
ea267b0f35 fix(ble): enforce maximum length for dynamic device name (#2784) 2025-02-26 13:29:30 -05:00
Pete Johanson
2fe55c4c41 refactor(behaviors): Minor RAM usage tweaks (#2839)
Follow up cleanup of some config structs not marked as const.
2025-02-26 13:17:23 -05:00
Cem Aksoylar
d2eb6de7ad docs: Add query strings to tabs (#2840) 2025-02-25 16:31:57 -08:00
Pete Johanson
209085da73 refactor(behaviors): Add max-held tap-dance config (#2838)
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
2025-02-25 14:12:27 -05:00
Pete Johanson
18d0d2f476 refactor(combos): Reduce combo RAM usage (#2837)
Properly mark combo configs as `const` so they are place in flash,
not RAM.
2025-02-25 13:38:51 -05:00
Cem Aksoylar
8575fc8a9d docs: Inline simple physical layout info in new shield guide (#2827)
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
2025-02-17 15:59:54 -08:00
Cem Aksoylar
9d234cbb10 docs: Make default keymap in new shield guide complete (#2825)
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2025-02-17 11:55:42 -08:00
Nicolas Munnich
e8ec9b65f8 docs: Add "planned: import/export keymap" to the studio features page (#2821) 2025-02-17 11:44:42 -08:00
Nicolas Munnich
d0d313409b docs: Improved some links to modules (#2822)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-02-17 10:16:36 +01:00
Nicolas Munnich
5926269ea5 docs: Add KiCAD note and titles to physical layouts page (#2823)
docs: Note that Nick Coutsos' tool can import from KiCAD

docs: Add titles to some code blocks in physical layouts
2025-02-16 20:12:31 -08:00
Nicolas Munnich
eeb8a00778 docs: Add a page on module creation (#2456)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-02-14 16:32:18 -08:00
Pete Johanson
aa3e5dd70f feat(display): Add config for display update period (#2819)
Add `CONFIG_ZMK_DISPLAY_TICK_PERIOD_MS` Kconfig to allow tweaking
the period between display updates.
2025-02-10 13:32:16 -05:00
Pete Johanson
627e6dbec9 feat(display): Add ability to set display on/off pin. (#2814)
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.
2025-02-07 17:49:30 -07:00
Alex Rozhkov
424e53210e feat(shields): Add physical layout for Lotus58 (#2753)
Added physical layout and studio support for Lotus58.
2025-02-07 14:35:13 -05:00
Pete Johanson
4b4a8a35f3 fix(display): POSIX lvgl fixes (#2812)
fix(display): Do LVGL task processing in main on POSIX.

An SDL/Zephyr bug prevents proper display when SDL calls are
made from anything but the main thread, so add task handling
in our simple main function when on POSIX.

fix(usb): Compilation fix for 64-bit targets

Properly handle differences in the size of `size_t` on 64-bit
architectures.

fix(display): Imply, but don't force, LVGL mono theme

Some targets may be using color displays, so instead of forcing
on the mono theme, merely imply it to default it
2025-02-07 02:05:21 -05:00
Cem Aksoylar
0f7c11248a feat(pointing): Add pre-defined scroll scaler and mouse scroll tests (#2759)
feat(pointing): Add pre-defined scroll scaler

tests(pointing): Add mouse scroll tests
2025-02-04 10:27:14 -07:00
Nicolas Munnich
8e065d55b9 fix(kscan): Remove warning when keyboard is built without CONFIG_PM_DEVICE (#2808) 2025-02-01 11:16:52 -07:00
Pete Johanson
425256bc0d fix(display): Only default mono theme when 1bpp (#2804)
In order to have flexibility for color displays, only imply the mono
theme if we have 1bpp.
2025-01-31 22:53:35 -05:00
Cem Aksoylar
72b00b3f58 docs: Add pointers to final Kconfig/devicetree files (#2796)
docs: Add diagnosis pointers for Kconfig/devicetree outputs

docs: Add tip boxes for diagnosing config/devicetree changes
2025-01-25 13:04:50 -08:00
Cem Aksoylar
e4885d5d4c docs: Update keymaps index intro (#2790)
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2025-01-25 12:30:50 -08:00
Cem Aksoylar
4f72e7cb25 docs: Update intro page (#2767) 2025-01-22 16:58:15 -08:00
Cem Aksoylar
4882a62c40 docs: Update dongle FAQ entry (#2788) 2025-01-22 10:09:03 +01:00
Xudong Zheng
40e9e5c5fa test(split): remove build banner from snapshot (#2787)
The test snapshot will otherwise be outdated each time there is a new
commit on https://github.com/zmkfirmware/zephyr.
2025-01-21 12:40:27 -05:00
Nick Winans
40ea92d201 docs: Link to ZMK Studio download page (#2783) 2025-01-20 21:30:55 -08:00
dependabot[bot]
db2fc2bffd chore(deps): bump katex from 0.16.11 to 0.16.21 in /docs (#2774)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-17 15:15:54 -08:00
Pete Johanson
e4f1454e0b refactor(keymap): Reduce flash usage for studio builds (#2771)
When building for ZMK Studio, we can use the constant stock keymap
for init of the in-memory keymap, to avoid duplicate flash usage
for the keymap from the devicetree.
2025-01-15 16:51:26 -05:00
Pete Johanson
c367d8f636 feat(core): Make physical layout key rotation optional (#2770)
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.
2025-01-15 16:48:18 -05:00
Pete Johanson
6941abc2af fix(drivers): Proper static/const for data/config (#2769)
Save a tiny bit of RAM by properly marking our device config
struct instances const consistently, and also add missing static
modifiers to properly isolate config/data for drivers.
2025-01-15 12:35:35 -05:00
Cem Aksoylar
700e9b264f docs: Move more sections under hardware integration (#2704)
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
2025-01-13 21:14:25 -08:00
Pete Johanson
8dddb1d9d7 Testing: split input test (#2762)
test(pointing): Add mock input device.

New mock input device to generate input events for tests.

test(split): Add peripheral input test.

Test event propagation from peripheral input devices.

fix(split): Proper scoping for local within switch.

Minor compile fix.

chore: Fix up test snapshots after logging changes.

Adjust the test snapshots after logging changes to the central.

fix(kscan): Don't fire last mock event twice.

Fix a bug where the kscan mock would raise the last mock event
twice before halting processing.
2025-01-13 15:15:16 -05:00
Cem Aksoylar
022603ec16 docs: Fix broken anchors in dongle page (#2764) 2025-01-13 09:21:55 +01:00
Aasim-A
b93bf6d3fd docs: Fix incorrect kscan value (#2763) 2025-01-12 15:51:30 +01:00
Pete Johanson
d0ee30bfaa Testing: split ble encoder test (#2754)
test(sensors): Add mock encoder sensor

Add a new mock sensor driver for generating mock encoder sensor channel
data.

test(split): Add a peripheral sensor split test

Test BLE split logic for peripheral sensors (encoders).
2025-01-06 14:41:02 -05:00
Cem Aksoylar
3377ed02a8 docs: Improve pointing docs (#2703)
docs: Add missing code fence languages in pointing

docs: Fix default msc exponent in example

docs: Make pointing hardware integration follow semantic structure
2025-01-04 11:15:32 -08:00
Pete Johanson
36508c27fd fix(studio): Allow adding layers after a layer move (#2748)
Properly return the available layers in the move layer response.
2025-01-03 19:19:19 -05:00
Pete Johanson
e6343f44ce test(split): Test split HID indicator setting. (#2747)
Add integration test for HID indicator state being propagated
to split peripherals.
2025-01-03 18:05:18 -05:00
Nicolas Munnich
bc6bb90414 docs: added a page on dongles.
Co-authored-by: rasmuskoit <rasmuskoit@gmail.com>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2025-01-02 10:44:50 -08:00
Willow Herring
05abd677c5 chore: Add trailing lines to fix build warnings (#2743)
When building a unibody or central warnings get thrown for the backslash newlines at EOF in combos.h and input_listeners.h. Adding a trailing newline to the affected files rectifies this
2025-01-02 08:58:49 -07:00
Pete Johanson
f0a77b888a fix(combos): Properly report combos len with emply block (#2739)
Handle the scenario where there is an empty combos block and return
a zero combos length.
2025-01-01 18:14:53 -05:00
Pete Johanson
85aba16eec testing: Add split BLE tests (#2737)
* Enhance the BLE test runner to build additional peripheral builds
  when detecting peripheral*.overlay files in the test.
* Add basic and multiple-peripheral tests to exercise the testing
  support
* Add test for triggering local behaviors on split peripherals.

fix(ble): Fix building split code w/o settings

* Properly exclude storing peripheral addresses to settings when
  settings support isn't turned on.
2025-01-01 18:13:47 -05:00
Robert U
3f6841c95f chore: Allow running tests from anywhere and support EXTRA_MODULES (#2725)
* Allow running tests from anywhere in the workspace
* Trigger test workflow if run-test.sh changes
2024-12-20 15:19:56 -05:00
Nicolas Munnich
2f172f63c2 chore: Docs bullet point in PR checklist (#2718) 2024-12-20 14:31:37 -05:00
Nicolas Munnich
bb486619a1 fix: Kconfig refactor now works correctly with external modules (#2711) 2024-12-18 23:32:30 -07:00
Pete Johanson
cb867f92db Feature: input processor behavior invocation (#2714)
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>
2024-12-17 20:50:06 -05:00
dependabot[bot]
d0016b34f8 chore(deps-dev): bump the development group across 1 directory with 7 updates (#2698)
Bumps the development group with 7 updates in the /docs directory:

| Package | From | To |
| --- | --- | --- |
| [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) | `3.6.1` | `3.6.3` |
| [@docusaurus/tsconfig](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-tsconfig) | `3.5.2` | `3.6.3` |
| [@docusaurus/types](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-types) | `3.6.1` | `3.6.3` |
| [json-schema-to-typescript](https://github.com/bcherny/json-schema-to-typescript) | `15.0.2` | `15.0.3` |
| [prettier](https://github.com/prettier/prettier) | `3.3.3` | `3.4.2` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.6.3` | `5.7.2` |
| [webpack](https://github.com/webpack/webpack) | `5.96.1` | `5.97.1` |



Updates `@docusaurus/module-type-aliases` from 3.6.1 to 3.6.3
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.6.3/packages/docusaurus-module-type-aliases)

Updates `@docusaurus/tsconfig` from 3.5.2 to 3.6.3
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.6.3/packages/docusaurus-tsconfig)

Updates `@docusaurus/types` from 3.6.1 to 3.6.3
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.6.3/packages/docusaurus-types)

Updates `json-schema-to-typescript` from 15.0.2 to 15.0.3
- [Changelog](https://github.com/bcherny/json-schema-to-typescript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bcherny/json-schema-to-typescript/commits)

Updates `prettier` from 3.3.3 to 3.4.2
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.3.3...3.4.2)

Updates `typescript` from 5.6.3 to 5.7.2
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.6.3...v5.7.2)

Updates `webpack` from 5.96.1 to 5.97.1
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.96.1...v5.97.1)

---
updated-dependencies:
- dependency-name: "@docusaurus/module-type-aliases"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development
- dependency-name: "@docusaurus/tsconfig"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: "@docusaurus/types"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development
- dependency-name: json-schema-to-typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 10:07:46 +01:00
Nicolas Munnich
ec6b770947 docs: Minor touchups to studio related bits (#2707) 2024-12-13 10:03:08 +01:00
Nicolas Munnich
4ef231f4bb feat: Added toggle-mode, allowing toggle-on and toggle-off (#2555)
feat: added toggle mode to key and layer toggles

docs: documented toggle mode changes
2024-12-12 19:13:56 -05:00
Joel Spadin
7013158a67 fix: Fix warnings in nanopb encoding code (#2643)
The "arg" field on nanopb structs is a void* because it is shared
between the encode and decode callbacks, even though the encode
callback probably should not modify the data. We are passing const data
using this non-const pointer, which causes warnings about discarding
const. This commit explicitly casts to void* to suppress these warnings.
2024-12-11 15:00:48 -05:00
svek1
a8f5ab67b5 fix: allow kscan-composite to wake up device. (#2682)
* include kscan.yaml so we can set kscan-composite as a wakeup source
* modify enable and disable callback to check for wakeup capabilities of
composite and children
* disable children wakeup source

The disable function is only called
when the composite is not an enabled wakeup source.
In that case the children should also not be an enabled
wakeup source, so they can get suspended
2024-12-11 14:46:22 -05:00
Pete Johanson
84baf929c9 fix(pointing): Complete header rename missed in refactor (#2702)
* Update a few mouse.h -> pointing.h missed refactors.
2024-12-10 02:29:35 -05:00
Pete Johanson
6b40bfda53 feat(mouse): Add mouse move and scroll support (#2477)
* feat(mouse): Add mouse move and scroll support

    * Use Zephyr input subsystem for all pointers.
    * Input processors for modifying events, e.g. scaling, swapping
      codes, temporary (mouse) layers, etc.
    * Mouse move/scroll behaviors.
    * Infrastructure in place for physical pointer input devices.

* feat: Add input split support.

* docs: Add initial pointer docs.

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Alexander Krikun <krikun98@gmail.com>
Co-authored-by: Robert U <urob@users.noreply.github.com>
Co-authored-by: Shawn Meier <ftc@users.noreply.github.com>
Co-authored-by: Chris Andreae <chris@andreae.gen.nz>
Co-authored-by: Anant Thazhemadam <47104651+thazhemadam@users.noreply.github.com>
Co-authored-by: Erik Tollerud <erik.tollerud@gmail.com>
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-12-09 19:45:41 -05:00
pabile
7e8c542c94 feat(studio): Add ortho_4x10 grid layout (#2651)
* added 4x10 grid layout

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-12-09 12:53:54 -05:00
Pete Johanson
0820991901 fix(studio): Properly return complete keymap from RPC (#2696)
Ensure the set active physical layout RPC returns the full keymap
details including the available layers.
2024-12-06 18:10:58 -05:00
yuki
b26058b6c7 feat(boards): Update for mikoto board definition (#1946)
* Set default revision to 5.20
* update mikoto board defs
* add revision info to mikoto.zmk.yml
* use zephyr aliases to handle mikoto_520
* enable pull-ups for on-board i2c
2024-12-05 02:02:58 -05:00
Nicolas Munnich
40925d48e6 refactor(Kconfig): Extracted designer defaults out into new files (#2537)
docs: Fix incorrect kconfig default values

fix(Kconfig): Added a name to EC11's trigger mode choice, allowing it to be set in device Kconfig.defconfig

refactor(Kconfig): Moved designer defaults out into new files
2024-12-04 16:19:35 -05:00
Pete Johanson
a9ff3a78a1 chore(main): release 0.1.0 (#2657) 2024-12-04 14:26:12 -05:00
Cem Aksoylar
3f7c9d7cc4 docs: Create a Hardware Integration index page (#2634)
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-11-28 23:00:33 -08:00
Cem Aksoylar
978c7cb124 docs: Mention combos in reset behaviors (#2677)
Fixes #2652
2024-11-28 14:45:33 +01:00
Cem Aksoylar
230b860f31 fix(boards): Disable uart serial node in Xiao BLE by default (#2672) 2024-11-25 17:19:13 -05:00
dependabot[bot]
d39941dfbe chore(deps): bump the prod-other-minor-patch group across 1 directory with 2 updates
Bumps the prod-other-minor-patch group with 2 updates in the /docs directory: [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) and [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome).


Updates `@fortawesome/fontawesome-svg-core` from 6.6.0 to 6.7.1
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.6.0...6.7.1)

Updates `@fortawesome/free-solid-svg-icons` from 6.6.0 to 6.7.1
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.6.0...6.7.1)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-svg-core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod-other-minor-patch
- dependency-name: "@fortawesome/free-solid-svg-icons"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod-other-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-23 14:45:34 -08:00
Pete Johanson
fb359f5766 feat(boards): Add glove80 nexus node for extension GPIO. (#2594)
Add generic extension nexus node for consistent GPIO access
to the extension pins in a left/right agnostic way.
2024-11-20 18:36:32 -05:00
Genteure
76ee97e1b6 docs: Move defines to the end in layer behaviors (#2639) 2024-11-20 09:58:05 -08:00
Danil Romanov
33113c7028 docs: Update new-shield.mdx (#2664) 2024-11-20 18:54:54 +01:00
Pete Johanson
6934e362b5 docs(ci): Netlify ignore command to check branch (#2659)
Add a separate ignore script that checks git changes but also
only deploys main and version branches to allow us to deploy
versioned docs.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-11-18 20:26:26 -05:00
dependabot[bot]
4fcc308910 chore(deps): bump cross-spawn from 7.0.3 to 7.0.6 in /docs
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 14:22:33 -08:00
Pete Johanson
ffa485c11b feat(ci): Add release-please automation with VERSION (#2622)
* Add VERSION file that Zephyr will pick up
* Add release-please automation
* Updated docs on commits messages, and PR process
* Updated PR template to match.

---


Release-As: 0.1.0

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-11-18 16:46:26 -05:00
Azalea Colburn
70542990c0 docs: Remove dangling 0 in sticky keys docs 2024-11-18 10:56:26 -08:00
esplo
f8eff2fe34 fix: include a header file for RC macros (#2649) 2024-11-16 09:51:21 +01:00
Peter Johanson
888c0d966c feat(drivers): Support init high/low in 595 driver
Add support for initializing a pin to a given high/low value during
configuration. Needed for proper initialization by systems like
GPIO hogs or gpio-leds Zephyr drivers.
2024-11-15 11:00:37 -07:00
Nicolas Munnich
58de2eb5e9 docs: touchups on the soft off information for improved clarity. (#2647) 2024-11-15 00:44:40 +01:00
Cem Aksoylar
e4339241ea docs: Mention build.yaml in Studio instructions (#2644) 2024-11-14 09:20:51 +01:00
Nicolas Munnich
fed66a92d0 fix(studio): Improved error message when keyboard is missing a physical layout. 2024-11-13 11:38:41 -07:00
Nicolas Munnich
9d9f626938 docs: Some minor improvements to the studio features page 2024-11-13 11:17:11 -07:00
Peter Johanson
14c6fb74ee ci: Add gitlint and document commit conventions
* Add gitlint to pre-commit setup
* Update pre-commit setup for installing commit-hooks
* Add "Commit Conventions" contributing docs

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-11-12 18:39:27 -07:00
Cem Aksoylar
b0f5789b12 fix: Disable display feature for settings_reset 2024-11-12 18:38:33 -07:00
Alexander Krikun
2a5b73f294 docs: document nrf528xx-nosd snippets 2024-11-12 18:28:59 -07:00
Alexander Krikun
4438b7b835 feat(boards): add nrf52840-nosd snippet
Add snippet to build for nRF52840 boards while ignoring the SoftDevice.
This might be useful for especially memory-intensive applications.
2024-11-12 18:28:59 -07:00
Alexander Krikun
63af296b6e feat(boards): add nrf52833-nosd snippet
Add snippet to build for nRF52833 boards while ignoring the SoftDevice.
This is necessary as those boards are memory-constrained.
2024-11-12 18:28:59 -07:00
ReFil
c9553c31e3 fix(boards): Fix typo in BT75 metadata
Spotted this underscore that shouldn't be there when reading the studio blog post
2024-11-12 13:44:56 -07:00
Nicolas Munnich
98e314baf2 docs: Added permissions note for ZMK Studio USB use (#2638) 2024-11-12 10:08:23 -08:00
Joel Spadin
c7473fc325 fix: Fix inconsistent column offset property
Renamed the composite kscan's column-offset property to col-offset for
consistency with other properties such as matrix transform's col-offset
and matrix kscan's col-gpios.
2024-11-12 09:07:25 -07:00
Peter Johanson
9320271dde docs: Remove beta warning from ZMK Studio pages. 2024-11-11 16:44:06 -07:00
Peter Johanson
8779530312 blog: Add ZMK Studio release blog post.
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-11-11 16:44:06 -07:00
dependabot[bot]
bac6bda34c chore(deps): bump the docusaurus-minor-patch group (#2631)
Bumps the docusaurus-minor-patch group in /docs with 3 updates: [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus), [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) and [@docusaurus/theme-mermaid](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-theme-mermaid).


Updates `@docusaurus/core` from 3.5.2 to 3.6.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.6.1/packages/docusaurus)

Updates `@docusaurus/preset-classic` from 3.5.2 to 3.6.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.6.1/packages/docusaurus-preset-classic)

Updates `@docusaurus/theme-mermaid` from 3.5.2 to 3.6.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.6.1/packages/docusaurus-theme-mermaid)

---
updated-dependencies:
- dependency-name: "@docusaurus/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: docusaurus-minor-patch
- dependency-name: "@docusaurus/preset-classic"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: docusaurus-minor-patch
- dependency-name: "@docusaurus/theme-mermaid"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: docusaurus-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 01:05:54 +01:00
Cem Aksoylar
4082370215 chore: Config dependabot for grouped npm updates (#2614) 2024-11-09 22:11:28 -08:00
Alex Olshansky
7248438ee4 docs: Fix typos in local-toolchain/setup (#2626) 2024-11-10 01:09:29 +01:00
Nicolas Munnich
2ded7919eb docs: Adjust physical layouts page 2024-11-07 11:59:31 -07:00
Nicolas Munnich
99b8506437 refactor: new physical layouts convention 2024-11-06 15:29:22 -07:00
Nicolas Munnich
a173be9d71 docs: documenting new convention for physical layouts 2024-11-06 15:29:22 -07:00
Joel Spadin
cf2c46734d feat(boards): Add numpad layouts
Added physical layouts for the following variants of numpads:

- With and without extra top row
- 2U plus key or 1U plus and backspace keys
- 2U 0 key or 1U 0 and 00 keys
- Full 1U grid/macropad layout

Other layouts exist, such as "southpaw" horizontally mirrored layouts,
and layouts with a fifth column, but those seem to be much less common.
2024-11-06 11:35:51 -07:00
dependabot[bot]
e6c1219f0c chore(deps-dev): bump @docusaurus/types from 3.5.2 to 3.6.0 in /docs (#2612)
Bumps [@docusaurus/types](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-types) from 3.5.2 to 3.6.0.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.6.0/packages/docusaurus-types)

---
updated-dependencies:
- dependency-name: "@docusaurus/types"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-05 13:37:45 +01:00
Peter Johanson
19a096ab67 fix(keymap): Set bindings with changed layout
* Fix bug with setting keymap layer bindings when a non-stock layout
  is selected.
2024-11-04 13:30:40 -07:00
dependabot[bot]
f08b817d60 chore(deps-dev): bump webpack from 5.96.0 to 5.96.1 in /docs (#2607)
Bumps [webpack](https://github.com/webpack/webpack) from 5.96.0 to 5.96.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.96.0...v5.96.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-04 09:56:00 +01:00
Allister MacLeod
9935e8df47 chore: Marking C_AL_CALENDAR / C_AL_CAL as not available on macOS and iOS. (#2606) 2024-11-03 08:31:27 +01:00
Brian Tannous
644fc821f7 Set C_AL_CALC for macOS and iOS to false (#1595) 2024-11-03 01:25:48 +01:00
Less/Rikki
6e37f21f6b docs(feat): further generalize RGB information (#2485)
* docs(feat): Provide example of PIO SPI for RGB underglow

* docs(feat): further generalize RGB information

* docs: use nice_nano_v2 for board-specific shield config example

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-11-03 00:31:15 +01:00
Nicolas Munnich
40f59df2cc docs: studio features list (#2598)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Peter Johanson <peter@peterjohanson.com>
2024-11-03 00:30:01 +01:00
Nicolas Munnich
1cfce345ba docs: Add retro-tap sentence and fix anchor (#2605)
Co-authored-by: Felix Sargent <felix.sargent@gmail.com>
2024-11-03 00:29:09 +01:00
Nicolas Munnich
f4582bdaa7 feat(docs) Adding some additional clarity around low power states (#2330)
* docs(feat): Adding some additional clarity around low power states, with guide portion moved to hardware integration

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-11-02 23:20:31 +01:00
Peter Johanson
249ecbc7e6 fix(studio): Bump nanopb version with build fixes.
* Pull in fixes for prefering generator/protoc instead of the
  host protoc, for better compatibility.
2024-11-01 13:17:29 -06:00
dependabot[bot]
158bb31863 chore(deps-dev): bump webpack from 5.95.0 to 5.96.0 in /docs (#2600)
Bumps [webpack](https://github.com/webpack/webpack) from 5.95.0 to 5.96.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.95.0...v5.96.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-01 09:50:53 +01:00
Nicolas Munnich
80df3195b7 docs: Add a hardware issues page under troubleshooting (#2360)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Anant Thazhemadam <47104651+thazhemadam@users.noreply.github.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2024-10-31 10:42:00 -07:00
Pauiii
cb5e605906 docs: Devcontainers-cli enhancement (#2548)
* docs: Split local toolchain setup for Docker in two separated approaches.

This includes adding a new dropdown for Docker which lists overall steps
that have to be done when setting up the environment. Furthermore, the
previous documentation is no listed under VSCode and new documentation
for the Devcontainer CLI has been added.

Since the described approaches for VS Code and Dev Container CLI varied
quiet a bit a more unified way of setting them up was added. Due to
that, the documentation for building and flashing could be simplified as
well.

* docs: Update documentation for building and flashing for devcontainers.

Moved information about creating volumes for Docker containers into the
overall Docker setup documentation. Add warning for changing build
directory or adding options for building at the top of the page.

* feat(devcontainers): Add new volume for mounting modules.

---------

Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-10-27 20:17:41 +01:00
Nicolas Munnich
7d8dd64cdc docs: Added a page on pin control for ZMK (#2508)
* docs(feat): Added a page on pin control for ZMK

* Added note on HAL modules

* docs: Added images of boards

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-10-27 02:31:47 +02:00
Joel Spadin
f0a3947044 Update web-tree-sitter and tweak keymap upgrader (#2593)
* fix(docs): Fix TypeScript import diagnostics

Set the TypeScript module resolution mode to "bundler" so it correctly
resolves imports in .ts files instead of showing errors in IDEs.

* chore(docs): Update web-tree-sitter

Updated web-tree-sitter, and switched from having a copy of
tree-sitter-devicetree.wasm in the repo to using the latest version of
the tree-sitter-devicetree module, which now contains the .wasm file.

* fix(docs): Make keymap upgrader resize vertically only

Changed the textarea in the keymap ugprader to allow only vertical
resizing. This better fits the layout of the page, and it prevents you
from shrinking the box horizontally to the point where it doesn't fit
anything.
2024-10-26 09:55:09 +02:00
Nicolas Munnich
7ee25c7959 chore: updated path-to-regexp 2024-10-25 14:06:42 -07:00
dependabot[bot]
87cea76c93 chore(deps): bump react-toastify from 10.0.5 to 10.0.6 in /docs (#2589)
Bumps [react-toastify](https://github.com/fkhadra/react-toastify) from 10.0.5 to 10.0.6.
- [Release notes](https://github.com/fkhadra/react-toastify/releases)
- [Commits](https://github.com/fkhadra/react-toastify/compare/v10.0.5...v10.0.6)

---
updated-dependencies:
- dependency-name: react-toastify
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 13:10:34 +02:00
dependabot[bot]
9a68b2eeb7 chore(deps-dev): bump @types/react from 18.3.5 to 18.3.12 in /docs (#2587)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.3.5 to 18.3.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 13:07:45 +02:00
dependabot[bot]
428c36bc59 chore(deps-dev): bump eslint-plugin-react from 7.37.1 to 7.37.2 in /docs (#2588)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.37.1 to 7.37.2.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.1...v7.37.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 13:05:51 +02:00
Nicolas Munnich
5487b108d5 docs: fixing some more broken anchors (#2586) 2024-10-23 02:16:59 +02:00
dependabot[bot]
55c67804eb chore(deps): bump http-proxy-middleware from 2.0.6 to 2.0.7 in /docs (#2585)
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 01:52:19 +02:00
dependabot[bot]
0d8b23fccb chore(deps): bump mermaid from 10.9.1 to 10.9.3 in /docs (#2584)
Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 10.9.1 to 10.9.3.
- [Release notes](https://github.com/mermaid-js/mermaid/releases)
- [Changelog](https://github.com/mermaid-js/mermaid/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/mermaid-js/mermaid/compare/v10.9.1...v10.9.3)

---
updated-dependencies:
- dependency-name: mermaid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 01:49:45 +02:00
dependabot[bot]
e9681270d3 chore(deps): bump @mdx-js/react from 3.0.1 to 3.1.0 in /docs (#2580)
Bumps [@mdx-js/react](https://github.com/mdx-js/mdx/tree/HEAD/packages/react) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/mdx-js/mdx/releases)
- [Changelog](https://github.com/mdx-js/mdx/blob/main/changelog.md)
- [Commits](https://github.com/mdx-js/mdx/commits/3.1.0/packages/react)

---
updated-dependencies:
- dependency-name: "@mdx-js/react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 01:48:09 +02:00
dependabot[bot]
4c47d67e63 chore(deps-dev): bump typescript from 5.5.4 to 5.6.3 in /docs (#2581)
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.5.4 to 5.6.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.5.4...v5.6.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 01:39:19 +02:00
Peter Johanson
8ed556df62 chore(studio): Only clear settings for overridden key positions. 2024-10-21 14:53:31 -06:00
Peter Johanson
369a009d99 chore(shields): Add studio feature to qaz metadata 2024-10-21 10:08:51 -06:00
Zack Forbing
200d98f623 feat(shields): QAZ: added three physical layouts
* added three physical layouts

---------

Co-authored-by: Zack Forbing <zforbing@vertafore.com>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-10-21 11:53:06 -04:00
dependabot[bot]
8756a064d1 chore(deps-dev): bump webpack from 5.94.0 to 5.95.0 in /docs (#2578)
Bumps [webpack](https://github.com/webpack/webpack) from 5.94.0 to 5.95.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.94.0...v5.95.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-21 09:01:53 +02:00
KingCoinless
7293037f18 docs(codes): Android Support: Basic Controls and Input + Display (#603)
* docs(codes): Android Support: Basic Controls and Input + Display
---------

Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-10-20 23:57:00 +02:00
dependabot[bot]
a057e4c89d chore(deps-dev): bump json-schema-to-typescript from 13.1.2 to 15.0.2 in /docs (#2454)
* chore(deps-dev): bump json-schema-to-typescript in /docs

Bumps [json-schema-to-typescript](https://github.com/bcherny/json-schema-to-typescript) from 13.1.2 to 15.0.2.
- [Changelog](https://github.com/bcherny/json-schema-to-typescript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bcherny/json-schema-to-typescript/commits)

---
updated-dependencies:
- dependency-name: json-schema-to-typescript
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: glob types missing

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Munnich <nickmunnich@gmail.com>
2024-10-20 18:38:11 +02:00
dependabot[bot]
7f1ee320ab chore(deps): bump cookie and express in /docs (#2570)
Bumps [cookie](https://github.com/jshttp/cookie) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `cookie` from 0.6.0 to 0.7.1
- [Release notes](https://github.com/jshttp/cookie/releases)
- [Commits](https://github.com/jshttp/cookie/compare/v0.6.0...v0.7.1)

Updates `express` from 4.19.2 to 4.21.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.1)

---
updated-dependencies:
- dependency-name: cookie
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-19 20:01:01 +02:00
dependabot[bot]
b67f8bbe9f chore(deps-dev): bump eslint-plugin-react from 7.35.0 to 7.37.1 in /docs (#2524)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.35.0 to 7.37.1.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.35.0...v7.37.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-19 19:52:54 +02:00
dependabot[bot]
548fe7f6bd chore(deps): bump serve-static and express in /docs (#2483)
Bumps [serve-static](https://github.com/expressjs/serve-static) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `serve-static` from 1.15.0 to 1.16.2
- [Release notes](https://github.com/expressjs/serve-static/releases)
- [Changelog](https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md)
- [Commits](https://github.com/expressjs/serve-static/compare/v1.15.0...v1.16.2)

Updates `express` from 4.19.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.0)

---
updated-dependencies:
- dependency-name: serve-static
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-19 19:39:26 +02:00
dependabot[bot]
94100e307b chore(deps-dev): bump eslint-config-prettier in /docs (#2127)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 8.10.0 to 9.1.0.
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v8.10.0...v9.1.0)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-19 14:52:13 +02:00
dependabot[bot]
2e9d72ba6b chore(deps-dev): bump prettier from 2.8.8 to 3.3.3 in /docs (#2374)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.3.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.3.3)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-19 14:47:00 +02:00
Peter Johanson
ea1a09bf99 fix: Optimize layout changes by doing runtime mapping
* To avoid tons of migration, extra flash writes, etc, we keep
  the keymaps and settings using a key position index that's tied
  to the stock layout, and at runtime mapping key positions as
  needed.
2024-10-18 15:30:13 -06:00
Nicolas Munnich
a6d09f8c00 docs: Added mastodon link in footer 2024-10-17 15:01:30 -06:00
Peter Johanson
10868c72f7 chore: Tag studio enabled boards/shields. 2024-10-17 10:20:30 -06:00
Peter Johanson
64c1e1e3ff feat: Add studio as a feature option in metadata
* Allow boards/shields to indicate ZMK Studio support in the `features` list.
2024-10-17 10:20:30 -06:00
honorless
7dfc6ab31d refactor(shields): MurphPad
* Added matrix transforms and physical layouts for three typical
  configurations.

* Tweaked default keymap to be more immediately useful for ZMK and more
  closely resemble the default keymaps of non-ZMK firmware.

* Board-specific Kconfig settings migrated to main shield file, so they
  will be exposed to end-users through the setup script.

* Tidied formatting and shortened overlong layer labels.

* Aligned encoder configuration with current standards.

* Corrected default number of RGB LEDs.

* Enabled OLED by default in a less authoritarian way.
2024-10-16 18:21:40 -06:00
Alexander Krikun
11537ebee6 feat(shields): add physical layouts and update keymap for Jiran
Add physical layouts and update the keymap for Ladniy's Jiran.
Layouts are added for all three possible transforms:
- Full (with additional pinky key and number row)
- Jian (with additional pinky key), re-uses Jian layout
- 6 column (Corne), re-uses Jian layout

Keymap update includes &studio_unlock.
2024-10-16 17:04:39 -06:00
Alexander Krikun
218a2fff8d feat(shields): add physical layouts and update keymap for Jian
Add physical layouts and update the keymap for King of Hedgehogs' Jian.
Layouts are added for all three possible transforms:
- Full (with additional pinky key)
- 6 column (Corne)
- 5 column (Minidox)

The layouts are added to be re-usable for the Jiran and other custom boards/shields.

Keymap update includes, small guide clarifications, output selection,
tri-layer and &studio_unlock.
2024-10-16 17:04:39 -06:00
Alexander Krikun
bbe4f64bb2 feat(shields): add physical layouts and update keymap for Jorne
Add physical layouts and update the keymap for Joric's Jorne.
Layouts are added for all three possible transforms:
- Full (with additional pinky key)
- 6 column (Corne), re-uses Corne layout
- 5 column (Minidox), re-uses Corne layout

Keymap update includes quick-tap-ms (essential for this keymap), small
guide clarifications, output selection, tri-layer and &studio_unlock.
2024-10-16 17:04:39 -06:00
Peter Johanson
c8841c4119 docs: Add note about .keymap changes when using Studio 2024-10-16 13:09:51 -06:00
Peter Johanson
993a64d5b3 docs: Better document the layer display-name prop. 2024-10-16 11:57:27 -06:00
angweekiat
0adb80c02b fix(usb): detect USB power mode to fallback to BLE
* Add tracking to see if we ever hit a configured status before
  suspend, so we can properly track "is connected" even when
  connected to a suspended/asleep host.
2024-10-14 19:15:45 -04:00
Peter Johanson
6cbf25f04a docs: Update Studio status warnings to beta.
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-10-14 09:42:06 -06:00
Peter Johanson
0abc1eaf23 docs: Add ZMK Studio links.
* Add a toplevel ZMK Studio link in our header.
* Add link to the web and app releases to the feature page.
2024-10-14 09:42:06 -06:00
Nicolas Munnich
a72327bdff docs: Physical layout docs improvements (#2533)
* docs: Added layout configuration reference page
* docs: Refactored and revamped physical layout creation information
* docs: Added note in studio features page
* docs: added studio_unlock note in features section
---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Joel Spadin <joelspadin@gmail.com>
Co-authored-by: Peter Johanson <peter@peterjohanson.com>
2024-10-12 21:25:45 +02:00
Pete Johanson
d3f2895744 refactor: Give position map children labels. (#2544)
* To make is easier to reuse layouts and override the position
  maps for them, add labels to all the position map children in our
  shared layouts.
2024-10-10 13:03:32 -04:00
Pete Johanson
dab4b2cdf3 fix(studio): Reduce stack usage. (#2547)
* Imply nanopb setting for reduced stack usage.
2024-10-10 12:49:51 -04:00
Pete Johanson
78513af73e feat(studio): Move to nanopb with minor optimizations. (#2505)
* Reduced stack size.
2024-10-10 12:36:27 -04:00
Cem Aksoylar
022ede9d1e docs: Remove download for settings_reset and note local build 2024-10-08 17:04:36 -07:00
Cem Aksoylar
16976db58c docs: Fix columns names in kscan config 2024-10-08 14:58:04 -07:00
Cem Aksoylar
6e2d30d589 docs: Add missing hold-trigger-on-release to config 2024-10-08 14:58:04 -07:00
Allister MacLeod
4aea919a4d fix(display): Adding length check to layer_label in nice_view status widget. 2024-10-08 12:27:01 -04:00
Peter Johanson
47a17c64d7 fix: Defer auto enabling of kscan sideband.
* Now that device init of kscan sideband is in POST_KERNEL stage,
  use a separate SYS_INIT for auto enabling the device so processing
  of early/initial presses from referenced toggle mode kscan devices
  occurs at the proper time during init.
2024-10-08 10:20:39 -06:00
Peter Johanson
6cac781ada feat: Add basic metadata info to new behavior guide.
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-10-08 00:45:37 -06:00
Peter Johanson
29b39f2b9f feat: A few enhancements to our RPC messages.
* More fine grained status reporting when saving changes. Needed to we
  can notify the client if we've got errors saving settings due to
  running out of space, etc.
* Return the max layer name lenght in the keymap payload, for the UI to
  leverage.
2024-10-03 15:10:58 -06:00
Nicolas Munnich
c05aed2f19 fix(boards): Corneish-zen physical layout 2024-10-03 08:57:18 -06:00
Joel Spadin
60a8f29340 feat(boards)!: refactor Corne layouts
Split up the Corne layout files to match the previous commit.
2024-10-02 18:48:18 -06:00
Joel Spadin
36f146226e feat(boards)!: refactor common layouts
Removed the combined .dtsi file for each group of common layouts, and
split the position map across the files in each group. This makes
reading the position maps slightly more difficult, but it aligns the
common layouts with the keyboard-specific ones such as
foostan/corne.dtsi in that simply including each header adds the
layout, with no need to set status = "okay".
2024-10-02 18:48:18 -06:00
Peter Johanson
73ca365530 feat(boards): PM RP2040 flash settings support. 2024-10-01 01:57:08 -06:00
LostQuasar
90d6285d98 blog: Remove reference to spaceman (#2520) 2024-09-30 19:43:58 -07:00
Nicolas Munnich
e195822559 docs: fixed broken anchors 2024-09-30 16:43:47 -07:00
Nicolas Munnich
99b424bb4b docs: Streamlined the new shield guide (#2515)
* docs: Streamlined the new shield guide

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-10-01 00:00:55 +02:00
Peter Johanson
ce04352e2f feat: Add reviung41 physical layout. 2024-09-30 12:00:21 -06:00
Peter Johanson
8c21e7766d feat: Add physical layout to BDN9 rev2. 2024-09-30 12:00:21 -06:00
Peter Johanson
7276fd525f feat: Build asserts for requires studio layout bits.
* When building with ZMK Studio, assert that we have physical layouts,
  and those layouts have key information set.
2024-09-30 12:00:21 -06:00
Cem Aksoylar
59c82ef27a refactor(shields): Use space not hyphen for layout names 2024-09-30 11:30:10 -06:00
Cem Aksoylar
608b6458a9 feat(boards): Add physical layout to Corne-ish Zen 2024-09-30 11:30:10 -06:00
Cem Aksoylar
907b1caaa6 refactor(shields): Add physical layout chosen nodes for consistency 2024-09-30 11:30:10 -06:00
Cem Aksoylar
552d665f58 feat(boards): Add glove80 and adv360pro layouts 2024-09-30 11:30:10 -06:00
Cem Aksoylar
dafdc44b22 feat(shields): Use new shared layouts 2024-09-30 11:30:10 -06:00
Cem Aksoylar
f618871f53 feat(shields): Add more shared layouts 2024-09-30 11:30:10 -06:00
Nicolas Munnich
a314128ea8 docs: Pull encoders from new shield guide to its own page (#2510)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-09-30 10:06:00 -07:00
ReFil
e68abe57d8 feat(shields): Shield physical layouts 2024-09-26 11:53:24 -06:00
ReFil
e80b1584de feat(boards): Preonic physical layout 2024-09-26 11:53:24 -06:00
ReFil
91e1a7cfef feat(boards): Planck physical layout 2024-09-26 11:53:24 -06:00
ReFil
026be009a6 feat(boards): CKP physical layout 2024-09-26 11:53:24 -06:00
ReFil
a8f7888f4d feat(boards): BT60 V1 Physical Layout 2024-09-26 11:53:24 -06:00
ReFil
a47f1fe2e1 feat(boards): nice!60 physical layout 2024-09-26 11:53:24 -06:00
ReFil
ec32c566ce feat(boards): Tofu65 V2 Physical layout 2024-09-26 11:53:24 -06:00
ReFil
0a25fa2f95 feat(boards): add common keyboard layouts 2024-09-26 11:53:24 -06:00
Nicolas Munnich
1f900bfc9c docs: Added a note on bluetooth profiles under "unable to connect to device" (#2509)
* docs: Added a note on bluetooth profiles under "unable to connect to device"

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-09-26 19:49:13 +02:00
Peter Johanson
a17266847d fix: Force Ubuntu 22.04, pending CI fixes. 2024-09-26 10:08:43 -06:00
Peter Johanson
4a8ceba0db chore: Fix keymap const warning. 2024-09-25 20:23:19 -06:00
Peter Johanson
5d4b6df6a7 feat(studio): Log entry into all RPC. 2024-09-25 17:46:50 -06:00
Peter Johanson
21e1b2acad feat: Add RPC thread analysis support. 2024-09-25 17:46:50 -06:00
ReFil
17f0a4d307 feat(ble): Set device name at runtime
This allows for the device name to be set at runtime, possible uses for this include a custom display screen that lets you type it in using the keycode state event, future configuration in zmk studio, or altering it per profile as per #1169
2024-09-25 15:35:42 -04:00
ReFil
58dcf5c285 feat(power): Support multiple ext_power GPIOS 2024-09-25 15:30:45 -04:00
Peter Johanson
33e3b02ddb feat: Split physical layout selection sync.
* Ensure the split peripherals have the same selected physical
  layout on connection and change.
2024-09-23 15:12:22 -06:00
Peter Johanson
f992352936 chore: Formatting fix. 2024-09-23 10:31:43 -06:00
Cem Aksoylar
8166527ea3 fix(docs): Remove split locality issue note 2024-09-23 10:17:29 -06:00
Cem Aksoylar
fb18a4d871 refactor: Condition source props on CONFIG_ZMK_SPLIT 2024-09-23 10:17:29 -06:00
Cem Aksoylar
b249135742 feat(sensors): Make sensors always trigger on central (for now) 2024-09-23 10:17:29 -06:00
Cem Aksoylar
4fdfb01b6a feat(split): Make combos invoke behaviors with locality
TODO: Currently the source is hardcoded to central for source local behaviors
2024-09-23 10:17:29 -06:00
Cem Aksoylar
9e36ebd525 feat(split): Make locality work nested behavior invocations
Co-authored-by: Tokazio <tokazio@hotmail.com>
2024-09-23 10:17:29 -06:00
Peter Johanson
11f600d9e5 fix(display): Check layer name length too. 2024-09-20 22:59:44 -06:00
Peter Johanson
cca637d66e fix: Properly calculate highest active layer for display. 2024-09-20 22:59:44 -06:00
Peter Johanson
de38676afd fix(core): Warn only with layouts + chosen transform
* Instead of erroring out, simply ignore physical layouts if we
  detect a chosen matrix transform, and warn instead.
2024-09-19 13:12:17 -06:00
Peter Johanson
1baf18d671 chore: Better errno formatting in logs. 2024-09-19 01:15:13 -06:00
Peter Johanson
6ae07d222a feat: Bit of extra studio keymap logging. 2024-09-18 13:08:35 -06:00
XiNGRZ
62900c62be fix(studio): Ensure null-termination of layer name read from settings
This fixes the string leak when a layer name is changed to a longer one,
but is discarded and reverted to the original shorter one from ZMK Studio.
2024-09-18 10:53:23 -06:00
Andrew Kannan
c8c8835a19 fix(studio): Update position map querying 2024-09-17 23:29:08 -06:00
Peter Johanson
a9167b2275 fix: Reduce RAM usage in the keymap
* When not building with runtime keymap support, make the keymap
  const.
2024-09-16 23:20:14 -06:00
Peter Johanson
32d0a4bf41 fix: Fix wakeup from kscan wrapped in sideband.
* If using a sideband kscan device to wrap a native kscan device,
  ensure the inner kscan device is also wakeup enabled to it can
  be waken from a deep sleep state by key press.
2024-09-16 15:17:26 -06:00
Abe Nonym
92745903c9 fix(ble): Properly compile with clear bonds on start 2024-09-16 12:06:34 -04:00
Maxime Vincent
67d595f29f pre-commit: re-format using clang-format hook (v18.1.8) 2024-09-13 16:04:26 -06:00
Maxime Vincent
82a22d731b pre-commit: use versioned clang-format hook (v18.1.8) 2024-09-13 16:04:26 -06:00
Jim Aho
6e03a0bb67 fix(docs): Fix wording in layers section in keymaps (#2474) 2024-09-12 13:57:19 -07:00
Peter Johanson
6b4d591c37 fix(bt): Fix compilation failure for clearing bonds.
* Refactor broke the build when clearing bonds on start.
2024-09-09 11:26:53 -06:00
Nicolas Munnich
1c48f64730 fix(docs): Fix broken anchor in Studio setup (#2465) 2024-09-07 09:26:24 -07:00
Nicolas Munnich
f0319fde94 docs(feat): Added a page on shift registers (#2452)
Added a page on shift registers
---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-09-07 13:19:01 +02:00
Pete Johanson
d52bb04090 Revert "feat: Split physical layout selection sync."
This reverts commit 03b5b38bc4.
2024-09-07 00:22:01 -06:00
Grazfather
58207fdb2c fix(docs): Mention display-name property in layer docs (#2460) 2024-09-06 20:03:23 -07:00
Alexander Krikun
cddc92108c fix(boards): add sleep pinctrl node for nice!60
Add spi3_sleep pinctrl node to fix nice!60 builds with
both RGB underglow and sleep enabled.
2024-09-06 13:04:22 -06:00
honorless
a2f32cc12c refactor(shield): tidbit
* Implement alternative matrix-transform.

* Add missing wakeup-source attribute.

* Revise README to provide more appropriate information.

* Remove unnecessary files (partially-functional shield).
2024-09-06 13:02:15 -06:00
Robert U
2a137bb675 fix: Support west test when invoked as module 2024-09-06 14:56:40 -04:00
dependabot[bot]
ba6f21fd2b chore(deps): bump tj-actions/changed-files from 44 to 45
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 44 to 45.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v44...v45)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-06 12:51:29 -06:00
ReFil
91447ac55c fix: Correct max brightness in backlight metadata
The set brightness function in the backlighting code has a max of 100, as does the zephyr led-pwm driver https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/led/led_pwm.c

The range for the set brightness function should reflect this max
2024-09-06 14:36:08 -04:00
honorless
eaa8989f37 style: update commented-out obsolete keycodes 2024-09-06 12:22:54 -06:00
honorless
e0ec2ff84d refactor: update obsolete keycodes 2024-09-06 12:22:54 -06:00
Peter Johanson
03b5b38bc4 feat: Split physical layout selection sync.
* Ensure the split peripherals have the same selected physical
  layout on connection and change.
2024-09-06 12:20:45 -06:00
Peter Johanson
3975d2fdaf feat: Add studio related documentation.
* Document setting up studio for a new keyboard definition.
* Document how to enable ZMK Studio for a build, adding reserved layers,
  and controlling which behaviors are built into a studio firmware.
* Document `&studio_unlock` behavior.
* Document studio configuration options.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-09-05 12:22:08 -06:00
Peter Johanson
5176fbea6a fix: Locking fix for RPC subsystem. 2024-09-05 12:22:08 -06:00
Peter Johanson
782695f4a9 fix: Fixes for CRC16 local IDs. 2024-09-05 12:22:08 -06:00
Peter Johanson
e0339a2a57 feat: Add shared layout .dtsi files to promote reuse.
* Add Corne and Ferris shared layouts, and update the respective
  shields to use them.
* Add a sample Hummingbird physical layout for testing posix xiao.
* Add Sofle physical layout as an additional reference.
2024-09-05 12:22:08 -06:00
Peter Johanson
b84436e611 feat: Add posix_pro_micro and posix_seeed_xiao shields
* Make it easier to test native builds of our shields by adding
  `posix_pro_micro` and `posix_seeed_xiao` so you can build posix
  target of, e.g. `corne_left` for testing ZMK Studio.
2024-09-05 12:22:08 -06:00
Peter Johanson
fd28eab179 feat: Add the ability to keep/omit behaviors for a given build.
* Use defines to keep either all behaviors with omits, or selective behaviors with
  explicit kept behavior, before including `behavior.dtsi` in keymaps.
* Default ZMK_BEHAVIORS_KEEP_ALL when building with the studio RPC
  endpoint snippet.
2024-09-05 12:22:08 -06:00
Peter Johanson
d77e400eb9 feat(boards): Add posix MiniVan studio tester
* New shield to easily test studio using the `native_posix_64` board.
2024-09-05 12:22:08 -06:00
Peter Johanson
c8c19598a7 feat(keymap): Add binding get/set, layer movement
* Add keymap API for getting/setting a bindings
  in keymap layers.
* Add layer move support via intemediary ordering array.
* Add settings storage for keymap changes.
2024-09-05 12:22:08 -06:00
dependabot[bot]
0f972f1cc3 chore(deps): bump web-tree-sitter from 0.20.8 to 0.23.0 in /docs
Bumps [web-tree-sitter](https://github.com/tree-sitter/tree-sitter) from 0.20.8 to 0.23.0.
- [Release notes](https://github.com/tree-sitter/tree-sitter/releases)
- [Changelog](https://github.com/tree-sitter/tree-sitter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tree-sitter/tree-sitter/compare/v0.20.8...v0.23.0)

---
updated-dependencies:
- dependency-name: web-tree-sitter
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 22:57:37 -07:00
Nicolas Munnich
266227b580 refactor(docs): Refactor the development section (#2438) 2024-09-01 21:54:19 -07:00
Cem Aksoylar
aae4feeda8 chore(deps): npm update on docs 2024-09-01 21:37:47 -07:00
Cem Aksoylar
b74cd39ab5 chore(blog): Use truncate markers 2024-09-01 00:15:23 -07:00
Cem Aksoylar
0120156002 refactor(blog): Use global authors 2024-09-01 00:15:23 -07:00
Cem Aksoylar
745b960593 fix(docs): Fix broken anchors 2024-09-01 00:13:46 -07:00
dependabot[bot]
882226e261 chore(deps-dev): bump webpack from 5.89.0 to 5.94.0 in /docs
Bumps [webpack](https://github.com/webpack/webpack) from 5.89.0 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.89.0...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-31 17:13:32 -07:00
dependabot[bot]
d74896d780 chore(deps): bump micromatch from 4.0.5 to 4.0.8 in /docs
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-31 17:06:43 -07:00
Mike Szczys
f019524600 fix(display): widgets: increase buffer size for symbols
Increase buffer size used for placing LVGL symbols on displays. This
prevents array overflow warnings as discussed in #2444.

Also convert one sprintf to snprintf to ensure the buffers are always
null terminated and never overflow.

Signed-off-by: Mike Szczys <szczys@hotmail.com>
2024-08-28 00:35:28 -06:00
Anant Thazhemadam
6946ca8b07 fix(docs): minor corrections and fix typo (#2443)
* docs(faq): minor corrections

* docs: fix typo - `s/Alterative/Alternative`

* docs(faq): use Lily58 as an example instead of Corne with revision

Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>

---------

Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-08-27 16:23:15 +02:00
William Brockhus
b866ec031f fix(docs): Fixing wording in the split keyboards feature page (#2440) 2024-08-25 09:31:21 +02:00
Nicolas Munnich
5f056f7199 refactor(docs): Convert the keymaps section into a base folder (#2430)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-08-21 10:39:18 -07:00
Nicolas Munnich
503f6c8e58 feat(docs): Add and modify docs to point users to the experimental zmk-cli (#2431)
Co-authored-by: Joel Spadin <joelspadin@gmail.com>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-08-21 10:36:23 -07:00
Peter Johanson
b735a051ce fix(docs): Admonition formatting fix. 2024-08-15 12:51:38 -06:00
Peter Johanson
d5061c5d3b fix: Make CRC behavior local ID select CRC. 2024-08-15 11:45:18 -06:00
Peter Johanson
6ae6bf78b4 fix(boards): BDN9 rev2 tweaks.
* Reduce RAM usage, no need for heap any more in ZMK.
* Don't attempt to enable FPU that's not present.
2024-08-15 11:45:18 -06:00
Peter Johanson
fb67e4603a feat: Add studio core coverage targets.
* Cover stm32, RP2040, and nRF52 builds.
2024-08-15 11:45:18 -06:00
Peter Johanson
bafe648425 feat: Add &studio_unlock behavior.
* New behavior allows unlocking the keyboard to allow ZMK Studio to
  make changes.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-08-15 11:45:18 -06:00
Peter Johanson
b1bcc3e418 feat(studio): Add studio-rpc-usb-uart snippet.
* Add an easy snippet for enabling USB UART added
   to the `zephyr_udc0` standard node.
2024-08-15 11:45:18 -06:00
Peter Johanson
feda96eb40 feat(studio): Initial RPC infrastructure and subsystems.
* UART and BLE/GATT transports for a protobuf encoded RPC
  request/response protocol.
* Custom framing protocol is used to frame a give message.
* Requests/responses are divided into major "subsystems" which
  handle requests and create response messages.
* Notification support, including mapping local events to RPC
  notifications by a given subsystem.
* Meta responses for "no response" and "unlock needed".
* Initial basic lock state support in a new core section, and allow specifying
  if a given RPC callback requires unlocked state or not.
* Add behavior subsystem with full metadata support and examples of
  using callback to serialize a repeated field without extra stack space needed.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-08-15 11:45:18 -06:00
Cem Aksoylar
ea64fcaf71 fix(docs): Note direct pin use in matrix transform 2024-08-15 10:38:10 -07:00
dependabot[bot]
6fe13c9565 chore(deps-dev): bump eslint-plugin-mdx from 2.3.3 to 3.1.5 in /docs (#2128)
Bumps [eslint-plugin-mdx](https://github.com/mdx-js/eslint-mdx) from 2.3.3 to 3.1.5.
- [Release notes](https://github.com/mdx-js/eslint-mdx/releases)
- [Changelog](https://github.com/mdx-js/eslint-mdx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mdx-js/eslint-mdx/compare/eslint-plugin-mdx@2.3.3...eslint-plugin-mdx@3.1.5)

---
updated-dependencies:
- dependency-name: eslint-plugin-mdx
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-15 16:15:39 +02:00
dependabot[bot]
08988ec7da chore(deps): bump braces from 3.0.2 to 3.0.3 in /docs (#2337)
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-15 16:14:45 +02:00
LostQuasar
b42d06ecf7 chore: Update pancake shield url 2024-08-14 14:38:38 -04:00
down
895f557ae5 fix: no error return in sticky key get_parameter_metadata 2024-08-14 12:34:18 -06:00
Cem Aksoylar
96cd3a1ce2 refactor(docs): Remove unnecessary jsx includes 2024-08-13 23:03:15 -07:00
Cem Aksoylar
4faeb365b1 feat(docs): Add keyboard vs consumer variants note 2024-08-13 23:03:15 -07:00
Cem Aksoylar
ba0dee088f feat(docs): Add section on nesting mod-morphs
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-08-13 14:56:07 -07:00
Cem Aksoylar
0d15ae84f4 fix(docs): Fix mod-morph terms from keycodes to bindings 2024-08-13 14:56:07 -07:00
Cem Aksoylar
8b909acdcf refactor(docs): Add subheaders for devicetree error types 2024-08-13 11:11:27 -07:00
Cem Aksoylar
3de8a56fcb feat(docs): Add a note on column numbers for DTS errors 2024-08-13 11:11:27 -07:00
Cem Aksoylar
00e4818094 fix(docs): Fix broken anchor in reset behaviors 2024-08-13 10:51:40 -07:00
Nicolas Munnich
049c070b3a feat(docs): Minor improvements to the docs (#2411) 2024-08-13 10:47:45 -07:00
Peter Johanson
fb3af5327e fix: Fix hardware metadata validation after image changes.
* Newer Docker image requires --break-system-packages for pip.
2024-08-13 07:38:11 -07:00
Pete Johanson
6d50ba5553 chore: Docs review tweaks.
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-08-12 16:57:54 -07:00
Peter Johanson
3fec690def feat: Add config settings for sticky keys/hold-tap
* Add new Kconfig symbols to config max held sticky-keys/hold-taps
  and for max captured events during hold-tap resolution.
2024-08-12 16:57:54 -07:00
Cem Aksoylar
2eff266f5b feat(docs): Add battery life remark for split keyboards 2024-08-07 23:57:58 -07:00
Cem Aksoylar
2a0708d1fc feat(docs): Add locality warning for nested behaviors 2024-08-07 23:57:58 -07:00
Cem Aksoylar
2501f1f548 feat(docs): Add references to new split keyboards page 2024-08-07 23:57:58 -07:00
Cem Aksoylar
d75e388593 feat(docs): Add split keyboards feature page
Co-authored-by: Nicolas Munnich <98408764+Nick-Munnich@users.noreply.github.com>
2024-08-07 23:57:58 -07:00
Peter Johanson
cd25c12ce9 fix: Proper device PM support for composite kscan.
* Clean up composite kscan to allow multiple instances properly.
* Implement PM hook and properly suspend/resume the child devices.

Fixes: #2388
2024-08-03 13:45:51 -07:00
Peter Johanson
78ed721c36 fix(pm): Properly configure a wakeup as input.
* Other drivers properly disconnect/de-config pins now, so we need
  to be sure the wakeup trigger connects the wake pin as input.
2024-08-02 16:37:11 -07:00
Cem Aksoylar
47a6715aa6 fix(docs): Fix toggle layer docs 2024-08-02 11:17:10 -07:00
Cem Aksoylar
b9a025c76e fix(docs): Document number of peripherals Kconfig (#2389)
Fixes #2373
2024-08-02 18:57:15 +02:00
Cem Aksoylar
b080befebb fix(docs): Fix link for matrix transform 2024-08-02 09:55:20 -07:00
Nicolas Munnich
9e7fcde868 feat(docs): Improve the layers-related documentation (#2390)
Fixes #1284
2024-07-31 20:53:36 -07:00
Nicolas Munnich
f92dce43e9 feat(docs): Add modules feature page (#2380)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-07-25 12:08:08 -07:00
Nicolas Munnich
97294aa341 chore: Add a recommended extension for .mdx files (#2381) 2024-07-25 12:00:55 -07:00
Nicolas Munnich
fd152baff0 feat(docs): Add troubleshooting notes on experimental bluetooth options (#2387)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-07-25 12:00:22 -07:00
Cem Aksoylar
7bd74a6b0f fix(docs): Add required display-name in physical layout examples 2024-07-14 16:59:15 -07:00
Peter Johanson
8c6bda260a fix: Proper behavior metadata for key repeat/toggle 2024-07-05 15:38:04 -06:00
Peter Johanson
3694ff85a0 fix: Fix up layer metadata, move to layer IDs.
* Studio will use stable layer IDs to refer to layers, so that
  layer reordering doesn't affect behavior bindings, so update to match.
* Fix a few layer metadata entries that missed being refactored.
2024-07-05 13:13:42 -06:00
Peter Johanson
e01f13f9f0 fix: Fix external power settings load issue.
* Because settings load is delayed now, enable external
  power on init, and let it be disabled on settings load
  later, to ensure power is on early for
  other peripheral initialization.

Fixes: #2361
2024-07-04 17:20:40 -06:00
Peter Johanson
82eed0f5dd feat(boards): Add flash/settings to XIAO RP2040.
* Add storage partition.
* Default necessacy Kconfig symbols for flash/settings.
2024-07-03 16:57:22 -06:00
Peter Johanson
b4f9081b09 docs: Updated new shield documentation for physical layouts.
* Document how to define one or more physical layouts and assign
  the chosen one.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-07-03 16:52:05 -06:00
Peter Johanson
5fcf092901 refactor(shields): Set ZMK Uno physical layouts.
* Add physical layout definitions for uno and split uno shields.
2024-07-03 16:52:05 -06:00
Peter Johanson
74f7fe921b fix(splits): Increase split notify stack size. 2024-07-03 16:52:05 -06:00
Peter Johanson
0438cb0ee5 feat(kscan): More complete PM support to drivers.
* Update our GPIO kscan drivers to more completely support PM device,
  by doing proper hardare init/deinit in the PM action hook.
2024-07-03 16:52:05 -06:00
Peter Johanson
c5cca5b34f feat: Add keyboard physical layout system.
* Add bindings to allow creating multiple physical layouts that specify
  their key's physical attributes, and the matching matrix transform
  and dependant kscan to use.
* Synthesize a basic physical layout if none specified, for backwards
  compatibility.
* Update matrix transform API to explicitly pass in the selected transform
  to the API instead of using a fixed chosen transform.
* Move kscan subscription and handling into the physical layout code, so
  that selecting a different physical layout at runtime can also use the
  correct kscan instance.
* Add `physical_layouts.dtsi` file to include so you can use the
  pre-configured `&key_physical_attrs` for adding you layout keys.
2024-07-03 16:52:05 -06:00
Peter Johanson
80173f8ea3 fix: Improve startup time with proper settings loading.
* Avoid doing duplicate calls to setings_load_subtree, which iterates
  NVS fully each time under the hood, and instead use on settings_load
  later in the lifecycle.
2024-07-03 16:24:17 -06:00
Peter Johanson
f18974e8c4 fix: Adjust hid indicator listeners for event refactor
* Avoid static listener to prevent subscription
  issue.
2024-07-01 12:32:04 -06:00
ReFil
f2ea1da036 fix(boards): Suppress devicetree warning
nRF5x boards throw a spurious warning for duplicate unit-address when the devicetree gets processed

Upstream issue:  https://github.com/zephyrproject-rtos/zephyr/issues/29713

Warning suppressed as per: https://docs.zephyrproject.org/latest/build/dts/intro-input-output.html
2024-06-30 12:59:46 -04:00
Peter Johanson
96e55c8be6 fix: BLE refactor mouse keys fix. 2024-06-28 17:48:45 -06:00
Peter Johanson
483a4930e9 feat(behaviors): Add local ID system for behaviors
* Add a new feature for tracking a given behavior by a new concept
  of a "behavior local ID" which is a stable 16-bit identifier for
  a given behavior, that is resilient to new behaviors being added
  and requires no additional work on the part of the behavior
  authors.
* Add implementations for either settings lookup table, or CRC16
  hashing of behavior device names for generating behavior local
  IDs.
2024-06-28 15:10:32 -06:00
Peter Johanson
f7c34c70ba refactor(ble): Extract API to get active profile connection.
* Add `struct bt_conn *zmk_ble_active_profile_conn(void)` function for
  fetching a connection for the current profile.
2024-06-28 14:43:17 -06:00
Peter Johanson
b576d52d58 feat(core): Support adding subs to other listeners.
* Used for ZMK Studio event remappers to be sure the one
  RPC event listener subscribes to their mapped events.
2024-06-28 14:36:25 -06:00
Peter Johanson
49f7275beb fix: Add metadata to missed behaviors. 2024-06-25 12:11:32 -06:00
Timoyoungster
29599e8b0a docs: hopefully more clear description of the new setting 2024-06-24 14:26:14 -06:00
Timoyoungster
10d03ca46c fix: adding option to separate implicit mod release from key release
This adds a new config value `ZMK_HID_SEPARATE_MOD_RELEASE_REPORT`
where, if enabled, the report for a key release is sent separately to
the accompanying modifier release signals, which are then sent in a
second report.

This fixes an issue where certain applications are unable to work with
implicitly modified keys (e.g. colon) due to them registering the
modifier release prior to the actual key release.

Have tested this on my personal keyboard and `wev` now shows the signals
in the correct order.

=> **Previously:** ```LSHIFT (pressed) -> colon (pressed) -> LSHIFT
(released) -> **semi**colon (released)```

=> **Now:** ```LSHIFT (pressed) -> colon (pressed) -> colon (released)
-> LSHIFT (released)```

(This time without accidental files)
2024-06-24 14:26:14 -06:00
honorless
4dce096161 docs: improve settings_reset link 2024-06-24 13:18:56 -07:00
honorless
9c6d1af102 ci(build): limit run scope
* Cancel redundant non-nightly runs and jobs dependent on canceled jobs.

* Limit scheduled runs to zmkfirmware-owned repos.
2024-06-24 13:41:03 -06:00
honorless
7c9477be6e ci(build): improve security posture
* Limit unnecessary permissions.

* Avoid storing credentials.
2024-06-24 13:41:03 -06:00
honorless
0bea7832e9 ci(build): amend changed-files invocation 2024-06-24 13:41:03 -06:00
Peter Johanson
3e2c428fca chore: Add rp2040/USB logging core coverage.
* Include an rp2040 core build target, and include USB logging snippet
  for completeness.
2024-06-24 11:11:51 -06:00
Peter Johanson
03099b04b6 feat(behaviors): Add behavior metadata information.
* For upcoming ZMK studio work, make a set of rich metadata available
  to provide a friendly name for a behavior, and allow super flexible
  descriptions of the parameters the behaviors take.
* Add ability to validate a zmk_behavior_binding against
  the behavior metadata available.
2024-06-24 11:08:00 -06:00
Peter Johanson
7cdf1e42ea fix: Actually add the zmk-usb-logging snippet.
* D'oh.
2024-06-24 10:54:07 -06:00
Peter Johanson
7be955ff72 fix(usb): Ensure USB init is last
* To avoid USB init issues due to other initialization disrupting
  USB setup, move USB setup to a lower priority.
2024-06-21 13:29:12 -06:00
Peter Johanson
a080b5287f refactor: Remove static CDC ACM logging nodes.
* To avoid spurious CDC ACM instances when usint CDC ACM for something
  other than logging, move to the approach used by Zephyr of using a
  snippet to redirect console output to a CDC ACM node added by the
  snippet. Remove all the existing static CDC ACM nodes.
* Add new `zmk-usb-logging` snippet that mirrors the upstream
  `cdc-acm-logging` snippet, but still does our extra USB logging
  configuration.
* Updated logging docs accordingly.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-06-20 12:06:13 -06:00
Cem Aksoylar
7c09eb217e refactor(docs): Document and enforce header casing conventions 2024-06-17 11:46:32 -07:00
Cem Aksoylar
e56db304ea refactor(docs): Split up troubleshooting page into a section 2024-06-17 11:46:32 -07:00
Nicolas Munnich
308d6bce6e feat(docs): Improve the toolchain setup page (#2272)
Split the toolchain setup into separate docker and native pages
and improve instructions to better refer to Zephyr docs in certain steps.
Also refactor to improve consistency and add virtualenv instructions.

---------

Co-authored-by: KemoNine <mcrosson@kemonine.info>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-06-01 21:51:08 -07:00
Nicolas Munnich
2d96f469c8 fix(docs): Removing to-to typos (#2310) 2024-05-25 22:16:33 -07:00
German Gutierrez
2ee76be6fe fix(soft_off): central waits 100ms in split if hold_time enabled 2024-05-13 17:43:35 -04:00
Joel Spadin
f0b20c1c93 feat(boards): Add nRF52 high voltage DC/DC config
Added a Kconfig option to enable SOC_DCDC_NRF52X_HV for nice_nano_v2
and mikoto. According to Nordic's documentation, the DC/DC regulator is
more efficient than the LDO regulator, so this is enabled by default.

The following boards do not support this mode and were not changed:

- nice_nano
- nice60
- nrfmicro_11, nrfmicro_13
- nrf52840_m2
- bluemicro840

I could not find schematics to confirm whether the following boards
support this mode:

- bt60_v1, bt60_v2
- bt65_v1
- bt75_v1
- corneish_zen_v1, corneish_zen_v2
- pillbug
- puchi_ble_v1
- s40nc
2024-05-13 14:14:50 -07:00
dependabot[bot]
8f5c7bbfd4 chore(deps): bump pre-commit/action from 3.0.0 to 3.0.1
Bumps [pre-commit/action](https://github.com/pre-commit/action) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/pre-commit/action/releases)
- [Commits](https://github.com/pre-commit/action/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: pre-commit/action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-13 14:07:13 -07:00
Horu
7d1f84e3eb chore: fix typos in various places 2024-05-13 16:47:33 -04:00
ReFil
4dfc45d4ab feat(docs): Document example toggle-mode implementation
---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-05-03 14:17:09 -04:00
ReFil
2423136788 fix(boards): Fix pulls on ZMK uno toggle switch
The devicetree pulls always add on to the extra pulls configured by toggle mode, so these should not have pulls defined in the devicetree. Saved ~200uA avg on another board with a 3t toggle switch
2024-05-03 06:55:43 -07:00
Peter Johanson
af908826cd fix: Initialize sideband kscan in APPLICATION.
* In order to be sure the rest of the system is fully ready before
  intializing, because init may result in immediate events being
  triggered when used with toggle direct kscan inner devices.
2024-05-01 11:35:54 -07:00
German Gutierrez
d1ad34761a fix: shortening keymap_soft_off behavior node
* Shorten the soft off node in order for it to work across splits.
2024-04-29 12:22:40 -04:00
Jarryd Tilbrook
0d3a4b7bbb fix(underglow): Correctly set underglow state
This fixes a bug introduced in #2244
2024-04-25 07:26:26 -07:00
Pablo Martínez
4d566853af fix(rgb): auto-off logic 2024-04-25 04:55:42 -04:00
Sadek Baroudi
f4a070aacf fix(boards): nrf boards missing SPI in pinctrl and dtsi, requiring users to manually define in their shield definitions if they wanted to use SPI 2024-04-25 00:54:44 -07:00
Peter Johanson
16e92cf665 fix(behaviors): Add multiple soft-off instances properly.
* Properly pass the node id for the unique
  soft-off behavior instance when defining it.
2024-04-17 23:53:12 -07:00
Keeley Hoek
e22bc7620c fix(hid): Correct off-by-one buffer overflow with NKRO 2024-04-09 23:20:20 -07:00
Cem Aksoylar
a9021deef6 fix(docs): Add wakeup-source to split new shield example 2024-04-09 16:27:27 -07:00
Cem Aksoylar
dfc6dc84b8 fix(docs): Make clear the matrix transform example is incomplete 2024-04-09 16:27:27 -07:00
Cem Aksoylar
7a51a46b9f feat(docs): Add pointer to shields folder in new shield docs 2024-04-09 16:27:27 -07:00
Xudong Zheng
849eca7228 refactor(underglow): fix uninitialized variable warning 2024-04-09 15:57:34 -07:00
フィルターペーパー
7d5aa0c0bf feat(docs): Update section for devicetree_generated error 2024-04-04 18:31:09 -07:00
Tobias Arndt
fe509c466f fix(kscan): Enable charlieplex interrupts for single compatible device
Fixes #2201
2024-03-30 19:13:39 -07:00
Tobias Arndt
e7d6519534 fix(docs): Fix and note GPIO flags for charlieplex config 2024-03-30 19:13:39 -07:00
Cem Aksoylar
eb5a6fcfe1 refactor(docs): Split DT props table for sensor rotate variants 2024-03-30 17:03:51 -07:00
Cem Aksoylar
e65a1227d8 fix(docs): Correct property types for behavior bindings 2024-03-30 17:03:51 -07:00
zhiayang
4bef4e98f5 feat(boards): Support board revisions in setup scripts.
* Make setup.sh/ps1 prompt for board revision for boards that have revisions
2024-03-30 19:12:37 -04:00
Peter Johanson
fff1cbecdc fix: Add wakeup-source; to kscan nodes for ZMK_SLEEP.
* ZMK_SLEEP also enables PM_DEVICE, so be sure to mark kscan
  nodes as wakeup sources so they can wake keyboards from sleep.
2024-03-29 12:31:43 -07:00
dependabot[bot]
d672b0c705 chore(deps): bump react-toastify from 7.0.4 to 10.0.5 in /docs
Bumps [react-toastify](https://github.com/fkhadra/react-toastify) from 7.0.4 to 10.0.5.
- [Release notes](https://github.com/fkhadra/react-toastify/releases)
- [Commits](https://github.com/fkhadra/react-toastify/compare/v7.0.4...v10.0.5)

---
updated-dependencies:
- dependency-name: react-toastify
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 10:41:56 -07:00
dependabot[bot]
18b86b7720 chore(deps): bump follow-redirects from 1.15.5 to 1.15.6 in /docs
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 10:31:21 -07:00
dependabot[bot]
25bb126a11 chore(deps): bump express from 4.18.2 to 4.19.2 in /docs
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 10:22:10 -07:00
dependabot[bot]
34910787ff chore(deps): bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /docs
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 10:15:51 -07:00
Peter Johanson
f9bb18b676 fix(docs): Add &soft_off to behaviors index. 2024-03-27 22:52:32 -07:00
Peter Johanson
e66f068fb5 fix(docs): Minor soft-off docs tweaks from review. 2024-03-27 20:59:26 -07:00
Peter Johanson
29c0cdb3ab fix(shields): Fix for direct use with ZMK Uno split. 2024-03-27 20:59:26 -07:00
Peter Johanson
7e7110d85f fix(pm): Fixes for dedicated on/off on peripherals.
* Add new flag to differentiate soft off on peripherals that
  is invoked by split GATT svc and dedicated additional ones
  tied to GPIO pin.
2024-03-27 20:59:26 -07:00
Peter Johanson
41d81801ed fix(pm): Use Zephyr created device slots.
* Avoid overwriting random memory by using
  iterable section created by Zephyr PM.
2024-03-27 20:59:26 -07:00
Peter Johanson
d0e0ecb4e3 refactor: Use kscan directly to wake when we can.
* When adding a dedicated GPIO pin for soft off/on, use the direct
  kscan as the waker, instead of adding an additional node.
2024-03-27 20:59:26 -07:00
Peter Johanson
2df6dcd973 feat(behaviors): More logging in soft off. 2024-03-27 20:59:26 -07:00
Pete Johanson
fa9ea9ea8b fix(docs): Fix soft off waker prop name, headers.
* Use the correct property for extra GPIOs to
  make active for the waker before going into soft
  off state.
* Change header depth for easier navigation of the
  soft off feature page.

Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
2024-03-27 20:59:26 -07:00
Peter Johanson
bb94a7aafe fix: Fixes for building soft off without deep sleep. 2024-03-27 20:59:26 -07:00
Peter Johanson
cac999b1d6 feat: Updated soft-off docs.
* Document new sideband behavior kscan driver for integrated
  soft-off support.
2024-03-27 20:59:26 -07:00
Peter Johanson
8d54e287f0 fix: Adjustments for Zephyr 3.5. 2024-03-27 20:59:26 -07:00
Peter Johanson
bd21f41412 refactor: Fixes for review feedback. 2024-03-27 20:59:26 -07:00
Peter Johanson
5d960a758f fix: Cleanups of sideband and direct kscan from review.
* Add dedicated init priority for the sideband kscan.
* Refactor sideband code for clarity.
* Tweaks to direct kscan for clarity.
* Make sideband behavior row optional for brevity.
* Allow overriding ZMK Uno sideband behaviors.
2024-03-27 20:59:26 -07:00
Peter Johanson
4198fac90f fix(pm): Fix deep sleep with sideband behaviors.
* Properly implement the PM hook needed for sideband behavior
  kscan device to have wakeup source enabled on it.
2024-03-27 20:59:26 -07:00
Peter Johanson
09111f1cf3 fix: Sleep after clearing endpoints to wait for send.
* Add a small sleep to allow other threads to send data for the
  endpoint clearing before sleep.
2024-03-27 20:59:26 -07:00
Peter Johanson
c3144055e8 refactor(boards): Move ZMK Uno 1P3T slider to sideband
* Invoke output selection from the slider on the ZMK Uno via
  sideband behavior setup, to simplify keymap.
2024-03-27 20:59:26 -07:00
Peter Johanson
a0ad1d4c94 refactor: Add kscan sideband behavior driver
* Instead of gpio key behavior trigger, add new kscan driver that
  decorates/wraps a given kscan driver and will invoke basic system
  behavior assigned to a given row + column, without the need for keymap
  mapping in the matrix transform, bypassing keymaps entirely.
2024-03-27 20:59:26 -07:00
Peter Johanson
e78b25a445 feat(kscan): Direct kscan driver can use gpio-keys.
* Allow specifying direct kscan driver pins using gpio-key list
  as an alternative.
2024-03-27 20:59:26 -07:00
Pete Johanson
933fdcd364 refactor(pm): Remove scanned behavior trigger.
* Remove the painful scanned behavior trigger for now, future enhancement
  will restore this high level functionality using kscan directly.
2024-03-27 20:59:26 -07:00
Pete Johanson
5ebe924e94 chore: Various soft-off review fixes
* Code style to avoid goto.
* Enable pm.c compilation via dedicated Kconfig flag.
* Comment wakeup trigger PM behavior.
2024-03-27 20:59:26 -07:00
Peter Johanson
fceb0351a5 refactor: Fixes for soft-off based on review.
* Better naming for gpio-key behavior triggers.
* Tweaks to scanned behavior trigger to avoid bad semaphore use,
  and reduce chance of issues with slowly scanned matrixes.
* Various code cleanups of style issues.
2024-03-27 20:59:26 -07:00
Pete Johanson
96968514e3 fix(docs): Apply suggestions from code review
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-03-27 20:59:26 -07:00
Peter Johanson
e78249ee06 fix(bt): Fix BT tests after soft off work.
* Move to explicit enable of `ZMK_PM_SOFT_OFF` to turn
  on the feature and use the behaviors, which matches
  how other features work, and helps with split and
  testing schemes.
2024-03-27 20:59:26 -07:00
Peter Johanson
0d4d4fb2b5 feat(pm): Clear HID data before soft off.
* Make sure the connected host has no held HID usages before we sleep.
2024-03-27 20:59:26 -07:00
Peter Johanson
860e53b33a refactor: Promote new endpoints API
* Add ability for external callers to clear the current endpoint.
2024-03-27 20:59:26 -07:00
Peter Johanson
d3fffb9e89 feat(shields): Add soft-off to the nrf52840dk ZMK Uno
* Use Button 1 for soft off on the nrf52840 when using the ZMK Uno
  shield.
2024-03-27 20:59:26 -07:00
Peter Johanson
b19df0cbf0 feat(behaviors): Add soft off behavior.
* New soft-off behavior that can be used to force the device
  into  soft-off state with only certain configured wakeup
  devices.
2024-03-27 20:59:26 -07:00
Peter Johanson
738c3c0e3b feat(kscan): Add PM support to GPIO kscan drivers.
* Add PM device hook to the kscan direct & matrix drivers.
2024-03-27 20:59:26 -07:00
Peter Johanson
adb3a13dc5 feat: Add soft on/off support.
Initial work on a soft on/off support for ZMK. Triggering soft off
puts the device into deep sleep with only a specific GPIO pin
configured to wake the device, avoiding waking from other key
presses in the matrix like the normal deep sleep.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-03-27 20:59:26 -07:00
Thomas Huber
58ccc5970d fix(build): Modify function return type
Change return type of `sticky_key_timeout` function to `void` given it
does not return any value to remove compiler warnings.
2024-03-27 14:52:42 -07:00
Thomas Huber
e806cd6da1 feat(gitignore): add clangd cache folder 2024-03-27 14:41:26 -07:00
Peter Johanson
94c3b9a246 feat(build): Allow specifying snippets for a build.
* Allow using snippets https://docs.zephyrproject.org/latest/build/snippets/using.html
  for user builds in a `snippets` array properly.
2024-03-24 18:44:54 -07:00
Cem Aksoylar
c684cee76f refactor(docs): Refer to overview page for behaviors 2024-03-24 18:29:29 -07:00
Thomas Huber
f2d8b9b0a3 feat(docs): Add Behavior overview page
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-03-24 17:50:33 -07:00
Peter Johanson
44358798d3 feat: Add ability to fetch battery voltage.
* To be able to use the Zephyr `voltage-divider` driver,
  add a mode for fetching raw voltage from the sensor
 and do state of charge calculation outside of the driver.
2024-03-24 13:28:55 -07:00
Cem Aksoylar
931a36ff4a feat(docs): Add a note on using BT with dual boot systems 2024-03-20 11:49:23 -07:00
Peter Johanson
3a3eed2960 fix: Add settings reset on start init priority.
* Add a dedicated settings reset on start init priority and default
  it to lower priority (high number) than default FLASH_INIT_PRIORITY
  to be sure flash is initialized before we open the area.
2024-03-20 11:18:43 -07:00
フィルターペーパー
1f7cd7a107 feat(docs): Add troubleshooting section for empty_file error 2024-03-19 23:48:57 -07:00
Theo Lemay
828943156a fix(docs): Fix hold-tap info callout (#2211)
The hold-while-undecided callout does not properly render in the docs. This fixes it.
2024-03-18 15:34:45 -07:00
フィルターペーパー
736c5fb46e feat(docs): Add a note on macOS v14.3 file copy error message 2024-03-18 10:38:09 -07:00
Theo Lemay
ce743f2b35 chore: fix whitespace 2024-03-18 10:30:14 -07:00
Theo Lemay
af7e4198ae chore: remove label in test 2024-03-18 10:30:14 -07:00
Theo Lemay
94d9d837e3 refactor: extract duplicate logic 2024-03-18 10:30:14 -07:00
Theo Lemay
341534aa15 feat(behaviors): lazy sticky keys 2024-03-18 10:30:14 -07:00
Pablo
8929355ac0 fix(keymap): Replace some keypad keycodes
* Change KP_MULTIPLY to ASTRK in defaults keymap
2024-03-18 13:19:27 -04:00
honorless
6f2e19ff88 refactor: replace quick_tap_ms with quick-tap-ms
* The underscore form of this property is deprecated.
2024-03-18 10:15:50 -07:00
honorless
3a38979684 refactor: replace tapping_term_ms with tapping-term-ms
* The underscore form of this property is deprecated.
2024-03-18 10:15:50 -07:00
Hans Kruse
c6e0551fb0 fix(hid): Fix typo in HID usage alias 2024-03-18 13:06:09 -04:00
Cem Aksoylar
325e207781 feat(docs): Add pointers to HID descriptor refresh 2024-03-18 09:58:16 -07:00
Cem Aksoylar
aa6cfe250d feat(docs): Document refreshing the HID descriptor 2024-03-18 09:58:16 -07:00
Cem Aksoylar
bddee70b6b refactor(docs): Remove outdated Windows battery advice and unnecessary header 2024-03-18 09:58:16 -07:00
ReFil
388ad71385 feat(build): Explicit missing keymap node error
* Explicit error if zmk,keymap not set
* Document keymap error

---------

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-03-18 12:54:47 -04:00
Joel Spadin
a77288f527 fix: Update settings reset for Zephyr 3.5 2024-03-18 09:48:19 -07:00
Joel Spadin
14b06a36bf docs: Update settings_reset documentation
Updated the section for troubleshooting split halves unable to pair now
that the settings_reset shield resets all settings and explicitly
disables CONFIG_ZMK_BLE:

- Added a note that all settings will be reset.
- Removed the section about immediately putting the halves into
  bootloader mode to prevent pairing, as this is not necessary anymore.
- Added a note that you will not be able to see or pair the Bluetooth
  keyboard until you have flashed regular firmware again.
- Added a sentence to clarify that you will need to re-pair the
  keyboard to all host devices.

Also added some text describing common scenarios where this procedure
might be needed.
2024-03-18 09:48:19 -07:00
Joel Spadin
1dfcfc7d3f feat(shields): Make settings_reset shield reset all settings
Added a new CONFIG_ZMK_SETTINGS_RESET_ON_START option which enables init
code to call zmk_settings_erase(), and changed the settings_reset shield
to use it instead of CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START, so it now
resets all settings instead of just clearing BLE bonds.

CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START is left in place for now in case
someone still needs it. It may be replaced in the future once we find a
better way to repair a broken split connection.
2024-03-18 09:48:19 -07:00
Joel Spadin
610a806c84 feat: Add function to erase all settings
Added a zmk_settings_erase() function to clear all saved settings. This
does not go through Zephyr's settings subsystem, but instead directly
clears the data from the setting storage backend, so a reboot is needed
for it to take effect.
2024-03-18 09:48:19 -07:00
Peter Johanson
2adaa00d10 fix(build): Properly board revision keymaps.
* Handle board keymap location for boards with Zephyr
  board revisions included.
* Includes bare non-revision file and a revision specific keymap
  in case newer revision changes the layout/key positions.
2024-03-08 10:58:10 -08:00
Thomas Huber
08ab45fc78 feat(CONTRIBUTING.md): Add info regarding ESLint 2024-03-04 20:08:52 -08:00
Thomas Huber
37af94edde feat(docs): Add warning to new shield docs how Kconfig treats whitspaces
Added a warning to the shield section explaining that Kconfig does
not ignore whitespaces on function calls and therefore adding whitespaces
after the comma will break functionality.
2024-03-04 20:08:52 -08:00
Andrew Kannan
db7b197790 fix(docs): Add underglow brightness min/max (#2180) 2024-02-28 10:39:04 -08:00
Theo Lemay
c9c620d19f fix: inline initialise 2024-02-20 00:25:53 -08:00
Theo Lemay
8b20874c99 chore: remove label in test 2024-02-20 00:25:53 -08:00
Theo Lemay
c007d60357 feat(behaviors): hold while undecided 2024-02-20 00:25:53 -08:00
Xudong Zheng
104c73d303 refactor: address transport switch enumeration warning
When building without USB or Bluetooth, the compiler emits a warning due to
ZMK_TRANSPORT_USB or ZMK_TRANSPORT_BLE not being handled.
2024-02-19 21:41:52 -08:00
Seth Milliken
b44ec381f6 feat(boards): add encoder support to planck 2024-02-19 17:01:10 -08:00
honorless
ccf0380179 refactor: remove redundant Kconfig defaults
bool symbols implicitly default to n.
2024-02-19 16:39:31 -08:00
ton-im
c082f8d802 fix(boards): Add ext power init delay for nrfMicro
* Address issues with OLED init occurring before display is powered.
2024-02-19 19:32:12 -05:00
zhiayang
a9ae6796a0 fix(display): Proper initial display of battery status
* fix initial display of battery status on displays, and also fix a null deref
2024-02-19 19:15:19 -05:00
Peter Johanson
fda6a5f185 fix(boards): Tweaks for Ferris rev0.2 for Zephyr.
* Enable missing clock and set up USB pinctrl.
2024-02-17 21:57:21 -08:00
Dennis
604af2ebd3 feat(docs): Add pointers for peripheral battery monitoring (#2177)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>

Fixes #2166
2024-02-17 21:51:09 -08:00
ctranstrum
0f49fa9ae4 fix(behavior): Proper init priority for ext_power. 2024-02-14 20:29:19 -05:00
Peter Johanson
c7fb418e88 fix(build): Used a fixed temp dir for caching.
* Improve GHA caching by using a fixed temporary directory
  when using one.
2024-02-14 14:08:22 -08:00
honorless
40adb3858d refactor(boards): remove superfluous conf settings 2024-02-10 16:15:09 -08:00
honorless
cdcf4ebfb6 feat(boards): allow use of blackpill_f401cc 2024-02-10 16:15:09 -08:00
Pete Johanson
f72f415c5b fix(docs): More Zephyr docs link updates.
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-02-09 14:32:46 -08:00
Peter Johanson
50a303b8bb fix(pm): Restore sleep suspension of devices.
* After the move to `sys_poweroff`, restore the behavior of
  suspending devices before entering sleep state.
2024-02-09 14:32:46 -08:00
Peter Johanson
1d83f279cd fix(pm): Tweaks for deep sleep/PM.
* Restore enabling of PM_DEVICE, make ZMK_SLEEP work with
  the ZMK Uno shield on nrf52840dk_nrf52840 board.
2024-02-09 14:32:46 -08:00
Peter Johanson
edc72c1166 chore(docs): Update Zephyr links to 3.5.0 versions. 2024-02-09 14:32:46 -08:00
Peter Johanson
4bcecd98f8 fix(display): Tweaks to memory Kconfig settings.
* Don't default heap mempool by default now that there's a dedicated
  LVGL mempool
* Set proper defaults for CiZ display hardware/custom screen.
* Double the dedicated display thread stack size for CiZ.
2024-02-09 14:32:46 -08:00
Peter Johanson
2d6c9f797c refactor(display): Move to proper SPI ready API. 2024-02-09 14:32:46 -08:00
Peter Johanson
18e5a1a26b feat: Add Zephyr 3.5 blog post. 2024-02-09 14:32:46 -08:00
Peter Johanson
cd6f8a680c fix(ble): Update security test for changes in 3.5. 2024-02-09 14:32:46 -08:00
Peter Johanson
b2a0a357e1 fix(display): Set a default mem size for built-in
* Set a reasonable default LVGL mem pool size for our built-in
  status screen.
2024-02-09 14:32:46 -08:00
Peter Johanson
d9c0ded402 fix(shields): Fix use of deprecated Zephyr header. 2024-02-09 14:32:46 -08:00
Peter Johanson
aeb5bed3d6 fix(kscan): Adjust charlieplex init level/priority. 2024-02-09 14:32:46 -08:00
Peter Johanson
a6c0399493 fix(bluetooth): Remove LLCP impl override. 2024-02-09 14:32:46 -08:00
Peter Johanson
324ada1d20 fix(boards): Remove unused pin settings.
* Remove unused pin settings that used deprecated
  devicetree properties.
2024-02-09 14:32:46 -08:00
Peter Johanson
8e9b4fa57c fix(boards): Make &bootloader work on nrf52 for now.
* Use `NRF_STORE_REBOOT_TYPE_GPREGRET` to get bootloader behavior
  to work for now until retained bootmode is implemented.
2024-02-09 14:32:46 -08:00
Peter Johanson
3968d9febd feat(boards): Make west flash work with new UF2 runner. 2024-02-09 14:32:46 -08:00
Peter Johanson
b3f1d769f0 fix(bt): Fixes for BLE test BSIM bits. 2024-02-09 14:32:46 -08:00
Peter Johanson
4fcbe3268a fix(bt): Updated snapshots for BLE tests.
* Core Zephyr changes tweaked the output from the
  BT stack for our unit tests.
2024-02-09 14:32:46 -08:00
Peter Johanson
413820fc7f fix(shields): LVGL fixes for nice!view screen
* Bump the LVGL mem pool size needed for custom screen.
* Fixes for LVGL drawing/label usage.
2024-02-09 14:32:46 -08:00
Peter Johanson
802881b625 fix(boards): Remove references to PINMUX Kconfig. 2024-02-09 14:32:46 -08:00
Peter Johanson
f4e6d70465 fix: Proper use of CONTAINER_OF with delayable work. 2024-02-09 14:32:46 -08:00
Peter Johanson
94aa7d8d53 chore(ci): Bump to 3.5 Docker images. 2024-02-09 14:32:46 -08:00
Peter Johanson
552347b8a4 fix(kscan): Adjust composite kscan priority
* Composite kscan needs a dedicated priority to be sure it is
  initialized after the other kscan instances.
2024-02-09 14:32:46 -08:00
Peter Johanson
a81a2d37a8 refactor: Remove explicit blocklist item.
* `sof` is now not enabled by default as a west dep, so need to
  add it to the blocklist ourselves.
2024-02-09 14:32:46 -08:00
Peter Johanson
98e3b8b435 refactor: Move to new sys_poweroff API.
* Move to new `sys_poweroff` API for our deep sleep functionality.
2024-02-09 14:32:46 -08:00
Peter Johanson
b6d9f3c911 fix(ble): Ensure large enough string for setting name.
* Fix warning related to potentially large number of profiles
  causing overflow of allocated string for the setting name.
2024-02-09 14:32:46 -08:00
Peter Johanson
58413ca8c5 refactor(kscan): Clean up warning about shadowed local. 2024-02-09 14:32:46 -08:00
Peter Johanson
d6de8a3acc refactor: Move to POST_KERNEL phase for behavior inits. 2024-02-09 14:32:46 -08:00
Peter Johanson
ba1a6c08ad refactor: Return int from main function. 2024-02-09 14:32:46 -08:00
Peter Johanson
d06e90e713 fix: Fix syscalls generation setup. 2024-02-09 14:32:46 -08:00
Peter Johanson
bd9c71ab0a fix(sensors): Avoid duplicate Kconfig/DTS name.
* Upstream added an equivalent fuel gauge driver, so namespace
  our Kconfig symbol and DTS compatible for the MAX17048 driver.
2024-02-09 14:32:46 -08:00
Peter Johanson
0b5afbf9c0 refacter(bluetooth): Proper HCI header include. 2024-02-09 14:32:46 -08:00
Peter Johanson
fb99496a73 chore: Switch to 3.5 Zephyr version. 2024-02-09 14:32:46 -08:00
Peter Johanson
f7e7c9c10b fix: Add missing include for k_work types. 2024-02-09 14:32:46 -08:00
Peter Johanson
bf4008da02 refactor: All SYS_INIT functions are void args. 2024-02-09 14:32:46 -08:00
Peter Johanson
f4fce9e158 refactor(display): Move new LVGL DPI Kconfig setting. 2024-02-09 14:32:46 -08:00
Cem Aksoylar
b8846cf635 refactor(display): Remove unused BAS includes 2024-02-06 01:09:07 -08:00
Cem Aksoylar
efbcd3c8f6 fix(boards): Disable ZMK_USB for peripherals 2024-02-06 01:09:07 -08:00
Cem Aksoylar
4b03fcb709 fix(boards): Add missing battery header include 2024-02-06 01:09:07 -08:00
Joel Spadin
5826b80374 chore: Fix formatting
Fixed the formatting in a file that wasn't passing pre-commit checks.
2024-02-03 21:56:20 -08:00
Joel Spadin
3a4cf185a1 feat(keymap-upgrader): Upgrade encoder resolution
Added an upgrade function to the keymap upgrader to replace the encoder
"resolution" property with "steps" and (if it is not already present)
"triggers-per-rotation".
2024-02-03 18:45:21 -06:00
Joel Spadin
be75da096c fix(keymap-upgrader): Fix highlight on last line
Fixed an issue where a text edit at the very end of a file would cause
it to highlight from the start of the edit to the start of the file
instead of to the end of the file.
2024-02-03 18:45:21 -06:00
Joel Spadin
c2299e2203 fix(shields): Fix deprecated encoder properties
Switched remaining shields over from resolution to steps.
2024-02-03 18:45:21 -06:00
Joel Spadin
f24a0bf9c8 fix(shields): Add labels to all sensors nodes 2024-02-03 18:45:21 -06:00
Johan Friis
aab09d504c feat(docs): Document Karabiner interference with Mod-Morphs (#2146) 2024-01-30 00:07:48 -08:00
Xudong Zheng
4a5806ac73 feat(core): enable FPU if CPU has FPU 2024-01-29 17:54:34 -08:00
Cem Aksoylar
0755b7a64c fix(ci): Update upload-artifact with merge step 2024-01-29 16:44:39 -08:00
Dhruvin Shah
5685074835 docs: correcting file path in config.md 2024-01-27 11:40:12 -06:00
senseored
b120daa16a fix(boards): Assign preonic_rev3 chosen console
Quick fix to make USB-logging work on the Preonic.
2024-01-27 07:18:45 -08:00
Pete Johanson
275c0ce271 Revert "fix(ci): Update one lingering upload-artifacts action." 2024-01-26 00:46:00 -08:00
Peter Johanson
3c14c7c112 fix(ci): Update one lingering upload-artifacts action. 2024-01-26 00:40:05 -08:00
Peter Johanson
789c11629e fix(ci): Bump setup-python version. 2024-01-26 00:26:46 -08:00
Peter Johanson
72d5c01e46 fix(ci): Move to maintained get-changed files. 2024-01-26 00:26:46 -08:00
Peter Johanson
1f8b45d57d fix(ci): Updated actions to move away Node 16. 2024-01-26 00:26:46 -08:00
Joel Spadin
1dbd6910cb chore(docs): Update tree-sitter-devicetree to 0.9.0 2024-01-25 18:03:37 -06:00
Joel Spadin
08d9391a8a feat(keymap-upgrader): Upgrade renamed nodes
Added an upgrade function to fix renamed behavior nodes in the unlikely
event that someone was changing behavior settings this way instead of
using references.
2024-01-25 18:03:37 -06:00
Joel Spadin
bf5284b3b9 fix(keymap-upgrader): Note that changed lines are highlighted 2024-01-25 18:03:37 -06:00
Joel Spadin
d4be70587d fix(keymap-upgrader): Filter key codes to bindings
Changed the key code upgrader to only replace codes that appear in
"bindings" properties. Modifier flags such as MOD_LCTL are no longer
valid as key codes, but they are still used in "mods" properties and
should not be replaced there.
2024-01-25 18:03:37 -06:00
Joel Spadin
37fcf190e6 feat(keymap-upgrader): Highlight changes
Updated the keymap upgrader to highlight which lines it changed as well
as indicate when nothing needed to be upgraded.

Also adjusted the line highlight colors to be more readable in both
light and dark color schemes.
2024-01-25 18:03:37 -06:00
Joel Spadin
84e056793b fix(docs): Fix links to keymap upgrader 2024-01-25 18:03:37 -06:00
Joel Spadin
a0465391be refactor: Improve keymap upgrader
Moved the keymap upgrader to a top-level page like the power profiler
to make it more discoverable. It upgrades more things than key codes
now, so putting it in the codes category doesn't make much sense.

Converted the upgrader code to TypeScript and split it up into smaller
files to make it easier to add new upgrade functions.

Added upgrade functions to remove/replace "label" properties and rename
matrix-transform.h to matrix_transform.h.
2024-01-25 18:03:37 -06:00
Peter Johanson
1a3529a3e6 fix(ci): Use proper variable expression. 2024-01-25 13:20:25 -08:00
honorless
6b547019c2 refactor: use zmk,matrix-transform instead of zmk,matrix_transform
* Align codebase with documentation.
2024-01-23 23:02:35 -06:00
honorless
a3fbc2a5ba docs: suggest zmk,matrix-transform over zmk,matrix_transform
* While functionally equivalent, the hyphenated form of this property
  is more consistent with other ZMK properties and adheres to DTS style
  guidelines.

* Additionally, update links to use Zephyr 3.2 documentation instead
  of 2.5 where appropriate.
2024-01-23 23:02:35 -06:00
Cem Aksoylar
19613128b9 fix(docs): Fix extra line issue in hardware headers
Need to make prettier ignore these, because otherwise it splits
them to separate lines and reverts the whole change
2024-01-20 22:28:41 -08:00
Cem Aksoylar
0dc04df09c fix(docs): Fix eslint-plugin-react errors
Remove unused components, and disable proptype checking for children
in OsTabs custom component since I can't figure out a way to assign
propTypes to it in an mdx file.
2024-01-20 22:28:41 -08:00
Cem Aksoylar
7196f9f075 ci(docs): Disable eslint rule for unescaped entities
eslint-plugin-react is emitting a lot of react/no-unescaped-entities
errors in mdx files, primarily due to apostrophes. It seems not ideal
to have to escape every apostrophe in all mdx text, so this commit
disables the check.

There might be a better way to handle this issue, but I am not aware
of one right now.
2024-01-20 22:28:41 -08:00
Cem Aksoylar
fa91648cce ci(docs): Use eslint plugin for automatic JSX runtime
Ref: https://docusaurus.io/docs/migration/v3#automatic-jsx-runtime
and https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md#when-not-to-use-it
2024-01-20 22:28:41 -08:00
Cem Aksoylar
e3f458e539 ci(docs): Fix tsc config for docusaurus 3 2024-01-20 22:28:41 -08:00
Cem Aksoylar
57684f8a66 fix(docs): Fix broken anchors in docs (but not blog) 2024-01-20 22:28:41 -08:00
Cem Aksoylar
5cbffd6625 fix(docs): Work around docusaurus bug causing broken links
Some links ended up broken after docusaurus 3 upgrade,
especially if they are the second on the same line and have anchors.
Likely due to https://github.com/facebook/docusaurus/issues/9518
2024-01-20 22:28:41 -08:00
Cem Aksoylar
1b326ff856 fix(docs): Fix relative links with trailing slashes 2024-01-20 22:28:41 -08:00
Cem Aksoylar
dcfe07d9f6 refactor(docs): Use new admonition title syntax and disable mdx v1 compat 2024-01-20 22:28:41 -08:00
Cem Aksoylar
ee855de349 fix(docs): Fix incorrect admonition title 2024-01-20 22:28:41 -08:00
Cem Aksoylar
f014eb45a7 refactor(docs): Use .mdx for docs with mdx features
Also applies prettier changes in touched files due to precommit
2024-01-20 22:28:41 -08:00
Cem Aksoylar
00962a7255 refactor(docs): Remove no longer necessary React imports 2024-01-20 22:28:41 -08:00
Cem Aksoylar
a0a952413a fix(docs): Fix deprecated admonition types 2024-01-20 22:28:41 -08:00
Cem Aksoylar
13c856d1d3 fix(docs): Fix mdx 3 incompatibility 2024-01-20 22:28:41 -08:00
Cem Aksoylar
0827ff245f chore(docs): Update docusaurus to 3
Following https://docusaurus.io/docs/migration/v3#upgrading-dependencies
and `npm update`
2024-01-20 22:28:41 -08:00
Peter Johanson
f71458aca0 fix(shields): Fix battery warnings for custom widgets. 2024-01-16 16:39:28 -08:00
crides
8c14b155e8 docs: confirm some consumer codes on iOS
Tested on iOS 16.6
2024-01-15 18:07:48 -08:00
Peter Johanson
0890aaeaff chore: Run tests if any includes change. 2024-01-14 16:19:30 -08:00
Peter Johanson
e5050e40fe feat(tests): Enable asserts for tests. 2024-01-14 16:19:30 -08:00
Peter Johanson
e89cffc959 fix(events): Remove our usage of assert.
* __ASSERT is converted to a do/while loop when asserts are enabled,
  which doesn't work with our usage, so revert that addition.
2024-01-14 16:19:30 -08:00
Peter Johanson
331915f989 fix: Fix missed event manager usages from refactor. 2024-01-14 11:31:05 -08:00
Peter Johanson
644feeb40d fix(core): Address review comments from Joel.
* Fix up some lingering events API tweaks for heap-less event manager.
2024-01-14 11:13:57 -08:00
Peter Johanson
33209dee1d refactor(core): Move to stack allocated events.
* Move to local/stack allocated event API that doesn't require
  dynamic allocation/freeing.
* Disable heap, we no longer use alloc/free unless using LVGL.
* Tons of refactors all over to account for the new event approach.
2024-01-14 11:13:57 -08:00
Peter Johanson
50e473276f chore(ci): Split build and upload into separate steps
* Treat build and upload as distinct steps during a build, and don't fail
  a PR if only the upload portion fails.
2024-01-14 10:42:04 -08:00
typorian
466cf92029 fix(docs): Document CONFIG_ZMK_USB_BOOT 2024-01-12 11:02:47 -08:00
dependabot[bot]
2829185a94 chore(deps): bump follow-redirects from 1.15.2 to 1.15.4 in /docs
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-12 10:42:52 -08:00
Peter Johanson
db9ab30335 fix(boards): Fix up EXT_POWER naming for adv360pro;
* Restore setting loading by preserving old device name for the
  external power node.
2024-01-08 17:50:19 -08:00
Xudong Zheng
6bf4870704 fix(battery): prevent bus fault when battery does not exist
zmk_battery_start_reporting() may be called from battery_event_listener(), which
will result in a bus fault when attempting to read a battery that does not exist
such as on a dongle.
2024-01-08 17:39:05 -08:00
Peter Johanson
7652fbeb6b fix(split): Split peripherals should auto sec req still.
* Ensure split peripherals have `BT_GATT_AUTO_SEC_REQ` enabled so that
  reconnects to centrals are automatically encrypted.
2024-01-06 00:53:49 -08:00
Peter Johanson
12bc8b0402 fix: Fix function signatures for WPM.
* Recent refactor accidentally used the wrong signatures for a few
  WPM function definitions.
2024-01-05 16:09:34 -08:00
Leonardo Bispo
cebf651d11 fix(boards): include the right flash info in XIAO BLE overlay 2024-01-05 19:00:32 -05:00
Peter Johanson
395ffaa790 fix(ble): Properly send mouse HoG using worker.
* Properly send mouse HoG reports using our worker to avoid thread issues.
2024-01-05 12:17:59 -08:00
Peter Johanson
74875314f8 feat(ble): Request encryption if notifying fails
* If attempting to notify and getting an EPERM return value, request
  upgrading the security of the connection at that moment, since it
  likely means we got a connection to a bonded host but the connection
  hasn't been upgraded to encrypted yet.
2024-01-05 12:17:59 -08:00
Pete Johanson
69f962fab2 feat(ble): Add security related tests.
* Add security related tests to verify behavior when trying to read
  a GATT characteristic from our peripheral with and without client
  auto security request/retry.
2024-01-05 12:17:59 -08:00
Peter Johanson
bc7b4b56bd fix(ble): Disable Auto Sec Req again.
* Auto security request actually makes macOS worse, so disable it,
  and remove our early request in favor of using GATT enforcement
 to ensure connections are secured.
2024-01-05 12:17:59 -08:00
Chris Andreae
7d1c1ae8fd fixup! docs
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-01-05 12:16:38 -08:00
Chris Andreae
7b9466c7dc fixup! add documentation for BT_CLR_ALL 2024-01-05 12:16:38 -08:00
Chris Andreae
194a9790eb fixup! use wider type for loop iterator 2024-01-05 12:16:38 -08:00
Chris Andreae
b813f34e34 fixup! bt: add BT_CLR_ALL behaviour 2024-01-05 12:16:38 -08:00
Chris Andreae
f4fe7fa40f Extract common behaviour of clearing a bond 2024-01-05 12:16:38 -08:00
Chris Andreae
604c95118e Remove error reporting from ble utility functions that never error 2024-01-05 12:16:38 -08:00
Chris Andreae
b8cb407351 lint: use correct type signature for Zephyr callbacks 2024-01-05 12:16:38 -08:00
Chris Andreae
7a5155f36e lint: add (void) parameter to pass -Wstrict-prototypes
Note there was one place where a non-strict prototype was actually being used
with an argument, in `zmk_hog_init`. In this case, the actual argument type was
added instead.
2024-01-05 12:16:38 -08:00
moergo-sc
5257cde1f5 bt: add BT_CLR_ALL behaviour
Defines behaviour to clear all paired Bluetooth profiles
2024-01-05 12:16:38 -08:00
Justin Ridgewell
6f8d080b6a fix: Use zmk_battery_state_of_charge in battery widgets 2024-01-05 15:02:06 -05:00
Cem Aksoylar
b3146e665e feat(blog): Add post for joelspadin projects for spotlight series (#2092)
Co-authored-by: Joel Spadin <joelspadin@gmail.com>
2024-01-05 10:42:04 -08:00
Gabor Hornyak
0e2f94b73b feat(ble): Support perhipheral battery levels.
* Add ability to fetch and report peripheral battery levels
  on split centrals.
* Add additional support for adding a new Battery Level
  service to split centrals that exposes fetched peripheral
  battery levels to connected hosts.

Co-authored-by: Peter Johanson <peter@peterjohanson.com>
2024-01-03 09:26:51 -08:00
honorless
d35311af97 refactor: remove misleading build warning
* Among other issues, this message is often misinterpreted by users
  building out-of-tree shields -- leading them to think the shield
  "not being found" is the cause of a build failure.
2023-12-30 18:26:00 -08:00
honorless
7ef6ec7560 refactor: remove unused Kconfig files 2023-12-30 18:26:00 -08:00
jack
c965e35140 chore: Ignore python virtualenv files 2023-12-27 10:07:55 -08:00
Peter Johanson
a593c7260a feat(bt): Add test for unauth overwrite.
* Add a test to ensure unauth overwrite does the right thing when
  hosts try to pair again without the profile cleared on the ZMK side.
2023-12-18 13:18:09 -08:00
Cem Aksoylar
12d73ba4f9 fix(docs): Fix remark on &bt parameter #2 2023-12-17 17:38:07 -08:00
Cem Aksoylar
78fa1e77c4 feat(blog): Add nodefree-config post for spotlight series
Co-authored-by: Robert U <978080+urob@users.noreply.github.com>
2023-12-16 21:55:45 -08:00
Peter Johanson
1b8b6b4a0e refactor(core): Make low priority queue optional.
* Add a new Kconfig symbol to enable the low priority queue, and make
  the two features that depend on it `select` the symbol to turn it on.
  This helps ensure no wasted RAM/ROM on devices that don't need it.
2023-12-16 17:10:45 -08:00
Peter Johanson
f4f402fa44 fix(ci): Use unique artifact for test logs
* To address conflicts with identically named artifact uploads, include the
  test name in the artifact name.
2023-12-15 13:23:51 -08:00
Peter Johanson
9b3a98691c refactor(bt): Split security and conn exp. Kconfig
* Split connection and security experimental changes into dedicated
  Kconfig flags for easier testing of only connection related fixes.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2023-12-15 08:59:03 -08:00
Peter Johanson
52ed49b4bb fix(ci): Upgrade to github-script@v7
* Also adjust form @actions/upload API changes.
2023-12-13 11:48:28 -08:00
Cem Aksoylar
ff57ccc75a feat(shields): Allow settings_reset to build with board-only keyboards 2023-12-13 11:29:33 -08:00
Hooky
2c50cff891 feat(kscan): Add charlieplex keyscan driver
* Supports matrixes with and without additional interrupt pin use.

Co-authored-by: Peter Johanson <peter@peterjohanson.com>
2023-12-09 17:10:05 -05:00
Peter Johanson
b35a5e83c0 fix(shields): Don't enable passkey support on Uno.
* The ZMK Uno has no way to input the full range of digits, so skip
  that setting so it's not pulled in by BLE experimental feature flag.
2023-12-08 14:57:23 -08:00
Peter Johanson
63c8c5700a feat(bt): Add more experimental tweaks.
* Support auto security upgrade for splits properly.
* Disable 2M and legacy LLCP if the experimental
  Kconfig flag is selected.
2023-12-08 14:57:23 -08:00
Peter Johanson
96f9031951 fix(build): Only copy if zephyr module detected
* To fix issues with breakage with existing user config
  repos, only do our copy strategy if we detect a zephyr module
  present in the repo as well.
2023-12-08 10:49:27 -08:00
Cem Aksoylar
384637ae6c fix(docs): Fix text blurb about split Kconfig.defconfig 2023-12-06 22:50:06 -08:00
Cem Aksoylar
09d47d8117 refactor(docs): Convert breaks to unordered lists in tables
Co-authored-by: Joel Spadin <joelspadin@gmail.com>
2023-12-06 22:46:03 -08:00
Cem Aksoylar
55bf7cae7e feat(docs): Note how parameters are forwarded for behaviors 2023-12-06 22:46:03 -08:00
Cem Aksoylar
56d863cba6 feat(docs): Document sensor-rotate in behaviors config 2023-12-06 22:46:03 -08:00
Cem Aksoylar
2bab81a304 fix(docs): Note -var definition files for macros 2023-12-06 22:46:03 -08:00
Cem Aksoylar
76a209c728 fix(docs): Fix sticky key #binding-cells 2023-12-06 22:46:03 -08:00
Cem Aksoylar
f3ad08b619 fix(docs): Add missing page pointers in behaviors config 2023-12-06 22:46:03 -08:00
Peter Johanson
88338a9b3c feat(shields): Add ZMK Uno split setup
* Make it easier to test split code with ZMK Uno
  hardware by adding a split left/right setup as well.
2023-12-06 15:00:29 -08:00
Peter Johanson
291bbc2257 refactor(docs): New shield guide to suggest modules
* Update the new shield guide to position Zephyr module location
  as the default when creating new shields, with a note about
  using ZMK repository itself as a last resort.
* Document building with additional Zephyr modules.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2023-12-06 09:36:37 -08:00
Peter Johanson
3656ec63d0 feat(build): Build unified config/mod repos.
* Detect in our build script if our config repo is *also* a Zephyr
  module and if so pass to ZMK build in ZMK_EXTRA_MODULES
  define.
* Copy config directory contents to new independent temp workspace
  to avoid Kconfig conflicts between the build repo's zephyr module
  directory and the checkout zephyr pulled in by `west update`.
2023-12-06 09:36:37 -08:00
Peter Johanson
efd403a567 refactor: Hook into CMake loading in a better spot.
* Shift to using an extra Zephyr module to do keymap location
  work after all board roots are resolved. This avoids duplicate work
  and allows us to load custom boards from Zephyr modules as well as
  user config setups.
2023-12-06 09:36:37 -08:00
Peter Johanson
0ab6a0ad11 feat(bt): Add new experimental Kconfig setting.
* In order to have an easy way to test and phase in BT changes, add a
  new `ZMK_BLE_EXPERIMENTAL_FEATURES` Kconfig setting.
2023-12-06 09:22:50 -08:00
Joel Spadin
17a6f0b128 refactor: Remove new uses of label property
Removed new uses of the "label" property which were introduced after
the previous commits on this branch were written.
2023-12-04 20:06:54 -06:00
Joel Spadin
0fd8e25807 docs: Document behavior name length limit
Added a section to the new behavior guide to document that the names of
behaviors invoked on the peripheral side of a split must be at most 8
characters long.
2023-12-04 20:06:54 -06:00
Joel Spadin
23ecf08119 refactor(behaviors)!: Remove labels from behaviors
Removed the label property from built-in behaviors, custom behaviors
defined in a few keymaps, and macros generated with ZMK_MACRO().

Now that node names are used to identify behaviors, and names only need
to be unique within the set of behaviors, the names of all behaviors
have been shortened to be similar to their original labels.

This means that any keymaps which reference behavior nodes by name
instead of by label will need to be updated. Keymaps typically use the
labels though, so most keymaps should be unaffected by this change.
2023-12-04 20:06:54 -06:00
Joel Spadin
36eda571b7 refactor(behaviors): Create a list to lookup behaviors
Added BEHAVIOR_DT_DEFINE() and BEHAVIOR_DT_INST_DEFINE(), which work
exactly like the DEVICE_*_DEFINE() macros, except they also register the
device as a behavior by adding a pointer to it to a memory section.

Added zmk_behavior_get_binding(), which works like device_get_binding()
except that it only searches the devices that have been registered as
behaviors. This ensures that behaviors cannot have name collisions with
other devices defined by the SoC, which will be important when we remove
the label property from behaviors so they are given their node names.

As an added benefit, this is faster since it searches a smaller list.
Some basic benchmark code I wrote indicates it takes 30-70% as long,
depending on where the behavior is in the list and whether the name
string is an exact pointer match.

From now on, behaviors should use BEHAVIOR_*_DEFINe() instead of
DEVICE_*_DEFINE(), and any code that looks up a behavior by name should
use zmk_behavior_get_binding() instead of device_get_binding().
2023-12-04 20:06:54 -06:00
Joel Spadin
5ecd3521f5 docs: Remove label property from documentation 2023-12-04 20:06:54 -06:00
Joel Spadin
d4e8dee444 refactor(keymaps): Rename layer label to "display-name"
Changed the property used to define a layer name for displays from
"label" (which affects other things in Zephyr and is deprecated) to
"display-name". (It cannot be named simply "name", because that has
special meaning in newer versions of the devicetree compiler.)

"label" is still supported as a fallback, so no changes need to be made
to existing keymaps.
2023-12-04 20:06:54 -06:00
Joel Spadin
ba5637fdef refactor: Remove unimportant labels
Removed "label" properties which no longer have any function.

Labels are still used as layer names and as identifiers for sending
behaviors between sides of a split keyboard, so those have been left
alone for now.
2023-12-04 20:06:54 -06:00
Joel Spadin
3ae9e74056 refactor(drivers): Make label property optional 2023-12-04 20:06:54 -06:00
Joel Spadin
05925c72d7 refactor(ext_power): Remove label property
Changed the label property on zmk,ext-power-generic to be optional and
removed it from existing uses. Renamed the nodes for all non-development
boards to "EXT_POWER" to preserve user settings.

rgb_underglow.c now finds the correct device by finding the first
instance of zmk,ext-power-generic instead of looking for a node named
"EXT_POWER".
2023-12-04 20:06:54 -06:00
Joel Spadin
179bdbc41a refactor(behaviors): Make label property optional
Changed all code (except for layer names) which used the label property
to use DEVICE_DT_NAME() instead, which uses the label if set or falls
back to the full node name. This matches how Zephyr determines the node
names used with device_get_binding() and allows us to start removing the
deprecated label property from things.
2023-12-04 20:06:54 -06:00
ReFil
dbe5dfb1d8 feat(split): Add is_bonded function to peripherals
There is already a function to see if the peripheral is connected, a matching one for if it's bonded is a useful addition for displays/indicators. `is_bonded` gets reset to false in the advertising function in preparation for runtime peripheral bond clearing
2023-12-04 18:31:35 -05:00
ReFil
9bacaffe62 feat(hid): Add KConfig option for higher NKRO usages
By default the maximum NKRO usage is set to maximise compatibility, but some keys dont work, this adds the ability to use those extended keys, at the cost of compatibiltity

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Pete Johanson <peter@peterjohanson.com>
2023-12-04 18:24:05 -05:00
Cem Aksoylar
8ee3467adf fix(docs): Update outdated information in the hardware page 2023-12-04 15:22:49 -08:00
Cem Aksoylar
042e5209b3 fix(docs): Fix table for BT_DISC 2023-12-04 09:24:53 -08:00
ReFil
ecefd6d24b fix(docs): Update backlight docs (#1894)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-12-04 09:21:49 -08:00
Peter Johanson
55aed8e89d feat(tests): Add ability to auto-accept test diff. 2023-12-02 17:11:45 -08:00
Peter Johanson
c63d0791d5 chore: Ensure BSIM env. variables set in devcontainer. 2023-12-02 17:11:45 -08:00
Peter Johanson
693530c2f1 feat(bluetooth): Initial nRF52 BSIM based test support.
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2023-12-02 17:11:45 -08:00
Peter Johanson
da15564d0e feat(bluetooth): Build on ARCH_POSIX. 2023-12-02 17:11:45 -08:00
Peter Johanson
3fad4dba07 fix(bt): Passkey entry pairing fixes.
* Don't propogate any key press events while in the
  middle of passkey entry, avoid funky state on hosts.
* Handle passkey on release, not press, to ensure key *releases*
  are not accidentally sent, especially the Enter release
  at the very end of passkey entry, which can trigger
  cancel in the dialog if the keyboard is connected
  via USB to the same host.
2023-12-01 16:48:46 -08:00
Peter Johanson
329d6474ee feat(ble): Make it possible to use BT_GATT_AUTO_SEC_REQ
* Only upgrade security of new connections if BT_GATT_AUTO_SEC_REQ
  is not enabled.
2023-12-01 16:47:49 -08:00
Peter Johanson
744f70c80c feat(bt): Add support for unauth overwrite
* Properly handle the user enabling the
  `CONFIG_BT_SMP_ALLOW_UNAUTH_OVERWRITE`
  Zephyr flag and handle re-pairing to an existing taken
  profile from the same address.
2023-12-01 23:39:31 +00:00
ReFil
69f7bfb409 feat(boards): Kinesis Advantage 360 pro
Add the Kinesis Advantage 360 Pro board definition.
2023-11-27 19:09:58 -05:00
Peter Johanson
817ce8764f refactor: Move to zmk_hid_indicators_t type. 2023-11-27 16:03:18 -08:00
Alessandro Bortolin
d9bb0d7d0e feat: LED indicators on peripheral side 2023-11-27 16:03:18 -08:00
Alessandro Bortolin
4e55c5f6e9 feat: handle LED indicators report 2023-11-27 16:03:18 -08:00
2118 changed files with 63822 additions and 33153 deletions

View File

@@ -6,3 +6,8 @@ fi
if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then
source "$WORKSPACE_DIR/zephyr/zephyr-env.sh"
fi
if [ -d "$WORKSPACE_DIR/tools/bsim" ]; then
export BSIM_OUT_PATH="$WORKSPACE_DIR/tools/bsim/"
export BSIM_COMPONENTS_PATH="$WORKSPACE_DIR/tools/bsim/components/"
fi

View File

@@ -1,4 +1,4 @@
FROM docker.io/zmkfirmware/zmk-dev-arm:3.2
FROM docker.io/zmkfirmware/zmk-dev-arm:4.1-branch
COPY .bashrc tmp
RUN mv /tmp/.bashrc ~/.bashrc

View File

@@ -9,6 +9,7 @@
"mounts": [
"type=volume,source=zmk-root-user,target=/root",
"type=volume,source=zmk-config,target=/workspaces/zmk-config",
"type=volume,source=zmk-modules,target=/workspaces/zmk-modules",
"type=volume,source=zmk-zephyr,target=${containerWorkspaceFolder}/zephyr",
"type=volume,source=zmk-zephyr-modules,target=${containerWorkspaceFolder}/modules",
"type=volume,source=zmk-zephyr-tools,target=${containerWorkspaceFolder}/tools"

View File

@@ -8,3 +8,50 @@ updates:
directory: "/docs"
schedule:
interval: "daily"
groups:
docusaurus-major:
applies-to: "version-updates"
dependency-type: "production"
patterns:
- "@docusaurus/*"
update-types:
- "major"
docusaurus-minor-patch:
applies-to: "version-updates"
dependency-type: "production"
patterns:
- "@docusaurus/*"
update-types:
- "minor"
- "patch"
tree-sitter:
applies-to: "version-updates"
dependency-type: "production"
patterns:
- "tree-sitter-devicetree"
- "web-tree-sitter"
prod-other-major:
applies-to: "version-updates"
dependency-type: "production"
exclude-patterns:
- "@docusaurus/*"
- "tree-sitter-devicetree"
- "web-tree-sitter"
update-types:
- "major"
prod-other-minor-patch:
applies-to: "version-updates"
dependency-type: "production"
exclude-patterns:
- "@docusaurus/*"
- "tree-sitter-devicetree"
- "web-tree-sitter"
update-types:
- "minor"
- "patch"
development:
applies-to: "version-updates"
dependency-type: "development"
update-types:
- "minor"
- "patch"

View File

@@ -1,15 +1,9 @@
<!-- If you're adding a board/shield please fill out this check-list, otherwise you can delete it -->
<!-- Note: ZMK is generally not accepting PRs for new keyboards. New generic controller PRs *may* still be accepted, please discuss on the Discord server first. -->
## Board/Shield Check-list
## PR check-list
- [ ] This board/shield is tested working on real hardware
- [ ] Definitions follow the general style of other shields/boards upstream ([Reference](https://zmk.dev/docs/development/new-shield))
- [ ] `.zmk.yml` metadata file added
- [ ] Branch has a [clean commit history](https://zmk.dev/docs/development/contributing/pull-requests#clean-commit-history)
- [ ] Additional tests are included, if changing behaviors/core code that is testable.
- [ ] Proper Copyright + License headers added to applicable files (Generally, we stick to "The ZMK Contributors" for copyrights to help avoid churn when files get edited)
- [ ] General consistent formatting of DeviceTree files
- [ ] Keymaps do not use deprecated key defines (Check using the [upgrader tool](https://zmk.dev/docs/codes/keymap-upgrader))
- [ ] `&pro_micro` used in favor of `&pro_micro_d/a` if applicable
- [ ] If split, no name added for the right/peripheral half
- [ ] Kconfig.defconfig file correctly wraps _all_ configuration in conditional on the shield symbol
- [ ] `.conf` file has optional extra features commented out
- [ ] Keyboard/PCB is part of a shipped group buy or is generally available in stock to purchase (OSH/personal projects without general availability should create a zmk-config repo instead)
- [ ] [Pre-commit](https://zmk.dev/docs/development/local-toolchain/pre-commit) used to check formatting of files, commit messages, etc.
- [ ] Includes any necessary [documentation changes](https://zmk.dev/docs/development/contributing/documentation).

78
.github/workflows/ble-test.yml vendored Normal file
View File

@@ -0,0 +1,78 @@
name: BLE Tests
on:
push:
paths:
- ".github/workflows/ble-test.yml"
- "app/tests/ble/**"
- "app/src/**"
- "app/run-ble-test.sh"
pull_request:
paths:
- ".github/workflows/ble-test.yml"
- "app/tests/ble/**"
- "app/src/**"
- "app/run-ble-test.sh"
jobs:
collect-tests:
outputs:
test-dirs: ${{ steps.test-dirs.outputs.test-dirs }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Find test directories
id: test-dirs
run: |
cd app/tests/ble
export TESTS=$(ls -d * | grep -v central | jq -R -s -c 'split("\n")[:-1]')
echo "test-dirs=${TESTS}" > $GITHUB_OUTPUT
run-tests:
needs: collect-tests
strategy:
matrix:
test: ${{ fromJSON(needs.collect-tests.outputs.test-dirs) }}
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-build-arm:4.1
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Cache west modules
uses: actions/cache@v4
env:
cache-name: cache-zephyr-modules
with:
path: |
modules/
tools/
zephyr/
bootloader/
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('app/west.yml') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
timeout-minutes: 2
continue-on-error: true
- name: Initialize workspace (west init)
run: west init -l app
- name: Enable babblesim group filter
run: west config manifest.group-filter -- +babblesim
- name: Update modules (west update)
run: west update --fetch-opt=--filter=tree:0
- name: Export Zephyr CMake package (west zephyr-export)
run: west zephyr-export
- name: Build BabbleSim components
working-directory: tools/bsim
run: make everything
- name: Test ${{ matrix.test }}
working-directory: app
run: BSIM_COMPONENTS_PATH="${GITHUB_WORKSPACE}/tools/bsim/components" BSIM_OUT_PATH="${GITHUB_WORKSPACE}/tools/bsim" ./run-ble-test.sh tests/ble/${{ matrix.test }}
- name: Archive artifacts
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: "${{ matrix.test }}-log-files"
path: app/build/**/*.log

View File

@@ -26,24 +26,32 @@ on:
jobs:
matrix:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
name: Fetch Build Keyboards
outputs:
build_matrix: ${{ env.build_matrix }}
has_valid_build_matrix: ${{ steps.fetch.outputs.has_valid_build_matrix }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install yaml2json
run: python3 -m pip install remarshal
uses: actions/checkout@v5
- name: Fetch Build Matrix
id: fetch
run: |
echo "build_matrix=$(yaml2json '${{ inputs.build_matrix_path }}' | jq -c .)" >> $GITHUB_ENV
yaml2json "${{ inputs.build_matrix_path }}" | jq
matrix_content=$(yq -oj -I0 '${{ inputs.build_matrix_path }}')
if [ -z "$matrix_content" ] || [ "$matrix_content" = "null" ]; then
echo "::notice file=${{inputs.build_matrix_path}},title=Empty build matrix file::To add a keyboard to the build, see https://zmk.dev/docs/user-setup#add-a-keyboard."
echo "has_valid_build_matrix=false" >> $GITHUB_OUTPUT
else
echo "build_matrix=$matrix_content" >> $GITHUB_ENV
echo "has_valid_build_matrix=true" >> $GITHUB_OUTPUT
echo "$matrix_content"
fi
build:
runs-on: ubuntu-latest
if: needs.matrix.outputs.has_valid_build_matrix == 'true'
container:
image: zmkfirmware/zmk-build-arm:stable
needs: matrix
@@ -52,33 +60,65 @@ jobs:
fail-fast: false
matrix: ${{ fromJson(needs.matrix.outputs.build_matrix) }}
steps:
- name: Act Workaround # https://github.com/nektos/act/issues/973
if: ${{ env.ACT }}
run: |
apt-get update && apt-get install -y curl unzip
curl -fsSL https://deb.nodesource.com/setup_22.x | bash && apt install -y nodejs
- name: Checkout
uses: actions/checkout@v5
- name: Create build directory
run: |
echo "build_dir=$(mktemp -d)" >> $GITHUB_ENV
- name: Prepare variables
shell: sh -x {0}
shell: bash -x {0}
env:
board: ${{ matrix.board }}
shield: ${{ matrix.shield }}
artifact_name: ${{ matrix.artifact-name }}
snippet: ${{ matrix.snippet }}
run: |
echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV
echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}" >> $GITHUB_ENV
echo "display_name=${shield:+$shield - }${board}" >> $GITHUB_ENV
echo "artifact_name=${artifact_name:-${shield:+$shield-}${board}-zmk}" >> $GITHUB_ENV
if [ -e zephyr/module.yml ]; then
export zmk_load_arg=" -DZMK_EXTRA_MODULES='${GITHUB_WORKSPACE}'"
new_tmp_dir="${TMPDIR:-/tmp}/zmk-config"
mkdir -p "${new_tmp_dir}"
echo "base_dir=${new_tmp_dir}" >> $GITHUB_ENV
else
echo "base_dir=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
fi
- name: Checkout
uses: actions/checkout@v3
if [ -n "${snippet}" ]; then
extra_west_args="-S \"${snippet}\""
fi
echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV
echo "extra_west_args=${extra_west_args}" >> $GITHUB_ENV
echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}${zmk_load_arg}" >> $GITHUB_ENV
echo "display_name=${shield:+$shield - }${board}" >> $GITHUB_ENV
echo "artifact_name=${artifact_name:-${shield:+$shield-}${board//\//_}-zmk}" >> $GITHUB_ENV
- name: Copy config files to isolated temporary directory
run: |
if [ "${{ env.base_dir }}" != "${GITHUB_WORKSPACE}" ]; then
mkdir "${{ env.base_dir }}/${{ inputs.config_path }}"
cp -R ${{ inputs.config_path }}/* "${{ env.base_dir }}/${{ inputs.config_path }}/"
fi
- name: Cache west modules
uses: actions/cache@v3.0.11
uses: actions/cache@v4
continue-on-error: true
env:
cache_name: cache-zephyr-${{ env.zephyr_version }}-modules
with:
path: |
modules/
tools/
zephyr/
bootloader/
zmk/
${{ env.base_dir }}/modules/
${{ env.base_dir }}/tools/
${{ env.base_dir }}/zephyr/
${{ env.base_dir }}/bootloader/
${{ env.base_dir }}/zmk/
key: ${{ runner.os }}-build-${{ env.cache_name }}-${{ hashFiles('**/west.yml', '**/build.yaml') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache_name }}-
@@ -86,23 +126,66 @@ jobs:
${{ runner.os }}-
- name: West Init
run: west init -l "${{ inputs.config_path }}"
working-directory: ${{ env.base_dir }}
run: west init -l "${{ env.base_dir }}/${{ inputs.config_path }}"
- name: West Update
run: west update
working-directory: ${{ env.base_dir }}
run: west update --fetch-opt=--filter=tree:0
- name: Check ZMK revision
working-directory: ${{ env.base_dir }}
run: |
zmk_revision=$(west list -f "{revision}" zmk)
echo "zmk_revision=${zmk_revision}" >> $GITHUB_ENV
echo "ZMK revision: ${zmk_revision}"
- name: West Zephyr export
working-directory: ${{ env.base_dir }}
run: west zephyr-export
- name: West Build (${{ env.display_name }})
working-directory: ${{ env.base_dir }}
shell: sh -x {0}
run: west build -s zmk/app -b "${{ matrix.board }}" -- -DZMK_CONFIG="${GITHUB_WORKSPACE}/${{ inputs.config_path }}" ${{ env.extra_cmake_args }} ${{ matrix.cmake-args }}
run: west build -s zmk/app -d "${{ env.build_dir }}" -b "${{ matrix.board }}" ${{ env.extra_west_args }} -- -DZMK_CONFIG=${{ env.base_dir }}/${{ inputs.config_path }} ${{ env.extra_cmake_args }} ${{ matrix.cmake-args }}
- name: Warn about building from main if build fails
if: failure() && env.zmk_revision == 'main'
run: |
echo "# Consider Pinning ZMK" >> $GITHUB_STEP_SUMMARY
echo "Your recent build failure might be the result of breaking changes made to ZMK's main branch." >> $GITHUB_STEP_SUMMARY
echo "Consider [pinning your ZMK version](https://zmk.dev/blog/2025/06/20/pinned-zmk) to a release for increased stability." >> $GITHUB_STEP_SUMMARY
echo "See also the [list of released versions](https://github.com/zmkfirmware/zmk/releases)." >> $GITHUB_STEP_SUMMARY
echo "If you wish to stay on main, check the most recent pending release PR for breaking changes. [Our blog](https://zmk.dev/blog) may have upgrade information if breaking changes are significant." >> $GITHUB_STEP_SUMMARY
- name: Check if building a board without explicit ZMK compat
if: always()
working-directory: "${{ env.base_dir }}/${{ inputs.config_path }}"
run: |
if ! (grep "CONFIG_ZMK_BOARD_COMPAT=y" "${{ env.build_dir }}/zephyr/.config" > /dev/null)
then
original_board=$(echo "${{ matrix.board }}" | sed -e 's$/.*$$')
west_board=$(west boards --board-root ${{ env.base_dir }}/zmk/app/module --board-root ${{ env.base_dir }}/zmk/app --board "${original_board}")
if [ -z "$west_board" ]; then
echo "Not found the board listed with west boards. Skipping further checking."
exit 0
fi
west boards --board-root ${{ env.base_dir }}/zmk/app/module --board-root ${{ env.base_dir }}/zmk/app --board "${original_board}" --format "{qualifiers}" | grep "zmk" > /dev/null
if [ $? -ne 0 ]
then
echo "::warning file=build/zephyr/.config,title=Missing ZMK Compat::The selected board does not report explicit ZMK compat. Please verify you've selected the correct board and ZMK variant if one exists"
else
echo "::error file=build/zephyr/.config,title=Missing ZMK Compat::The selected board is not set up for ZMK and there is a ZMK variant available. See https://zmk.dev/blog/2025/12/09/zephyr-4-1#zmk-board-variant."
exit 1
fi
fi
- name: ${{ env.display_name }} Kconfig file
run: |
if [ -f build/zephyr/.config ]
if [ -f "${{ env.build_dir }}/zephyr/.config" ]
then
grep -v -e "^#" -e "^$" build/zephyr/.config | sort
grep -v -e "^#" -e "^$" "${{ env.build_dir }}/zephyr/.config" | sort
else
echo "No Kconfig output"
fi
@@ -110,12 +193,12 @@ jobs:
- name: ${{ env.display_name }} Devicetree file
run: |
if [ -f build/zephyr/zephyr.dts ]
if [ -f "${{ env.build_dir }}/zephyr/zephyr.dts" ]
then
cat build/zephyr/zephyr.dts
elif [ -f build/zephyr/zephyr.dts.pre ]
cat "${{ env.build_dir }}/zephyr/zephyr.dts"
elif [ -f "${{ env.build_dir }}/zephyr/zephyr.dts.pre" ]
then
cat -s build/zephyr/zephyr.dts.pre
cat -s "${{ env.build_dir }}/zephyr/zephyr.dts.pre"
else
echo "No Devicetree output"
fi
@@ -124,17 +207,30 @@ jobs:
- name: Rename artifacts
shell: sh -x {0}
run: |
mkdir build/artifacts
if [ -f build/zephyr/zmk.uf2 ]
mkdir "${{ env.build_dir }}/artifacts"
if [ -f "${{ env.build_dir }}/zephyr/zmk.uf2" ]
then
cp build/zephyr/zmk.uf2 "build/artifacts/${{ env.artifact_name }}.uf2"
elif [ -f build/zephyr/zmk.${{ inputs.fallback_binary }} ]
cp "${{ env.build_dir }}/zephyr/zmk.uf2" "${{ env.build_dir }}/artifacts/${{ env.artifact_name }}.uf2"
elif [ -f "${{ env.build_dir }}/zephyr/zmk.${{ inputs.fallback_binary }}" ]
then
cp "build/zephyr/zmk.${{ inputs.fallback_binary }}" "build/artifacts/${{ env.artifact_name }}.${{ inputs.fallback_binary }}"
cp "${{ env.build_dir }}/zephyr/zmk.${{ inputs.fallback_binary }}" "${{ env.build_dir }}/artifacts/${{ env.artifact_name }}.${{ inputs.fallback_binary }}"
fi
- name: Archive (${{ env.display_name }})
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: artifact-${{ env.artifact_name }}
path: ${{ env.build_dir }}/artifacts
merge:
runs-on: ubuntu-latest
if: needs.matrix.outputs.has_valid_build_matrix == 'true'
needs: build
name: Merge Output Artifacts
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: ${{ inputs.archive_name }}
path: build/artifacts
pattern: artifact-*
delete-merged: true

View File

@@ -12,21 +12,29 @@ on:
schedule:
- cron: "22 4 * * *"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'schedule' }}
cancel-in-progress: true
permissions: {}
jobs:
build:
if: ${{ always() }}
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-build-arm:3.2
image: docker.io/zmkfirmware/zmk-build-arm:4.1
needs: compile-matrix
strategy:
matrix:
include: ${{ fromJSON(needs.compile-matrix.outputs.include-list) }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
persist-credentials: false
- name: Cache west modules
uses: actions/cache@v3.0.2
uses: actions/cache@v4
env:
cache-name: cache-zephyr-modules
with:
@@ -45,23 +53,21 @@ jobs:
- name: Initialize workspace (west init)
run: west init -l app
- name: Update modules (west update)
run: west update
run: west update --fetch-opt=--filter=tree:0
- name: Export Zephyr CMake package (west zephyr-export)
run: west zephyr-export
- name: Use Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: "14.x"
- name: Install @actions/artifact
run: npm install @actions/artifact
- name: Build and upload artifacts
uses: actions/github-script@v4
run: npm install @actions/artifact@5.0.3
- name: Build
uses: actions/github-script@v7
id: boards-list
with:
script: |
const fs = require('fs');
const artifact = require('@actions/artifact');
const artifactClient = artifact.create();
const execSync = require('child_process').execSync;
@@ -71,10 +77,39 @@ jobs:
for (const shieldArgs of buildShieldArgs) {
try {
const output = execSync(`west build -s app -p -b ${{ matrix.board }} -- ${shieldArgs.shield ? '-DSHIELD="' + shieldArgs.shield + '"' : ''} ${shieldArgs['cmake-args'] || ''}`);
console.log(`::group::${{ matrix.board}} ${shieldArgs.shield} Build`)
const output = execSync(`west build -s app -p -b ${{ matrix.board }} ${shieldArgs.snippet ? '-S ' + shieldArgs.snippet : ''} -- ${shieldArgs.shield ? '-DSHIELD="' + shieldArgs.shield + '"' : ''} ${shieldArgs['cmake-args'] || ''}`);
console.log(output.toString());
} catch (e) {
console.error(`::error::Failed to build ${{ matrix.board }} ${shieldArgs.shield} ${shieldArgs['cmake-args']}`);
console.error(e);
error = true;
} finally {
console.log('::endgroup::');
}
}
if (error) {
throw new Error('Failed to build one or more configurations');
}
- name: Upload artifacts
uses: actions/github-script@v7
continue-on-error: ${{ github.event_name == 'pull_request' }}
id: boards-upload
with:
script: |
const fs = require('fs');
const {default: artifact} = require('@actions/artifact');
const buildShieldArgs = JSON.parse(`${{ matrix.shieldArgs }}`);
let error = false;
for (const shieldArgs of buildShieldArgs) {
try {
console.log(`::group::${{ matrix.board}} ${shieldArgs.shield} Upload`)
const fileExtensions = ["hex", "uf2"];
@@ -88,11 +123,11 @@ jobs:
}
const cmakeName = shieldArgs['cmake-args'] ? '-' + (shieldArgs.nickname || shieldArgs['cmake-args'].split(' ').join('')) : '';
const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`;
const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`.replaceAll('/', '_');
await artifactClient.uploadArtifact(artifactName, files, rootDirectory, options);
await artifact.uploadArtifact(artifactName, files, rootDirectory, options);
} catch (e) {
console.error(`::error::Failed to build or upload ${{ matrix.board }} ${shieldArgs.shield} ${shieldArgs['cmake-args']}`);
console.error(`::error::Failed to upload ${{ matrix.board }} ${shieldArgs.shield} ${shieldArgs['cmake-args']}`);
console.error(e);
error = true;
} finally {
@@ -104,14 +139,14 @@ jobs:
throw new Error('Failed to build one or more configurations');
}
compile-matrix:
if: ${{ always() }}
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
needs: [core-coverage, board-changes, nightly]
outputs:
include-list: ${{ steps.compile-list.outputs.result }}
steps:
- name: Join build lists
uses: actions/github-script@v4
uses: actions/github-script@v7
id: compile-list
with:
script: |
@@ -135,6 +170,7 @@ jobs:
perBoard[configuration.board].push({
shield: configuration.shield,
'cmake-args': configuration['cmake-args'],
snippet: configuration.snippet,
nickname: configuration.nickname
})
}
@@ -151,14 +187,16 @@ jobs:
core-include: ${{ steps.core-list.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
persist-credentials: false
- name: Use Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: "14.x"
- name: Install js-yaml
run: npm install js-yaml
- uses: actions/github-script@v4
- uses: actions/github-script@v7
id: core-list
with:
script: |
@@ -180,14 +218,14 @@ jobs:
boards-include: ${{ steps.boards-list.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: "14.x"
- name: Install js-yaml
run: npm install js-yaml
- uses: actions/github-script@v4
- uses: actions/github-script@v7
id: boards-list
with:
script: |
@@ -239,6 +277,7 @@ jobs:
);
} else {
console.error("Board without keys or interconnect");
return [];
}
break;
case "shield":
@@ -257,14 +296,14 @@ jobs:
});
}))).flat();
nightly:
if: ${{ github.event_name == 'schedule' }}
if: ${{ github.event_name == 'schedule' && github.repository_owner == 'zmkfirmware' }}
runs-on: ubuntu-latest
needs: get-grouped-hardware
outputs:
nightly-include: ${{ steps.nightly-list.outputs.result }}
steps:
- name: Create nightly list
uses: actions/github-script@v4
uses: actions/github-script@v7
id: nightly-list
with:
script: |
@@ -307,15 +346,17 @@ jobs:
organized-metadata: ${{ steps.organize-metadata.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
persist-credentials: false
- name: Use Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: "14.x"
- name: Install js-yaml
run: npm install js-yaml
- name: Aggregate Metadata
uses: actions/github-script@v4
uses: actions/github-script@v7
id: aggregate-metadata
with:
script: |
@@ -333,7 +374,7 @@ jobs:
result-encoding: string
- name: Organize Metadata
uses: actions/github-script@v4
uses: actions/github-script@v7
id: organize-metadata
with:
script: |
@@ -382,27 +423,32 @@ jobs:
if: ${{ github.event_name != 'schedule' }}
runs-on: ubuntu-latest
outputs:
changed-files: ${{ steps.changed-files.outputs.all }}
changed-files: ${{ steps.changed-files.outputs.all_changed_files }}
board-changes: ${{ steps.board-changes.outputs.result }}
core-changes: ${{ steps.core-changes.outputs.result }}
steps:
- uses: Ana06/get-changed-files@v2.0.0
- name: Checkout
uses: actions/checkout@v5
with:
persist-credentials: false
- uses: tj-actions/changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b # pin to v45.0.8 due to https://github.com/tj-actions/changed-files/issues/2463 https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
id: changed-files
with:
format: "json"
- uses: actions/github-script@v4
json: true
escape_json: false
- uses: actions/github-script@v7
id: board-changes
with:
script: |
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all }}`);
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all_changed_files }}`);
const boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
return boardChanges.length ? 'true' : 'false';
result-encoding: string
- uses: actions/github-script@v4
- uses: actions/github-script@v7
id: core-changes
with:
script: |
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all }}`);
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all_changed_files }}`);
const boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
const appChanges = changedFiles.filter(f => f.startsWith('app'));
const ymlChanges = changedFiles.includes('.github/workflows/build.yml');

View File

@@ -14,7 +14,7 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5
- uses: bahmutov/npm-install@v1
with:
working-directory: docs
@@ -24,7 +24,7 @@ jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5
- uses: bahmutov/npm-install@v1
with:
working-directory: docs

View File

@@ -18,11 +18,11 @@ jobs:
validate-metadata:
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-dev-arm:3.2
image: docker.io/zmkfirmware/zmk-dev-arm:4.1
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5
- name: Install dependencies
run: pip install -r app/scripts/requirements.txt
run: pip install --break-system-packages -r app/scripts/requirements.txt
- name: West init
run: west init -l app
- name: Update modules (west update)

View File

@@ -8,8 +8,8 @@ jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- uses: actions/checkout@v5
- uses: actions/setup-python@v5
with:
python-version: 3.x
- uses: pre-commit/action@v3.0.0
- uses: pre-commit/action@v3.0.1

80
.github/workflows/release-please.yml vendored Normal file
View File

@@ -0,0 +1,80 @@
on:
push:
branches:
- main
- "v*.*-branch"
permissions:
contents: write
pull-requests: write
name: release-please
jobs:
handle-commit:
name: Handle new commit
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
major: ${{ steps.release.outputs.major }}
minor: ${{ steps.release.outputs.minor }}
patch: ${{ steps.release.outputs.patch }}
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
token: ${{ secrets.ZMK_RELEASE_PLEASE_TOKEN }}
target-branch: ${{ github.ref_name }}
release-new-version:
name: Release new version
needs: handle-commit
runs-on: ubuntu-latest
if: ${{ needs.handle-commit.outputs.release_created }}
env:
ZMK_RELEASE_PLEASE_TOKEN: ${{ secrets.ZMK_RELEASE_PLEASE_TOKEN }}
VERSION: v${{ needs.handle-commit.outputs.major }}.${{ needs.handle-commit.outputs.minor }}
steps:
- uses: actions/checkout@v5
- name: Create major.minor branch
if: ${{ needs.handle-commit.outputs.patch == '0' }}
run: |
git remote add gh-token-branch "https://x-access-token:$ZMK_RELEASE_PLEASE_TOKEN@github.com/${{ github.repository }}.git"
git checkout -b $VERSION-branch
git push gh-token-branch $VERSION-branch
- name: tag major and minor versions
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git remote add gh-token "https://x-access-token:$ZMK_RELEASE_PLEASE_TOKEN@github.com/${{ github.repository }}.git"
git tag -d $VERSION || true
git tag -a $VERSION -m "Release $VERSION"
git push --force gh-token $VERSION
bump-user-config-template-version:
name: Bump user config template version
needs: handle-commit
runs-on: ubuntu-latest
if: ${{ needs.handle-commit.outputs.release_created }}
env:
ZMK_RELEASE_PLEASE_TOKEN: ${{ secrets.ZMK_RELEASE_PLEASE_TOKEN }}
VERSION: v${{ needs.handle-commit.outputs.major }}.${{ needs.handle-commit.outputs.minor }}
steps:
- name: Bump user config template
run: |
if [ -z "$VERSION" ]; then
echo "VERSION is not set, exiting."
exit 1
fi
git clone "https://x-access-token:$ZMK_RELEASE_PLEASE_TOKEN@github.com/zmkfirmware/unified-zmk-config-template.git"
cd unified-zmk-config-template
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
sed -i 's/^\(\s*\)revision: .*/\1revision: '"$VERSION"'/' config/west.yml
sed -i 's|uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@.*|uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@'"$VERSION"'|' .github/workflows/build.yml
git add .
git commit -m "Version bump to $VERSION"
git push origin main

28
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: "Mark and close stale PRs in the repo"
on:
schedule:
- cron: "00 14 * * *" # runs daily at 14:00 https://crontab.guru/#00_14_*_*_*
jobs:
stale:
runs-on: ubuntu-24.04
steps:
- uses: actions/stale@v9.1.0
with:
days-before-pr-stale: 300 # ~10 months
stale-pr-label: "stale"
stale-pr-message: >
This PR has been automatically marked as stale because it has not
had activity in 10 months. It will be closed in 14 days if no
further activity occurs. Feel free to give a status update or
re-open when it has been rebased and is ready for review (again).
Thanks!
days-before-pr-close: 14
close-pr-message: >
This PR was closed because it had no activity for over 10 months.
Feel free to give a status update or re-open when it has been
rebased and is ready for review (again).
days-before-issue-stale: 1000 # ~3 years
days-before-issue-close: -1
ascending: true # Process older PRs first
operations-per-run: 30 # Default value, listed here again to make it explicit

View File

@@ -4,13 +4,17 @@ on:
push:
paths:
- ".github/workflows/test.yml"
- "app/run-test.sh"
- "app/tests/**"
- "app/src/**"
- "app/include/**"
pull_request:
paths:
- ".github/workflows/test.yml"
- "app/run-test.sh"
- "app/tests/**"
- "app/src/**"
- "app/include/**"
jobs:
collect-tests:
@@ -19,13 +23,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v5
- name: Find test directories
id: test-dirs
run: |
cd app/tests/
export TESTS=$(ls -d * | jq -R -s -c 'split("\n")[:-1]')
echo "::set-output name=test-dirs::${TESTS}"
export TESTS=$(ls -d * | grep -v ble | jq -R -s -c 'split("\n")[:-1]')
echo "test-dirs=${TESTS}" >> $GITHUB_OUTPUT
run-tests:
needs: collect-tests
strategy:
@@ -33,12 +37,12 @@ jobs:
test: ${{ fromJSON(needs.collect-tests.outputs.test-dirs) }}
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-build-arm:3.2
image: docker.io/zmkfirmware/zmk-build-arm:4.1
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v5
- name: Cache west modules
uses: actions/cache@v3.0.2
uses: actions/cache@v4
env:
cache-name: cache-zephyr-modules
with:
@@ -57,15 +61,15 @@ jobs:
- name: Initialize workspace (west init)
run: west init -l app
- name: Update modules (west update)
run: west update
run: west update --fetch-opt=--filter=tree:0
- name: Export Zephyr CMake package (west zephyr-export)
run: west zephyr-export
- name: Test ${{ matrix.test }}
working-directory: app
run: west test tests/${{ matrix.test }}
run: ZMK_TESTS_VERBOSE=1 west test tests/${{ matrix.test }}
- name: Archive artifacts
if: ${{ always() }}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: "log-files"
name: "${{ matrix.test }}-log-files"
path: app/build/**/*.log

12
.gitignore vendored
View File

@@ -1,9 +1,19 @@
/.west
/bootloader
/modules
/optional
/tools
/zephyr
/zmk-config
/build
# macOS
*.DS_Store
__pycache__
# Python
__pycache__
.python-version
.venv
# clangd
app/.cache/

138
.gitlint Normal file
View File

@@ -0,0 +1,138 @@
# Edit this file as you like.
#
# All these sections are optional. Each section with the exception of [general] represents
# one rule and each key in it is an option for that specific rule.
#
# Rules and sections can be referenced by their full name or by id. For example
# section "[body-max-line-length]" could also be written as "[B1]". Full section names are
# used in here for clarity.
#
[general]
# Ignore certain rules, this example uses both full name and id
# ignore=title-trailing-punctuation, T3
# verbosity should be a value between 1 and 3, the commandline -v flags take precedence over this
# verbosity = 2
# By default gitlint will ignore merge, revert, fixup, fixup=amend, and squash commits.
# ignore-merge-commits=true
# ignore-revert-commits=true
# ignore-fixup-commits=true
# ignore-fixup-amend-commits=true
# ignore-squash-commits=true
# Ignore any data sent to gitlint via stdin
# ignore-stdin=true
# Fetch additional meta-data from the local repository when manually passing a
# commit message to gitlint via stdin or --commit-msg. Disabled by default.
# staged=true
# Hard fail when the target commit range is empty. Note that gitlint will
# already fail by default on invalid commit ranges. This option is specifically
# to tell gitlint to fail on *valid but empty* commit ranges.
# Disabled by default.
# fail-without-commits=true
# Whether to use Python `search` instead of `match` semantics in rules that use
# regexes. Context: https://github.com/jorisroovers/gitlint/issues/254
# Disabled by default, but will be enabled by default in the future.
# regex-style-search=true
# Enable debug mode (prints more output). Disabled by default.
# debug=true
# Enable community contributed rules
# See http://jorisroovers.github.io/gitlint/contrib_rules for details
contrib=contrib-title-conventional-commits,CT1,contrib-disallow-cleanup-commits,CC2
# Set the extra-path where gitlint will search for user defined rules
# See http://jorisroovers.github.io/gitlint/user_defined_rules for details
# extra-path=examples/
[title-max-length]
line-length=80
# Conversely, you can also enforce minimal length of a title with the
# "title-min-length" rule:
# [title-min-length]
# min-length=5
# [title-must-not-contain-word]
# Comma-separated list of words that should not occur in the title. Matching is case
# insensitive. It's fine if the keyword occurs as part of a larger word (so "WIPING"
# will not cause a violation, but "WIP: my title" will.
# words=wip
# [title-match-regex]
# python-style regex that the commit-msg title must match
# Note that the regex can contradict with other rules if not used correctly
# (e.g. title-must-not-contain-word).
# regex=^US[0-9]*
# [body-max-line-length]
# line-length=72
# [body-min-length]
# min-length=5
# [body-is-missing]
# Whether to ignore this rule on merge commits (which typically only have a title)
# default = True
# ignore-merge-commits=false
# [body-changed-file-mention]
# List of files that need to be explicitly mentioned in the body when they are changed
# This is useful for when developers often erroneously edit certain files or git submodules.
# By specifying this rule, developers can only change the file when they explicitly reference
# it in the commit message.
# files=gitlint-core/gitlint/rules.py,README.md
# [body-match-regex]
# python-style regex that the commit-msg body must match.
# E.g. body must end in My-Commit-Tag: foo
# regex=My-Commit-Tag: foo$
# [author-valid-email]
# python-style regex that the commit author email address must match.
# For example, use the following regex if you only want to allow email addresses from foo.com
# regex=[^@]+@foo.com
# [ignore-by-title]
# Ignore certain rules for commits of which the title matches a regex
# E.g. Match commit titles that start with "Release"
# regex=^Release(.*)
# Ignore certain rules, you can reference them by their id or by their full name
# Use 'all' to ignore all rules
# ignore=T1,body-min-length
# [ignore-by-body]
# Ignore certain rules for commits of which the body has a line that matches a regex
# E.g. Match bodies that have a line that that contain "release"
# regex=(.*)release(.*)
#
# Ignore certain rules, you can reference them by their id or by their full name
# Use 'all' to ignore all rules
# ignore=T1,body-min-length
# [ignore-body-lines]
# Ignore certain lines in a commit body that match a regex.
# E.g. Ignore all lines that start with 'Co-Authored-By'
# regex=^Co-Authored-By
# [ignore-by-author-name]
# Ignore certain rules for commits of which the author name matches a regex
# E.g. Match commits made by dependabot
# regex=(.*)dependabot(.*)
#
# Ignore certain rules, you can reference them by their id or by their full name
# Use 'all' to ignore all rules
# ignore=T1,body-min-length
# This is a contrib rule - a community contributed rule. These are disabled by default.
# You need to explicitly enable them one-by-one by adding them to the "contrib" option
# under [general] section above.
# [contrib-title-conventional-commits]
# Specify allowed commit types. For details see: https://www.conventionalcommits.org/
# types = bugfix,user-story,epic

View File

@@ -4,20 +4,28 @@ repos:
rev: v1.5.1
hooks:
- id: remove-tabs
exclude: "vendor-prefixes\\.txt$"
- repo: https://github.com/pocc/pre-commit-hooks
rev: v1.3.5
exclude: "vendor-prefixes\\.txt$|.git/COMMIT_EDITMSG"
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v18.1.8
hooks:
- id: clang-format
types_or: [c++, c]
args:
- -i
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.7.1
- repo: https://github.com/rbubley/mirrors-prettier
rev: 787fb9f542b140ba0b2aced38e6a3e68021647a3
hooks:
- id: prettier
# Workaround for https://github.com/pre-commit/mirrors-prettier/issues/29
additional_dependencies:
- prettier@2.8.7
exclude: |
(?x)^(
.git/COMMIT_EDITMSG|
CHANGELOG.md|
.release-please-manifest.json
)$
- repo: https://github.com/jorisroovers/gitlint
rev: v0.19.1
hooks:
- id: gitlint
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:

View File

@@ -0,0 +1 @@
{".":"0.4.0"}

View File

@@ -1,9 +1,11 @@
{
"recommendations": [
"esbenp.prettier-vscode",
"ms-python.black-formatter",
"ms-python.python",
"ms-vscode.cpptools",
"plorefice.devicetree",
"twxs.cmake"
"twxs.cmake",
"unifiedjs.vscode-mdx"
]
}

View File

@@ -3,7 +3,7 @@
"*.overlay": "dts",
"*.keymap": "dts"
},
"python.formatting.provider": "black",
"python.analysis.include": ["app/scripts", "zephyr/scripts"],
"[c]": {
"editor.formatOnSave": true
},
@@ -13,7 +13,7 @@
},
"[python]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "ms-python.python"
"editor.defaultFormatter": "ms-python.black-formatter"
},
"[css][json][jsonc][html][markdown][yaml]": {
"editor.formatOnSave": true,

210
CHANGELOG.md Normal file
View File

@@ -0,0 +1,210 @@
# Changelog
## [0.4.0](https://github.com/zmkfirmware/zmk/compare/v0.3.0...v0.4.0) (2026-03-19)
### ⚠ BREAKING CHANGES
* Move to zephyr v4.1 ([#3060](https://github.com/zmkfirmware/zmk/issues/3060))
* **core:** Allow layer behaviors to "lock" layers on (https://github.com/zmkfirmware/zmk/pull/2717)
### Features
* Add double tap to enter bootloader functionality ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* Add nBOOT_SEL bit setup for STM32 G0/C0 targets ([f85ec7e](https://github.com/zmkfirmware/zmk/commit/f85ec7e7a24be10f1cf59025a192569dc0b33167))
* Add ZMK_BOARD_COMPAT Kconfig symbol, and check for it ([a23aa00](https://github.com/zmkfirmware/zmk/commit/a23aa009d7a07d67fe5609caca7372e16610f238))
* Allow layer behaviors to "lock" layers on (https://github.com/zmkfirmware/zmk/pull/2717) ([5138c6f](https://github.com/zmkfirmware/zmk/commit/5138c6fb14783b756c5a3e61581625c700f3555b))
* **behaviors:** Add retention boot mode to reset. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **ble:** Use appearance set in the BT_DEVICE_APPEARANCE config ([#3115](https://github.com/zmkfirmware/zmk/issues/3115)) ([ad7fbfe](https://github.com/zmkfirmware/zmk/commit/ad7fbfef920d9907ca8f143e273fa9eb7d84b25a))
* **boards/shields:** Add settings for Rpi Pico and add tester_rpi_pico shield ([#2900](https://github.com/zmkfirmware/zmk/issues/2900)) ([ccf20a1](https://github.com/zmkfirmware/zmk/commit/ccf20a1f5c1534a197d32279abbe0eaf651099d8))
* **boards:** add support for nrf52840dongle_nrf52840 ([#3011](https://github.com/zmkfirmware/zmk/issues/3011)) ([c7fae18](https://github.com/zmkfirmware/zmk/commit/c7fae18ae122b2465080507380dd55d096edd666))
* **core:** (Optionally) use Zephyr keyboard input devices ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **core:** mapper for magic bootloader values. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **display:** Add thread name to dedicated display queue. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **docs:** Update New Behavior Guide ([#3107](https://github.com/zmkfirmware/zmk/issues/3107)) ([e34793e](https://github.com/zmkfirmware/zmk/commit/e34793e8c7193bc868b95ec38d78f67956f759cb))
* **endpoints:** add "no endpoint" value ([6e7e0de](https://github.com/zmkfirmware/zmk/commit/6e7e0de2b621073392816b284ab4931bee709ee8))
* **endpoints:** add "no endpoint" value ([#3140](https://github.com/zmkfirmware/zmk/issues/3140)) ([6e7e0de](https://github.com/zmkfirmware/zmk/commit/6e7e0de2b621073392816b284ab4931bee709ee8))
* **layouts:** Add physical layout for Redox shield ([61de01a](https://github.com/zmkfirmware/zmk/commit/61de01abb00a73349a188ef2e10ad1cd040d31b3))
* Move to zephyr v4.1 ([#3060](https://github.com/zmkfirmware/zmk/issues/3060)) ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **pointing:** Handle INPUT_BTN_TOUCH codes for mouse buttons ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **pointing:** Release pressed keys on disconnect ([#3204](https://github.com/zmkfirmware/zmk/issues/3204)) ([24487bd](https://github.com/zmkfirmware/zmk/commit/24487bd9744f504724089f0e1cec98431a2d3333))
* **shields:** Add Studio support to boardsource3x4 ([#3154](https://github.com/zmkfirmware/zmk/issues/3154)) ([40e06f3](https://github.com/zmkfirmware/zmk/commit/40e06f3c0084751f7ae012a71d92d5801ac3b7a0))
* **split:** Add HID indicators and physical layout set to Wired split ([#3103](https://github.com/zmkfirmware/zmk/issues/3103)) ([7738924](https://github.com/zmkfirmware/zmk/commit/773892434931b74bdf54474b73c909779daa9471))
### Bug Fixes
* Add "optional" folder to .gitignore ([#3141](https://github.com/zmkfirmware/zmk/issues/3141)) ([c099041](https://github.com/zmkfirmware/zmk/commit/c0990410da4c0a0c3776448e8c05ca2ce8778c8a))
* **behaviors:** correctly handle sensor rotation remainder ([#3084](https://github.com/zmkfirmware/zmk/issues/3084)) ([958fa78](https://github.com/zmkfirmware/zmk/commit/958fa788067e18c2228d016fcd826000bb8f0320))
* **boards:** Add xiao_ble sd_partition label for nosd snippet compat ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **boards:** Fix pillbug board.yml to report extension ([a23aa00](https://github.com/zmkfirmware/zmk/commit/a23aa009d7a07d67fe5609caca7372e16610f238))
* **boards:** Remove nano overlays for old nice_nano_v2 board ID. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **boards:** Remove some references to old nice_nano_v2 board ID. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **boards:** Retore bootloader support on XIAO BLE. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **ci:** Better safeguards for ZMK variant build check ([#3277](https://github.com/zmkfirmware/zmk/issues/3277)) ([8feeb52](https://github.com/zmkfirmware/zmk/commit/8feeb52eafc716c1697cfe0515e98b78281c3543))
* **ci:** disable nrf5340dk from being built in our CI ([#3066](https://github.com/zmkfirmware/zmk/issues/3066)) ([522971f](https://github.com/zmkfirmware/zmk/commit/522971f41d62d7e5d6664eb61c84d190781feeb9))
* **ci:** Fix release please template bump ([#3021](https://github.com/zmkfirmware/zmk/issues/3021)) ([f3233c1](https://github.com/zmkfirmware/zmk/commit/f3233c1b60e4cb4c095572740bcbcaf7111eb804))
* **ci:** Pin @actions/artifact to a compatible release ([#3230](https://github.com/zmkfirmware/zmk/issues/3230)) ([ada1542](https://github.com/zmkfirmware/zmk/commit/ada1542940c3a01c0866c9fe9c30f489bc087328))
* **ci:** Prevent slash characters in artifact names. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **ci:** Skip build on empty build matrix ([#3271](https://github.com/zmkfirmware/zmk/issues/3271)) ([df2e979](https://github.com/zmkfirmware/zmk/commit/df2e979d7e03ba84a503e3d90975a599d484b9e0)), closes [#3179](https://github.com/zmkfirmware/zmk/issues/3179)
* **core:** Don't force CBPRINTF_NANO, for proper formatting. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **core:** Generate correct keymap layer names for all builds ([#3047](https://github.com/zmkfirmware/zmk/issues/3047)) ([0b5a103](https://github.com/zmkfirmware/zmk/commit/0b5a103c187ad337b9f50d824667866c4d7252e1)), closes [#3045](https://github.com/zmkfirmware/zmk/issues/3045)
* **core:** One tick kscan wait on RP2350 ([#3255](https://github.com/zmkfirmware/zmk/issues/3255)) ([9278505](https://github.com/zmkfirmware/zmk/commit/9278505975759e9cf01b4e6e8ead359b14a11400))
* **core:** Set a system work queue stack size of 2048 by default ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **core:** support magic bootloader values for nRF52833 ([#3163](https://github.com/zmkfirmware/zmk/issues/3163)) ([308de56](https://github.com/zmkfirmware/zmk/commit/308de56fb938057da7648a411ce0dce780dfc3f1))
* Disable Nordic dt-bindings header checks. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **display:** Adjust stack sizes for display usage. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **display:** Fix setting the small font for the mono theme. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **display:** port nice!view display code ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **docs:** Improve ZMK setup instructions ([#3209](https://github.com/zmkfirmware/zmk/issues/3209)) ([354cff9](https://github.com/zmkfirmware/zmk/commit/354cff9c36b49eee6abbb8a61e6b927539aebbf2))
* **docs:** Tweak layer tap example to be clearer ([#3023](https://github.com/zmkfirmware/zmk/issues/3023)) ([919bce7](https://github.com/zmkfirmware/zmk/commit/919bce7962db78139415ccf0e80fb858c89adb3d))
* Don't enable ZMK Display by default for a few shields ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **endpoints:** Add endpoint setting upgrade ([6e7e0de](https://github.com/zmkfirmware/zmk/commit/6e7e0de2b621073392816b284ab4931bee709ee8))
* Fix redundant const warning ([#3139](https://github.com/zmkfirmware/zmk/issues/3139)) ([8987f39](https://github.com/zmkfirmware/zmk/commit/8987f3979d7877114ede2f34edb5570a6b454460))
* **hid:** initialize missing d_scroll_x field in mouse report ([#3196](https://github.com/zmkfirmware/zmk/issues/3196)) ([abce9de](https://github.com/zmkfirmware/zmk/commit/abce9deab76124d72c61a824aaa1affc3dbc1260))
* **keymap:** Fix overflow in get/set bindings ([#3205](https://github.com/zmkfirmware/zmk/issues/3205)) ([ab46f48](https://github.com/zmkfirmware/zmk/commit/ab46f48dde8aa70e44a2fc2d2a1b81ae703d4981))
* nice!view built-in widgets render failure from insufficient memory ([#3243](https://github.com/zmkfirmware/zmk/issues/3243)) ([536375e](https://github.com/zmkfirmware/zmk/commit/536375e45ef6d01a9c194803525bf9dd5e119421)), closes [#3219](https://github.com/zmkfirmware/zmk/issues/3219)
* **pointing:** Refactor for changes to input API ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* Refactor for new Zephyr PM API ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* Remove usage of renamed Kconfig from core coverage. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* replace removed `K_THREAD_STACK_MEMBER` with `K_KERNEL_STACK_MEMBER` ([#3218](https://github.com/zmkfirmware/zmk/issues/3218)) ([f6c629e](https://github.com/zmkfirmware/zmk/commit/f6c629e895bbe3957ec243afb80b11e1e4b4e503))
* **sensors:** Initialize sensor data to 0 before fetching. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* Set default transport according to enabled transports ([6e7e0de](https://github.com/zmkfirmware/zmk/commit/6e7e0de2b621073392816b284ab4931bee709ee8))
* **shields:** Proper transparent binding in sofle raise layer ([#3238](https://github.com/zmkfirmware/zmk/issues/3238)) ([5cfc67a](https://github.com/zmkfirmware/zmk/commit/5cfc67a33402b24ab893b8d71cef1af2a869adbb))
* **split:** correct async UART RX buffer definition ([#3193](https://github.com/zmkfirmware/zmk/issues/3193)) ([36dbf46](https://github.com/zmkfirmware/zmk/commit/36dbf467644d4b4b6b9176241d42261d27fb18f2))
* **split:** int to pointer cast in bas proxy ([#3105](https://github.com/zmkfirmware/zmk/issues/3105)) ([ece2ce1](https://github.com/zmkfirmware/zmk/commit/ece2ce11b8c7245fbe2b4e41ec9fa7a870632e6c))
* **split:** Properly return from command handler ([#3120](https://github.com/zmkfirmware/zmk/issues/3120)) ([d32ffb0](https://github.com/zmkfirmware/zmk/commit/d32ffb0a335ece70a9ce3dc3ce014676534ee99b))
* **split:** Use correct Kconfig for bumping TX buffers for discovery ([#3216](https://github.com/zmkfirmware/zmk/issues/3216)) ([9490391](https://github.com/zmkfirmware/zmk/commit/9490391e1e4010c83291d437b7f9a71ace244581)), closes [#3156](https://github.com/zmkfirmware/zmk/issues/3156)
* **studio:** avoid decoding buffer overflow ([#3185](https://github.com/zmkfirmware/zmk/issues/3185)) ([70ab6b2](https://github.com/zmkfirmware/zmk/commit/70ab6b243a90b556d113fcdd0c8de1ef3dccdc1e))
* **studio:** Correct `memset` usage. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **studio:** Correct usage of thread analyzer API ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **studio:** Properly serialize GATT RPC indications. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **tests:** Fix BLE test to account for Zephyr changes ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **underglow:** Remove use of removed Kconfig WS2812 symbol ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **usb:** Adjust Kconfig settings for USB. ([c06fa48](https://github.com/zmkfirmware/zmk/commit/c06fa48ce59e016105d79c20942d085314502d8d))
* **usb:** Prevent unexpected USB disconnection caused by USB SOF ([#3070](https://github.com/zmkfirmware/zmk/issues/3070)) ([118359c](https://github.com/zmkfirmware/zmk/commit/118359c83efa0758144489fd5e12cc6f5bdbad4c))
### Documentation
* Added documentation note on locking layers ([5138c6f](https://github.com/zmkfirmware/zmk/commit/5138c6fb14783b756c5a3e61581625c700f3555b))
### Code Refactoring
* **core:** Allow layer behaviors to "lock" layers on (https://github.com/zmkfirmware/zmk/pull/2717) ([5138c6f](https://github.com/zmkfirmware/zmk/commit/5138c6fb14783b756c5a3e61581625c700f3555b))
## [0.3.0](https://github.com/zmkfirmware/zmk/compare/v0.2.1...v0.3.0) (2025-08-01)
### Features
* **ble:** Add function to get profile address by index ([#2992](https://github.com/zmkfirmware/zmk/issues/2992)) ([9e905d6](https://github.com/zmkfirmware/zmk/commit/9e905d65936348824588dc3f424755353ac61186))
* **ci:** Add stale GitHub Action to automatically close stale PRs ([#2924](https://github.com/zmkfirmware/zmk/issues/2924)) ([6d7bbc8](https://github.com/zmkfirmware/zmk/commit/6d7bbc8670d175fd63e8c834feb41f80e7b52e74))
* **display:** nice!view individual profile status ([#2265](https://github.com/zmkfirmware/zmk/issues/2265)) ([d09087f](https://github.com/zmkfirmware/zmk/commit/d09087f4dc280b8fdb1d32d63b03cc10162b89ce))
* Full-Duplex Wired Split ([#2766](https://github.com/zmkfirmware/zmk/issues/2766)) ([147c340](https://github.com/zmkfirmware/zmk/commit/147c340c6e8d377304acfdd64dc86cf83ebdfef2))
* **metadata:** Add metadata to the mouse_key_press behavior ([#2950](https://github.com/zmkfirmware/zmk/issues/2950)) ([239baa4](https://github.com/zmkfirmware/zmk/commit/239baa487509ace108d36f0e5c627d61a3d95f53))
* **pointing:** Allow peripheral input processing to stop propagation ([#2844](https://github.com/zmkfirmware/zmk/issues/2844)) ([462d48b](https://github.com/zmkfirmware/zmk/commit/462d48b78edac8bedb75666699ea4fa446d2152c))
* **shield:** Add underglow for reviung5 ([#2191](https://github.com/zmkfirmware/zmk/issues/2191)) ([ad6a181](https://github.com/zmkfirmware/zmk/commit/ad6a181d7ec34fb6e31134f6bb991a9b2d0b8f78))
* **shields:** Add a physical layout for a_dux ([#3000](https://github.com/zmkfirmware/zmk/issues/3000)) ([7292df0](https://github.com/zmkfirmware/zmk/commit/7292df02d4b05d783f432f8658de22d940909fe4))
* **shields:** Add physical layouts for tester_xiao and tester_pro_micro ([#2852](https://github.com/zmkfirmware/zmk/issues/2852)) ([eb170c9](https://github.com/zmkfirmware/zmk/commit/eb170c930f56e3fb3df0b813d987abfd1dc31b9a))
* **shields:** Add tester_pro_micro layouts ([eb170c9](https://github.com/zmkfirmware/zmk/commit/eb170c930f56e3fb3df0b813d987abfd1dc31b9a))
* **shields:** Add tester_xiao layouts ([eb170c9](https://github.com/zmkfirmware/zmk/commit/eb170c930f56e3fb3df0b813d987abfd1dc31b9a))
* **split:** Add full-duplex wired split support ([147c340](https://github.com/zmkfirmware/zmk/commit/147c340c6e8d377304acfdd64dc86cf83ebdfef2))
* **split:** Runtime selection of split transport ([6b44d33](https://github.com/zmkfirmware/zmk/commit/6b44d33db2f4bad7d98e475e6f7968493b05af73))
* **split:** Runtime selection of split transport ([#2886](https://github.com/zmkfirmware/zmk/issues/2886)) ([6b44d33](https://github.com/zmkfirmware/zmk/commit/6b44d33db2f4bad7d98e475e6f7968493b05af73))
* **split:** Suspend/resume wired UART devices. ([6b44d33](https://github.com/zmkfirmware/zmk/commit/6b44d33db2f4bad7d98e475e6f7968493b05af73))
### Bug Fixes
* **behaviors:** Correct macro release state for parametrized ([1bac680](https://github.com/zmkfirmware/zmk/commit/1bac680c4fb4f07e43c01754b6f1e72dab455e50))
* **behaviors:** Correct macro release state for parametrized macros ([#2942](https://github.com/zmkfirmware/zmk/issues/2942)) ([1bac680](https://github.com/zmkfirmware/zmk/commit/1bac680c4fb4f07e43c01754b6f1e72dab455e50))
* **ble,hid:** Fix smooth scrolling over BLE ([#2998](https://github.com/zmkfirmware/zmk/issues/2998)) ([342d838](https://github.com/zmkfirmware/zmk/commit/342d83891301b1be53233a12c7723bb99cbe5ff6)), closes [#2957](https://github.com/zmkfirmware/zmk/issues/2957)
* **boards:** Disable high voltage DC-DC by default ([#2995](https://github.com/zmkfirmware/zmk/issues/2995)) ([8059e67](https://github.com/zmkfirmware/zmk/commit/8059e671b24a261939401afb5a65c4fa756adc2d)), closes [#2990](https://github.com/zmkfirmware/zmk/issues/2990)
* changed shebang to make scripts more platform independent ([#2893](https://github.com/zmkfirmware/zmk/issues/2893)) ([84772eb](https://github.com/zmkfirmware/zmk/commit/84772ebf14e5a7c67ba573a61f0a50048802c799))
* **ci:** pin tj-actions/changed-files due to compromise ([#2874](https://github.com/zmkfirmware/zmk/issues/2874)) ([4da89bd](https://github.com/zmkfirmware/zmk/commit/4da89bd99716bf6c1d7d788f3cdaec4cee7403e9))
* **combos:** Properly clean up all old candidates. ([#2928](https://github.com/zmkfirmware/zmk/issues/2928)) ([e3030bf](https://github.com/zmkfirmware/zmk/commit/e3030bfcc87b7f511b0ebe993fb1f1f06215982e))
* **combos:** Restore prompts for two deprecated Kconfigs ([#2926](https://github.com/zmkfirmware/zmk/issues/2926)) ([00ff486](https://github.com/zmkfirmware/zmk/commit/00ff48693113ed74a3345aa1ac81fdea302b3a09))
* **core:** Correctly sync BAS battery level ([#2977](https://github.com/zmkfirmware/zmk/issues/2977)) ([af96766](https://github.com/zmkfirmware/zmk/commit/af967667b0e139a963178e63028c7be341cade9e))
* **display:** Make stock battery widget depend on the right symbol ([#2953](https://github.com/zmkfirmware/zmk/issues/2953)) ([9da5d3b](https://github.com/zmkfirmware/zmk/commit/9da5d3ba82b38b74ad798a82a838d84c52220bbe))
* **docs:** Fix soft off waker configuration example ([#2960](https://github.com/zmkfirmware/zmk/issues/2960)) ([eb99b4e](https://github.com/zmkfirmware/zmk/commit/eb99b4ede06bc01674ce16217ebbad40bc11ec50))
* **docs:** remove title as alt text ([#2922](https://github.com/zmkfirmware/zmk/issues/2922)) ([d9576c5](https://github.com/zmkfirmware/zmk/commit/d9576c55346acfc8eed36709aaae28f91e0d06ad))
* Fix build with Studio and USB but not UART ([#2996](https://github.com/zmkfirmware/zmk/issues/2996)) ([cef7af4](https://github.com/zmkfirmware/zmk/commit/cef7af4408cc44c20fab93a0b2e20b3429d0a98e))
* **hid:** Fix scroll value truncation ([#2865](https://github.com/zmkfirmware/zmk/issues/2865)) ([2c0e7da](https://github.com/zmkfirmware/zmk/commit/2c0e7daced1421c34a9d417b7d3e9bccbf0ebd7f)), closes [#2864](https://github.com/zmkfirmware/zmk/issues/2864)
* **pointing:** Avoids mutex leak for default layer toggle event ([#2934](https://github.com/zmkfirmware/zmk/issues/2934)) ([461f5c8](https://github.com/zmkfirmware/zmk/commit/461f5c832fb8854d87dca54d113d306323697219))
* Properly override stack size on RP2040 ([147c340](https://github.com/zmkfirmware/zmk/commit/147c340c6e8d377304acfdd64dc86cf83ebdfef2))
* **split:** add source to battery event ([#2901](https://github.com/zmkfirmware/zmk/issues/2901)) ([6f85f48](https://github.com/zmkfirmware/zmk/commit/6f85f48b19afae04f98e9abacb36ce1425b61f78))
* **split:** Compile and run properly in wired polling mode. ([#3012](https://github.com/zmkfirmware/zmk/issues/3012)) ([2ae5185](https://github.com/zmkfirmware/zmk/commit/2ae51854192aed92af95536f79547e2928cd1bf5))
* **split:** Conditionally build all split code ([#2884](https://github.com/zmkfirmware/zmk/issues/2884)) ([5bb39ec](https://github.com/zmkfirmware/zmk/commit/5bb39ec3eae23055593350cb3689a8240028181e))
* **split:** Enable wired split by default if DTS is set ([#3010](https://github.com/zmkfirmware/zmk/issues/3010)) ([1530ae3](https://github.com/zmkfirmware/zmk/commit/1530ae36c22e3e2285e895737c74de5d960a5ae4))
* **split:** Minor wired split fixes. ([6b44d33](https://github.com/zmkfirmware/zmk/commit/6b44d33db2f4bad7d98e475e6f7968493b05af73))
* Unconditionally define HID payloads to avoid error. ([6b44d33](https://github.com/zmkfirmware/zmk/commit/6b44d33db2f4bad7d98e475e6f7968493b05af73))
## [0.2.1](https://github.com/zmkfirmware/zmk/compare/v0.2.0...v0.2.1) (2025-03-02)
### Bug Fixes
* **behaviors:** Proper comma separated device list ([#2850](https://github.com/zmkfirmware/zmk/issues/2850)) ([f20e6ea](https://github.com/zmkfirmware/zmk/commit/f20e6ea7594b49eef1e3acc017529073a0409962))
## [0.2.0](https://github.com/zmkfirmware/zmk/compare/v0.1.0...v0.2.0) (2025-03-01)
### Features
* Added `toggle-mode`, allowing toggle-on and toggle-off ([#2555](https://github.com/zmkfirmware/zmk/issues/2555)) ([4ef231f](https://github.com/zmkfirmware/zmk/commit/4ef231f4bba87151acfbd1cf3babd83b69813e45))
* added toggle mode to key and layer toggles ([4ef231f](https://github.com/zmkfirmware/zmk/commit/4ef231f4bba87151acfbd1cf3babd83b69813e45))
* **boards:** Update for mikoto board definition ([#1946](https://github.com/zmkfirmware/zmk/issues/1946)) ([b26058b](https://github.com/zmkfirmware/zmk/commit/b26058b6c7c83f8d1f095d2f9c6c3998b391a61b))
* **core:** Make physical layout key rotation optional ([#2770](https://github.com/zmkfirmware/zmk/issues/2770)) ([c367d8f](https://github.com/zmkfirmware/zmk/commit/c367d8f636f0842b414c2b58df6101761cdd676d))
* **display:** Add ability to set display on/off pin. ([#2814](https://github.com/zmkfirmware/zmk/issues/2814)) ([627e6db](https://github.com/zmkfirmware/zmk/commit/627e6dbec99211b3d7cce55904fb1c824ed87bf3))
* **display:** Add config for display update period ([#2819](https://github.com/zmkfirmware/zmk/issues/2819)) ([aa3e5dd](https://github.com/zmkfirmware/zmk/commit/aa3e5dd70fdd1b364fa9ad26f14425be613d180c))
* input processor behavior invocation ([#2714](https://github.com/zmkfirmware/zmk/issues/2714)) ([cb867f9](https://github.com/zmkfirmware/zmk/commit/cb867f92dbe4e32675c2137fc6aa914a44ecc8dc))
* **Kconfig:** Allow overriding ZMK Kconfig defaults ([#2537](https://github.com/zmkfirmware/zmk/issues/2537)) ([40925d4](https://github.com/zmkfirmware/zmk/commit/40925d48e67b3eeaeb3e848a2287ed628de9f674))
* **mouse:** Add mouse move and scroll support ([#2477](https://github.com/zmkfirmware/zmk/issues/2477)) ([6b40bfd](https://github.com/zmkfirmware/zmk/commit/6b40bfda53571f7a960ccc448aa87f29da7496ac))
* **pointing:** Add behavior input processor ([cb867f9](https://github.com/zmkfirmware/zmk/commit/cb867f92dbe4e32675c2137fc6aa914a44ecc8dc))
* **pointing:** Add pre-defined scroll scaler ([0f7c112](https://github.com/zmkfirmware/zmk/commit/0f7c11248a1ddb7c6559064c2a1e7a3c446d5d55))
* **pointing:** Add pre-defined scroll scaler and mouse scroll tests ([#2759](https://github.com/zmkfirmware/zmk/issues/2759)) ([0f7c112](https://github.com/zmkfirmware/zmk/commit/0f7c11248a1ddb7c6559064c2a1e7a3c446d5d55))
* **shields:** Add physical layout for Lotus58 ([#2753](https://github.com/zmkfirmware/zmk/issues/2753)) ([424e532](https://github.com/zmkfirmware/zmk/commit/424e53210ea16c2287abaf770ebf45be432d841a))
* **studio:** Add ortho_4x10 grid layout ([#2651](https://github.com/zmkfirmware/zmk/issues/2651)) ([7e8c542](https://github.com/zmkfirmware/zmk/commit/7e8c542c94908ac011ec7272a5f8ab10d2102632))
### Bug Fixes
* allow kscan-composite to wake up device. ([#2682](https://github.com/zmkfirmware/zmk/issues/2682)) ([a8f5ab6](https://github.com/zmkfirmware/zmk/commit/a8f5ab67b5d449a2624e2de7ddfb264da778ea6c))
* **behaviors:** Make multiple sticky keys work on same key position ([7186528](https://github.com/zmkfirmware/zmk/commit/7186528f77bf077173927c1c8506b4d434e5c371))
* **behaviors:** Make multiple sticky keys work on same key position ([#2758](https://github.com/zmkfirmware/zmk/issues/2758)) ([7186528](https://github.com/zmkfirmware/zmk/commit/7186528f77bf077173927c1c8506b4d434e5c371))
* **ble:** enforce maximum length for dynamic device name ([#2784](https://github.com/zmkfirmware/zmk/issues/2784)) ([ea267b0](https://github.com/zmkfirmware/zmk/commit/ea267b0f35f862b882ac568dde6365c3a0c85099))
* **combos:** Properly report combos len with emply block ([#2739](https://github.com/zmkfirmware/zmk/issues/2739)) ([f0a77b8](https://github.com/zmkfirmware/zmk/commit/f0a77b888ac482a863386ced08e04660ddacb026))
* **display:** Only default mono theme when 1bpp ([#2804](https://github.com/zmkfirmware/zmk/issues/2804)) ([425256b](https://github.com/zmkfirmware/zmk/commit/425256bc0de7ed08802533b170abba78ee90f546))
* **display:** POSIX lvgl fixes ([#2812](https://github.com/zmkfirmware/zmk/issues/2812)) ([4b4a8a3](https://github.com/zmkfirmware/zmk/commit/4b4a8a35f3f90f1af75cdf5d9c26b47d4b8dcabb))
* **drivers:** Proper static/const for data/config ([#2769](https://github.com/zmkfirmware/zmk/issues/2769)) ([6941abc](https://github.com/zmkfirmware/zmk/commit/6941abc2afab16502cff9c5149d8dc0fcd5112c9))
* Fix warnings in nanopb encoding code ([#2643](https://github.com/zmkfirmware/zmk/issues/2643)) ([7013158](https://github.com/zmkfirmware/zmk/commit/7013158a6715d94b34e8c471ce25bb5005f3bb49))
* Kconfig refactor now works correctly with external modules ([#2711](https://github.com/zmkfirmware/zmk/issues/2711)) ([bb48661](https://github.com/zmkfirmware/zmk/commit/bb486619a183f6df7fbb4620c80164555a22da0b))
* **Kconfig:** Added a name to EC11's trigger mode choice ([40925d4](https://github.com/zmkfirmware/zmk/commit/40925d48e67b3eeaeb3e848a2287ed628de9f674))
* **kscan:** Remove warning when keyboard is built without CONFIG_PM_DEVICE ([#2808](https://github.com/zmkfirmware/zmk/issues/2808)) ([8e065d5](https://github.com/zmkfirmware/zmk/commit/8e065d55b916481ef06ce37cddedb84cf1d15d99))
* **pointing:** Complete header rename missed in refactor ([#2702](https://github.com/zmkfirmware/zmk/issues/2702)) ([84baf92](https://github.com/zmkfirmware/zmk/commit/84baf929c9bb95f255d4bafd0e57f2ec47455fca))
* **pointing:** Temp layer threading protection. ([#2729](https://github.com/zmkfirmware/zmk/issues/2729)) ([1e3e62c](https://github.com/zmkfirmware/zmk/commit/1e3e62c13d0666d98831ee302ae2fb17e68196c9))
* **studio:** Allow adding layers after a layer move ([#2748](https://github.com/zmkfirmware/zmk/issues/2748)) ([36508c2](https://github.com/zmkfirmware/zmk/commit/36508c27fddfb84d912e0122e313ad3904ceb946))
* **studio:** Properly return complete keymap from RPC ([#2696](https://github.com/zmkfirmware/zmk/issues/2696)) ([0820991](https://github.com/zmkfirmware/zmk/commit/0820991901a95ab7a0eb1f1cc608a631d514e26c))
## 0.1.0 (2024-11-29)
### Features
* **boards:** Add glove80 nexus node for extension GPIO. ([#2594](https://github.com/zmkfirmware/zmk/issues/2594)) ([fb359f5](https://github.com/zmkfirmware/zmk/commit/fb359f576619940164ca2e770b49b7b34f13428e))
* **boards:** add nrf52833-nosd snippet ([63af296](https://github.com/zmkfirmware/zmk/commit/63af296b6efd8d677d584f372c9da9a4fedaa496))
* **boards:** add nrf52840-nosd snippet ([4438b7b](https://github.com/zmkfirmware/zmk/commit/4438b7b835bfd1d4e89cdd955a4ab0fd2e2ae3bf))
* **ci:** Add release-please automation with VERSION ([#2622](https://github.com/zmkfirmware/zmk/issues/2622)) ([ffa485c](https://github.com/zmkfirmware/zmk/commit/ffa485c11b48444acf3adf1e3c1cb3eed16fad94))
* **drivers:** Support init high/low in 595 driver ([888c0d9](https://github.com/zmkfirmware/zmk/commit/888c0d966cd52f3ab5145992f61b14d6262c1951))
### Bug Fixes
* **boards:** Disable uart serial node in Xiao BLE by default ([#2672](https://github.com/zmkfirmware/zmk/issues/2672)) ([230b860](https://github.com/zmkfirmware/zmk/commit/230b860f31063774c3bcc19afb6f92479462de24))
* **boards:** Fix typo in BT75 metadata ([c9553c3](https://github.com/zmkfirmware/zmk/commit/c9553c31e3a3f39964391b006492995b5bb09c39))
* Disable display feature for settings_reset ([b0f5789](https://github.com/zmkfirmware/zmk/commit/b0f5789b128f0f5599341398898fdb0e0407b2d3))
* Fix inconsistent column offset property ([c7473fc](https://github.com/zmkfirmware/zmk/commit/c7473fc32557d2d384ab78d3acf51a05488f0214))
* include a header file for RC macros ([#2649](https://github.com/zmkfirmware/zmk/issues/2649)) ([f8eff2f](https://github.com/zmkfirmware/zmk/commit/f8eff2fe34609c91211c25113f9d7db09f7d1689))
* **studio:** Improved error message when keyboard is missing a physical layout. ([fed66a9](https://github.com/zmkfirmware/zmk/commit/fed66a92d000f4c8e0019d9ccdd167271324e8e9))

View File

@@ -86,6 +86,12 @@ documentation to areas not currently covered are greatly appreciated.
ZMK uses `prettier` to format documentation files. You can run prettier with `npm run prettier:format`.
You can setup git to run prettier automatically when you commit by installing the pre-commit hooks: `pip3 install pre-commit`, `pre-commit install`.
### Linting
This repository utilizes ESLint for code linting to ensure consistent code style and identify potential errors or bugs early in the development process.
You can run ESLint with `npm run lint` to verify your changes.
## Code Contributions
### Development Setup

View File

@@ -1,3 +1,4 @@
module.exports = {
endOfLine: "auto",
trailingComma: "es5",
};

View File

@@ -2,47 +2,55 @@ cmake_minimum_required(VERSION 3.13.1)
set(CONFIG_APPLICATION_DEFINED_SYSCALL true)
# Add our custom Zephyr module for drivers w/ syscalls, etc.
list(APPEND DTS_ROOT ${CMAKE_SOURCE_DIR}/drivers/zephyr)
set(ZephyrBuildConfiguration_ROOT ${CMAKE_SOURCE_DIR}/cmake)
list(APPEND ZEPHYR_EXTRA_MODULES
${CMAKE_CURRENT_SOURCE_DIR}/module
)
set(ZEPHYR_BOARD_ALIASES "boards/aliases.cmake")
set(ZEPHYR_EXTRA_MODULES "${ZMK_EXTRA_MODULES};${CMAKE_CURRENT_SOURCE_DIR}/module;${CMAKE_CURRENT_SOURCE_DIR}/keymap-module")
# Find Zephyr. This also loads Zephyr's build system.
find_package(Zephyr REQUIRED HINTS ../zephyr)
project(zmk)
zephyr_linker_sources(SECTIONS include/linker/zmk-behaviors.ld)
zephyr_linker_sources(RODATA include/linker/zmk-events.ld)
if(CONFIG_ZMK_BEHAVIOR_LOCAL_IDS)
zephyr_linker_sources(DATA_SECTIONS include/linker/zmk-behavior-local-id-map.ld)
endif()
zephyr_syscall_header(${APPLICATION_SOURCE_DIR}/include/drivers/behavior.h)
zephyr_syscall_header(${APPLICATION_SOURCE_DIR}/include/drivers/input_processor.h)
zephyr_syscall_header(${APPLICATION_SOURCE_DIR}/include/drivers/ext_power.h)
# Add your source file to the "app" target. This must come after
# find_package(Zephyr) which defines the target.
target_include_directories(app PRIVATE include)
add_subdirectory(src/boot)
target_sources(app PRIVATE src/stdlib.c)
target_sources(app PRIVATE src/activity.c)
target_sources(app PRIVATE src/kscan.c)
target_sources(app PRIVATE src/behavior.c)
target_sources_ifdef(CONFIG_ZMK_KSCAN_SIDEBAND_BEHAVIORS app PRIVATE src/kscan_sideband_behaviors.c)
target_sources(app PRIVATE src/matrix_transform.c)
target_sources(app PRIVATE src/physical_layouts.c)
target_sources(app PRIVATE src/sensors.c)
target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/wpm.c)
target_sources(app PRIVATE src/event_manager.c)
target_sources_ifdef(CONFIG_ZMK_PM app PRIVATE src/pm.c)
target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/ext_power_generic.c)
target_sources_ifdef(CONFIG_ZMK_GPIO_KEY_WAKEUP_TRIGGER app PRIVATE src/gpio_key_wakeup_trigger.c)
target_sources(app PRIVATE src/events/activity_state_changed.c)
target_sources(app PRIVATE src/events/position_state_changed.c)
target_sources(app PRIVATE src/events/sensor_event.c)
target_sources(app PRIVATE src/events/mouse_button_state_changed.c)
target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/events/wpm_state_changed.c)
target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/events/usb_conn_state_changed.c)
target_sources(app PRIVATE src/behaviors/behavior_reset.c)
target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SOFT_OFF app PRIVATE src/behaviors/behavior_soft_off.c)
add_subdirectory_ifdef(CONFIG_ZMK_POINTING src/pointing/)
if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
target_sources(app PRIVATE src/hid.c)
target_sources_ifdef(CONFIG_ZMK_MOUSE app PRIVATE src/mouse.c)
target_sources(app PRIVATE src/behaviors/behavior_key_press.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_TOGGLE app PRIVATE src/behaviors/behavior_key_toggle.c)
target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c)
target_sources(app PRIVATE src/behaviors/behavior_sticky_key.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_HOLD_TAP app PRIVATE src/behaviors/behavior_hold_tap.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_STICKY_KEY app PRIVATE src/behaviors/behavior_sticky_key.c)
target_sources(app PRIVATE src/behaviors/behavior_caps_word.c)
target_sources(app PRIVATE src/behaviors/behavior_key_repeat.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MACRO app PRIVATE src/behaviors/behavior_macro.c)
@@ -57,8 +65,10 @@ if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR app PRIVATE src/behaviors/behavior_sensor_rotate_var.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON app PRIVATE src/behaviors/behavior_sensor_rotate_common.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MOUSE_KEY_PRESS app PRIVATE src/behaviors/behavior_mouse_key_press.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_STUDIO_UNLOCK app PRIVATE src/behaviors/behavior_studio_unlock.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_INPUT_TWO_AXIS app PRIVATE src/behaviors/behavior_input_two_axis.c)
target_sources(app PRIVATE src/combo.c)
target_sources(app PRIVATE src/behaviors/behavior_tap_dance.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TAP_DANCE app PRIVATE src/behaviors/behavior_tap_dance.c)
target_sources(app PRIVATE src/behavior_queue.c)
target_sources(app PRIVATE src/conditional_layer.c)
target_sources(app PRIVATE src/endpoints.c)
@@ -87,15 +97,39 @@ target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/battery.c)
target_sources_ifdef(CONFIG_ZMK_HID_INDICATORS app PRIVATE src/events/hid_indicators_changed.c)
target_sources_ifdef(CONFIG_ZMK_SPLIT app PRIVATE src/events/split_peripheral_status_changed.c)
add_subdirectory(src/split)
add_subdirectory_ifdef(CONFIG_ZMK_SPLIT src/split)
target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/usb.c)
target_sources_ifdef(CONFIG_ZMK_USB app PRIVATE src/usb_hid.c)
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c)
target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/backlight.c)
target_sources(app PRIVATE src/workqueue.c)
target_sources_ifdef(CONFIG_ZMK_LOW_PRIORITY_WORK_QUEUE app PRIVATE src/workqueue.c)
target_sources(app PRIVATE src/main.c)
add_subdirectory(src/display/)
add_subdirectory_ifdef(CONFIG_SETTINGS src/settings/)
if (CONFIG_ZMK_STUDIO_RPC)
# For some reason this is failing if run from a different sub-file.
list(APPEND CMAKE_MODULE_PATH ${ZEPHYR_BASE}/modules/nanopb)
include(nanopb)
# Turn off the default nanopb behavior
set(NANOPB_GENERATE_CPP_STANDALONE OFF)
nanopb_generate_cpp(proto_srcs proto_hdrs RELPATH ${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/studio.proto
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/meta.proto
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/core.proto
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/behaviors.proto
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/keymap.proto
)
target_include_directories(app PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
target_sources(app PRIVATE ${proto_srcs} ${proto_hdrs})
add_subdirectory(src/studio)
endif()
zephyr_cc_option(-Wfatal-errors)

View File

@@ -5,6 +5,17 @@ mainmenu "ZMK Firmware"
menu "ZMK"
config ZMK_BOARD_COMPAT
bool
help
Hidden symbol used to hint that a board has been specifically
set up with various ZMK requirements in mind, e.g. settings
storage, bootloader integration, etc.
Failure to set this will warn users they may want to verify they
used a ZMK variant of an upstream board, or are using a board
properly migrated to a newer ZMK version.
menu "Basic Keyboard Setup"
config ZMK_KEYBOARD_NAME
@@ -31,12 +42,23 @@ config BT_DIS_PNP_VID
config BT_DIS_PNP_PID
default 0x615E
config BT_DIS_MODEL
config BT_DIS_MODEL_NUMBER_STR
default ZMK_KEYBOARD_NAME
config BT_DIS_MANUF
config BT_DIS_MANUF_NAME_STR
default "ZMK Project"
# Hardware specific overrides
if SOC_SERIES_NRF52X
# Default on for our usage until boards implement retained bootmode.
config NRF_STORE_REBOOT_TYPE_GPREGRET
bool
default y
endif # SOC_SERIES_NRF52X
menu "HID"
choice ZMK_HID_REPORT_TYPE
@@ -53,22 +75,28 @@ config ZMK_HID_REPORT_TYPE_NKRO
help
Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard
from working with some BIOS/UEFI versions that only support "boot keyboard" support.
This option also prevents using some infrequently used higher range HID usages.
This option also prevents using some infrequently used higher range HID usages (notably F13-F24 and INTL1-9)
These usages can be re enabled with ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT.
endchoice
config ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT
bool "Enable extended NKRO reporting"
depends on ZMK_HID_REPORT_TYPE_NKRO
help
Enables higher usage range for NKRO (F13-F24 and INTL1-9).
Please note this is not compatible with Android currently and you will get no input
if ZMK_HID_REPORT_TYPE_HKRO
config ZMK_HID_KEYBOARD_REPORT_SIZE
int "# Keyboard Keys Reportable"
default 6
endif
endif # ZMK_HID_REPORT_TYPE_HKRO
config ZMK_HID_CONSUMER_REPORT_SIZE
int "# Consumer Keys Reportable"
default 6
choice ZMK_HID_CONSUMER_REPORT_USAGES
prompt "HID Report Type"
@@ -93,6 +121,12 @@ config ZMK_HID_INDICATORS
Enable HID indicators, used for detecting state of Caps/Scroll/Num Lock,
Kata, and Compose.
config ZMK_HID_SEPARATE_MOD_RELEASE_REPORT
bool "Release Modifiers Separately"
help
Send a separate release event for the modifiers, to make sure the release
of the modifier doesn't get recognized before the actual key's release event.
menu "Output Types"
config ZMK_USB
@@ -106,7 +140,9 @@ config ZMK_USB_BOOT
bool "USB Boot Protocol Support"
depends on ZMK_USB
select USB_HID_BOOT_PROTOCOL
select USB_DEVICE_SOF
config USB_DEVICE_INITIALIZE_AT_BOOT
default n
if ZMK_USB
@@ -116,8 +152,7 @@ config USB_NUMOF_EP_WRITE_RETRIES
config USB_HID_POLL_INTERVAL_MS
default 1
#ZMK_USB
endif
endif # ZMK_USB
menuconfig ZMK_BLE
bool "BLE (HID over GATT)"
@@ -127,24 +162,41 @@ menuconfig ZMK_BLE
select BT_SMP_APP_PAIRING_ACCEPT
select BT_PERIPHERAL
select BT_DIS
select BT_SETTINGS
select SETTINGS
imply ZMK_BATTERY_REPORTING
imply BT_DEVICE_NAME_DYNAMIC
imply BT_SETTINGS if !ARCH_POSIX
imply SETTINGS if !ARCH_POSIX
imply ZMK_BATTERY_REPORTING if !ARCH_POSIX
if ZMK_BLE
# BT_TINYCRYPT_ECC is required for BT_SMP_SC_PAIR_ONLY when using HCI
config BT_TINYCRYPT_ECC
default y if BT_HCI && !BT_CTLR
config ZMK_BLE_EXPERIMENTAL_CONN
bool "Experimental BLE connection changes"
help
Enables settings that are planned to be default in future versions of ZMK
to improve connection stability.
choice BT_LL_SW_LLCP_IMPL
default BT_LL_SW_LLCP_LEGACY
config ZMK_BLE_EXPERIMENTAL_SEC
bool "Experimental BLE security changes"
imply BT_SMP_ALLOW_UNAUTH_OVERWRITE
help
Enables security settings that are planned to be officially supported in the future.
endchoice
config ZMK_BLE_EXPERIMENTAL_FEATURES
bool "Experimental BLE connection and security settings/features"
select ZMK_BLE_EXPERIMENTAL_CONN
select ZMK_BLE_EXPERIMENTAL_SEC
help
Enables experimental connection changes and security features.
config SYSTEM_WORKQUEUE_STACK_SIZE
default 4096 if SOC_RP2040
default 2048
config ZMK_BLE_PASSKEY_ENTRY
bool "Require passkey entry on the keyboard to complete pairing"
select RING_BUFFER
config BT_SMP_ALLOW_UNAUTH_OVERWRITE
imply ZMK_BLE_PASSKEY_ENTRY
config BT_CTLR_PHY_2M
default n if ZMK_BLE_EXPERIMENTAL_CONN
config ZMK_BLE_THREAD_STACK_SIZE
int "BLE notify thread stack size"
@@ -168,22 +220,13 @@ config ZMK_BLE_MOUSE_REPORT_QUEUE_SIZE
config ZMK_BLE_CLEAR_BONDS_ON_START
bool "Configuration that clears all bond information from the keyboard on startup."
default n
# HID GATT notifications sent this way are *not* picked up by Linux, and possibly others.
config BT_GATT_NOTIFY_MULTIPLE
default n
config BT_GATT_AUTO_SEC_REQ
default n
config BT_DEVICE_APPEARANCE
default 961
config ZMK_BLE_PASSKEY_ENTRY
bool "Require passkey entry on the keyboard to complete pairing"
default n
select RING_BUFFER
default (ZMK_SPLIT_BLE && !ZMK_SPLIT_ROLE_CENTRAL)
config BT_PERIPHERAL_PREF_MIN_INT
default 6
@@ -197,91 +240,99 @@ config BT_PERIPHERAL_PREF_LATENCY
config BT_PERIPHERAL_PREF_TIMEOUT
default 400
#ZMK_BLE
endif
# The device name should be 16 characters or less so it fits within the
# advertising data.
config BT_DEVICE_NAME_MAX
default 16
#Output Types
endmenu
endif # ZMK_BLE
# HID
endmenu
endmenu # Output Types
endmenu # HID
rsource "src/split/Kconfig"
#Basic Keyboard Setup
endmenu
endmenu # Basic Keyboard Setup
menu "Keymaps"
config ZMK_KEYMAP_LAYER_REORDERING
bool "Layer Reordering Support"
config ZMK_KEYMAP_SETTINGS_STORAGE
bool "Settings Save/Load"
depends on SETTINGS
depends on ZMK_BEHAVIOR_LOCAL_IDS
if ZMK_KEYMAP_SETTINGS_STORAGE
config ZMK_KEYMAP_LAYER_NAME_MAX_LEN
int "Max Layer Name Length"
default 20
endif # ZMK_KEYMAP_SETTINGS_STORAGE
endmenu # Keymaps
rsource "src/studio/Kconfig"
menu "Display/LED Options"
rsource "src/display/Kconfig"
menuconfig ZMK_RGB_UNDERGLOW
bool "RGB Adressable LED Underglow"
bool "RGB Addressable LED Underglow"
select LED_STRIP
select ZMK_LOW_PRIORITY_WORK_QUEUE
if ZMK_RGB_UNDERGLOW
# This default value cuts down on tons of excess .conf files, if you're using GPIO, manually disable this
config SPI
default y
config ZMK_RGB_UNDERGLOW_EXT_POWER
bool "RGB underglow toggling also controls external power"
default y
config ZMK_RGB_UNDERGLOW_BRT_MIN
int "RGB underglow minimum brightness in percent"
range 0 100
default 0
config ZMK_RGB_UNDERGLOW_BRT_MAX
int "RGB underglow maximum brightness in percent"
range ZMK_RGB_UNDERGLOW_BRT_MIN 100
default 100
config ZMK_RGB_UNDERGLOW_HUE_STEP
int "RGB underglow hue step in degrees"
range 0 359
default 10
config ZMK_RGB_UNDERGLOW_SAT_STEP
int "RGB underglow saturation step in percent"
range 0 100
default 10
config ZMK_RGB_UNDERGLOW_BRT_STEP
int "RGB underglow brightness step in percent"
range 0 100
default 10
config ZMK_RGB_UNDERGLOW_HUE_START
int "RGB underglow start hue value in degrees"
range 0 359
default 0
config ZMK_RGB_UNDERGLOW_SAT_START
int "RGB underglow start saturations value in percent"
range 0 100
default 100
config ZMK_RGB_UNDERGLOW_BRT_START
int "RGB underglow start brightness value in percent"
range ZMK_RGB_UNDERGLOW_BRT_MIN ZMK_RGB_UNDERGLOW_BRT_MAX
default ZMK_RGB_UNDERGLOW_BRT_MAX
config ZMK_RGB_UNDERGLOW_SPD_START
int "RGB underglow start animation speed value"
range 1 5
default 3
config ZMK_RGB_UNDERGLOW_EFF_START
int "RGB underglow start effect int value related to the effect enum list"
range 0 3
default 0
config ZMK_RGB_UNDERGLOW_ON_START
bool "RGB underglow starts on by default"
default y
config ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE
bool "Turn off RGB underglow when keyboard goes into idle state"
@@ -290,8 +341,7 @@ config ZMK_RGB_UNDERGLOW_AUTO_OFF_USB
bool "Turn off RGB underglow when USB is disconnected"
depends on USB_DEVICE_STACK
#ZMK_RGB_UNDERGLOW
endif
endif # ZMK_RGB_UNDERGLOW
menuconfig ZMK_BACKLIGHT
bool "LED backlight"
@@ -302,16 +352,13 @@ if ZMK_BACKLIGHT
config ZMK_BACKLIGHT_BRT_STEP
int "Brightness step in percent"
range 1 100
default 20
config ZMK_BACKLIGHT_BRT_START
int "Default brightness in percent"
range 1 100
default 40
config ZMK_BACKLIGHT_ON_START
bool "Default backlight state"
default y
config ZMK_BACKLIGHT_AUTO_OFF_IDLE
bool "Turn off backlight when keyboard goes into idle state"
@@ -319,35 +366,44 @@ config ZMK_BACKLIGHT_AUTO_OFF_IDLE
config ZMK_BACKLIGHT_AUTO_OFF_USB
bool "Turn off backlight when USB is disconnected"
#ZMK_BACKLIGHT
endif
endif # ZMK_BACKLIGHT
#Display/LED Options
endmenu
endmenu # Display/LED Options
menu "Mouse Options"
config ZMK_MOUSE
bool "Enable ZMK mouse emulation"
default n
#Mouse Options
endmenu
rsource "src/pointing/Kconfig"
menu "Power Management"
config ZMK_BATTERY_REPORTING
bool "Battery level detection/reporting"
default n
select SENSOR
select ZMK_LOW_PRIORITY_WORK_QUEUE
imply BT_BAS if ZMK_BLE
if ZMK_BATTERY_REPORTING
choice ZMK_BATTERY_REPORTING_FETCH_MODE
prompt "Battery Reporting Fetch Mode"
config ZMK_BATTERY_REPORTING_FETCH_MODE_STATE_OF_CHARGE
bool "State of charge"
config ZMK_BATTERY_REPORTING_FETCH_MODE_LITHIUM_VOLTAGE
bool "Lithium Voltage"
endchoice
endif # ZMK_BATTERY_REPORTING
config ZMK_IDLE_TIMEOUT
int "Milliseconds of inactivity before entering idle state (OLED shutoff, etc)"
default 30000
config ZMK_SLEEP
bool "Enable deep sleep support"
depends on HAS_POWEROFF
select POWEROFF
select ZMK_PM_DEVICE_SUSPEND_RESUME
imply USB
if ZMK_SLEEP
@@ -359,14 +415,32 @@ config ZMK_IDLE_SLEEP_TIMEOUT
int "Milliseconds of inactivity before entering deep sleep"
default 900000
#ZMK_SLEEP
endif
endif # ZMK_SLEEP
config ZMK_EXT_POWER
bool "Enable support to control external power output"
default y
#Power Management
config ZMK_PM
bool
config ZMK_PM_DEVICE_SUSPEND_RESUME
bool
select ZMK_PM
config ZMK_PM_SOFT_OFF
bool "Soft-off support"
depends on HAS_POWEROFF
select ZMK_PM
select PM_DEVICE
select ZMK_PM_DEVICE_SUSPEND_RESUME
select POWEROFF
config ZMK_GPIO_KEY_WAKEUP_TRIGGER
bool "Hardware supported wakeup (GPIO)"
default y
depends on DT_HAS_ZMK_GPIO_KEY_WAKEUP_TRIGGER_ENABLED && ZMK_PM_SOFT_OFF
# Power Management
endmenu
menu "Combo options"
@@ -376,14 +450,18 @@ config ZMK_COMBO_MAX_PRESSED_COMBOS
default 4
config ZMK_COMBO_MAX_COMBOS_PER_KEY
int "Maximum number of combos per key"
default 5
int "Deprecated: Max combos per key"
default 0
help
Deprecated: Storage for combos is now determined automatically
config ZMK_COMBO_MAX_KEYS_PER_COMBO
int "Maximum number of keys per combo"
default 4
int "Deprecated: Max keys per combo"
default 0
help
Deprecated: This is now auto-calculated based on `key-positions` in devicetree
#Combo options
# Combo options
endmenu
menu "Behavior Options"
@@ -406,16 +484,21 @@ endmenu
menu "Advanced"
rsource "src/boot/Kconfig"
menu "Initialization Priorities"
if USB_DEVICE_STACK
config ZMK_USB_INIT_PRIORITY
int "USB Init Priority"
default 50
default 96
#USB
endif
config ZMK_USB_HID_INIT_PRIORITY
int "USB HID Init Priority"
default 95
endif # USB
if ZMK_BLE || ZMK_SPLIT_BLE
@@ -423,11 +506,13 @@ config ZMK_BLE_INIT_PRIORITY
int "BLE Init Priority"
default 50
#ZMK_BLE || ZMK_SPLIT_BLE
endif
endif # ZMK_BLE || ZMK_SPLIT_BLE
#Initialization Priorities
endmenu
endmenu # Initialization Priorities
config ZMK_PHYSICAL_LAYOUT_KEY_ROTATION
bool "Support rotation of keys in physical layouts"
default y
menuconfig ZMK_KSCAN
bool "ZMK KScan Integration"
@@ -442,6 +527,21 @@ config ZMK_KSCAN_EVENT_QUEUE_SIZE
endif # ZMK_KSCAN
config ZMK_KSCAN_SIDEBAND_BEHAVIORS
bool
default y
depends on DT_HAS_ZMK_KSCAN_SIDEBAND_BEHAVIORS_ENABLED
select KSCAN
if ZMK_KSCAN_SIDEBAND_BEHAVIORS
config ZMK_KSCAN_SIDEBAND_BEHAVIORS_INIT_PRIORITY
int "Keyboard scan sideband behaviors driver init priority"
# The default kscan init priority is 90, so be sure we are initialized later.
default 95
endif # ZMK_KSCAN_SIDEBAND_BEHAVIORS
menu "Logging"
config ZMK_LOGGING_MINIMAL
@@ -486,8 +586,7 @@ config USB_CDC_ACM_RINGBUF_SIZE
config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
default 1000
#ZMK_USB_LOGGING
endif
endif # ZMK_USB_LOGGING
config ZMK_RTT_LOGGING
bool "Enable RTT logging to help debug"
@@ -503,8 +602,7 @@ if ZMK_RTT_LOGGING
config SEGGER_RTT_BUFFER_SIZE_UP
default 8192
#ZMK_RTT_LOGGING
endif
endif # ZMK_RTT_LOGGING
if ZMK_USB_LOGGING || ZMK_RTT_LOGGING
@@ -514,25 +612,40 @@ config LOG_BUFFER_SIZE
config LOG_PROCESS_THREAD_SLEEP_MS
default 100
#ZMK_USB_LOGGING || ZMK_RTT_LOGGING
endif
endif # ZMK_USB_LOGGING || ZMK_RTT_LOGGING
#Logging
endmenu
endmenu # Logging
if SETTINGS
config ZMK_SETTINGS_RESET_ON_START
bool "Delete all persistent settings when the keyboard boots"
if ZMK_SETTINGS_RESET_ON_START
config ZMK_SETTINGS_RESET_ON_START_INIT_PRIORITY
int "Settings Reset ON Start Initialization Priority"
default 60
help
Initialization priority for the settings reset on start. Must be lower priority/
higher value than FLASH_INIT_PRIORITY if using the NVS/Flash settings backend.
endif # ZMK_SETTINGS_RESET_ON_START
config ZMK_SETTINGS_SAVE_DEBOUNCE
int "Milliseconds to debounce settings saves"
default 60000
#SETTINGS
endif
endif # SETTINGS
config ZMK_BATTERY_REPORT_INTERVAL
depends on ZMK_BATTERY_REPORTING
int "Battery level report interval in seconds"
default 60
config ZMK_LOW_PRIORITY_WORK_QUEUE
bool "Work queue for low priority items"
if ZMK_LOW_PRIORITY_WORK_QUEUE
config ZMK_LOW_PRIORITY_THREAD_STACK_SIZE
int "Low priority thread stack size"
@@ -542,14 +655,18 @@ config ZMK_LOW_PRIORITY_THREAD_PRIORITY
int "Low priority thread priority"
default 10
#Advanced
endmenu
endif # ZMK_LOW_PRIORITY_WORK_QUEUE
#ZMK
endmenu
endmenu # Advanced
config HEAP_MEM_POOL_SIZE
default 8192
endmenu # ZMK
if SOC_FAMILY_NORDIC_NRF
config NRF_SOC_VALIDATE_HEADERS_DISABLED
default y
endif
config KERNEL_BIN_NAME
default "zmk"
@@ -560,9 +677,11 @@ config REBOOT
config USB_DEVICE_STACK
default y if HAS_HW_NRF_USBD
config FPU
default CPU_HAS_FPU
config ZMK_WPM
bool "Calculate WPM"
default n
config ZMK_KEYMAP_SENSORS
bool "Enable Keymap Sensors support"
@@ -583,21 +702,24 @@ config ZMK_KEYMAP_SENSORS_DEFAULT_TRIGGERS_PER_ROTATION
endif # ZMK_KEYMAP_SENSORS
choice CBPRINTF_IMPLEMENTATION
default CBPRINTF_NANO
endchoice
module = ZMK
module-str = zmk
source "subsys/logging/Kconfig.template.log_config"
# This loads ZMK's internal board and shield Kconfigs
rsource "boards/Kconfig"
rsource "boards/shields/*/Kconfig.defconfig"
rsource "boards/shields/*/Kconfig.shield"
# This loads custom shields defconfigs (from BOARD_ROOT)
# Duplicated from Kconfig.zephyr
osource "$(KCONFIG_BINARY_DIR)/Kconfig.shield.defconfig"
# This loads board and shield Kconfigs found under zmk-config/config/
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.defconfig"
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.shield"
# This loads ZMK's sensible defaults
rsource "Kconfig.defaults"
source "Kconfig.zephyr"

View File

@@ -1,6 +1,66 @@
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: MIT
config ZMK_BEHAVIOR_METADATA
bool "Metadata"
help
Enabling this option adds APIs for documenting and fetching
metadata describing a behaviors name, and supported parameters.
config ZMK_BEHAVIOR_LOCAL_IDS
bool "Local IDs"
if ZMK_BEHAVIOR_LOCAL_IDS
config ZMK_BEHAVIOR_LOCAL_IDS_IN_BINDINGS
bool "Track in behavior bindings"
choice ZMK_BEHAVIOR_LOCAL_ID_TYPE
prompt "Local ID Type"
config ZMK_BEHAVIOR_LOCAL_ID_TYPE_SETTINGS_TABLE
bool "Settings Table"
depends on SETTINGS
select ZMK_BEHAVIOR_LOCAL_IDS_IN_BINDINGS
help
Use persistent entries in the settings subsystem to identify
behaviors by local ID, which uses the device name to generate
a new settings entry tying a presistant local ID to that name.
This guarantees stable, colllision-free local IDs at the expense
of settings storage used.
config ZMK_BEHAVIOR_LOCAL_ID_TYPE_CRC16
bool "CRC16 Hash"
select CRC
help
Use the CRC16-ANSI hash of behavior device names to generate
stable behavior local IDs. This saves on settings storage at
the expense of (highly unlikely) risk of collisions.
endchoice
endif
config ZMK_BEHAVIOR_HOLD_TAP
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_HOLD_TAP_ENABLED
if ZMK_BEHAVIOR_HOLD_TAP
config ZMK_BEHAVIOR_HOLD_TAP_MAX_HELD
int "Hold Tap Max Held"
help
Max number of simultaneously held hold-taps
config ZMK_BEHAVIOR_HOLD_TAP_MAX_CAPTURED_EVENTS
int "Hold Tap Max Captured Events"
help
Max number of captured system events while waiting to resolve hold taps
endif
config ZMK_BEHAVIOR_KEY_TOGGLE
bool
default y
@@ -9,12 +69,49 @@ config ZMK_BEHAVIOR_KEY_TOGGLE
config ZMK_BEHAVIOR_MOUSE_KEY_PRESS
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_MOUSE_KEY_PRESS_ENABLED
imply ZMK_MOUSE
depends on DT_HAS_ZMK_BEHAVIOR_MOUSE_KEY_PRESS_ENABLED && ZMK_POINTING
config ZMK_BEHAVIOR_STICKY_KEY
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_STICKY_KEY_ENABLED
if ZMK_BEHAVIOR_STICKY_KEY
config ZMK_BEHAVIOR_STICKY_KEY_MAX_HELD
int "Sticky Key Max Held"
help
Max number of simultaneously held sticky keys
endif
config ZMK_BEHAVIOR_SOFT_OFF
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_SOFT_OFF_ENABLED && ZMK_PM_SOFT_OFF
config ZMK_BEHAVIOR_TAP_DANCE
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_TAP_DANCE_ENABLED
if ZMK_BEHAVIOR_TAP_DANCE
config ZMK_BEHAVIOR_TAP_DANCE_MAX_HELD
int "Tap-Dance Max Held"
help
Max number of simultaneously held taps-dances
endif
config ZMK_BEHAVIOR_INPUT_TWO_AXIS
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_INPUT_TWO_AXIS_ENABLED && ZMK_POINTING
config ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
bool
default n
config ZMK_BEHAVIOR_SENSOR_ROTATE
bool
@@ -28,7 +125,12 @@ config ZMK_BEHAVIOR_SENSOR_ROTATE_VAR
depends on DT_HAS_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR_ENABLED
select ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
config ZMK_BEHAVIOR_STUDIO_UNLOCK
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_STUDIO_UNLOCK_ENABLED && ZMK_STUDIO
config ZMK_BEHAVIOR_MACRO
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED

118
app/Kconfig.defaults Normal file
View File

@@ -0,0 +1,118 @@
# Copyright (c) 2024 The ZMK Contributors
# SPDX-License-Identifier: MIT
config SYSTEM_WORKQUEUE_STACK_SIZE
default 3072 if ZMK_DISPLAY
default 2048
# Basic
config BT_DEVICE_APPEARANCE
default 961
# HID
if ZMK_HID_REPORT_TYPE_HKRO
config ZMK_HID_KEYBOARD_REPORT_SIZE
default 6
endif
config ZMK_HID_CONSUMER_REPORT_SIZE
default 6
# Behaviors
if ZMK_BEHAVIOR_HOLD_TAP
config ZMK_BEHAVIOR_HOLD_TAP_MAX_HELD
default 10
config ZMK_BEHAVIOR_HOLD_TAP_MAX_CAPTURED_EVENTS
default 40
endif
if ZMK_BEHAVIOR_STICKY_KEY
config ZMK_BEHAVIOR_STICKY_KEY_MAX_HELD
default 10
endif
if ZMK_BEHAVIOR_TAP_DANCE
config ZMK_BEHAVIOR_TAP_DANCE_MAX_HELD
default 10
endif
# Underglow
if ZMK_RGB_UNDERGLOW
# This default value cuts down on tons of excess .conf files, if you're using GPIO, manually disable this
config SPI
default y
config ZMK_RGB_UNDERGLOW_EXT_POWER
default y
config ZMK_RGB_UNDERGLOW_BRT_MIN
default 0
config ZMK_RGB_UNDERGLOW_BRT_MAX
default 100
config ZMK_RGB_UNDERGLOW_HUE_STEP
default 10
config ZMK_RGB_UNDERGLOW_SAT_STEP
default 10
config ZMK_RGB_UNDERGLOW_BRT_STEP
default 10
config ZMK_RGB_UNDERGLOW_HUE_START
default 0
config ZMK_RGB_UNDERGLOW_SAT_START
default 100
config ZMK_RGB_UNDERGLOW_BRT_START
default ZMK_RGB_UNDERGLOW_BRT_MAX
config ZMK_RGB_UNDERGLOW_SPD_START
default 3
config ZMK_RGB_UNDERGLOW_EFF_START
default 0
config ZMK_RGB_UNDERGLOW_ON_START
default y
endif # ZMK_RGB_UNDERGLOW
# Backlight
if ZMK_BACKLIGHT
config ZMK_BACKLIGHT_BRT_STEP
default 20
config ZMK_BACKLIGHT_BRT_START
default 40
config ZMK_BACKLIGHT_ON_START
default y
endif # ZMK_BACKLIGHT
# Ext_power
config ZMK_EXT_POWER
default y
# Battery
config ZMK_BATTERY_REPORT_INTERVAL
default 60
# Imports
rsource "src/boot/Kconfig.defaults"
rsource "src/split/Kconfig.defaults"

13
app/VERSION Normal file
View File

@@ -0,0 +1,13 @@
# x-release-please-start-major
VERSION_MAJOR = 0
# x-release-please-end
# x-release-please-start-minor
VERSION_MINOR = 4
# x-release-please-end
# x-release-please-start-patch
PATCHLEVEL = 0
# x-release-please-end
VERSION_TWEAK = 0

View File

@@ -1,6 +0,0 @@
CONFIG_ZMK_DISPLAY=y
CONFIG_LV_FONT_UNSCII_8=n
CONFIG_ZMK_USB=y
CONFIG_I2C=y
CONFIG_I2C_DW=y
CONFIG_LV_Z_VDB_SIZE=50

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2026 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_ADAFRUIT_KB2040
select ZMK_BOARD_COMPAT if BOARD_ADAFRUIT_KB2040_RP2040_ZMK
imply RETAINED_MEM if BOARD_ADAFRUIT_KB2040_RP2040_ZMK
imply RETENTION if BOARD_ADAFRUIT_KB2040_RP2040_ZMK
imply RETENTION_BOOT_MODE if BOARD_ADAFRUIT_KB2040_RP2040_ZMK

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: adafruit_kb2040
id: adafruit_kb2040//zmk
name: Adafruit KB2040
type: board
arch: arm

View File

@@ -4,6 +4,7 @@
* SPDX-License-Identifier: MIT
*/
#include "usb_console.dtsi"
#include <../boards/adafruit/kb2040/adafruit_kb2040.dts>
#include <arm/raspberrypi/rp2040-boot-mode-retention.dtsi>
&pro_micro_serial { status = "disabled"; };

View File

@@ -0,0 +1,23 @@
# SPDX-License-Identifier: MIT
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000
# Enable reset by default
CONFIG_RESET=y
# Enable clock control by default
CONFIG_CLOCK_CONTROL=y
# Code partition needed to target the correct flash range
CONFIG_USE_DT_CODE_PARTITION=y
# Output UF2 by default, native bootloader supports it.
CONFIG_BUILD_OUTPUT_UF2=y
# USB HID
CONFIG_ZMK_USB=y
# Bootloader Support
CONFIG_RETAINED_MEM=y
CONFIG_RETENTION=y
CONFIG_RETENTION_BOOT_MODE=y

View File

@@ -0,0 +1,5 @@
board:
extend: adafruit_kb2040
variants:
- name: zmk
qualifier: rp2040

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2026 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_ADAFRUIT_QT_PY_RP2040
select ZMK_BOARD_COMPAT if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK
imply RETAINED_MEM if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK
imply RETENTION if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK
imply RETENTION_BOOT_MODE if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: adafruit_qt_py_rp2040
id: adafruit_qt_py_rp2040//zmk
name: Adafruit QT Py RP2040
type: board
arch: arm

View File

@@ -0,0 +1,10 @@
/*
* Copyright (c) 2023 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <../boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040.dts>
#include <arm/raspberrypi/rp2040-boot-mode-retention.dtsi>
&xiao_serial { status = "disabled"; };

View File

@@ -0,0 +1,23 @@
# SPDX-License-Identifier: MIT
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000
# Enable reset by default
CONFIG_RESET=y
# Enable clock control by default
CONFIG_CLOCK_CONTROL=y
# Code partition needed to target the correct flash range
CONFIG_USE_DT_CODE_PARTITION=y
# Output UF2 by default, native bootloader supports it.
CONFIG_BUILD_OUTPUT_UF2=y
# USB HID
CONFIG_ZMK_USB=y
# Bootloader Support
CONFIG_RETAINED_MEM=y
CONFIG_RETENTION=y
CONFIG_RETENTION_BOOT_MODE=y

View File

@@ -0,0 +1,5 @@
board:
extend: adafruit_qt_py_rp2040
variants:
- name: zmk
qualifier: rp2040

View File

@@ -1,4 +0,0 @@
CONFIG_CONSOLE=n
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
CONFIG_ZMK_USB=y

View File

@@ -1,9 +0,0 @@
/*
* Copyright (c) 2023 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include "usb_console.dtsi"
&pro_micro_serial { status = "disabled"; };

View File

@@ -1,15 +1,11 @@
CONFIG_CONSOLE=n
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
CONFIG_UART_INTERRUPT_DRIVEN=n
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_FLASH_MAP=y

View File

@@ -1,4 +0,0 @@
CONFIG_CONSOLE=n
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
CONFIG_ZMK_USB=y

2
app/boards/aliases.cmake Normal file
View File

@@ -0,0 +1,2 @@
# defines board aliases for shorter names (or for renaming boards)
set(mikoto_520_BOARD_ALIAS "mikoto")

View File

@@ -1,8 +0,0 @@
# keeb.io BDN9 board configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_BDN9
bool "BDN9 rev2"
depends on SOC_STM32F072XB

View File

@@ -1,11 +0,0 @@
file_format: "1"
id: bdn9_rev2
name: BDN9 Rev2
type: board
arch: arm
features:
- keys
- encoder
outputs:
- usb
url: https://keeb.io/products/bdn9-rev-2-3x3-9-key-macropad-rotary-encoder-and-rgb

View File

@@ -1,8 +0,0 @@
# BlueMicro840 board configuration
# Copyright (c) 2020 Pete Johanson, Derek Schmell
# SPDX-License-Identifier: MIT
config BOARD_BLUEMICRO840_V1
bool "BlueMicro840_V1"
depends on SOC_NRF52840_QIAA

View File

@@ -1,9 +0,0 @@
file_format: "1"
id: boardsource_blok
name: BoardSource blok
type: board
arch: arm
outputs:
- usb
url: https://peg.software/docs/blok
exposes: [pro_micro]

View File

@@ -1,7 +0,0 @@
# SPDX-License-Identifier: MIT
config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on (BOARD_BT60_V1_HS || BOARD_BT60_V1)

View File

@@ -1,12 +0,0 @@
# BT60 board configuration
# Copyright (c) 2021 Polarity Works
# SPDX-License-Identifier: MIT
config BOARD_BT60_V1
bool "bt60"
depends on SOC_NRF52840_QIAA
config BOARD_BT60_V1_HS
bool "bt60 hotswap"
depends on SOC_NRF52840_QIAA

View File

@@ -1,135 +0,0 @@
/*
* Copyright (c) 2021 Polarity Works
*
* SPDX-License-Identifier: MIT
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include <dt-bindings/zmk/matrix_transform.h>
/ {
model = "BT60";
compatible = "polarityworks,bt60";
chosen {
zephyr,code-partition = &code_partition;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart;
zmk,battery = &vbatt;
zmk,kscan = &kscan0;
zmk,matrix_transform = &default_transform;
};
sensors: sensors {
compatible = "zmk,keymap-sensors";
sensors = <&left_encoder>;
triggers-per-rotation = <20>;
};
left_encoder: encoder_left {
compatible = "alps,ec11";
label = "LEFT_ENCODER";
a-gpios = <&gpio1 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>;
status = "okay";
};
leds {
compatible = "gpio-leds";
blue_led: led_0 {
gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
};
};
vbatt: vbatt {
compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>;
output-ohms = <2000000>;
full-ohms = <(2000000 + 806000)>;
};
};
&adc {
status = "okay";
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&i2c0 {
compatible = "nordic,nrf-twi";
sda-pin = <17>;
scl-pin = <20>;
};
&uart0 {
compatible = "nordic,nrf-uarte";
tx-pin = <6>;
rx-pin = <8>;
};
&usbd {
status = "okay";
cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
};
};
&flash0 {
/*
* For more information, see:
* http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
*/
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>;
};
code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>;
};
/*
* The flash starting at 0x000ec000 and ending at
* 0x000f3fff is reserved for use by the application.
*/
/*
* Storage partition will be used by FCB/LittleFS/NVS
* if enabled.
*/
storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>;
};
boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>;
};
};
};

View File

@@ -1,12 +0,0 @@
file_format: "1"
id: bt60_v1
name: BT60 V1 Soldered
type: board
arch: arm
features:
- keys
- encoder
outputs:
- usb
- ble
url: https://polarityworks.com

View File

@@ -1,8 +0,0 @@
# Copyright (c) 2022 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on BOARD_BT60_V2 || BOARD_BT65_V1 || BOARD_BT75_V1

View File

@@ -1,16 +0,0 @@
# CKP boards configuration
# Copyright (c) 2022 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_BT60_V2
bool "bt60_v2"
depends on SOC_NRF52840_QIAA
config BOARD_BT65_V1
bool "bt65_v1"
depends on SOC_NRF52840_QIAA
config BOARD_BT75_V1
bool "bt75_v1"
depends on SOC_NRF52840_QIAA

View File

@@ -1,28 +0,0 @@
# Copyright (c) 2022 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD
default "bt60_v2" if BOARD_BT60_V2
default "bt65_v1" if BOARD_BT65_V1
default "bt75_v1" if BOARD_BT75_V1
config ZMK_KEYBOARD_NAME
default "BT60 V2" if BOARD_BT60_V2
default "BT65" if BOARD_BT65_V1
default "BT75" if BOARD_BT75_V1
if BOARD_BT60_V2 || BOARD_BT65_V1 || BOARD_BT75_V1
if USB
config USB_NRFX
default y
config USB_DEVICE_STACK
default y
endif # USB
config BT_CTLR
default BT
endif # BOARD_BT60_V2 || BOARD_BT65_V1 || BOARD_BT75_V1

View File

@@ -1,10 +0,0 @@
#
# Copyright (c) 2022 The ZMK Contributors
# SPDX-License-Identifier: MIT
#
config BOARD_CORNEISH_ZEN_LEFT
bool
config BOARD_CORNEISH_ZEN_RIGHT
bool

View File

@@ -1,24 +0,0 @@
#
# Copyright (c) 2022 Darryl deHaan
# SPDX-License-Identifier: MIT
#
config BOARD_CORNEISH_ZEN_V1_LEFT
bool "corneish zen left v1"
depends on SOC_NRF52840_QIAA
select BOARD_CORNEISH_ZEN_LEFT
config BOARD_CORNEISH_ZEN_V1_RIGHT
bool "corneish zen right v1"
depends on SOC_NRF52840_QIAA
select BOARD_CORNEISH_ZEN_RIGHT
config BOARD_CORNEISH_ZEN_V2_LEFT
bool "corneish zen left v2"
depends on SOC_NRF52840_QIAA
select BOARD_CORNEISH_ZEN_LEFT
config BOARD_CORNEISH_ZEN_V2_RIGHT
bool "corneish zen right v2"
depends on SOC_NRF52840_QIAA
select BOARD_CORNEISH_ZEN_RIGHT

View File

@@ -1,20 +0,0 @@
identifier: corneish_zen_v2
name: Corne-ish Zen v2
type: keyboard
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- gpio
- i2c
- counter
- spi
- usb_device
- lsm303dlhc
- nvs
- can
- kscan
- ble
- adc

View File

@@ -1,15 +0,0 @@
file_format: "1"
id: corneish_zen_v2
name: Corneish Zen v2
url: https://lowprokb.ca/collections/keyboards/products/corne-ish-zen
type: board
arch: arm
features:
- keys
- display
outputs:
- usb
- ble
siblings:
- corneish_zen_v2_left
- corneish_zen_v2_right

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_DZ60RGB_REV1
bool "DZ60RGB Keyboard"
depends on SOC_STM32F303XC

View File

@@ -1,11 +0,0 @@
# DZ60RGB keyboard configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
if BOARD_DZ60RGB_REV1
config ZMK_KEYBOARD_NAME
default "DZ60RGB Rev 1"
endif # BOARD_DZ60RGB_REV1

View File

@@ -1,93 +0,0 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
/dts-v1/;
#include <st/f3/stm32f303Xc.dtsi>
#include <dt-bindings/zmk/matrix_transform.h>
/ {
model = "DZ60RGB, Rev 1";
compatible = "dz60rgb,rev1", "st,stm32f303";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart;
zmk,kscan = &kscan0;
zmk,matrix_transform = &default_transform;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <14>;
rows = <5>;
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,13)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,12) RC(1,13)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,13)
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) RC(3,13)
RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(4,8) RC(4,9) RC(4,10) RC(4,11) RC(4,13)
>;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row";
row-gpios
= <&gpioa 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpiob 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpiob 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpiob 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpiob 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
;
col-gpios
= <&gpioa 6 GPIO_ACTIVE_HIGH>
, <&gpioa 7 GPIO_ACTIVE_HIGH>
, <&gpiob 0 GPIO_ACTIVE_HIGH>
, <&gpiob 13 GPIO_ACTIVE_HIGH>
, <&gpiob 15 GPIO_ACTIVE_HIGH>
, <&gpioa 8 GPIO_ACTIVE_HIGH>
, <&gpioa 15 GPIO_ACTIVE_HIGH>
, <&gpiob 3 GPIO_ACTIVE_HIGH>
, <&gpiob 4 GPIO_ACTIVE_HIGH>
, <&gpiob 5 GPIO_ACTIVE_HIGH>
, <&gpiob 8 GPIO_ACTIVE_HIGH>
, <&gpiob 9 GPIO_ACTIVE_HIGH>
, <&gpioc 13 GPIO_ACTIVE_HIGH>
, <&gpioc 14 GPIO_ACTIVE_HIGH>
;
};
};
&usb {
status = "okay";
cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
};
};
&flash0 {
/*
* For more information, see:
* http://docs.zephyrproject.org/latest/guides/dts/index.html#flash-partitions
*/
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
/* Set 6Kb of storage at the end of the 256Kb of flash */
storage_partition: partition@3e800 {
label = "storage";
reg = <0x0003e800 0x00001800>;
};
};
};

View File

@@ -1,25 +0,0 @@
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
// ------------------------------------------------------------------------------------------
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP |
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | "|" |
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
// | SHIFT | Z | X | C | V | B | N | M | , | . | SHIFT(/) | ^ | DEL |
// | CTL | WIN | ALT | SPACE | ALT | MO(1) | <- | v | -> |
// ------------------------------------------------------------------------------------------
bindings = <
&kp ESC &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS &kp EQUAL &kp BSPC
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp BSLH
&kp CLCK &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT &kp RET
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &mt RSHFT FSLH &kp UP &kp DEL
&kp LCTRL &kp LGUI &kp LALT &kp SPACE &kp RALT &mo 1 &kp LEFT &kp DOWN &kp RIGHT
>;
};
};
};

View File

@@ -1,29 +0,0 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_STM32F3X=y
CONFIG_SOC_STM32F303XC=y
# 72MHz system clock
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000
# enable pinmux
CONFIG_PINMUX=y
# enable GPIO
CONFIG_GPIO=y
# clock configuration
CONFIG_CLOCK_CONTROL=y
# Clock configuration for Cube Clock control driver
CONFIG_CLOCK_STM32_HSE_CLOCK=8000000
CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y
# use HSE as PLL input
CONFIG_CLOCK_STM32_PLL_SRC_HSE=y
# produce 72MHz clock at PLL output
CONFIG_CLOCK_STM32_PLL_PREDIV=1
CONFIG_CLOCK_STM32_PLL_MULTIPLIER=9
CONFIG_CLOCK_STM32_AHB_PRESCALER=1
CONFIG_CLOCK_STM32_APB1_PRESCALER=2
CONFIG_CLOCK_STM32_APB2_PRESCALER=1
CONFIG_ZMK_USB=y

View File

@@ -1,8 +0,0 @@
# Ferris board configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_FERRIS
bool "Ferris rev 0.2"
depends on SOC_STM32F072XB

View File

@@ -1,8 +0,0 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on (BOARD_GLOVE80_LH || BOARD_GLOVE80_RH)

View File

@@ -1,10 +0,0 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_GLOVE80_LH
bool "Glove80 LH"
depends on SOC_NRF52840_QIAA
config BOARD_GLOVE80_RH
bool "Glove80 RH"
depends on SOC_NRF52840_QIAA

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: Apache-2.0
config BOARD_KBDFANS_TOFU65_V2
bool "KBDfans Tofu65 2.0"
depends on SOC_RP2040

View File

@@ -1,6 +0,0 @@
if(CONFIG_PINMUX)
zephyr_library()
zephyr_library_sources(pinmux.c)
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
endif()

View File

@@ -1,8 +0,0 @@
# mikoto board configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_MIKOTO_520
bool "mikoto_520"
depends on SOC_NRF52840_QIAA

View File

@@ -1,5 +0,0 @@
# SPDX-License-Identifier: MIT
board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake)
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2021 Nick Winans
# SPDX-License-Identifier: MIT
config BOARD_NICE60
bool "nice!60"
depends on SOC_NRF52840_QIAA

View File

@@ -1,7 +0,0 @@
# SPDX-License-Identifier: MIT
config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on (BOARD_NICE_NANO || BOARD_NICE_NANO_V2)

View File

@@ -1,13 +0,0 @@
# nice!nano board configuration
# Copyright (c) 2020 Pete Johanson
# SPDX-License-Identifier: MIT
config BOARD_NICE_NANO
bool "nice!nano"
depends on SOC_NRF52840_QIAA
config BOARD_NICE_NANO_V2
bool "nice!nano v2"
depends on SOC_NRF52840_QIAA

View File

@@ -1,19 +0,0 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT
if BOARD_NICE_NANO || BOARD_NICE_NANO_V2
config BOARD
default "nice_nano"
if USB_DEVICE_STACK
config USB_NRFX
default y
endif # USB_DEVICE_STACK
config BT_CTLR
default BT
endif # BOARD_NICE_NANO || BOARD_NICE_NANO_V2

View File

@@ -1,5 +0,0 @@
# SPDX-License-Identifier: MIT
board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake)
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)

View File

@@ -1,15 +0,0 @@
identifier: nice_nano_v2
name: nice!nano v2
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- adc
- usb_device
- ble
- ieee802154
- pwm
- watchdog

View File

@@ -1,10 +0,0 @@
file_format: "1"
id: nice_nano_v2
name: nice!nano v2
type: board
arch: arm
outputs:
- usb
- ble
url: https://nicekeyboards.com/nice-nano
exposes: [pro_micro]

View File

@@ -1,9 +0,0 @@
# Maker Diary nrf52840 M.2 board configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_NRF52840_M2
bool "nrf52480_m2"
depends on SOC_NRF52840_QIAA

View File

@@ -1,6 +0,0 @@
if(CONFIG_PINMUX)
zephyr_library()
zephyr_library_sources(pinmux.c)
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
endif()

View File

@@ -1,10 +0,0 @@
config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on (BOARD_NRFMICRO_11 || BOARD_NRFMICRO_11_FLIPPED || BOARD_NRFMICRO_13 || BOARD_NRFMICRO_13_52833)
config BOARD_NRFMICRO_CHARGER
bool "Enable battery charger"
default y
depends on (BOARD_NRFMICRO_13 || BOARD_NRFMICRO_13_52833)

View File

@@ -1,20 +0,0 @@
# nrfmicro board configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_NRFMICRO_11
bool "nrfmicro_11"
depends on SOC_NRF52840_QIAA
config BOARD_NRFMICRO_11_FLIPPED
bool "nrfmicro_11_flipped"
depends on SOC_NRF52840_QIAA
config BOARD_NRFMICRO_13
bool "nrfmicro_13"
depends on SOC_NRF52840_QIAA
config BOARD_NRFMICRO_13_52833
bool "nrfmicro_13_52833"
depends on SOC_NRF52833_QIAA

View File

@@ -1,31 +0,0 @@
# Electronut Labs Papyr board configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
if BOARD_NRFMICRO_11 || BOARD_NRFMICRO_11_FLIPPED || BOARD_NRFMICRO_13 || BOARD_NRFMICRO_13_52833
config BOARD
default "nrfmicro"
if USB_DEVICE_STACK
config USB_NRFX
default y
endif # USB_DEVICE_STACK
config BT_CTLR
default BT
config PINMUX
default y
if BOARD_NRFMICRO_13 || BOARD_NRFMICRO_13_52833
config BOARD_NRFMICRO_CHARGER
default y
endif # BOARD_NRFMICRO_13 || BOARD_NRFMICRO_13_52833
endif # BOARD_NRFMICRO_11 || BOARD_NRFMICRO_11_FLIPPED || BOARD_NRFMICRO_13 || BOARD_NRFMICRO_13_52833

View File

@@ -1,5 +0,0 @@
# SPDX-License-Identifier: MIT
board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake)
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)

View File

@@ -1,28 +0,0 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_NRFMICRO_11_FLIPPED=y
# Enable MPU
CONFIG_ARM_MPU=y
CONFIG_PINCTRL=y
# enable GPIO
CONFIG_GPIO=y
CONFIG_USE_DT_CODE_PARTITION=y
CONFIG_BUILD_OUTPUT_UF2=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_CLOCK_CONTROL_NRF=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=y

View File

@@ -1,10 +0,0 @@
file_format: "1"
id: nrfmicro_13_52833
name: nRFMicro 1.3/1.4 (nRF52833)
type: board
arch: arm
outputs:
- usb
- ble
url: https://github.com/joric/nrfmicro/
exposes: [pro_micro]

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2022 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_PILLBUG
bool "PillBug"
depends on SOC_NRF52840_QIAA

View File

@@ -1,8 +0,0 @@
# QMK Proton-C board configuration
# Copyright (c) 2020 Pete Johanson
# SPDX-License-Identifier: MIT
config BOARD_QMK_PROTON_C
bool "QMK Proton-C"
depends on SOC_STM32F303XC

View File

@@ -1,11 +0,0 @@
# QMK Proton-C board configuration
# Copyright (c) 2020 Pete Johanson
# SPDX-License-Identifier: MIT
if BOARD_QMK_PROTON_C
config BOARD
default "proton_c"
endif # BOARD_QMK_PROTON_C

View File

@@ -1,6 +0,0 @@
if(CONFIG_PINMUX)
zephyr_library()
zephyr_library_sources(pinmux.c)
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
endif()

View File

@@ -1,8 +0,0 @@
# Puchi-BLE board configuration
# Copyright (c) 2022 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_PUCHI_BLE_v1
bool "puchi_ble_v1"
depends on SOC_NRF52840_QIAA

View File

@@ -1,15 +0,0 @@
identifier: puchi_ble_v1
name: puchi_ble_v1
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- adc
- usb_device
- ble
- ieee802154
- pwm
- watchdog

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2021 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_S40NC
bool "S40NC"
depends on SOC_NRF52840_QIAA

View File

@@ -1,7 +0,0 @@
CONFIG_CONSOLE=n
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
CONFIG_UART_INTERRUPT_DRIVEN=n
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=n
CONFIG_ZMK_KSCAN_MATRIX_POLLING=y

View File

@@ -1,7 +0,0 @@
CONFIG_CONSOLE=n
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
CONFIG_UART_INTERRUPT_DRIVEN=n
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=n
CONFIG_ZMK_KSCAN_MATRIX_POLLING=y

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2026 Pete Johanson
# SPDX-License-Identifier: MIT
config BOARD_BOARDSOURCE_BLOK
select ZMK_BOARD_COMPAT if BOARD_BOARDSOURCE_BLOK_RP2040_ZMK
imply RETAINED_MEM if BOARD_BOARDSOURCE_BLOK_RP2040_ZMK
imply RETENTION if BOARD_BOARDSOURCE_BLOK_RP2040_ZMK
imply RETENTION_BOOT_MODE if BOARD_BOARDSOURCE_BLOK_RP2040_ZMK

View File

@@ -0,0 +1,5 @@
board:
extend: boardsource_blok
variants:
- name: zmk
qualifier: rp2040

View File

@@ -0,0 +1,9 @@
file_format: "1"
id: boardsource_blok//zmk
name: Boardsource Blok
type: board
arch: arm
outputs:
- usb
url: https://boardsource.xyz/products/blok-rp2040-keyboard-controller
exposes: [pro_micro]

View File

@@ -0,0 +1,23 @@
/*
* Copyright (c) 2026 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <../boards/boardsource/blok/boardsource_blok.dts>
#include <arm/raspberrypi/rp2040-boot-mode-retention.dtsi>
&pro_micro_serial { status = "disabled"; };
&code_partition {
reg = <0x100 (DT_SIZE_M(16) - 0x100 - DT_SIZE_K(512))>;
};
&flash0 {
partitions {
storage_partition: partition@f80000 {
reg = <0xf80000 DT_SIZE_K(512)>;
read-only;
};
};
};

View File

@@ -0,0 +1,30 @@
# SPDX-License-Identifier: MIT
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000
CONFIG_RESET=y
# Enable clock control by default
CONFIG_CLOCK_CONTROL=y
# Code partition needed to target the correct flash range
CONFIG_USE_DT_CODE_PARTITION=y
# Output UF2 by default, native bootloader supports it.
CONFIG_BUILD_OUTPUT_UF2=y
# USB HID
CONFIG_ZMK_USB=y
# Settings Support
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
# Bootloader Support
CONFIG_RETAINED_MEM=y
CONFIG_RETENTION=y
CONFIG_RETENTION_BOOT_MODE=y

Some files were not shown because too many files have changed in this diff Show More