Compare commits

..

3 Commits

Author SHA1 Message Date
Pete Johanson
acfd8e5ea7 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 02:05:16 -07:00
Pete Johanson
691740c233 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 01:43:49 -07:00
Peter Johanson
27cf8979a2 chore: Empty commit to trigger deploy of docs from this branch
In order to support documentation for multiple ZMK releases, add
an empty commit here to trigger a new Netlify build against this
branch.
2025-11-24 18:18:36 -07:00
1220 changed files with 7740 additions and 11654 deletions

View File

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

View File

@@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Find test directories
id: test-dirs
run: |
@@ -35,10 +35,10 @@ jobs:
test: ${{ fromJSON(needs.collect-tests.outputs.test-dirs) }}
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-build-arm:4.1
image: docker.io/zmkfirmware/zmk-build-arm:3.5
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Cache west modules
uses: actions/cache@v4
env:

View File

@@ -30,28 +30,17 @@ jobs:
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@v6
uses: actions/checkout@v4
- name: Fetch Build Matrix
id: fetch
run: |
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
echo "build_matrix=$(yq -oj -I0 '${{ inputs.build_matrix_path }}')" >> $GITHUB_ENV
yq -oj "${{ inputs.build_matrix_path }}"
build:
runs-on: ubuntu-latest
if: needs.matrix.outputs.has_valid_build_matrix == 'true'
container:
image: zmkfirmware/zmk-build-arm:stable
needs: matrix
@@ -60,21 +49,15 @@ 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@v6
uses: actions/checkout@v4
- name: Create build directory
run: |
echo "build_dir=$(mktemp -d)" >> $GITHUB_ENV
- name: Prepare variables
shell: bash -x {0}
shell: sh -x {0}
env:
board: ${{ matrix.board }}
shield: ${{ matrix.shield }}
@@ -98,7 +81,7 @@ jobs:
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
echo "artifact_name=${artifact_name:-${shield:+$shield-}${board}-zmk}" >> $GITHUB_ENV
- name: Copy config files to isolated temporary directory
run: |
@@ -133,13 +116,6 @@ jobs:
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
@@ -149,38 +125,6 @@ jobs:
shell: sh -x {0}
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 "${{ env.build_dir }}/zephyr/.config" ]
@@ -224,7 +168,6 @@ jobs:
merge:
runs-on: ubuntu-latest
if: needs.matrix.outputs.has_valid_build_matrix == 'true'
needs: build
name: Merge Output Artifacts
steps:

View File

@@ -23,14 +23,14 @@ jobs:
if: ${{ always() }}
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-build-arm:4.1
image: docker.io/zmkfirmware/zmk-build-arm:3.5
needs: compile-matrix
strategy:
matrix:
include: ${{ fromJSON(needs.compile-matrix.outputs.include-list) }}
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache west modules
@@ -61,7 +61,7 @@ jobs:
with:
node-version: "14.x"
- name: Install @actions/artifact
run: npm install @actions/artifact@5.0.3
run: npm install @actions/artifact
- name: Build
uses: actions/github-script@v7
id: boards-list
@@ -123,7 +123,7 @@ jobs:
}
const cmakeName = shieldArgs['cmake-args'] ? '-' + (shieldArgs.nickname || shieldArgs['cmake-args'].split(' ').join('')) : '';
const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`.replaceAll('/', '_');
const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`;
await artifact.uploadArtifact(artifactName, files, rootDirectory, options);
} catch (e) {
@@ -187,7 +187,7 @@ jobs:
core-include: ${{ steps.core-list.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Use Node.js
@@ -218,7 +218,7 @@ jobs:
boards-include: ${{ steps.boards-list.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
@@ -277,7 +277,6 @@ jobs:
);
} else {
console.error("Board without keys or interconnect");
return [];
}
break;
case "shield":
@@ -346,7 +345,7 @@ jobs:
organized-metadata: ${{ steps.organize-metadata.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Use Node.js
@@ -428,7 +427,7 @@ jobs:
core-changes: ${{ steps.core-changes.outputs.result }}
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
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

View File

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

View File

@@ -18,9 +18,9 @@ jobs:
validate-metadata:
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-dev-arm:4.1
image: docker.io/zmkfirmware/zmk-dev-arm:3.5
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
- name: Install dependencies
run: pip install --break-system-packages -r app/scripts/requirements.txt
- name: West init

View File

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

View File

@@ -35,7 +35,7 @@ jobs:
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@v6
- uses: actions/checkout@v4
- name: Create major.minor branch
if: ${{ needs.handle-commit.outputs.patch == '0' }}
@@ -69,10 +69,10 @@ jobs:
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
git clone "https://x-access-token:$ZMK_RELEASE_PLEASE_TOKEN@github.com/zmkfirmware/unified-zmk-config-template.git"
cd unified-zmk-config-template
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 .

View File

@@ -22,7 +22,6 @@ jobs:
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

@@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Find test directories
id: test-dirs
run: |
@@ -37,10 +37,10 @@ jobs:
test: ${{ fromJSON(needs.collect-tests.outputs.test-dirs) }}
runs-on: ubuntu-latest
container:
image: docker.io/zmkfirmware/zmk-build-arm:4.1
image: docker.io/zmkfirmware/zmk-build-arm:3.5
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Cache west modules
uses: actions/cache@v4
env:
@@ -66,7 +66,7 @@ jobs:
run: west zephyr-export
- name: Test ${{ matrix.test }}
working-directory: app
run: ZMK_TESTS_VERBOSE=1 west test tests/${{ matrix.test }}
run: west test tests/${{ matrix.test }}
- name: Archive artifacts
if: ${{ always() }}
uses: actions/upload-artifact@v4

1
.gitignore vendored
View File

@@ -1,7 +1,6 @@
/.west
/bootloader
/modules
/optional
/tools
/zephyr
/zmk-config

View File

@@ -23,7 +23,6 @@ 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/behavior.c)

View File

@@ -5,17 +5,6 @@ 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
@@ -42,10 +31,10 @@ config BT_DIS_PNP_VID
config BT_DIS_PNP_PID
default 0x615E
config BT_DIS_MODEL_NUMBER_STR
config BT_DIS_MODEL
default ZMK_KEYBOARD_NAME
config BT_DIS_MANUF_NAME_STR
config BT_DIS_MANUF
default "ZMK Project"
# Hardware specific overrides
@@ -140,9 +129,7 @@ config ZMK_USB_BOOT
bool "USB Boot Protocol Support"
depends on ZMK_USB
select USB_HID_BOOT_PROTOCOL
config USB_DEVICE_INITIALIZE_AT_BOOT
default n
select USB_DEVICE_SOF
if ZMK_USB
@@ -198,6 +185,10 @@ config BT_SMP_ALLOW_UNAUTH_OVERWRITE
config BT_CTLR_PHY_2M
default n if ZMK_BLE_EXPERIMENTAL_CONN
# 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_THREAD_STACK_SIZE
int "BLE notify thread stack size"
default 768
@@ -228,6 +219,9 @@ config BT_GATT_NOTIFY_MULTIPLE
config BT_GATT_AUTO_SEC_REQ
default (ZMK_SPLIT_BLE && !ZMK_SPLIT_ROLE_CENTRAL)
config BT_DEVICE_APPEARANCE
default 961
config BT_PERIPHERAL_PREF_MIN_INT
default 6
@@ -484,15 +478,13 @@ endmenu
menu "Advanced"
rsource "src/boot/Kconfig"
menu "Initialization Priorities"
if USB_DEVICE_STACK
config ZMK_USB_INIT_PRIORITY
int "USB Init Priority"
default 96
default 94
config ZMK_USB_HID_INIT_PRIORITY
int "USB HID Init Priority"
@@ -661,13 +653,6 @@ endmenu # Advanced
endmenu # ZMK
if SOC_FAMILY_NORDIC_NRF
config NRF_SOC_VALIDATE_HEADERS_DISABLED
default y
endif
config KERNEL_BIN_NAME
default "zmk"
@@ -702,6 +687,11 @@ 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"
@@ -715,6 +705,8 @@ rsource "boards/shields/*/Kconfig.shield"
# Duplicated from Kconfig.zephyr
osource "$(KCONFIG_BINARY_DIR)/Kconfig.shield.defconfig"
source "$(BOARD_DIR)/Kconfig.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"

View File

@@ -2,12 +2,8 @@
# SPDX-License-Identifier: MIT
config SYSTEM_WORKQUEUE_STACK_SIZE
default 3072 if ZMK_DISPLAY
default 2048
# Basic
config BT_DEVICE_APPEARANCE
default 961
default 2048 if SOC_RP2040
default 2048 if ZMK_BLE
# HID
if ZMK_HID_REPORT_TYPE_HKRO
@@ -114,5 +110,4 @@ config ZMK_BATTERY_REPORT_INTERVAL
default 60
# Imports
rsource "src/boot/Kconfig.defaults"
rsource "src/split/Kconfig.defaults"
rsource "src/split/Kconfig.defaults"

View File

@@ -0,0 +1,6 @@
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,7 @@
/*
* Copyright (c) 2023 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
&xiao_serial { status = "disabled"; };

View File

@@ -1,9 +0,0 @@
# 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,23 +0,0 @@
# 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

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

View File

@@ -1,9 +0,0 @@
# 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,10 +0,0 @@
/*
* 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

@@ -1,23 +0,0 @@
# 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

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

View File

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

View File

@@ -4,7 +4,4 @@
* SPDX-License-Identifier: MIT
*/
#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,4 @@
CONFIG_CONSOLE=n
CONFIG_SERIAL=n
CONFIG_UART_CONSOLE=n
CONFIG_ZMK_USB=y

View File

@@ -0,0 +1,7 @@
/*
* Copyright (c) 2023 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
&xiao_serial { status = "disabled"; };

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,12 @@
#
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: MIT
#
config BOARD_ADV360PRO_LEFT
bool "adv360pro_left"
depends on SOC_NRF52840_QIAA
config BOARD_ADV360PRO_RIGHT
bool "adv360pro_right"
depends on SOC_NRF52840_QIAA

View File

@@ -7,7 +7,6 @@
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include <common/nordic/nrf52840_uf2_boot_mode.dtsi>
#include <dt-bindings/led/led.h>
#include <dt-bindings/zmk/matrix_transform.h>
@@ -72,10 +71,6 @@
};
&reg1 {
regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
};
&pwm0 {
status = "okay";
pinctrl-0 = <&pwm0_default>;

View File

@@ -13,5 +13,5 @@ outputs:
- usb
- ble
siblings:
- adv360pro_left//zmk
- adv360pro_right//zmk
- adv360pro_left
- adv360pro_right

View File

@@ -3,6 +3,10 @@
# SPDX-License-Identifier: MIT
#
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_ADV360PRO_LEFT=y
# Enable MPU
CONFIG_ARM_MPU=y
@@ -28,6 +32,7 @@ CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_150PPM=y
#RGB leds config
CONFIG_WS2812_STRIP=y
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=n

View File

@@ -3,6 +3,10 @@
# SPDX-License-Identifier: MIT
#
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_ADV360PRO_RIGHT=y
# Enable MPU
CONFIG_ARM_MPU=y
@@ -28,6 +32,7 @@ CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_150PPM=y
#RGB leds config
CONFIG_WS2812_STRIP=y
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=n

View File

@@ -0,0 +1,8 @@
# 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

@@ -11,4 +11,8 @@ config BOARD
config ZMK_KEYBOARD_NAME
default "BDN9 Rev2"
config ZMK_RGB_UNDERGLOW
select SPI
select WS2812_STRIP
endif # BOARD_BDN9

View File

@@ -11,7 +11,7 @@
#include <dt-bindings/zmk/matrix_transform.h>
#include "bdn9-layouts.dtsi"
#include "bdn9_rev2-layouts.dtsi"
&physical_layout0 {
transform = <&matrix_transform0>;

View File

@@ -0,0 +1,11 @@
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,6 +1,6 @@
file_format: "1"
id: bdn9//zmk
name: BDN9 (Rev2)
id: bdn9_rev2
name: BDN9 Rev2
type: board
arch: arm
outputs:
@@ -9,6 +9,3 @@ features:
- keys
- encoder
url: https://keeb.io/collections/bdn9-collection/products/bdn9-rev-2-3x3-9-key-macropad-rotary-encoder-and-rgb
revisions:
- "2.0.0"
default_revision: "2.0.0"

View File

@@ -1,5 +1,7 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_STM32F0X=y
CONFIG_SOC_STM32F072XB=y
# 72MHz system clock
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000
@@ -12,7 +14,6 @@ CONFIG_PINCTRL=y
# Poll to avoid interrupt overlap issues
CONFIG_ZMK_KSCAN_DIRECT_POLLING=y
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1536
CONFIG_ISR_STACK_SIZE=1024
# clock configuration

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: blackpill_f401cc//zmk
id: blackpill_f401cc
name: BlackPill F401CC
type: board
arch: arm

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: blackpill_f401ce//zmk
id: blackpill_f401ce
name: BlackPill F401CE
type: board
arch: arm

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: blackpill_f411ce//zmk
id: blackpill_f411ce
name: BlackPill F411CE
type: board
arch: arm

View File

@@ -4,5 +4,5 @@ config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default y
depends on BOARD_BLUEMICRO840
depends on BOARD_BLUEMICRO840_V1

View File

@@ -0,0 +1,8 @@
# 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

@@ -3,7 +3,10 @@
# Copyright (c) 2020 Pete Johanson, Derek Schmell
# SPDX-License-Identifier: MIT
if BOARD_BLUEMICRO840
if BOARD_BLUEMICRO840_V1
config BOARD
default "bluemicro840_v1"
if USB_DEVICE_STACK
@@ -15,4 +18,4 @@ endif # USB_DEVICE_STACK
config BT_CTLR
default BT
endif # BOARD_BLUEMICRO840
endif # BOARD_BLUEMICRO840_V1

View File

@@ -6,9 +6,8 @@
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "arduino_pro_micro_pins.dtsi"
#include "bluemicro840-pinctrl.dtsi"
#include "bluemicro840_v1-pinctrl.dtsi"
/ {
model = "BlueMicro840_V1";
@@ -18,6 +17,7 @@
zephyr,code-partition = &code_partition;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zmk,battery = &vbatt;
};
leds {
@@ -26,6 +26,21 @@
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
};
};
// Node name must match original "EXT_POWER" label to preserve user settings.
EXT_POWER {
compatible = "zmk,ext-power-generic";
init-delay-ms = <20>;
control-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
};
vbatt: vbatt {
compatible = "zmk,battery-voltage-divider";
io-channels = <&adc 7>;
output-ohms = <2000000>;
full-ohms = <(2000000 + 806000)>;
};
};
&adc {

View File

@@ -1,4 +1,4 @@
identifier: bluemicro840
identifier: bluemicro840_v1
name: BlueMicro840_V1
type: mcu
arch: arm

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: bluemicro840//zmk
id: bluemicro840_v1
name: BlueMicro840 v1
type: board
arch: arm

View File

@@ -1,5 +1,9 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_BLUEMICRO840_V1=y
# Enable MPU
CONFIG_ARM_MPU=y
@@ -17,8 +21,6 @@ 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

@@ -0,0 +1,9 @@
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

@@ -0,0 +1,7 @@
# 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

@@ -0,0 +1,12 @@
# 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,10 +1,10 @@
# Copyright (c) 2022 The ZMK Contributors
# Copyright (c) 2021 Polarity Works
# SPDX-License-Identifier: MIT
config ZMK_KEYBOARD_NAME
default "BT75" if BOARD_BT75
if BOARD_BT60_V1_HS || BOARD_BT60_V1
if BOARD_BT75
config BOARD
default "bt60"
if USB
@@ -19,4 +19,7 @@ endif # USB
config BT_CTLR
default BT
endif # BOARD_BT75
config ZMK_KEYBOARD_NAME
default "BT60"
endif # BOARD_BT60

View File

@@ -1,14 +1,17 @@
/*
* Copyright (c) 2022 The ZMK Contributors
* Copyright (c) 2021 Polarity Works
*
* SPDX-License-Identifier: MIT
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include <common/nordic/nrf52840_uf2_boot_mode.dtsi>
#include <dt-bindings/zmk/matrix_transform.h>
/ {
model = "BT60";
compatible = "polarityworks,bt60";
chosen {
zephyr,code-partition = &code_partition;
zephyr,sram = &sram0;
@@ -16,9 +19,35 @@
zmk,battery = &vbatt;
};
sensors: sensors {
compatible = "zmk,keymap-sensors";
sensors = <&left_encoder>;
triggers-per-rotation = <20>;
};
left_encoder: encoder_left {
compatible = "alps,ec11";
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>;
};
};
vbatt: vbatt {
compatible = "zmk,battery-voltage-divider";
io-channels = <&adc 2>;
output-ohms = <2000000>;
full-ohms = <(2000000 + 806000)>;
};
};
@@ -42,6 +71,7 @@ zephyr_udc0: &usbd {
status = "okay";
};
&flash0 {
/*
* For more information, see:

View File

@@ -4,7 +4,8 @@
* SPDX-License-Identifier: MIT
*/
#include "bt60_1_0_0.dtsi"
/dts-v1/;
#include "bt60.dtsi"
#include <layouts/common/60percent/all1u.dtsi>
#include <layouts/common/60percent/ansi.dtsi>
#include <layouts/common/60percent/hhkb.dtsi>

View File

@@ -20,7 +20,7 @@
#elif defined(HHKB)
zmk,physical-layout = &layout_60_hhkb;
#else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v1.keymap"
#endif
};
@@ -147,7 +147,7 @@
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
};
#else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v2.keymap"
#endif
};
};

View File

@@ -1,5 +1,5 @@
identifier: puchi_ble
name: puchi_ble
identifier: bt60_v1
name: BT60 V1 Soldered
type: mcu
arch: arm
toolchain:

View File

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

View File

@@ -1,5 +1,9 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_BT60_V1=y
# Enable MPU
CONFIG_ARM_MPU=y
@@ -21,4 +25,4 @@ CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=y
CONFIG_ZMK_BLE=y

View File

@@ -4,8 +4,8 @@
* SPDX-License-Identifier: MIT
*/
#include "bt60_nrf52840_zmk.dts"
#include "bt60_1_0_0.dtsi"
/dts-v1/;
#include "bt60.dtsi"
#include <layouts/common/60percent/ansi.dtsi>
/ {

View File

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

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: bt60_hs//zmk
id: bt60_v1_hs
name: BT60 V1 Hotswap
type: board
arch: arm

View File

@@ -1,5 +1,9 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_BT60_V1_HS=y
# Enable MPU
CONFIG_ARM_MPU=y
@@ -21,4 +25,4 @@ CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=y
CONFIG_ZMK_BLE=y

View File

@@ -0,0 +1,8 @@
# 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

@@ -0,0 +1,16 @@
# 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

@@ -0,0 +1,28 @@
# 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

@@ -4,7 +4,8 @@
* SPDX-License-Identifier: MIT
*/
#include "../common/ckp.dtsi"
/dts-v1/;
#include "ckp.dtsi"
#include <layouts/common/60percent/all1u.dtsi>
#include <layouts/common/60percent/ansi.dtsi>
#include <layouts/common/60percent/hhkb.dtsi>
@@ -13,7 +14,7 @@
/ {
model = "BT60_V2";
compatible = "polarityworks,bt60";
compatible = "polarityworks,bt60_v2";
chosen {
zmk,physical-layout = &layout_60_ansi;

View File

@@ -20,7 +20,7 @@
#elif defined(HHKB)
zmk,physical-layout = &layout_60_hhkb;
#else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v2.keymap"
#endif
};
@@ -170,7 +170,7 @@
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
};
#else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v2.keymap"
#endif
};

View File

@@ -1,4 +1,4 @@
identifier: bt60
identifier: bt60_v2
name: BT60 V2
type: mcu
arch: arm

View File

@@ -1,5 +1,5 @@
file_format: "1"
id: bt60//zmk
id: bt60_v2
name: BT60 V2
type: board
arch: arm
@@ -12,7 +12,4 @@ features:
outputs:
- usb
- ble
revisions:
- 2.0.0
- 1.0.0
url: https://polarityworks.com/btckp

View File

@@ -1,5 +1,9 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_BT60_V2=y
# Enable MPU
CONFIG_ARM_MPU=y
@@ -28,6 +32,8 @@ CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=y
CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=262
CONFIG_WS2812_STRIP=y
CONFIG_SPI=y
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y

View File

@@ -5,11 +5,7 @@
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include <common/nordic/nrf52840_uf2_boot_mode.dtsi>
#include "../common/ckp-base.dtsi"
#include "../common/ckp.dtsi"
#include "ckp.dtsi"
#include <layouts/common/65percent/all1u.dtsi>
#include <layouts/common/65percent/ansi.dtsi>
#include <layouts/common/65percent/iso.dtsi>
@@ -18,7 +14,7 @@
/ {
model = "BT65_V1";
compatible = "polarityworks,bt65";
compatible = "polarityworks,bt65_v1";
chosen {
zmk,physical-layout = &layout_65_ansi;

View File

@@ -20,7 +20,7 @@
#elif defined(HHKB)
zmk,physical-layout = &layout_65_hhkb;
#else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65.keymap"
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65_v1.keymap"
#endif
};
@@ -170,7 +170,7 @@
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
};
#else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65.keymap"
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65_v1.keymap"
#endif
};

View File

@@ -1,4 +1,4 @@
identifier: bt65
identifier: bt65_v1
name: BT65_V1
type: mcu
arch: arm

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