diff --git a/.github/workflows/build-user-config.yml b/.github/workflows/build-user-config.yml index 3f0527fbc..145266af7 100644 --- a/.github/workflows/build-user-config.yml +++ b/.github/workflows/build-user-config.yml @@ -147,6 +147,24 @@ jobs: 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 }}/zmk/app + 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 boards --board-root module --board-root . --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 "${{ env.build_dir }}/zephyr/.config" ] diff --git a/app/Kconfig b/app/Kconfig index e1c4ada9f..30d8e8cd0 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -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 diff --git a/app/boards/adafruit/kb2040/Kconfig.adafruit_kb2040 b/app/boards/adafruit/kb2040/Kconfig.adafruit_kb2040 new file mode 100644 index 000000000..528385da7 --- /dev/null +++ b/app/boards/adafruit/kb2040/Kconfig.adafruit_kb2040 @@ -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 + diff --git a/app/boards/adafruit/qt_py_rp2040/Kconfig.adafruit_qt_py_rp2040 b/app/boards/adafruit/qt_py_rp2040/Kconfig.adafruit_qt_py_rp2040 new file mode 100644 index 000000000..266d39a18 --- /dev/null +++ b/app/boards/adafruit/qt_py_rp2040/Kconfig.adafruit_qt_py_rp2040 @@ -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 + diff --git a/app/boards/boardsource/blok/Kconfig.boardsource_blok b/app/boards/boardsource/blok/Kconfig.boardsource_blok new file mode 100644 index 000000000..fd3ce9895 --- /dev/null +++ b/app/boards/boardsource/blok/Kconfig.boardsource_blok @@ -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 + diff --git a/app/boards/joric/nrfmicro/Kconfig.nrfmicro b/app/boards/joric/nrfmicro/Kconfig.nrfmicro index 7925e4a0e..68d724c49 100644 --- a/app/boards/joric/nrfmicro/Kconfig.nrfmicro +++ b/app/boards/joric/nrfmicro/Kconfig.nrfmicro @@ -7,6 +7,7 @@ config BOARD_NRFMICRO select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840_ZMK select SOC_NRF52840_QIAA if BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK select SOC_NRF52833_QIAA if BOARD_NRFMICRO_NRF52833_ZMK + select ZMK_BOARD_COMPAT if BOARD_NRFMICRO_NRF52840_ZMK || BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK || BOARD_NRFMICRO_NRF52833_ZMK imply RETAINED_MEM if BOARD_NRFMICRO_NRF52840_ZMK || BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK || BOARD_NRFMICRO_NRF52833_ZMK imply RETENTION if BOARD_NRFMICRO_NRF52840_ZMK || BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK || BOARD_NRFMICRO_NRF52833_ZMK imply RETENTION_BOOT_MODE if BOARD_NRFMICRO_NRF52840_ZMK || BOARD_NRFMICRO_NRF52840_FLIPPED_ZMK || BOARD_NRFMICRO_NRF52833_ZMK diff --git a/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 b/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 index c1f1d0a26..8a9b31d77 100644 --- a/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 +++ b/app/boards/jpconstantineau/bluemicro840/Kconfig.bluemicro840 @@ -3,6 +3,7 @@ config BOARD_BLUEMICRO840 select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT if BOARD_BLUEMICRO840_NRF52840_ZMK imply RETAINED_MEM if BOARD_BLUEMICRO840_NRF52840_ZMK imply RETENTION if BOARD_BLUEMICRO840_NRF52840_ZMK imply RETENTION_BOOT_MODE if BOARD_BLUEMICRO840_NRF52840_ZMK diff --git a/app/boards/kbdfans/tofu65/Kconfig.tofu65 b/app/boards/kbdfans/tofu65/Kconfig.tofu65 index 3754f9369..6844d439d 100644 --- a/app/boards/kbdfans/tofu65/Kconfig.tofu65 +++ b/app/boards/kbdfans/tofu65/Kconfig.tofu65 @@ -3,6 +3,7 @@ config BOARD_TOFU65 select SOC_RP2040 + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/keebio/bdn9/Kconfig.bdn9 b/app/boards/keebio/bdn9/Kconfig.bdn9 index 29055ef57..98a73619c 100644 --- a/app/boards/keebio/bdn9/Kconfig.bdn9 +++ b/app/boards/keebio/bdn9/Kconfig.bdn9 @@ -3,3 +3,4 @@ config BOARD_BDN9 select SOC_STM32F072XB + select ZMK_BOARD_COMPAT diff --git a/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble b/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble index 133a95d09..67f52a99c 100644 --- a/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble +++ b/app/boards/keycapsss/puchi_ble/Kconfig.puchi_ble @@ -5,6 +5,7 @@ config BOARD_PUCHI_BLE select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT if BOARD_PUCHI_BLE_NRF52840_ZMK imply RETAINED_MEM if BOARD_PUCHI_BLE_NRF52840_ZMK imply RETENTION if BOARD_PUCHI_BLE_NRF52840_ZMK imply RETENTION_BOOT_MODE if BOARD_PUCHI_BLE_NRF52840_ZMK diff --git a/app/boards/kinesis/adv360pro/Kconfig.adv360pro_left b/app/boards/kinesis/adv360pro/Kconfig.adv360pro_left index dcb021841..a0bf978a4 100644 --- a/app/boards/kinesis/adv360pro/Kconfig.adv360pro_left +++ b/app/boards/kinesis/adv360pro/Kconfig.adv360pro_left @@ -5,6 +5,7 @@ config BOARD_ADV360PRO_LEFT select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION - imply RETENTION_BOOT_MODE \ No newline at end of file + imply RETENTION_BOOT_MODE diff --git a/app/boards/kinesis/adv360pro/Kconfig.adv360pro_right b/app/boards/kinesis/adv360pro/Kconfig.adv360pro_right index 69cde9d71..823f262ce 100644 --- a/app/boards/kinesis/adv360pro/Kconfig.adv360pro_right +++ b/app/boards/kinesis/adv360pro/Kconfig.adv360pro_right @@ -5,6 +5,7 @@ config BOARD_ADV360PRO_RIGHT select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION - imply RETENTION_BOOT_MODE \ No newline at end of file + imply RETENTION_BOOT_MODE diff --git a/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_left b/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_left index 7c0dfd7ca..fb1e70277 100644 --- a/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_left +++ b/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_left @@ -5,6 +5,7 @@ config BOARD_CORNEISH_ZEN_LEFT select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_right b/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_right index 4d8e0320b..4009ebf12 100644 --- a/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_right +++ b/app/boards/lowprokb/corneish_zen/Kconfig.corneish_zen_right @@ -5,6 +5,7 @@ config BOARD_CORNEISH_ZEN_RIGHT select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 b/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 index 82aa35e2a..9225eb86c 100644 --- a/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 +++ b/app/boards/makerdiary/nrf52840_m2/Kconfig.nrf52840_m2 @@ -3,6 +3,7 @@ config BOARD_NRF52840_M2 select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT if BOARD_NRF52840_M2_NRF52840_ZMK imply RETAINED_MEM if BOARD_NRF52840_M2_NRF52840_ZMK imply RETENTION if BOARD_NRF52840_M2_NRF52840_ZMK imply RETENTION_BOOT_MODE if BOARD_NRF52840_M2_NRF52840_ZMK diff --git a/app/boards/mechwild/pillbug/Kconfig.pillbug b/app/boards/mechwild/pillbug/Kconfig.pillbug index 27482cc2f..548a7e647 100644 --- a/app/boards/mechwild/pillbug/Kconfig.pillbug +++ b/app/boards/mechwild/pillbug/Kconfig.pillbug @@ -3,6 +3,7 @@ config BOARD_PILLBUG select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT if BOARD_PILLBUG_NRF52840_ZMK imply RETAINED_MEM if BOARD_PILLBUG_NRF52840_ZMK imply RETENTION if BOARD_PILLBUG_NRF52840_ZMK imply RETENTION_BOOT_MODE if BOARD_PILLBUG_NRF52840_ZMK diff --git a/app/boards/mechwild/pillbug/board.yml b/app/boards/mechwild/pillbug/board.yml index 7e6a99597..eb3d5172e 100644 --- a/app/boards/mechwild/pillbug/board.yml +++ b/app/boards/mechwild/pillbug/board.yml @@ -1,5 +1,5 @@ board: - name: pillbug + extend: pillbug variants: - name: zmk qualifier: nrf52840 diff --git a/app/boards/moergo/glove80/Kconfig.glove80_lh b/app/boards/moergo/glove80/Kconfig.glove80_lh index 97590cd72..33046e7d0 100644 --- a/app/boards/moergo/glove80/Kconfig.glove80_lh +++ b/app/boards/moergo/glove80/Kconfig.glove80_lh @@ -3,6 +3,7 @@ config BOARD_GLOVE80_LH select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/moergo/glove80/Kconfig.glove80_rh b/app/boards/moergo/glove80/Kconfig.glove80_rh index 07450baa5..68590e4ba 100644 --- a/app/boards/moergo/glove80/Kconfig.glove80_rh +++ b/app/boards/moergo/glove80/Kconfig.glove80_rh @@ -3,6 +3,7 @@ config BOARD_GLOVE80_RH select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/nicekeyboards/nice60/Kconfig.nice60 b/app/boards/nicekeyboards/nice60/Kconfig.nice60 index bfeedf0f9..cf02e4332 100644 --- a/app/boards/nicekeyboards/nice60/Kconfig.nice60 +++ b/app/boards/nicekeyboards/nice60/Kconfig.nice60 @@ -3,6 +3,7 @@ config BOARD_NICE60 select SOC_NRF52840_QIAA - imply RETAINED_MEM - imply RETENTION - imply RETENTION_BOOT_MODE \ No newline at end of file + select ZMK_BOARD_COMPAT if BOARD_NICE60_NRF52840_ZMK + imply RETAINED_MEM if BOARD_NICE60_NRF52840_ZMK + imply RETENTION if BOARD_NICE60_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_NICE60_NRF52840_ZMK diff --git a/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano b/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano index ae9a61703..dd120dbc4 100644 --- a/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano +++ b/app/boards/nicekeyboards/nice_nano/Kconfig.nice_nano @@ -3,6 +3,7 @@ config BOARD_NICE_NANO select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT if BOARD_NICE_NANO_NRF52840_ZMK imply RETAINED_MEM if BOARD_NICE_NANO_NRF52840_ZMK imply RETENTION if BOARD_NICE_NANO_NRF52840_ZMK imply RETENTION_BOOT_MODE if BOARD_NICE_NANO_NRF52840_ZMK diff --git a/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk b/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk index 66852ec1c..8c213cced 100644 --- a/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk +++ b/app/boards/nordic/nrf52840dk/Kconfig.nrf52840dk @@ -1,3 +1,4 @@ config BOARD_NRF52840DK select SOC_NRF52840_QIAA if BOARD_NRF52840DK_NRF52840_ZMK + select ZMK_BOARD_COMPAT if BOARD_NRF52840DK_NRF52840_ZMK diff --git a/app/boards/olkb/planck/Kconfig.planck b/app/boards/olkb/planck/Kconfig.planck index f8d42f068..7acad14f3 100644 --- a/app/boards/olkb/planck/Kconfig.planck +++ b/app/boards/olkb/planck/Kconfig.planck @@ -4,5 +4,5 @@ # SPDX-License-Identifier: MIT config BOARD_PLANCK - bool "Planck Keyboard" select SOC_STM32F303XC + select ZMK_BOARD_COMPAT diff --git a/app/boards/olkb/preonic/Kconfig.preonic b/app/boards/olkb/preonic/Kconfig.preonic index d7caf7336..7bfd47e72 100644 --- a/app/boards/olkb/preonic/Kconfig.preonic +++ b/app/boards/olkb/preonic/Kconfig.preonic @@ -5,3 +5,4 @@ config BOARD_PREONIC select SOC_STM32F303XC + select ZMK_BOARD_COMPAT diff --git a/app/boards/pierrechevalier83/ferris/Kconfig.ferris b/app/boards/pierrechevalier83/ferris/Kconfig.ferris index 66f0aa237..348ef27d2 100644 --- a/app/boards/pierrechevalier83/ferris/Kconfig.ferris +++ b/app/boards/pierrechevalier83/ferris/Kconfig.ferris @@ -5,6 +5,7 @@ config BOARD_FERRIS select SOC_STM32F072XB + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/polarityworks/bt60/Kconfig.bt60 b/app/boards/polarityworks/bt60/Kconfig.bt60 index 62c6c3dd5..f1e578c60 100644 --- a/app/boards/polarityworks/bt60/Kconfig.bt60 +++ b/app/boards/polarityworks/bt60/Kconfig.bt60 @@ -5,6 +5,7 @@ config BOARD_BT60 select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/polarityworks/bt60/Kconfig.bt60_hs b/app/boards/polarityworks/bt60/Kconfig.bt60_hs index f026d266b..cc30cc2cd 100644 --- a/app/boards/polarityworks/bt60/Kconfig.bt60_hs +++ b/app/boards/polarityworks/bt60/Kconfig.bt60_hs @@ -5,6 +5,7 @@ config BOARD_BT60_HS select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/polarityworks/bt65/Kconfig.bt65 b/app/boards/polarityworks/bt65/Kconfig.bt65 index 3aaa410c2..2aa7be69c 100644 --- a/app/boards/polarityworks/bt65/Kconfig.bt65 +++ b/app/boards/polarityworks/bt65/Kconfig.bt65 @@ -5,6 +5,7 @@ config BOARD_BT65 select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/polarityworks/bt75/Kconfig.bt75 b/app/boards/polarityworks/bt75/Kconfig.bt75 index 43fe295d6..b2718fcd3 100644 --- a/app/boards/polarityworks/bt75/Kconfig.bt75 +++ b/app/boards/polarityworks/bt75/Kconfig.bt75 @@ -5,6 +5,7 @@ config BOARD_BT75 select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT imply RETAINED_MEM imply RETENTION imply RETENTION_BOOT_MODE diff --git a/app/boards/qmk/proton_c/Kconfig.proton_c b/app/boards/qmk/proton_c/Kconfig.proton_c new file mode 100644 index 000000000..c3eaaf688 --- /dev/null +++ b/app/boards/qmk/proton_c/Kconfig.proton_c @@ -0,0 +1,6 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_PROTON_C + select ZMK_BOARD_COMPAT + diff --git a/app/boards/raspberrypi/rpi_pico/Kconfig.rpi_pico b/app/boards/raspberrypi/rpi_pico/Kconfig.rpi_pico new file mode 100644 index 000000000..5a9e8ef08 --- /dev/null +++ b/app/boards/raspberrypi/rpi_pico/Kconfig.rpi_pico @@ -0,0 +1,10 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config BOARD_RPI_PICO + select SOC_RP2040 + select ZMK_BOARD_COMPAT if BOARD_RPI_PICO_RP2040_ZMK + imply RETAINED_MEM if BOARD_RPI_PICO_RP2040_ZMK + imply RETENTION if BOARD_RPI_PICO_RP2040_ZMK + imply RETENTION_BOOT_MODE if BOARD_RPI_PICO_RP2040_ZMK + diff --git a/app/boards/seeed/seeeduino_xiao/Kconfig.seeeduino_xiao b/app/boards/seeed/seeeduino_xiao/Kconfig.seeeduino_xiao new file mode 100644 index 000000000..0e1b9cc93 --- /dev/null +++ b/app/boards/seeed/seeeduino_xiao/Kconfig.seeeduino_xiao @@ -0,0 +1,9 @@ +# Copyright (c) 2026 Pete Johanson +# SPDX-License-Identifier: MIT + +config BOARD_SEEEDUINO_XIAO + select ZMK_BOARD_COMPAT if BOARD_SEEEDUINO_XIAO_SAMD21G18A_ZMK + imply RETAINED_MEM if BOARD_SEEEDUINO_XIAO_SAMD21G18A_ZMK + imply RETENTION if BOARD_SEEEDUINO_XIAO_SAMD21G18A_ZMK + imply RETENTION_BOOT_MODE if BOARD_SEEEDUINO_XIAO_SAMD21G18A_ZMK + diff --git a/app/boards/seeed/xiao_ble/Kconfig.xiao_ble b/app/boards/seeed/xiao_ble/Kconfig.xiao_ble new file mode 100644 index 000000000..475ba15ba --- /dev/null +++ b/app/boards/seeed/xiao_ble/Kconfig.xiao_ble @@ -0,0 +1,10 @@ +# Copyright (c) 2026 Pete Johanson +# SPDX-License-Identifier: MIT + +config BOARD_XIAO_BLE + select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT if BOARD_XIAO_BLE_NRF52840_ZMK + imply RETAINED_MEM if BOARD_XIAO_BLE_NRF52840_ZMK + imply RETENTION if BOARD_XIAO_BLE_NRF52840_ZMK + imply RETENTION_BOOT_MODE if BOARD_XIAO_BLE_NRF52840_ZMK + diff --git a/app/boards/sparkfun/pro_micro_rp2040/Kconfig.sparkfun_pro_micro_rp2040 b/app/boards/sparkfun/pro_micro_rp2040/Kconfig.sparkfun_pro_micro_rp2040 new file mode 100644 index 000000000..97f117f15 --- /dev/null +++ b/app/boards/sparkfun/pro_micro_rp2040/Kconfig.sparkfun_pro_micro_rp2040 @@ -0,0 +1,10 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config BOARD_SPARKFUN_PRO_MICRO_RP2040 + select ZMK_BOARD_COMPAT if BOARD_SPARKFUN_PRO_MICRO_RP2040_RP2040_ZMK + imply RETAINED_MEM if BOARD_SPARKFUN_PRO_MICRO_RP2040_RP2040_ZMK + imply RETENTION if BOARD_SPARKFUN_PRO_MICRO_RP2040_RP2040_ZMK + imply RETENTION_BOOT_MODE if BOARD_SPARKFUN_PRO_MICRO_RP2040_RP2040_ZMK + + diff --git a/app/boards/weact/blackpill_f401cc/Kconfig.blackpill_f401cc b/app/boards/weact/blackpill_f401cc/Kconfig.blackpill_f401cc new file mode 100644 index 000000000..e4dcaeec1 --- /dev/null +++ b/app/boards/weact/blackpill_f401cc/Kconfig.blackpill_f401cc @@ -0,0 +1,6 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config BOARD_BLACKPILL_F401CC + select ZMK_BOARD_COMPAT + diff --git a/app/boards/weact/blackpill_f401ce/Kconfig.blackpill_f401ce b/app/boards/weact/blackpill_f401ce/Kconfig.blackpill_f401ce new file mode 100644 index 000000000..870d8ef6b --- /dev/null +++ b/app/boards/weact/blackpill_f401ce/Kconfig.blackpill_f401ce @@ -0,0 +1,6 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config BOARD_BLACKPILL_F401CE + select ZMK_BOARD_COMPAT + diff --git a/app/boards/weact/blackpill_f411ce/Kconfig.blackpill_f411ce b/app/boards/weact/blackpill_f411ce/Kconfig.blackpill_f411ce new file mode 100644 index 000000000..5f7a4f899 --- /dev/null +++ b/app/boards/weact/blackpill_f411ce/Kconfig.blackpill_f411ce @@ -0,0 +1,6 @@ +# Copyright (c) 2026 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config BOARD_BLACKPILL_F411CE + select ZMK_BOARD_COMPAT + diff --git a/app/boards/zhiayang/mikoto/Kconfig.mikoto b/app/boards/zhiayang/mikoto/Kconfig.mikoto index 171227bd2..6e952890a 100644 --- a/app/boards/zhiayang/mikoto/Kconfig.mikoto +++ b/app/boards/zhiayang/mikoto/Kconfig.mikoto @@ -3,6 +3,7 @@ config BOARD_MIKOTO select SOC_NRF52840_QIAA + select ZMK_BOARD_COMPAT if BOARD_MIKOTO_NRF52840_ZMK imply RETAINED_MEM if BOARD_MIKOTO_NRF52840_ZMK imply RETENTION if BOARD_MIKOTO_NRF52840_ZMK imply RETENTION_BOOT_MODE if BOARD_MIKOTO_NRF52840_ZMK diff --git a/docs/docs/config/system.md b/docs/docs/config/system.md index e00dfd7a0..1cf70a825 100644 --- a/docs/docs/config/system.md +++ b/docs/docs/config/system.md @@ -13,11 +13,12 @@ Definition file: [zmk/app/Kconfig](https://github.com/zmkfirmware/zmk/blob/main/ ### General -| Config | Type | Description | Default | -| --------------------------- | ------ | -------------------------------------------- | ------- | -| `CONFIG_ZMK_KEYBOARD_NAME` | string | The name of the keyboard (max 16 characters) | | -| `CONFIG_ZMK_WPM` | bool | Enable calculating words per minute | n | -| `CONFIG_HEAP_MEM_POOL_SIZE` | int | Size of the heap memory pool | 8192 | +| Config | Type | Description | Default | +| --------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `CONFIG_ZMK_BOARD_COMPAT` | bool | A special config for boards to enable. This helps check if users have accidentally used an upstream Zephyr board without ZMK additions applied | n | +| `CONFIG_ZMK_KEYBOARD_NAME` | string | The name of the keyboard (max 16 characters) | | +| `CONFIG_ZMK_WPM` | bool | Enable calculating words per minute | n | +| `CONFIG_HEAP_MEM_POOL_SIZE` | int | Size of the heap memory pool | 8192 | :::info