forked from kofal.net/zmk
merge upstream
This commit is contained in:
@@ -6,3 +6,8 @@ fi
|
|||||||
if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then
|
if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then
|
||||||
source "$WORKSPACE_DIR/zephyr/zephyr-env.sh"
|
source "$WORKSPACE_DIR/zephyr/zephyr-env.sh"
|
||||||
fi
|
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
|
||||||
@@ -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
|
COPY .bashrc tmp
|
||||||
RUN mv /tmp/.bashrc ~/.bashrc
|
RUN mv /tmp/.bashrc ~/.bashrc
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"mounts": [
|
"mounts": [
|
||||||
"type=volume,source=zmk-root-user,target=/root",
|
"type=volume,source=zmk-root-user,target=/root",
|
||||||
"type=volume,source=zmk-config,target=/workspaces/zmk-config",
|
"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,target=${containerWorkspaceFolder}/zephyr",
|
||||||
"type=volume,source=zmk-zephyr-modules,target=${containerWorkspaceFolder}/modules",
|
"type=volume,source=zmk-zephyr-modules,target=${containerWorkspaceFolder}/modules",
|
||||||
"type=volume,source=zmk-zephyr-tools,target=${containerWorkspaceFolder}/tools"
|
"type=volume,source=zmk-zephyr-tools,target=${containerWorkspaceFolder}/tools"
|
||||||
|
|||||||
47
.github/dependabot.yml
vendored
47
.github/dependabot.yml
vendored
@@ -8,3 +8,50 @@ updates:
|
|||||||
directory: "/docs"
|
directory: "/docs"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
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"
|
||||||
|
|||||||
18
.github/pull_request_template.md
vendored
18
.github/pull_request_template.md
vendored
@@ -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
|
- [ ] Branch has a [clean commit history](https://zmk.dev/docs/development/contributing/pull-requests#clean-commit-history)
|
||||||
- [ ] Definitions follow the general style of other shields/boards upstream ([Reference](https://zmk.dev/docs/development/new-shield))
|
- [ ] Additional tests are included, if changing behaviors/core code that is testable.
|
||||||
- [ ] `.zmk.yml` metadata file added
|
|
||||||
- [ ] 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)
|
- [ ] 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
|
- [ ] [Pre-commit](https://zmk.dev/docs/development/local-toolchain/pre-commit) used to check formatting of files, commit messages, etc.
|
||||||
- [ ] Keymaps do not use deprecated key defines (Check using the [upgrader tool](https://zmk.dev/docs/codes/keymap-upgrader))
|
- [ ] Includes any necessary [documentation changes](https://zmk.dev/docs/development/contributing/documentation).
|
||||||
- [ ] `&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)
|
|
||||||
|
|||||||
78
.github/workflows/ble-test.yml
vendored
Normal file
78
.github/workflows/ble-test.yml
vendored
Normal 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
|
||||||
168
.github/workflows/build-user-config.yml
vendored
168
.github/workflows/build-user-config.yml
vendored
@@ -26,24 +26,32 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
matrix:
|
matrix:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
name: Fetch Build Keyboards
|
name: Fetch Build Keyboards
|
||||||
outputs:
|
outputs:
|
||||||
build_matrix: ${{ env.build_matrix }}
|
build_matrix: ${{ env.build_matrix }}
|
||||||
|
has_valid_build_matrix: ${{ steps.fetch.outputs.has_valid_build_matrix }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Install yaml2json
|
|
||||||
run: python3 -m pip install remarshal
|
|
||||||
|
|
||||||
- name: Fetch Build Matrix
|
- name: Fetch Build Matrix
|
||||||
|
id: fetch
|
||||||
run: |
|
run: |
|
||||||
echo "build_matrix=$(yaml2json '${{ inputs.build_matrix_path }}' | jq -c .)" >> $GITHUB_ENV
|
matrix_content=$(yq -oj -I0 '${{ inputs.build_matrix_path }}')
|
||||||
yaml2json "${{ inputs.build_matrix_path }}" | jq
|
|
||||||
|
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:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: needs.matrix.outputs.has_valid_build_matrix == 'true'
|
||||||
container:
|
container:
|
||||||
image: zmkfirmware/zmk-build-arm:stable
|
image: zmkfirmware/zmk-build-arm:stable
|
||||||
needs: matrix
|
needs: matrix
|
||||||
@@ -52,33 +60,65 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix: ${{ fromJson(needs.matrix.outputs.build_matrix) }}
|
matrix: ${{ fromJson(needs.matrix.outputs.build_matrix) }}
|
||||||
steps:
|
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
|
- name: Prepare variables
|
||||||
shell: sh -x {0}
|
shell: bash -x {0}
|
||||||
env:
|
env:
|
||||||
board: ${{ matrix.board }}
|
board: ${{ matrix.board }}
|
||||||
shield: ${{ matrix.shield }}
|
shield: ${{ matrix.shield }}
|
||||||
artifact_name: ${{ matrix.artifact-name }}
|
artifact_name: ${{ matrix.artifact-name }}
|
||||||
|
snippet: ${{ matrix.snippet }}
|
||||||
run: |
|
run: |
|
||||||
echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV
|
if [ -e zephyr/module.yml ]; then
|
||||||
echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}" >> $GITHUB_ENV
|
export zmk_load_arg=" -DZMK_EXTRA_MODULES='${GITHUB_WORKSPACE}'"
|
||||||
echo "display_name=${shield:+$shield - }${board}" >> $GITHUB_ENV
|
new_tmp_dir="${TMPDIR:-/tmp}/zmk-config"
|
||||||
echo "artifact_name=${artifact_name:-${shield:+$shield-}${board}-zmk}" >> $GITHUB_ENV
|
mkdir -p "${new_tmp_dir}"
|
||||||
|
echo "base_dir=${new_tmp_dir}" >> $GITHUB_ENV
|
||||||
|
else
|
||||||
|
echo "base_dir=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Checkout
|
if [ -n "${snippet}" ]; then
|
||||||
uses: actions/checkout@v3
|
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
|
- name: Cache west modules
|
||||||
uses: actions/cache@v3.0.11
|
uses: actions/cache@v4
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
env:
|
env:
|
||||||
cache_name: cache-zephyr-${{ env.zephyr_version }}-modules
|
cache_name: cache-zephyr-${{ env.zephyr_version }}-modules
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
modules/
|
${{ env.base_dir }}/modules/
|
||||||
tools/
|
${{ env.base_dir }}/tools/
|
||||||
zephyr/
|
${{ env.base_dir }}/zephyr/
|
||||||
bootloader/
|
${{ env.base_dir }}/bootloader/
|
||||||
zmk/
|
${{ env.base_dir }}/zmk/
|
||||||
key: ${{ runner.os }}-build-${{ env.cache_name }}-${{ hashFiles('**/west.yml', '**/build.yaml') }}
|
key: ${{ runner.os }}-build-${{ env.cache_name }}-${{ hashFiles('**/west.yml', '**/build.yaml') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-build-${{ env.cache_name }}-
|
${{ runner.os }}-build-${{ env.cache_name }}-
|
||||||
@@ -86,23 +126,66 @@ jobs:
|
|||||||
${{ runner.os }}-
|
${{ runner.os }}-
|
||||||
|
|
||||||
- name: West Init
|
- 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
|
- 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
|
- name: West Zephyr export
|
||||||
|
working-directory: ${{ env.base_dir }}
|
||||||
run: west zephyr-export
|
run: west zephyr-export
|
||||||
|
|
||||||
- name: West Build (${{ env.display_name }})
|
- name: West Build (${{ env.display_name }})
|
||||||
|
working-directory: ${{ env.base_dir }}
|
||||||
shell: sh -x {0}
|
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
|
- name: ${{ env.display_name }} Kconfig file
|
||||||
run: |
|
run: |
|
||||||
if [ -f build/zephyr/.config ]
|
if [ -f "${{ env.build_dir }}/zephyr/.config" ]
|
||||||
then
|
then
|
||||||
grep -v -e "^#" -e "^$" build/zephyr/.config | sort
|
grep -v -e "^#" -e "^$" "${{ env.build_dir }}/zephyr/.config" | sort
|
||||||
else
|
else
|
||||||
echo "No Kconfig output"
|
echo "No Kconfig output"
|
||||||
fi
|
fi
|
||||||
@@ -110,12 +193,12 @@ jobs:
|
|||||||
|
|
||||||
- name: ${{ env.display_name }} Devicetree file
|
- name: ${{ env.display_name }} Devicetree file
|
||||||
run: |
|
run: |
|
||||||
if [ -f build/zephyr/zephyr.dts ]
|
if [ -f "${{ env.build_dir }}/zephyr/zephyr.dts" ]
|
||||||
then
|
then
|
||||||
cat build/zephyr/zephyr.dts
|
cat "${{ env.build_dir }}/zephyr/zephyr.dts"
|
||||||
elif [ -f build/zephyr/zephyr.dts.pre ]
|
elif [ -f "${{ env.build_dir }}/zephyr/zephyr.dts.pre" ]
|
||||||
then
|
then
|
||||||
cat -s build/zephyr/zephyr.dts.pre
|
cat -s "${{ env.build_dir }}/zephyr/zephyr.dts.pre"
|
||||||
else
|
else
|
||||||
echo "No Devicetree output"
|
echo "No Devicetree output"
|
||||||
fi
|
fi
|
||||||
@@ -124,17 +207,30 @@ jobs:
|
|||||||
- name: Rename artifacts
|
- name: Rename artifacts
|
||||||
shell: sh -x {0}
|
shell: sh -x {0}
|
||||||
run: |
|
run: |
|
||||||
mkdir build/artifacts
|
mkdir "${{ env.build_dir }}/artifacts"
|
||||||
if [ -f build/zephyr/zmk.uf2 ]
|
if [ -f "${{ env.build_dir }}/zephyr/zmk.uf2" ]
|
||||||
then
|
then
|
||||||
cp build/zephyr/zmk.uf2 "build/artifacts/${{ env.artifact_name }}.uf2"
|
cp "${{ env.build_dir }}/zephyr/zmk.uf2" "${{ env.build_dir }}/artifacts/${{ env.artifact_name }}.uf2"
|
||||||
elif [ -f build/zephyr/zmk.${{ inputs.fallback_binary }} ]
|
elif [ -f "${{ env.build_dir }}/zephyr/zmk.${{ inputs.fallback_binary }}" ]
|
||||||
then
|
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
|
fi
|
||||||
|
|
||||||
- name: Archive (${{ env.display_name }})
|
- name: Archive (${{ env.display_name }})
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v6
|
||||||
|
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:
|
with:
|
||||||
name: ${{ inputs.archive_name }}
|
name: ${{ inputs.archive_name }}
|
||||||
path: build/artifacts
|
pattern: artifact-*
|
||||||
|
delete-merged: true
|
||||||
|
|||||||
118
.github/workflows/build.yml
vendored
118
.github/workflows/build.yml
vendored
@@ -12,21 +12,29 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: "22 4 * * *"
|
- cron: "22 4 * * *"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'schedule' }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: docker.io/zmkfirmware/zmk-build-arm:3.2
|
image: docker.io/zmkfirmware/zmk-build-arm:4.1
|
||||||
needs: compile-matrix
|
needs: compile-matrix
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include: ${{ fromJSON(needs.compile-matrix.outputs.include-list) }}
|
include: ${{ fromJSON(needs.compile-matrix.outputs.include-list) }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: Cache west modules
|
- name: Cache west modules
|
||||||
uses: actions/cache@v3.0.2
|
uses: actions/cache@v4
|
||||||
env:
|
env:
|
||||||
cache-name: cache-zephyr-modules
|
cache-name: cache-zephyr-modules
|
||||||
with:
|
with:
|
||||||
@@ -45,23 +53,21 @@ jobs:
|
|||||||
- name: Initialize workspace (west init)
|
- name: Initialize workspace (west init)
|
||||||
run: west init -l app
|
run: west init -l app
|
||||||
- name: Update modules (west update)
|
- name: Update modules (west update)
|
||||||
run: west update
|
run: west update --fetch-opt=--filter=tree:0
|
||||||
- name: Export Zephyr CMake package (west zephyr-export)
|
- name: Export Zephyr CMake package (west zephyr-export)
|
||||||
run: west zephyr-export
|
run: west zephyr-export
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v2
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "14.x"
|
node-version: "14.x"
|
||||||
- name: Install @actions/artifact
|
- name: Install @actions/artifact
|
||||||
run: npm install @actions/artifact
|
run: npm install @actions/artifact@5.0.3
|
||||||
- name: Build and upload artifacts
|
- name: Build
|
||||||
uses: actions/github-script@v4
|
uses: actions/github-script@v7
|
||||||
id: boards-list
|
id: boards-list
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const artifact = require('@actions/artifact');
|
|
||||||
const artifactClient = artifact.create();
|
|
||||||
|
|
||||||
const execSync = require('child_process').execSync;
|
const execSync = require('child_process').execSync;
|
||||||
|
|
||||||
@@ -71,10 +77,39 @@ jobs:
|
|||||||
|
|
||||||
for (const shieldArgs of buildShieldArgs) {
|
for (const shieldArgs of buildShieldArgs) {
|
||||||
try {
|
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`)
|
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());
|
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"];
|
const fileExtensions = ["hex", "uf2"];
|
||||||
|
|
||||||
@@ -88,11 +123,11 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
const cmakeName = shieldArgs['cmake-args'] ? '-' + (shieldArgs.nickname || shieldArgs['cmake-args'].split(' ').join('')) : '';
|
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) {
|
} 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);
|
console.error(e);
|
||||||
error = true;
|
error = true;
|
||||||
} finally {
|
} finally {
|
||||||
@@ -104,14 +139,14 @@ jobs:
|
|||||||
throw new Error('Failed to build one or more configurations');
|
throw new Error('Failed to build one or more configurations');
|
||||||
}
|
}
|
||||||
compile-matrix:
|
compile-matrix:
|
||||||
if: ${{ always() }}
|
if: ${{ !cancelled() }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [core-coverage, board-changes, nightly]
|
needs: [core-coverage, board-changes, nightly]
|
||||||
outputs:
|
outputs:
|
||||||
include-list: ${{ steps.compile-list.outputs.result }}
|
include-list: ${{ steps.compile-list.outputs.result }}
|
||||||
steps:
|
steps:
|
||||||
- name: Join build lists
|
- name: Join build lists
|
||||||
uses: actions/github-script@v4
|
uses: actions/github-script@v7
|
||||||
id: compile-list
|
id: compile-list
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -135,6 +170,7 @@ jobs:
|
|||||||
perBoard[configuration.board].push({
|
perBoard[configuration.board].push({
|
||||||
shield: configuration.shield,
|
shield: configuration.shield,
|
||||||
'cmake-args': configuration['cmake-args'],
|
'cmake-args': configuration['cmake-args'],
|
||||||
|
snippet: configuration.snippet,
|
||||||
nickname: configuration.nickname
|
nickname: configuration.nickname
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -151,14 +187,16 @@ jobs:
|
|||||||
core-include: ${{ steps.core-list.outputs.result }}
|
core-include: ${{ steps.core-list.outputs.result }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v2
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "14.x"
|
node-version: "14.x"
|
||||||
- name: Install js-yaml
|
- name: Install js-yaml
|
||||||
run: npm install js-yaml
|
run: npm install js-yaml
|
||||||
- uses: actions/github-script@v4
|
- uses: actions/github-script@v7
|
||||||
id: core-list
|
id: core-list
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -180,14 +218,14 @@ jobs:
|
|||||||
boards-include: ${{ steps.boards-list.outputs.result }}
|
boards-include: ${{ steps.boards-list.outputs.result }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v5
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v2
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "14.x"
|
node-version: "14.x"
|
||||||
- name: Install js-yaml
|
- name: Install js-yaml
|
||||||
run: npm install js-yaml
|
run: npm install js-yaml
|
||||||
- uses: actions/github-script@v4
|
- uses: actions/github-script@v7
|
||||||
id: boards-list
|
id: boards-list
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -239,6 +277,7 @@ jobs:
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
console.error("Board without keys or interconnect");
|
console.error("Board without keys or interconnect");
|
||||||
|
return [];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "shield":
|
case "shield":
|
||||||
@@ -257,14 +296,14 @@ jobs:
|
|||||||
});
|
});
|
||||||
}))).flat();
|
}))).flat();
|
||||||
nightly:
|
nightly:
|
||||||
if: ${{ github.event_name == 'schedule' }}
|
if: ${{ github.event_name == 'schedule' && github.repository_owner == 'zmkfirmware' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: get-grouped-hardware
|
needs: get-grouped-hardware
|
||||||
outputs:
|
outputs:
|
||||||
nightly-include: ${{ steps.nightly-list.outputs.result }}
|
nightly-include: ${{ steps.nightly-list.outputs.result }}
|
||||||
steps:
|
steps:
|
||||||
- name: Create nightly list
|
- name: Create nightly list
|
||||||
uses: actions/github-script@v4
|
uses: actions/github-script@v7
|
||||||
id: nightly-list
|
id: nightly-list
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -307,15 +346,17 @@ jobs:
|
|||||||
organized-metadata: ${{ steps.organize-metadata.outputs.result }}
|
organized-metadata: ${{ steps.organize-metadata.outputs.result }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
- name: Use Node.js
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v2
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "14.x"
|
node-version: "14.x"
|
||||||
- name: Install js-yaml
|
- name: Install js-yaml
|
||||||
run: npm install js-yaml
|
run: npm install js-yaml
|
||||||
- name: Aggregate Metadata
|
- name: Aggregate Metadata
|
||||||
uses: actions/github-script@v4
|
uses: actions/github-script@v7
|
||||||
id: aggregate-metadata
|
id: aggregate-metadata
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -333,7 +374,7 @@ jobs:
|
|||||||
result-encoding: string
|
result-encoding: string
|
||||||
|
|
||||||
- name: Organize Metadata
|
- name: Organize Metadata
|
||||||
uses: actions/github-script@v4
|
uses: actions/github-script@v7
|
||||||
id: organize-metadata
|
id: organize-metadata
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -382,27 +423,32 @@ jobs:
|
|||||||
if: ${{ github.event_name != 'schedule' }}
|
if: ${{ github.event_name != 'schedule' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
changed-files: ${{ steps.changed-files.outputs.all }}
|
changed-files: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
board-changes: ${{ steps.board-changes.outputs.result }}
|
board-changes: ${{ steps.board-changes.outputs.result }}
|
||||||
core-changes: ${{ steps.core-changes.outputs.result }}
|
core-changes: ${{ steps.core-changes.outputs.result }}
|
||||||
steps:
|
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
|
id: changed-files
|
||||||
with:
|
with:
|
||||||
format: "json"
|
json: true
|
||||||
- uses: actions/github-script@v4
|
escape_json: false
|
||||||
|
- uses: actions/github-script@v7
|
||||||
id: board-changes
|
id: board-changes
|
||||||
with:
|
with:
|
||||||
script: |
|
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 boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
|
||||||
return boardChanges.length ? 'true' : 'false';
|
return boardChanges.length ? 'true' : 'false';
|
||||||
result-encoding: string
|
result-encoding: string
|
||||||
- uses: actions/github-script@v4
|
- uses: actions/github-script@v7
|
||||||
id: core-changes
|
id: core-changes
|
||||||
with:
|
with:
|
||||||
script: |
|
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 boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
|
||||||
const appChanges = changedFiles.filter(f => f.startsWith('app'));
|
const appChanges = changedFiles.filter(f => f.startsWith('app'));
|
||||||
const ymlChanges = changedFiles.includes('.github/workflows/build.yml');
|
const ymlChanges = changedFiles.includes('.github/workflows/build.yml');
|
||||||
|
|||||||
4
.github/workflows/doc-checks.yml
vendored
4
.github/workflows/doc-checks.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v5
|
||||||
- uses: bahmutov/npm-install@v1
|
- uses: bahmutov/npm-install@v1
|
||||||
with:
|
with:
|
||||||
working-directory: docs
|
working-directory: docs
|
||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
typecheck:
|
typecheck:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v5
|
||||||
- uses: bahmutov/npm-install@v1
|
- uses: bahmutov/npm-install@v1
|
||||||
with:
|
with:
|
||||||
working-directory: docs
|
working-directory: docs
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ jobs:
|
|||||||
validate-metadata:
|
validate-metadata:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: docker.io/zmkfirmware/zmk-dev-arm:3.2
|
image: docker.io/zmkfirmware/zmk-dev-arm:4.1
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v5
|
||||||
- name: Install dependencies
|
- 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
|
- name: West init
|
||||||
run: west init -l app
|
run: west init -l app
|
||||||
- name: Update modules (west update)
|
- name: Update modules (west update)
|
||||||
|
|||||||
6
.github/workflows/pre-commit.yml
vendored
6
.github/workflows/pre-commit.yml
vendored
@@ -8,8 +8,8 @@ jobs:
|
|||||||
pre-commit:
|
pre-commit:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
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
80
.github/workflows/release-please.yml
vendored
Normal 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
28
.github/workflows/stale.yml
vendored
Normal 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@v10.2.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
|
||||||
24
.github/workflows/test.yml
vendored
24
.github/workflows/test.yml
vendored
@@ -4,13 +4,17 @@ on:
|
|||||||
push:
|
push:
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/test.yml"
|
- ".github/workflows/test.yml"
|
||||||
|
- "app/run-test.sh"
|
||||||
- "app/tests/**"
|
- "app/tests/**"
|
||||||
- "app/src/**"
|
- "app/src/**"
|
||||||
|
- "app/include/**"
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/test.yml"
|
- ".github/workflows/test.yml"
|
||||||
|
- "app/run-test.sh"
|
||||||
- "app/tests/**"
|
- "app/tests/**"
|
||||||
- "app/src/**"
|
- "app/src/**"
|
||||||
|
- "app/include/**"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
collect-tests:
|
collect-tests:
|
||||||
@@ -19,13 +23,13 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v5
|
||||||
- name: Find test directories
|
- name: Find test directories
|
||||||
id: test-dirs
|
id: test-dirs
|
||||||
run: |
|
run: |
|
||||||
cd app/tests/
|
cd app/tests/
|
||||||
export TESTS=$(ls -d * | jq -R -s -c 'split("\n")[:-1]')
|
export TESTS=$(ls -d * | grep -v ble | jq -R -s -c 'split("\n")[:-1]')
|
||||||
echo "::set-output name=test-dirs::${TESTS}"
|
echo "test-dirs=${TESTS}" >> $GITHUB_OUTPUT
|
||||||
run-tests:
|
run-tests:
|
||||||
needs: collect-tests
|
needs: collect-tests
|
||||||
strategy:
|
strategy:
|
||||||
@@ -33,12 +37,12 @@ jobs:
|
|||||||
test: ${{ fromJSON(needs.collect-tests.outputs.test-dirs) }}
|
test: ${{ fromJSON(needs.collect-tests.outputs.test-dirs) }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: docker.io/zmkfirmware/zmk-build-arm:3.2
|
image: docker.io/zmkfirmware/zmk-build-arm:4.1
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v5
|
||||||
- name: Cache west modules
|
- name: Cache west modules
|
||||||
uses: actions/cache@v3.0.2
|
uses: actions/cache@v4
|
||||||
env:
|
env:
|
||||||
cache-name: cache-zephyr-modules
|
cache-name: cache-zephyr-modules
|
||||||
with:
|
with:
|
||||||
@@ -57,15 +61,15 @@ jobs:
|
|||||||
- name: Initialize workspace (west init)
|
- name: Initialize workspace (west init)
|
||||||
run: west init -l app
|
run: west init -l app
|
||||||
- name: Update modules (west update)
|
- name: Update modules (west update)
|
||||||
run: west update
|
run: west update --fetch-opt=--filter=tree:0
|
||||||
- name: Export Zephyr CMake package (west zephyr-export)
|
- name: Export Zephyr CMake package (west zephyr-export)
|
||||||
run: west zephyr-export
|
run: west zephyr-export
|
||||||
- name: Test ${{ matrix.test }}
|
- name: Test ${{ matrix.test }}
|
||||||
working-directory: app
|
working-directory: app
|
||||||
run: west test tests/${{ matrix.test }}
|
run: ZMK_TESTS_VERBOSE=1 west test tests/${{ matrix.test }}
|
||||||
- name: Archive artifacts
|
- name: Archive artifacts
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: "log-files"
|
name: "${{ matrix.test }}-log-files"
|
||||||
path: app/build/**/*.log
|
path: app/build/**/*.log
|
||||||
|
|||||||
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,9 +1,19 @@
|
|||||||
/.west
|
/.west
|
||||||
/bootloader
|
/bootloader
|
||||||
/modules
|
/modules
|
||||||
|
/optional
|
||||||
/tools
|
/tools
|
||||||
/zephyr
|
/zephyr
|
||||||
/zmk-config
|
/zmk-config
|
||||||
/build
|
/build
|
||||||
|
|
||||||
|
# macOS
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
|
|
||||||
|
# Python
|
||||||
__pycache__
|
__pycache__
|
||||||
|
.python-version
|
||||||
|
.venv
|
||||||
|
|
||||||
|
# clangd
|
||||||
|
app/.cache/
|
||||||
|
|||||||
138
.gitlint
Normal file
138
.gitlint
Normal 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
|
||||||
@@ -4,20 +4,28 @@ repos:
|
|||||||
rev: v1.5.1
|
rev: v1.5.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: remove-tabs
|
- id: remove-tabs
|
||||||
exclude: "vendor-prefixes\\.txt$"
|
exclude: "vendor-prefixes\\.txt$|.git/COMMIT_EDITMSG"
|
||||||
- repo: https://github.com/pocc/pre-commit-hooks
|
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||||
rev: v1.3.5
|
rev: v18.1.8
|
||||||
hooks:
|
hooks:
|
||||||
- id: clang-format
|
- id: clang-format
|
||||||
|
types_or: [c++, c]
|
||||||
args:
|
args:
|
||||||
- -i
|
- -i
|
||||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
- repo: https://github.com/rbubley/mirrors-prettier
|
||||||
rev: v2.7.1
|
rev: 787fb9f542b140ba0b2aced38e6a3e68021647a3
|
||||||
hooks:
|
hooks:
|
||||||
- id: prettier
|
- id: prettier
|
||||||
# Workaround for https://github.com/pre-commit/mirrors-prettier/issues/29
|
exclude: |
|
||||||
additional_dependencies:
|
(?x)^(
|
||||||
- prettier@2.8.7
|
.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
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.4.0
|
rev: v4.4.0
|
||||||
hooks:
|
hooks:
|
||||||
|
|||||||
1
.release-please-manifest.json
Normal file
1
.release-please-manifest.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{".":"0.3.0"}
|
||||||
4
.vscode/extensions.json
vendored
4
.vscode/extensions.json
vendored
@@ -1,9 +1,11 @@
|
|||||||
{
|
{
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"esbenp.prettier-vscode",
|
"esbenp.prettier-vscode",
|
||||||
|
"ms-python.black-formatter",
|
||||||
"ms-python.python",
|
"ms-python.python",
|
||||||
"ms-vscode.cpptools",
|
"ms-vscode.cpptools",
|
||||||
"plorefice.devicetree",
|
"plorefice.devicetree",
|
||||||
"twxs.cmake"
|
"twxs.cmake",
|
||||||
|
"unifiedjs.vscode-mdx"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@@ -3,7 +3,7 @@
|
|||||||
"*.overlay": "dts",
|
"*.overlay": "dts",
|
||||||
"*.keymap": "dts"
|
"*.keymap": "dts"
|
||||||
},
|
},
|
||||||
"python.formatting.provider": "black",
|
"python.analysis.include": ["app/scripts", "zephyr/scripts"],
|
||||||
"[c]": {
|
"[c]": {
|
||||||
"editor.formatOnSave": true
|
"editor.formatOnSave": true
|
||||||
},
|
},
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
},
|
},
|
||||||
"[python]": {
|
"[python]": {
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"editor.defaultFormatter": "ms-python.python"
|
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||||
},
|
},
|
||||||
"[css][json][jsonc][html][markdown][yaml]": {
|
"[css][json][jsonc][html][markdown][yaml]": {
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
|
|||||||
116
CHANGELOG.md
Normal file
116
CHANGELOG.md
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## [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))
|
||||||
@@ -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`.
|
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`.
|
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
|
## Code Contributions
|
||||||
|
|
||||||
### Development Setup
|
### Development Setup
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
endOfLine: "auto",
|
endOfLine: "auto",
|
||||||
|
trailingComma: "es5",
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,47 +2,55 @@ cmake_minimum_required(VERSION 3.13.1)
|
|||||||
|
|
||||||
set(CONFIG_APPLICATION_DEFINED_SYSCALL true)
|
set(CONFIG_APPLICATION_DEFINED_SYSCALL true)
|
||||||
|
|
||||||
# Add our custom Zephyr module for drivers w/ syscalls, etc.
|
set(ZEPHYR_BOARD_ALIASES "boards/aliases.cmake")
|
||||||
list(APPEND DTS_ROOT ${CMAKE_SOURCE_DIR}/drivers/zephyr)
|
set(ZEPHYR_EXTRA_MODULES "${ZMK_EXTRA_MODULES};${CMAKE_CURRENT_SOURCE_DIR}/module;${CMAKE_CURRENT_SOURCE_DIR}/keymap-module")
|
||||||
|
|
||||||
set(ZephyrBuildConfiguration_ROOT ${CMAKE_SOURCE_DIR}/cmake)
|
|
||||||
|
|
||||||
list(APPEND ZEPHYR_EXTRA_MODULES
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/module
|
|
||||||
)
|
|
||||||
|
|
||||||
# Find Zephyr. This also loads Zephyr's build system.
|
# Find Zephyr. This also loads Zephyr's build system.
|
||||||
find_package(Zephyr REQUIRED HINTS ../zephyr)
|
find_package(Zephyr REQUIRED HINTS ../zephyr)
|
||||||
project(zmk)
|
project(zmk)
|
||||||
|
|
||||||
|
zephyr_linker_sources(SECTIONS include/linker/zmk-behaviors.ld)
|
||||||
zephyr_linker_sources(RODATA include/linker/zmk-events.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
|
# Add your source file to the "app" target. This must come after
|
||||||
# find_package(Zephyr) which defines the target.
|
# find_package(Zephyr) which defines the target.
|
||||||
target_include_directories(app PRIVATE include)
|
target_include_directories(app PRIVATE include)
|
||||||
|
add_subdirectory(src/boot)
|
||||||
target_sources(app PRIVATE src/stdlib.c)
|
target_sources(app PRIVATE src/stdlib.c)
|
||||||
target_sources(app PRIVATE src/activity.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/matrix_transform.c)
|
||||||
|
target_sources(app PRIVATE src/physical_layouts.c)
|
||||||
target_sources(app PRIVATE src/sensors.c)
|
target_sources(app PRIVATE src/sensors.c)
|
||||||
target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/wpm.c)
|
target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/wpm.c)
|
||||||
target_sources(app PRIVATE src/event_manager.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_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/activity_state_changed.c)
|
||||||
target_sources(app PRIVATE src/events/position_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/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_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_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(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_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)
|
if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
|
||||||
target_sources(app PRIVATE src/hid.c)
|
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(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_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_ifdef(CONFIG_ZMK_BEHAVIOR_HOLD_TAP app PRIVATE src/behaviors/behavior_hold_tap.c)
|
||||||
target_sources(app PRIVATE src/behaviors/behavior_sticky_key.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_caps_word.c)
|
||||||
target_sources(app PRIVATE src/behaviors/behavior_key_repeat.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)
|
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_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_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_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/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/behavior_queue.c)
|
||||||
target_sources(app PRIVATE src/conditional_layer.c)
|
target_sources(app PRIVATE src/conditional_layer.c)
|
||||||
target_sources(app PRIVATE src/endpoints.c)
|
target_sources(app PRIVATE src/endpoints.c)
|
||||||
@@ -68,6 +78,7 @@ if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
|
|||||||
target_sources(app PRIVATE src/events/layer_state_changed.c)
|
target_sources(app PRIVATE src/events/layer_state_changed.c)
|
||||||
target_sources(app PRIVATE src/events/modifiers_state_changed.c)
|
target_sources(app PRIVATE src/events/modifiers_state_changed.c)
|
||||||
target_sources(app PRIVATE src/events/keycode_state_changed.c)
|
target_sources(app PRIVATE src/events/keycode_state_changed.c)
|
||||||
|
target_sources_ifdef(CONFIG_ZMK_HID_INDICATORS app PRIVATE src/hid_indicators.c)
|
||||||
|
|
||||||
if (CONFIG_ZMK_BLE)
|
if (CONFIG_ZMK_BLE)
|
||||||
target_sources(app PRIVATE src/events/ble_active_profile_changed.c)
|
target_sources(app PRIVATE src/events/ble_active_profile_changed.c)
|
||||||
@@ -83,16 +94,43 @@ target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/behaviors/behavior_bac
|
|||||||
target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/events/battery_state_changed.c)
|
target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/events/battery_state_changed.c)
|
||||||
target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/battery.c)
|
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)
|
||||||
|
add_subdirectory_ifdef(CONFIG_ZMK_HID_INDICATORS src/indicators)
|
||||||
|
|
||||||
target_sources_ifdef(CONFIG_ZMK_SPLIT app PRIVATE src/events/split_peripheral_status_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_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_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_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c)
|
||||||
target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/backlight.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)
|
target_sources(app PRIVATE src/main.c)
|
||||||
|
|
||||||
add_subdirectory(src/display/)
|
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)
|
zephyr_cc_option(-Wfatal-errors)
|
||||||
|
|||||||
358
app/Kconfig
358
app/Kconfig
@@ -5,6 +5,17 @@ mainmenu "ZMK Firmware"
|
|||||||
|
|
||||||
menu "ZMK"
|
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"
|
menu "Basic Keyboard Setup"
|
||||||
|
|
||||||
config ZMK_KEYBOARD_NAME
|
config ZMK_KEYBOARD_NAME
|
||||||
@@ -31,12 +42,23 @@ config BT_DIS_PNP_VID
|
|||||||
config BT_DIS_PNP_PID
|
config BT_DIS_PNP_PID
|
||||||
default 0x615E
|
default 0x615E
|
||||||
|
|
||||||
config BT_DIS_MODEL
|
config BT_DIS_MODEL_NUMBER_STR
|
||||||
default ZMK_KEYBOARD_NAME
|
default ZMK_KEYBOARD_NAME
|
||||||
|
|
||||||
config BT_DIS_MANUF
|
config BT_DIS_MANUF_NAME_STR
|
||||||
default "ZMK Project"
|
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"
|
menu "HID"
|
||||||
|
|
||||||
choice ZMK_HID_REPORT_TYPE
|
choice ZMK_HID_REPORT_TYPE
|
||||||
@@ -53,22 +75,28 @@ config ZMK_HID_REPORT_TYPE_NKRO
|
|||||||
help
|
help
|
||||||
Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard
|
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.
|
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
|
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
|
if ZMK_HID_REPORT_TYPE_HKRO
|
||||||
|
|
||||||
config ZMK_HID_KEYBOARD_REPORT_SIZE
|
config ZMK_HID_KEYBOARD_REPORT_SIZE
|
||||||
int "# Keyboard Keys Reportable"
|
int "# Keyboard Keys Reportable"
|
||||||
default 6
|
|
||||||
|
|
||||||
endif
|
endif # ZMK_HID_REPORT_TYPE_HKRO
|
||||||
|
|
||||||
config ZMK_HID_CONSUMER_REPORT_SIZE
|
config ZMK_HID_CONSUMER_REPORT_SIZE
|
||||||
int "# Consumer Keys Reportable"
|
int "# Consumer Keys Reportable"
|
||||||
default 6
|
|
||||||
|
|
||||||
|
|
||||||
choice ZMK_HID_CONSUMER_REPORT_USAGES
|
choice ZMK_HID_CONSUMER_REPORT_USAGES
|
||||||
prompt "HID Report Type"
|
prompt "HID Report Type"
|
||||||
@@ -87,6 +115,20 @@ config ZMK_HID_CONSUMER_REPORT_USAGES_BASIC
|
|||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
config ZMK_HID_INDICATORS
|
||||||
|
bool "HID Indicators"
|
||||||
|
help
|
||||||
|
Enable HID indicators, used for detecting state of Caps/Scroll/Num Lock,
|
||||||
|
Kata, and Compose.
|
||||||
|
|
||||||
|
rsource "src/indicators/Kconfig"
|
||||||
|
|
||||||
|
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"
|
menu "Output Types"
|
||||||
|
|
||||||
config ZMK_USB
|
config ZMK_USB
|
||||||
@@ -100,7 +142,9 @@ config ZMK_USB_BOOT
|
|||||||
bool "USB Boot Protocol Support"
|
bool "USB Boot Protocol Support"
|
||||||
depends on ZMK_USB
|
depends on ZMK_USB
|
||||||
select USB_HID_BOOT_PROTOCOL
|
select USB_HID_BOOT_PROTOCOL
|
||||||
select USB_DEVICE_SOF
|
|
||||||
|
config USB_DEVICE_INITIALIZE_AT_BOOT
|
||||||
|
default n
|
||||||
|
|
||||||
if ZMK_USB
|
if ZMK_USB
|
||||||
|
|
||||||
@@ -110,8 +154,7 @@ config USB_NUMOF_EP_WRITE_RETRIES
|
|||||||
config USB_HID_POLL_INTERVAL_MS
|
config USB_HID_POLL_INTERVAL_MS
|
||||||
default 1
|
default 1
|
||||||
|
|
||||||
#ZMK_USB
|
endif # ZMK_USB
|
||||||
endif
|
|
||||||
|
|
||||||
menuconfig ZMK_BLE
|
menuconfig ZMK_BLE
|
||||||
bool "BLE (HID over GATT)"
|
bool "BLE (HID over GATT)"
|
||||||
@@ -121,24 +164,41 @@ menuconfig ZMK_BLE
|
|||||||
select BT_SMP_APP_PAIRING_ACCEPT
|
select BT_SMP_APP_PAIRING_ACCEPT
|
||||||
select BT_PERIPHERAL
|
select BT_PERIPHERAL
|
||||||
select BT_DIS
|
select BT_DIS
|
||||||
select BT_SETTINGS
|
imply BT_DEVICE_NAME_DYNAMIC
|
||||||
select SETTINGS
|
imply BT_SETTINGS if !ARCH_POSIX
|
||||||
imply ZMK_BATTERY_REPORTING
|
imply SETTINGS if !ARCH_POSIX
|
||||||
|
imply ZMK_BATTERY_REPORTING if !ARCH_POSIX
|
||||||
|
|
||||||
if ZMK_BLE
|
if ZMK_BLE
|
||||||
|
|
||||||
# BT_TINYCRYPT_ECC is required for BT_SMP_SC_PAIR_ONLY when using HCI
|
config ZMK_BLE_EXPERIMENTAL_CONN
|
||||||
config BT_TINYCRYPT_ECC
|
bool "Experimental BLE connection changes"
|
||||||
default y if BT_HCI && !BT_CTLR
|
help
|
||||||
|
Enables settings that are planned to be default in future versions of ZMK
|
||||||
|
to improve connection stability.
|
||||||
|
|
||||||
choice BT_LL_SW_LLCP_IMPL
|
config ZMK_BLE_EXPERIMENTAL_SEC
|
||||||
default BT_LL_SW_LLCP_LEGACY
|
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
|
config ZMK_BLE_PASSKEY_ENTRY
|
||||||
default 4096 if SOC_RP2040
|
bool "Require passkey entry on the keyboard to complete pairing"
|
||||||
default 2048
|
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
|
config ZMK_BLE_THREAD_STACK_SIZE
|
||||||
int "BLE notify thread stack size"
|
int "BLE notify thread stack size"
|
||||||
@@ -162,22 +222,13 @@ config ZMK_BLE_MOUSE_REPORT_QUEUE_SIZE
|
|||||||
|
|
||||||
config ZMK_BLE_CLEAR_BONDS_ON_START
|
config ZMK_BLE_CLEAR_BONDS_ON_START
|
||||||
bool "Configuration that clears all bond information from the keyboard on startup."
|
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.
|
# HID GATT notifications sent this way are *not* picked up by Linux, and possibly others.
|
||||||
config BT_GATT_NOTIFY_MULTIPLE
|
config BT_GATT_NOTIFY_MULTIPLE
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config BT_GATT_AUTO_SEC_REQ
|
config BT_GATT_AUTO_SEC_REQ
|
||||||
default n
|
default (ZMK_SPLIT_BLE && !ZMK_SPLIT_ROLE_CENTRAL)
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
config BT_PERIPHERAL_PREF_MIN_INT
|
config BT_PERIPHERAL_PREF_MIN_INT
|
||||||
default 6
|
default 6
|
||||||
@@ -191,91 +242,99 @@ config BT_PERIPHERAL_PREF_LATENCY
|
|||||||
config BT_PERIPHERAL_PREF_TIMEOUT
|
config BT_PERIPHERAL_PREF_TIMEOUT
|
||||||
default 400
|
default 400
|
||||||
|
|
||||||
#ZMK_BLE
|
# The device name should be 16 characters or less so it fits within the
|
||||||
endif
|
# advertising data.
|
||||||
|
config BT_DEVICE_NAME_MAX
|
||||||
|
default 16
|
||||||
|
|
||||||
#Output Types
|
endif # ZMK_BLE
|
||||||
endmenu
|
|
||||||
|
|
||||||
# HID
|
endmenu # Output Types
|
||||||
endmenu
|
|
||||||
|
endmenu # HID
|
||||||
|
|
||||||
rsource "src/split/Kconfig"
|
rsource "src/split/Kconfig"
|
||||||
|
|
||||||
#Basic Keyboard Setup
|
endmenu # Basic Keyboard Setup
|
||||||
endmenu
|
|
||||||
|
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"
|
menu "Display/LED Options"
|
||||||
|
|
||||||
rsource "src/display/Kconfig"
|
rsource "src/display/Kconfig"
|
||||||
|
|
||||||
menuconfig ZMK_RGB_UNDERGLOW
|
menuconfig ZMK_RGB_UNDERGLOW
|
||||||
bool "RGB Adressable LED Underglow"
|
bool "RGB Addressable LED Underglow"
|
||||||
select LED_STRIP
|
select LED_STRIP
|
||||||
|
select ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||||
|
|
||||||
if ZMK_RGB_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
|
config ZMK_RGB_UNDERGLOW_EXT_POWER
|
||||||
bool "RGB underglow toggling also controls external power"
|
bool "RGB underglow toggling also controls external power"
|
||||||
default y
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_BRT_MIN
|
config ZMK_RGB_UNDERGLOW_BRT_MIN
|
||||||
int "RGB underglow minimum brightness in percent"
|
int "RGB underglow minimum brightness in percent"
|
||||||
range 0 100
|
range 0 100
|
||||||
default 0
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_BRT_MAX
|
config ZMK_RGB_UNDERGLOW_BRT_MAX
|
||||||
int "RGB underglow maximum brightness in percent"
|
int "RGB underglow maximum brightness in percent"
|
||||||
range ZMK_RGB_UNDERGLOW_BRT_MIN 100
|
range ZMK_RGB_UNDERGLOW_BRT_MIN 100
|
||||||
default 100
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_HUE_STEP
|
config ZMK_RGB_UNDERGLOW_HUE_STEP
|
||||||
int "RGB underglow hue step in degrees"
|
int "RGB underglow hue step in degrees"
|
||||||
range 0 359
|
range 0 359
|
||||||
default 10
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_SAT_STEP
|
config ZMK_RGB_UNDERGLOW_SAT_STEP
|
||||||
int "RGB underglow saturation step in percent"
|
int "RGB underglow saturation step in percent"
|
||||||
range 0 100
|
range 0 100
|
||||||
default 10
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_BRT_STEP
|
config ZMK_RGB_UNDERGLOW_BRT_STEP
|
||||||
int "RGB underglow brightness step in percent"
|
int "RGB underglow brightness step in percent"
|
||||||
range 0 100
|
range 0 100
|
||||||
default 10
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_HUE_START
|
config ZMK_RGB_UNDERGLOW_HUE_START
|
||||||
int "RGB underglow start hue value in degrees"
|
int "RGB underglow start hue value in degrees"
|
||||||
range 0 359
|
range 0 359
|
||||||
default 0
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_SAT_START
|
config ZMK_RGB_UNDERGLOW_SAT_START
|
||||||
int "RGB underglow start saturations value in percent"
|
int "RGB underglow start saturations value in percent"
|
||||||
range 0 100
|
range 0 100
|
||||||
default 100
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_BRT_START
|
config ZMK_RGB_UNDERGLOW_BRT_START
|
||||||
int "RGB underglow start brightness value in percent"
|
int "RGB underglow start brightness value in percent"
|
||||||
range ZMK_RGB_UNDERGLOW_BRT_MIN ZMK_RGB_UNDERGLOW_BRT_MAX
|
range ZMK_RGB_UNDERGLOW_BRT_MIN ZMK_RGB_UNDERGLOW_BRT_MAX
|
||||||
default ZMK_RGB_UNDERGLOW_BRT_MAX
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_SPD_START
|
config ZMK_RGB_UNDERGLOW_SPD_START
|
||||||
int "RGB underglow start animation speed value"
|
int "RGB underglow start animation speed value"
|
||||||
range 1 5
|
range 1 5
|
||||||
default 3
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_EFF_START
|
config ZMK_RGB_UNDERGLOW_EFF_START
|
||||||
int "RGB underglow start effect int value related to the effect enum list"
|
int "RGB underglow start effect int value related to the effect enum list"
|
||||||
range 0 3
|
range 0 3
|
||||||
default 0
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_ON_START
|
config ZMK_RGB_UNDERGLOW_ON_START
|
||||||
bool "RGB underglow starts on by default"
|
bool "RGB underglow starts on by default"
|
||||||
default y
|
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE
|
config ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE
|
||||||
bool "Turn off RGB underglow when keyboard goes into idle state"
|
bool "Turn off RGB underglow when keyboard goes into idle state"
|
||||||
@@ -284,8 +343,7 @@ config ZMK_RGB_UNDERGLOW_AUTO_OFF_USB
|
|||||||
bool "Turn off RGB underglow when USB is disconnected"
|
bool "Turn off RGB underglow when USB is disconnected"
|
||||||
depends on USB_DEVICE_STACK
|
depends on USB_DEVICE_STACK
|
||||||
|
|
||||||
#ZMK_RGB_UNDERGLOW
|
endif # ZMK_RGB_UNDERGLOW
|
||||||
endif
|
|
||||||
|
|
||||||
menuconfig ZMK_BACKLIGHT
|
menuconfig ZMK_BACKLIGHT
|
||||||
bool "LED backlight"
|
bool "LED backlight"
|
||||||
@@ -296,16 +354,13 @@ if ZMK_BACKLIGHT
|
|||||||
config ZMK_BACKLIGHT_BRT_STEP
|
config ZMK_BACKLIGHT_BRT_STEP
|
||||||
int "Brightness step in percent"
|
int "Brightness step in percent"
|
||||||
range 1 100
|
range 1 100
|
||||||
default 20
|
|
||||||
|
|
||||||
config ZMK_BACKLIGHT_BRT_START
|
config ZMK_BACKLIGHT_BRT_START
|
||||||
int "Default brightness in percent"
|
int "Default brightness in percent"
|
||||||
range 1 100
|
range 1 100
|
||||||
default 40
|
|
||||||
|
|
||||||
config ZMK_BACKLIGHT_ON_START
|
config ZMK_BACKLIGHT_ON_START
|
||||||
bool "Default backlight state"
|
bool "Default backlight state"
|
||||||
default y
|
|
||||||
|
|
||||||
config ZMK_BACKLIGHT_AUTO_OFF_IDLE
|
config ZMK_BACKLIGHT_AUTO_OFF_IDLE
|
||||||
bool "Turn off backlight when keyboard goes into idle state"
|
bool "Turn off backlight when keyboard goes into idle state"
|
||||||
@@ -313,35 +368,44 @@ config ZMK_BACKLIGHT_AUTO_OFF_IDLE
|
|||||||
config ZMK_BACKLIGHT_AUTO_OFF_USB
|
config ZMK_BACKLIGHT_AUTO_OFF_USB
|
||||||
bool "Turn off backlight when USB is disconnected"
|
bool "Turn off backlight when USB is disconnected"
|
||||||
|
|
||||||
#ZMK_BACKLIGHT
|
endif # ZMK_BACKLIGHT
|
||||||
endif
|
|
||||||
|
|
||||||
#Display/LED Options
|
endmenu # Display/LED Options
|
||||||
endmenu
|
|
||||||
|
|
||||||
menu "Mouse Options"
|
rsource "src/pointing/Kconfig"
|
||||||
|
|
||||||
config ZMK_MOUSE
|
|
||||||
bool "Enable ZMK mouse emulation"
|
|
||||||
default n
|
|
||||||
|
|
||||||
#Mouse Options
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
menu "Power Management"
|
menu "Power Management"
|
||||||
|
|
||||||
config ZMK_BATTERY_REPORTING
|
config ZMK_BATTERY_REPORTING
|
||||||
bool "Battery level detection/reporting"
|
bool "Battery level detection/reporting"
|
||||||
default n
|
|
||||||
select SENSOR
|
select SENSOR
|
||||||
|
select ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||||
imply BT_BAS if ZMK_BLE
|
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
|
config ZMK_IDLE_TIMEOUT
|
||||||
int "Milliseconds of inactivity before entering idle state (OLED shutoff, etc)"
|
int "Milliseconds of inactivity before entering idle state (OLED shutoff, etc)"
|
||||||
default 30000
|
default 30000
|
||||||
|
|
||||||
config ZMK_SLEEP
|
config ZMK_SLEEP
|
||||||
bool "Enable deep sleep support"
|
bool "Enable deep sleep support"
|
||||||
|
depends on HAS_POWEROFF
|
||||||
|
select POWEROFF
|
||||||
|
select ZMK_PM_DEVICE_SUSPEND_RESUME
|
||||||
imply USB
|
imply USB
|
||||||
|
|
||||||
if ZMK_SLEEP
|
if ZMK_SLEEP
|
||||||
@@ -353,14 +417,32 @@ config ZMK_IDLE_SLEEP_TIMEOUT
|
|||||||
int "Milliseconds of inactivity before entering deep sleep"
|
int "Milliseconds of inactivity before entering deep sleep"
|
||||||
default 900000
|
default 900000
|
||||||
|
|
||||||
#ZMK_SLEEP
|
endif # ZMK_SLEEP
|
||||||
endif
|
|
||||||
|
|
||||||
config ZMK_EXT_POWER
|
config ZMK_EXT_POWER
|
||||||
bool "Enable support to control external power output"
|
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
|
endmenu
|
||||||
|
|
||||||
menu "Combo options"
|
menu "Combo options"
|
||||||
@@ -370,14 +452,18 @@ config ZMK_COMBO_MAX_PRESSED_COMBOS
|
|||||||
default 4
|
default 4
|
||||||
|
|
||||||
config ZMK_COMBO_MAX_COMBOS_PER_KEY
|
config ZMK_COMBO_MAX_COMBOS_PER_KEY
|
||||||
int "Maximum number of combos per key"
|
int "Deprecated: Max combos per key"
|
||||||
default 5
|
default 0
|
||||||
|
help
|
||||||
|
Deprecated: Storage for combos is now determined automatically
|
||||||
|
|
||||||
config ZMK_COMBO_MAX_KEYS_PER_COMBO
|
config ZMK_COMBO_MAX_KEYS_PER_COMBO
|
||||||
int "Maximum number of keys per combo"
|
int "Deprecated: Max keys per combo"
|
||||||
default 4
|
default 0
|
||||||
|
help
|
||||||
|
Deprecated: This is now auto-calculated based on `key-positions` in devicetree
|
||||||
|
|
||||||
#Combo options
|
# Combo options
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu "Behavior Options"
|
menu "Behavior Options"
|
||||||
@@ -400,16 +486,21 @@ endmenu
|
|||||||
|
|
||||||
menu "Advanced"
|
menu "Advanced"
|
||||||
|
|
||||||
|
rsource "src/boot/Kconfig"
|
||||||
|
|
||||||
menu "Initialization Priorities"
|
menu "Initialization Priorities"
|
||||||
|
|
||||||
if USB_DEVICE_STACK
|
if USB_DEVICE_STACK
|
||||||
|
|
||||||
config ZMK_USB_INIT_PRIORITY
|
config ZMK_USB_INIT_PRIORITY
|
||||||
int "USB Init Priority"
|
int "USB Init Priority"
|
||||||
default 50
|
default 96
|
||||||
|
|
||||||
#USB
|
config ZMK_USB_HID_INIT_PRIORITY
|
||||||
endif
|
int "USB HID Init Priority"
|
||||||
|
default 95
|
||||||
|
|
||||||
|
endif # USB
|
||||||
|
|
||||||
if ZMK_BLE || ZMK_SPLIT_BLE
|
if ZMK_BLE || ZMK_SPLIT_BLE
|
||||||
|
|
||||||
@@ -417,11 +508,13 @@ config ZMK_BLE_INIT_PRIORITY
|
|||||||
int "BLE Init Priority"
|
int "BLE Init Priority"
|
||||||
default 50
|
default 50
|
||||||
|
|
||||||
#ZMK_BLE || ZMK_SPLIT_BLE
|
endif # ZMK_BLE || ZMK_SPLIT_BLE
|
||||||
endif
|
|
||||||
|
|
||||||
#Initialization Priorities
|
endmenu # Initialization Priorities
|
||||||
endmenu
|
|
||||||
|
config ZMK_PHYSICAL_LAYOUT_KEY_ROTATION
|
||||||
|
bool "Support rotation of keys in physical layouts"
|
||||||
|
default y
|
||||||
|
|
||||||
menuconfig ZMK_KSCAN
|
menuconfig ZMK_KSCAN
|
||||||
bool "ZMK KScan Integration"
|
bool "ZMK KScan Integration"
|
||||||
@@ -436,6 +529,21 @@ config ZMK_KSCAN_EVENT_QUEUE_SIZE
|
|||||||
|
|
||||||
endif # ZMK_KSCAN
|
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"
|
menu "Logging"
|
||||||
|
|
||||||
config ZMK_LOGGING_MINIMAL
|
config ZMK_LOGGING_MINIMAL
|
||||||
@@ -480,8 +588,7 @@ config USB_CDC_ACM_RINGBUF_SIZE
|
|||||||
config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
|
config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
|
||||||
default 1000
|
default 1000
|
||||||
|
|
||||||
#ZMK_USB_LOGGING
|
endif # ZMK_USB_LOGGING
|
||||||
endif
|
|
||||||
|
|
||||||
config ZMK_RTT_LOGGING
|
config ZMK_RTT_LOGGING
|
||||||
bool "Enable RTT logging to help debug"
|
bool "Enable RTT logging to help debug"
|
||||||
@@ -497,8 +604,7 @@ if ZMK_RTT_LOGGING
|
|||||||
config SEGGER_RTT_BUFFER_SIZE_UP
|
config SEGGER_RTT_BUFFER_SIZE_UP
|
||||||
default 8192
|
default 8192
|
||||||
|
|
||||||
#ZMK_RTT_LOGGING
|
endif # ZMK_RTT_LOGGING
|
||||||
endif
|
|
||||||
|
|
||||||
if ZMK_USB_LOGGING || ZMK_RTT_LOGGING
|
if ZMK_USB_LOGGING || ZMK_RTT_LOGGING
|
||||||
|
|
||||||
@@ -508,25 +614,40 @@ config LOG_BUFFER_SIZE
|
|||||||
config LOG_PROCESS_THREAD_SLEEP_MS
|
config LOG_PROCESS_THREAD_SLEEP_MS
|
||||||
default 100
|
default 100
|
||||||
|
|
||||||
#ZMK_USB_LOGGING || ZMK_RTT_LOGGING
|
endif # ZMK_USB_LOGGING || ZMK_RTT_LOGGING
|
||||||
endif
|
|
||||||
|
|
||||||
#Logging
|
endmenu # Logging
|
||||||
endmenu
|
|
||||||
|
|
||||||
if SETTINGS
|
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
|
config ZMK_SETTINGS_SAVE_DEBOUNCE
|
||||||
int "Milliseconds to debounce settings saves"
|
int "Milliseconds to debounce settings saves"
|
||||||
default 60000
|
default 60000
|
||||||
|
|
||||||
#SETTINGS
|
endif # SETTINGS
|
||||||
endif
|
|
||||||
|
|
||||||
config ZMK_BATTERY_REPORT_INTERVAL
|
config ZMK_BATTERY_REPORT_INTERVAL
|
||||||
depends on ZMK_BATTERY_REPORTING
|
depends on ZMK_BATTERY_REPORTING
|
||||||
int "Battery level report interval in seconds"
|
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
|
config ZMK_LOW_PRIORITY_THREAD_STACK_SIZE
|
||||||
int "Low priority thread stack size"
|
int "Low priority thread stack size"
|
||||||
@@ -536,14 +657,18 @@ config ZMK_LOW_PRIORITY_THREAD_PRIORITY
|
|||||||
int "Low priority thread priority"
|
int "Low priority thread priority"
|
||||||
default 10
|
default 10
|
||||||
|
|
||||||
#Advanced
|
endif # ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||||
endmenu
|
|
||||||
|
|
||||||
#ZMK
|
endmenu # Advanced
|
||||||
endmenu
|
|
||||||
|
|
||||||
config HEAP_MEM_POOL_SIZE
|
endmenu # ZMK
|
||||||
default 8192
|
|
||||||
|
if SOC_FAMILY_NORDIC_NRF
|
||||||
|
|
||||||
|
config NRF_SOC_VALIDATE_HEADERS_DISABLED
|
||||||
|
default y
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
config KERNEL_BIN_NAME
|
config KERNEL_BIN_NAME
|
||||||
default "zmk"
|
default "zmk"
|
||||||
@@ -554,9 +679,11 @@ config REBOOT
|
|||||||
config USB_DEVICE_STACK
|
config USB_DEVICE_STACK
|
||||||
default y if HAS_HW_NRF_USBD
|
default y if HAS_HW_NRF_USBD
|
||||||
|
|
||||||
|
config FPU
|
||||||
|
default CPU_HAS_FPU
|
||||||
|
|
||||||
config ZMK_WPM
|
config ZMK_WPM
|
||||||
bool "Calculate WPM"
|
bool "Calculate WPM"
|
||||||
default n
|
|
||||||
|
|
||||||
config ZMK_KEYMAP_SENSORS
|
config ZMK_KEYMAP_SENSORS
|
||||||
bool "Enable Keymap Sensors support"
|
bool "Enable Keymap Sensors support"
|
||||||
@@ -577,21 +704,24 @@ config ZMK_KEYMAP_SENSORS_DEFAULT_TRIGGERS_PER_ROTATION
|
|||||||
|
|
||||||
endif # ZMK_KEYMAP_SENSORS
|
endif # ZMK_KEYMAP_SENSORS
|
||||||
|
|
||||||
choice CBPRINTF_IMPLEMENTATION
|
|
||||||
default CBPRINTF_NANO
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
module = ZMK
|
module = ZMK
|
||||||
module-str = zmk
|
module-str = zmk
|
||||||
source "subsys/logging/Kconfig.template.log_config"
|
source "subsys/logging/Kconfig.template.log_config"
|
||||||
|
|
||||||
|
# This loads ZMK's internal board and shield Kconfigs
|
||||||
rsource "boards/Kconfig"
|
rsource "boards/Kconfig"
|
||||||
rsource "boards/shields/*/Kconfig.defconfig"
|
rsource "boards/shields/*/Kconfig.defconfig"
|
||||||
rsource "boards/shields/*/Kconfig.shield"
|
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.defconfig"
|
||||||
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.shield"
|
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.shield"
|
||||||
|
|
||||||
|
# This loads ZMK's sensible defaults
|
||||||
|
rsource "Kconfig.defaults"
|
||||||
|
|
||||||
source "Kconfig.zephyr"
|
source "Kconfig.zephyr"
|
||||||
|
|||||||
@@ -1,6 +1,66 @@
|
|||||||
# Copyright (c) 2023 The ZMK Contributors
|
# Copyright (c) 2023 The ZMK Contributors
|
||||||
# SPDX-License-Identifier: MIT
|
# 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
|
config ZMK_BEHAVIOR_KEY_TOGGLE
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
@@ -9,12 +69,49 @@ config ZMK_BEHAVIOR_KEY_TOGGLE
|
|||||||
config ZMK_BEHAVIOR_MOUSE_KEY_PRESS
|
config ZMK_BEHAVIOR_MOUSE_KEY_PRESS
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
depends on DT_HAS_ZMK_BEHAVIOR_MOUSE_KEY_PRESS_ENABLED
|
depends on DT_HAS_ZMK_BEHAVIOR_MOUSE_KEY_PRESS_ENABLED && ZMK_POINTING
|
||||||
imply ZMK_MOUSE
|
|
||||||
|
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
|
config ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
|
||||||
bool
|
bool
|
||||||
default n
|
|
||||||
|
|
||||||
config ZMK_BEHAVIOR_SENSOR_ROTATE
|
config ZMK_BEHAVIOR_SENSOR_ROTATE
|
||||||
bool
|
bool
|
||||||
@@ -28,6 +125,11 @@ config ZMK_BEHAVIOR_SENSOR_ROTATE_VAR
|
|||||||
depends on DT_HAS_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR_ENABLED
|
depends on DT_HAS_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR_ENABLED
|
||||||
select ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
|
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
|
config ZMK_BEHAVIOR_MACRO
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|||||||
118
app/Kconfig.defaults
Normal file
118
app/Kconfig.defaults
Normal 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
13
app/VERSION
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# x-release-please-start-major
|
||||||
|
VERSION_MAJOR = 0
|
||||||
|
# x-release-please-end
|
||||||
|
|
||||||
|
# x-release-please-start-minor
|
||||||
|
VERSION_MINOR = 3
|
||||||
|
# x-release-please-end
|
||||||
|
|
||||||
|
# x-release-please-start-patch
|
||||||
|
PATCHLEVEL = 0
|
||||||
|
# x-release-please-end
|
||||||
|
|
||||||
|
VERSION_TWEAK = 0
|
||||||
@@ -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
|
|
||||||
9
app/boards/adafruit/kb2040/Kconfig.adafruit_kb2040
Normal file
9
app/boards/adafruit/kb2040/Kconfig.adafruit_kb2040
Normal 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
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
file_format: "1"
|
file_format: "1"
|
||||||
id: adafruit_kb2040
|
id: adafruit_kb2040//zmk
|
||||||
name: Adafruit KB2040
|
name: Adafruit KB2040
|
||||||
type: board
|
type: board
|
||||||
arch: arm
|
arch: arm
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
* SPDX-License-Identifier: MIT
|
* 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"; };
|
&pro_micro_serial { status = "disabled"; };
|
||||||
23
app/boards/adafruit/kb2040/adafruit_kb2040_zmk_defconfig
Normal file
23
app/boards/adafruit/kb2040/adafruit_kb2040_zmk_defconfig
Normal 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
|
||||||
5
app/boards/adafruit/kb2040/board.yml
Normal file
5
app/boards/adafruit/kb2040/board.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
board:
|
||||||
|
extend: adafruit_kb2040
|
||||||
|
variants:
|
||||||
|
- name: zmk
|
||||||
|
qualifier: 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
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
file_format: "1"
|
file_format: "1"
|
||||||
id: adafruit_qt_py_rp2040
|
id: adafruit_qt_py_rp2040//zmk
|
||||||
name: Adafruit QT Py RP2040
|
name: Adafruit QT Py RP2040
|
||||||
type: board
|
type: board
|
||||||
arch: arm
|
arch: arm
|
||||||
@@ -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"; };
|
||||||
@@ -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
|
||||||
5
app/boards/adafruit/qt_py_rp2040/board.yml
Normal file
5
app/boards/adafruit/qt_py_rp2040/board.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
board:
|
||||||
|
extend: adafruit_qt_py_rp2040
|
||||||
|
variants:
|
||||||
|
- name: zmk
|
||||||
|
qualifier: rp2040
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
CONFIG_CONSOLE=n
|
|
||||||
CONFIG_SERIAL=n
|
|
||||||
CONFIG_UART_CONSOLE=n
|
|
||||||
CONFIG_ZMK_USB=y
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2023 The ZMK Contributors
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "usb_console.dtsi"
|
|
||||||
|
|
||||||
&pro_micro_serial { status = "disabled"; };
|
|
||||||
@@ -1,11 +1,7 @@
|
|||||||
|
|
||||||
CONFIG_CONSOLE=n
|
CONFIG_CONSOLE=n
|
||||||
CONFIG_SERIAL=n
|
CONFIG_SERIAL=n
|
||||||
CONFIG_UART_CONSOLE=n
|
CONFIG_UART_CONSOLE=n
|
||||||
CONFIG_UART_INTERRUPT_DRIVEN=n
|
|
||||||
CONFIG_ZMK_USB=y
|
CONFIG_ZMK_USB=y
|
||||||
CONFIG_ZMK_BLE=y
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_MPU_ALLOW_FLASH_WRITE=y
|
CONFIG_MPU_ALLOW_FLASH_WRITE=y
|
||||||
CONFIG_NVS=y
|
CONFIG_NVS=y
|
||||||
@@ -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
2
app/boards/aliases.cmake
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# defines board aliases for shorter names (or for renaming boards)
|
||||||
|
set(mikoto_520_BOARD_ALIAS "mikoto")
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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]
|
|
||||||
@@ -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)
|
|
||||||
@@ -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
|
|
||||||
@@ -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>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -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
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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)
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
if(CONFIG_PINMUX)
|
|
||||||
zephyr_library()
|
|
||||||
zephyr_library_sources(pinmux.c)
|
|
||||||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
|
|
||||||
endif()
|
|
||||||
@@ -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
|
|
||||||
@@ -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)
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Copyright (c) 2021 Nick Winans
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
config BOARD_NICE60
|
|
||||||
bool "nice!60"
|
|
||||||
depends on SOC_NRF52840_QIAA
|
|
||||||
@@ -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)
|
|
||||||
@@ -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
|
|
||||||
|
|
||||||
@@ -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
|
|
||||||
@@ -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)
|
|
||||||
@@ -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
|
|
||||||
@@ -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]
|
|
||||||
@@ -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
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
if(CONFIG_PINMUX)
|
|
||||||
zephyr_library()
|
|
||||||
zephyr_library_sources(pinmux.c)
|
|
||||||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
|
|
||||||
endif()
|
|
||||||
@@ -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)
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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)
|
|
||||||
@@ -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
|
|
||||||
@@ -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]
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Copyright (c) 2022 The ZMK Contributors
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
config BOARD_PILLBUG
|
|
||||||
bool "PillBug"
|
|
||||||
depends on SOC_NRF52840_QIAA
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
if(CONFIG_PINMUX)
|
|
||||||
zephyr_library()
|
|
||||||
zephyr_library_sources(pinmux.c)
|
|
||||||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
|
|
||||||
endif()
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Copyright (c) 2021 The ZMK Contributors
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
config BOARD_S40NC
|
|
||||||
bool "S40NC"
|
|
||||||
depends on SOC_NRF52840_QIAA
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
9
app/boards/boardsource/blok/Kconfig.boardsource_blok
Normal file
9
app/boards/boardsource/blok/Kconfig.boardsource_blok
Normal 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
|
||||||
|
|
||||||
5
app/boards/boardsource/blok/board.yml
Normal file
5
app/boards/boardsource/blok/board.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
board:
|
||||||
|
extend: boardsource_blok
|
||||||
|
variants:
|
||||||
|
- name: zmk
|
||||||
|
qualifier: rp2040
|
||||||
9
app/boards/boardsource/blok/boardsource_blok.zmk.yml
Normal file
9
app/boards/boardsource/blok/boardsource_blok.zmk.yml
Normal 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]
|
||||||
23
app/boards/boardsource/blok/boardsource_blok_zmk.dts
Normal file
23
app/boards/boardsource/blok/boardsource_blok_zmk.dts
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
30
app/boards/boardsource/blok/boardsource_blok_zmk_defconfig
Normal file
30
app/boards/boardsource/blok/boardsource_blok_zmk_defconfig
Normal 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
Reference in New Issue
Block a user