This adds a new zmk,indicator-leds device, which maps HID indicator
states onto any devices that implement the LED driver API. This adds
support for things like a caps lock LED.
The name was chosen so that more drivers could be added later as
zmk,indicator-*, for example a version that uses the LED strip API.
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.
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.
* 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.
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>
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.