mirror of
https://github.com/zmkfirmware/zmk.git
synced 2026-03-19 20:45:18 -05:00
Compare commits
1 Commits
dependabot
...
revert-200
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f4b9cc2de5 |
@@ -6,8 +6,3 @@ fi
|
||||
if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then
|
||||
source "$WORKSPACE_DIR/zephyr/zephyr-env.sh"
|
||||
fi
|
||||
|
||||
if [ -d "$WORKSPACE_DIR/tools/bsim" ]; then
|
||||
export BSIM_OUT_PATH="$WORKSPACE_DIR/tools/bsim/"
|
||||
export BSIM_COMPONENTS_PATH="$WORKSPACE_DIR/tools/bsim/components/"
|
||||
fi
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM docker.io/zmkfirmware/zmk-dev-arm:4.1-branch
|
||||
FROM docker.io/zmkfirmware/zmk-dev-arm:3.2
|
||||
|
||||
COPY .bashrc tmp
|
||||
RUN mv /tmp/.bashrc ~/.bashrc
|
||||
|
||||
@@ -9,18 +9,13 @@
|
||||
"mounts": [
|
||||
"type=volume,source=zmk-root-user,target=/root",
|
||||
"type=volume,source=zmk-config,target=/workspaces/zmk-config",
|
||||
"type=volume,source=zmk-modules,target=/workspaces/zmk-modules",
|
||||
"type=volume,source=zmk-zephyr,target=${containerWorkspaceFolder}/zephyr",
|
||||
"type=volume,source=zmk-zephyr-modules,target=${containerWorkspaceFolder}/modules",
|
||||
"type=volume,source=zmk-zephyr-tools,target=${containerWorkspaceFolder}/tools"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": ["ms-vscode.cpptools"],
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
}
|
||||
}
|
||||
"extensions": ["ms-vscode.cpptools"],
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
},
|
||||
"forwardPorts": [3000]
|
||||
}
|
||||
|
||||
47
.github/dependabot.yml
vendored
47
.github/dependabot.yml
vendored
@@ -8,50 +8,3 @@ updates:
|
||||
directory: "/docs"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
groups:
|
||||
docusaurus-major:
|
||||
applies-to: "version-updates"
|
||||
dependency-type: "production"
|
||||
patterns:
|
||||
- "@docusaurus/*"
|
||||
update-types:
|
||||
- "major"
|
||||
docusaurus-minor-patch:
|
||||
applies-to: "version-updates"
|
||||
dependency-type: "production"
|
||||
patterns:
|
||||
- "@docusaurus/*"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
tree-sitter:
|
||||
applies-to: "version-updates"
|
||||
dependency-type: "production"
|
||||
patterns:
|
||||
- "tree-sitter-devicetree"
|
||||
- "web-tree-sitter"
|
||||
prod-other-major:
|
||||
applies-to: "version-updates"
|
||||
dependency-type: "production"
|
||||
exclude-patterns:
|
||||
- "@docusaurus/*"
|
||||
- "tree-sitter-devicetree"
|
||||
- "web-tree-sitter"
|
||||
update-types:
|
||||
- "major"
|
||||
prod-other-minor-patch:
|
||||
applies-to: "version-updates"
|
||||
dependency-type: "production"
|
||||
exclude-patterns:
|
||||
- "@docusaurus/*"
|
||||
- "tree-sitter-devicetree"
|
||||
- "web-tree-sitter"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
development:
|
||||
applies-to: "version-updates"
|
||||
dependency-type: "development"
|
||||
update-types:
|
||||
- "minor"
|
||||
- "patch"
|
||||
|
||||
18
.github/pull_request_template.md
vendored
18
.github/pull_request_template.md
vendored
@@ -1,9 +1,15 @@
|
||||
<!-- 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. -->
|
||||
<!-- If you're adding a board/shield please fill out this check-list, otherwise you can delete it -->
|
||||
|
||||
## PR check-list
|
||||
## Board/Shield Check-list
|
||||
|
||||
- [ ] Branch has a [clean commit history](https://zmk.dev/docs/development/contributing/pull-requests#clean-commit-history)
|
||||
- [ ] Additional tests are included, if changing behaviors/core code that is testable.
|
||||
- [ ] This board/shield is tested working on real hardware
|
||||
- [ ] Definitions follow the general style of other shields/boards upstream ([Reference](https://zmk.dev/docs/development/new-shield))
|
||||
- [ ] `.zmk.yml` metadata file added
|
||||
- [ ] 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)
|
||||
- [ ] [Pre-commit](https://zmk.dev/docs/development/local-toolchain/pre-commit) used to check formatting of files, commit messages, etc.
|
||||
- [ ] Includes any necessary [documentation changes](https://zmk.dev/docs/development/contributing/documentation).
|
||||
- [ ] General consistent formatting of DeviceTree files
|
||||
- [ ] Keymaps do not use deprecated key defines (Check using the [upgrader tool](https://zmk.dev/docs/codes/keymap-upgrader))
|
||||
- [ ] `&pro_micro` used in favor of `&pro_micro_d/a` if applicable
|
||||
- [ ] If split, no name added for the right/peripheral half
|
||||
- [ ] Kconfig.defconfig file correctly wraps _all_ configuration in conditional on the shield symbol
|
||||
- [ ] `.conf` file has optional extra features commented out
|
||||
- [ ] Keyboard/PCB is part of a shipped group buy or is generally available in stock to purchase (OSH/personal projects without general availability should create a zmk-config repo instead)
|
||||
|
||||
78
.github/workflows/ble-test.yml
vendored
78
.github/workflows/ble-test.yml
vendored
@@ -1,78 +0,0 @@
|
||||
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@v4
|
||||
- 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@v4
|
||||
- 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
|
||||
174
.github/workflows/build-user-config.yml
vendored
174
.github/workflows/build-user-config.yml
vendored
@@ -26,32 +26,24 @@ on:
|
||||
|
||||
jobs:
|
||||
matrix:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-latest
|
||||
name: Fetch Build Keyboards
|
||||
outputs:
|
||||
build_matrix: ${{ env.build_matrix }}
|
||||
has_valid_build_matrix: ${{ steps.fetch.outputs.has_valid_build_matrix }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install yaml2json
|
||||
run: python3 -m pip install remarshal
|
||||
|
||||
- name: Fetch Build Matrix
|
||||
id: fetch
|
||||
run: |
|
||||
matrix_content=$(yq -oj -I0 '${{ inputs.build_matrix_path }}')
|
||||
|
||||
if [ -z "$matrix_content" ] || [ "$matrix_content" = "null" ]; then
|
||||
echo "::notice file=${{inputs.build_matrix_path}},title=Empty build matrix file::To add a keyboard to the build, see https://zmk.dev/docs/user-setup#add-a-keyboard."
|
||||
echo "has_valid_build_matrix=false" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "build_matrix=$matrix_content" >> $GITHUB_ENV
|
||||
echo "has_valid_build_matrix=true" >> $GITHUB_OUTPUT
|
||||
echo "$matrix_content"
|
||||
fi
|
||||
echo "build_matrix=$(yaml2json '${{ inputs.build_matrix_path }}' | jq -c .)" >> $GITHUB_ENV
|
||||
yaml2json "${{ inputs.build_matrix_path }}" | jq
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.matrix.outputs.has_valid_build_matrix == 'true'
|
||||
container:
|
||||
image: zmkfirmware/zmk-build-arm:stable
|
||||
needs: matrix
|
||||
@@ -60,65 +52,31 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(needs.matrix.outputs.build_matrix) }}
|
||||
steps:
|
||||
- name: Act Workaround # https://github.com/nektos/act/issues/973
|
||||
if: ${{ env.ACT }}
|
||||
- name: Prepare variables
|
||||
shell: sh -x {0}
|
||||
env:
|
||||
shield: ${{ matrix.shield }}
|
||||
run: |
|
||||
apt-get update && apt-get install -y curl unzip
|
||||
curl -fsSL https://deb.nodesource.com/setup_22.x | bash && apt install -y nodejs
|
||||
echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV
|
||||
echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}" >> $GITHUB_ENV
|
||||
echo "display_name=${shield:+$shield - }${{ matrix.board }}" >> $GITHUB_ENV
|
||||
echo "artifact_name=${shield:+$shield-}${{ matrix.board }}-zmk" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Create build directory
|
||||
run: |
|
||||
echo "build_dir=$(mktemp -d)" >> $GITHUB_ENV
|
||||
|
||||
- name: Prepare variables
|
||||
shell: bash -x {0}
|
||||
env:
|
||||
board: ${{ matrix.board }}
|
||||
shield: ${{ matrix.shield }}
|
||||
artifact_name: ${{ matrix.artifact-name }}
|
||||
snippet: ${{ matrix.snippet }}
|
||||
run: |
|
||||
if [ -e zephyr/module.yml ]; then
|
||||
export zmk_load_arg=" -DZMK_EXTRA_MODULES='${GITHUB_WORKSPACE}'"
|
||||
new_tmp_dir="${TMPDIR:-/tmp}/zmk-config"
|
||||
mkdir -p "${new_tmp_dir}"
|
||||
echo "base_dir=${new_tmp_dir}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "base_dir=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
if [ -n "${snippet}" ]; then
|
||||
extra_west_args="-S \"${snippet}\""
|
||||
fi
|
||||
|
||||
echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV
|
||||
echo "extra_west_args=${extra_west_args}" >> $GITHUB_ENV
|
||||
echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}${zmk_load_arg}" >> $GITHUB_ENV
|
||||
echo "display_name=${shield:+$shield - }${board}" >> $GITHUB_ENV
|
||||
echo "artifact_name=${artifact_name:-${shield:+$shield-}${board//\//_}-zmk}" >> $GITHUB_ENV
|
||||
|
||||
- name: Copy config files to isolated temporary directory
|
||||
run: |
|
||||
if [ "${{ env.base_dir }}" != "${GITHUB_WORKSPACE}" ]; then
|
||||
mkdir "${{ env.base_dir }}/${{ inputs.config_path }}"
|
||||
cp -R ${{ inputs.config_path }}/* "${{ env.base_dir }}/${{ inputs.config_path }}/"
|
||||
fi
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Cache west modules
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3.0.11
|
||||
continue-on-error: true
|
||||
env:
|
||||
cache_name: cache-zephyr-${{ env.zephyr_version }}-modules
|
||||
with:
|
||||
path: |
|
||||
${{ env.base_dir }}/modules/
|
||||
${{ env.base_dir }}/tools/
|
||||
${{ env.base_dir }}/zephyr/
|
||||
${{ env.base_dir }}/bootloader/
|
||||
${{ env.base_dir }}/zmk/
|
||||
modules/
|
||||
tools/
|
||||
zephyr/
|
||||
bootloader/
|
||||
zmk/
|
||||
key: ${{ runner.os }}-build-${{ env.cache_name }}-${{ hashFiles('**/west.yml', '**/build.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-build-${{ env.cache_name }}-
|
||||
@@ -126,66 +84,23 @@ jobs:
|
||||
${{ runner.os }}-
|
||||
|
||||
- name: West Init
|
||||
working-directory: ${{ env.base_dir }}
|
||||
run: west init -l "${{ env.base_dir }}/${{ inputs.config_path }}"
|
||||
run: west init -l "${{ inputs.config_path }}"
|
||||
|
||||
- name: 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}"
|
||||
run: west update
|
||||
|
||||
- name: West Zephyr export
|
||||
working-directory: ${{ env.base_dir }}
|
||||
run: west zephyr-export
|
||||
|
||||
- name: West Build (${{ env.display_name }})
|
||||
working-directory: ${{ env.base_dir }}
|
||||
shell: sh -x {0}
|
||||
run: west build -s zmk/app -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
|
||||
run: west build -s zmk/app -b "${{ matrix.board }}" -- -DZMK_CONFIG="${GITHUB_WORKSPACE}/${{ inputs.config_path }}" ${{ env.extra_cmake_args }} ${{ matrix.cmake-args }}
|
||||
|
||||
- name: ${{ env.display_name }} Kconfig file
|
||||
run: |
|
||||
if [ -f "${{ env.build_dir }}/zephyr/.config" ]
|
||||
if [ -f build/zephyr/.config ]
|
||||
then
|
||||
grep -v -e "^#" -e "^$" "${{ env.build_dir }}/zephyr/.config" | sort
|
||||
grep -v -e "^#" -e "^$" build/zephyr/.config | sort
|
||||
else
|
||||
echo "No Kconfig output"
|
||||
fi
|
||||
@@ -193,12 +108,12 @@ jobs:
|
||||
|
||||
- name: ${{ env.display_name }} Devicetree file
|
||||
run: |
|
||||
if [ -f "${{ env.build_dir }}/zephyr/zephyr.dts" ]
|
||||
if [ -f build/zephyr/zephyr.dts ]
|
||||
then
|
||||
cat "${{ env.build_dir }}/zephyr/zephyr.dts"
|
||||
elif [ -f "${{ env.build_dir }}/zephyr/zephyr.dts.pre" ]
|
||||
cat build/zephyr/zephyr.dts
|
||||
elif [ -f build/zephyr/zephyr.dts.pre ]
|
||||
then
|
||||
cat -s "${{ env.build_dir }}/zephyr/zephyr.dts.pre"
|
||||
cat -s build/zephyr/zephyr.dts.pre
|
||||
else
|
||||
echo "No Devicetree output"
|
||||
fi
|
||||
@@ -207,30 +122,17 @@ jobs:
|
||||
- name: Rename artifacts
|
||||
shell: sh -x {0}
|
||||
run: |
|
||||
mkdir "${{ env.build_dir }}/artifacts"
|
||||
if [ -f "${{ env.build_dir }}/zephyr/zmk.uf2" ]
|
||||
mkdir build/artifacts
|
||||
if [ -f build/zephyr/zmk.uf2 ]
|
||||
then
|
||||
cp "${{ env.build_dir }}/zephyr/zmk.uf2" "${{ env.build_dir }}/artifacts/${{ env.artifact_name }}.uf2"
|
||||
elif [ -f "${{ env.build_dir }}/zephyr/zmk.${{ inputs.fallback_binary }}" ]
|
||||
cp build/zephyr/zmk.uf2 "build/artifacts/${{ env.artifact_name }}.uf2"
|
||||
elif [ -f build/zephyr/zmk.${{ inputs.fallback_binary }} ]
|
||||
then
|
||||
cp "${{ env.build_dir }}/zephyr/zmk.${{ inputs.fallback_binary }}" "${{ env.build_dir }}/artifacts/${{ env.artifact_name }}.${{ inputs.fallback_binary }}"
|
||||
cp "build/zephyr/zmk.${{ inputs.fallback_binary }}" "build/artifacts/${{ env.artifact_name }}.${{ inputs.fallback_binary }}"
|
||||
fi
|
||||
|
||||
- name: Archive (${{ env.display_name }})
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: artifact-${{ env.artifact_name }}
|
||||
path: ${{ env.build_dir }}/artifacts
|
||||
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.matrix.outputs.has_valid_build_matrix == 'true'
|
||||
needs: build
|
||||
name: Merge Output Artifacts
|
||||
steps:
|
||||
- name: Merge Artifacts
|
||||
uses: actions/upload-artifact/merge@v4
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ inputs.archive_name }}
|
||||
pattern: artifact-*
|
||||
delete-merged: true
|
||||
path: build/artifacts
|
||||
|
||||
118
.github/workflows/build.yml
vendored
118
.github/workflows/build.yml
vendored
@@ -12,29 +12,21 @@ on:
|
||||
schedule:
|
||||
- cron: "22 4 * * *"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'schedule' }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker.io/zmkfirmware/zmk-build-arm:4.1
|
||||
image: docker.io/zmkfirmware/zmk-build-arm:3.2
|
||||
needs: compile-matrix
|
||||
strategy:
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.compile-matrix.outputs.include-list) }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@v3
|
||||
- name: Cache west modules
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3.0.2
|
||||
env:
|
||||
cache-name: cache-zephyr-modules
|
||||
with:
|
||||
@@ -53,21 +45,23 @@ jobs:
|
||||
- name: Initialize workspace (west init)
|
||||
run: west init -l app
|
||||
- name: Update modules (west update)
|
||||
run: west update --fetch-opt=--filter=tree:0
|
||||
run: west update
|
||||
- name: Export Zephyr CMake package (west zephyr-export)
|
||||
run: west zephyr-export
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: "14.x"
|
||||
- name: Install @actions/artifact
|
||||
run: npm install @actions/artifact@5.0.3
|
||||
- name: Build
|
||||
uses: actions/github-script@v7
|
||||
run: npm install @actions/artifact
|
||||
- name: Build and upload artifacts
|
||||
uses: actions/github-script@v4
|
||||
id: boards-list
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
const artifact = require('@actions/artifact');
|
||||
const artifactClient = artifact.create();
|
||||
|
||||
const execSync = require('child_process').execSync;
|
||||
|
||||
@@ -77,39 +71,10 @@ jobs:
|
||||
|
||||
for (const shieldArgs of buildShieldArgs) {
|
||||
try {
|
||||
const output = execSync(`west build -s app -p -b ${{ matrix.board }} -- ${shieldArgs.shield ? '-DSHIELD="' + shieldArgs.shield + '"' : ''} ${shieldArgs['cmake-args'] || ''}`);
|
||||
|
||||
console.log(`::group::${{ matrix.board}} ${shieldArgs.shield} Build`)
|
||||
|
||||
const output = execSync(`west build -s app -p -b ${{ matrix.board }} ${shieldArgs.snippet ? '-S ' + shieldArgs.snippet : ''} -- ${shieldArgs.shield ? '-DSHIELD="' + shieldArgs.shield + '"' : ''} ${shieldArgs['cmake-args'] || ''}`);
|
||||
|
||||
console.log(output.toString());
|
||||
} catch (e) {
|
||||
console.error(`::error::Failed to build ${{ matrix.board }} ${shieldArgs.shield} ${shieldArgs['cmake-args']}`);
|
||||
console.error(e);
|
||||
error = true;
|
||||
} finally {
|
||||
console.log('::endgroup::');
|
||||
}
|
||||
}
|
||||
|
||||
if (error) {
|
||||
throw new Error('Failed to build one or more configurations');
|
||||
}
|
||||
- name: Upload artifacts
|
||||
uses: actions/github-script@v7
|
||||
continue-on-error: ${{ github.event_name == 'pull_request' }}
|
||||
id: boards-upload
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
const {default: artifact} = require('@actions/artifact');
|
||||
|
||||
const buildShieldArgs = JSON.parse(`${{ matrix.shieldArgs }}`);
|
||||
|
||||
let error = false;
|
||||
|
||||
for (const shieldArgs of buildShieldArgs) {
|
||||
try {
|
||||
console.log(`::group::${{ matrix.board}} ${shieldArgs.shield} Upload`)
|
||||
|
||||
const fileExtensions = ["hex", "uf2"];
|
||||
|
||||
@@ -123,11 +88,11 @@ jobs:
|
||||
}
|
||||
|
||||
const cmakeName = shieldArgs['cmake-args'] ? '-' + (shieldArgs.nickname || shieldArgs['cmake-args'].split(' ').join('')) : '';
|
||||
const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`.replaceAll('/', '_');
|
||||
const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`;
|
||||
|
||||
await artifact.uploadArtifact(artifactName, files, rootDirectory, options);
|
||||
await artifactClient.uploadArtifact(artifactName, files, rootDirectory, options);
|
||||
} catch (e) {
|
||||
console.error(`::error::Failed to upload ${{ matrix.board }} ${shieldArgs.shield} ${shieldArgs['cmake-args']}`);
|
||||
console.error(`::error::Failed to build or upload ${{ matrix.board }} ${shieldArgs.shield} ${shieldArgs['cmake-args']}`);
|
||||
console.error(e);
|
||||
error = true;
|
||||
} finally {
|
||||
@@ -139,14 +104,14 @@ jobs:
|
||||
throw new Error('Failed to build one or more configurations');
|
||||
}
|
||||
compile-matrix:
|
||||
if: ${{ !cancelled() }}
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: [core-coverage, board-changes, nightly]
|
||||
outputs:
|
||||
include-list: ${{ steps.compile-list.outputs.result }}
|
||||
steps:
|
||||
- name: Join build lists
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v4
|
||||
id: compile-list
|
||||
with:
|
||||
script: |
|
||||
@@ -170,7 +135,6 @@ jobs:
|
||||
perBoard[configuration.board].push({
|
||||
shield: configuration.shield,
|
||||
'cmake-args': configuration['cmake-args'],
|
||||
snippet: configuration.snippet,
|
||||
nickname: configuration.nickname
|
||||
})
|
||||
}
|
||||
@@ -187,16 +151,14 @@ jobs:
|
||||
core-include: ${{ steps.core-list.outputs.result }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: "14.x"
|
||||
- name: Install js-yaml
|
||||
run: npm install js-yaml
|
||||
- uses: actions/github-script@v7
|
||||
- uses: actions/github-script@v4
|
||||
id: core-list
|
||||
with:
|
||||
script: |
|
||||
@@ -218,14 +180,14 @@ jobs:
|
||||
boards-include: ${{ steps.boards-list.outputs.result }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: "14.x"
|
||||
- name: Install js-yaml
|
||||
run: npm install js-yaml
|
||||
- uses: actions/github-script@v7
|
||||
- uses: actions/github-script@v4
|
||||
id: boards-list
|
||||
with:
|
||||
script: |
|
||||
@@ -277,7 +239,6 @@ jobs:
|
||||
);
|
||||
} else {
|
||||
console.error("Board without keys or interconnect");
|
||||
return [];
|
||||
}
|
||||
break;
|
||||
case "shield":
|
||||
@@ -296,14 +257,14 @@ jobs:
|
||||
});
|
||||
}))).flat();
|
||||
nightly:
|
||||
if: ${{ github.event_name == 'schedule' && github.repository_owner == 'zmkfirmware' }}
|
||||
if: ${{ github.event_name == 'schedule' }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: get-grouped-hardware
|
||||
outputs:
|
||||
nightly-include: ${{ steps.nightly-list.outputs.result }}
|
||||
steps:
|
||||
- name: Create nightly list
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v4
|
||||
id: nightly-list
|
||||
with:
|
||||
script: |
|
||||
@@ -346,17 +307,15 @@ jobs:
|
||||
organized-metadata: ${{ steps.organize-metadata.outputs.result }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: "14.x"
|
||||
- name: Install js-yaml
|
||||
run: npm install js-yaml
|
||||
- name: Aggregate Metadata
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v4
|
||||
id: aggregate-metadata
|
||||
with:
|
||||
script: |
|
||||
@@ -374,7 +333,7 @@ jobs:
|
||||
result-encoding: string
|
||||
|
||||
- name: Organize Metadata
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v4
|
||||
id: organize-metadata
|
||||
with:
|
||||
script: |
|
||||
@@ -423,32 +382,27 @@ jobs:
|
||||
if: ${{ github.event_name != 'schedule' }}
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
changed-files: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
changed-files: ${{ steps.changed-files.outputs.all }}
|
||||
board-changes: ${{ steps.board-changes.outputs.result }}
|
||||
core-changes: ${{ steps.core-changes.outputs.result }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: tj-actions/changed-files@9200e69727eb73eb060652b19946b8a2fdfb654b # pin to v45.0.8 due to https://github.com/tj-actions/changed-files/issues/2463 https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised
|
||||
- uses: Ana06/get-changed-files@v2.0.0
|
||||
id: changed-files
|
||||
with:
|
||||
json: true
|
||||
escape_json: false
|
||||
- uses: actions/github-script@v7
|
||||
format: "json"
|
||||
- uses: actions/github-script@v4
|
||||
id: board-changes
|
||||
with:
|
||||
script: |
|
||||
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all_changed_files }}`);
|
||||
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all }}`);
|
||||
const boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
|
||||
return boardChanges.length ? 'true' : 'false';
|
||||
result-encoding: string
|
||||
- uses: actions/github-script@v7
|
||||
- uses: actions/github-script@v4
|
||||
id: core-changes
|
||||
with:
|
||||
script: |
|
||||
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all_changed_files }}`);
|
||||
const changedFiles = JSON.parse(`${{ steps.changed-files.outputs.all }}`);
|
||||
const boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
|
||||
const appChanges = changedFiles.filter(f => f.startsWith('app'));
|
||||
const ymlChanges = changedFiles.includes('.github/workflows/build.yml');
|
||||
|
||||
4
.github/workflows/doc-checks.yml
vendored
4
.github/workflows/doc-checks.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- uses: bahmutov/npm-install@v1
|
||||
with:
|
||||
working-directory: docs
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
typecheck:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- uses: bahmutov/npm-install@v1
|
||||
with:
|
||||
working-directory: docs
|
||||
|
||||
@@ -18,11 +18,11 @@ jobs:
|
||||
validate-metadata:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker.io/zmkfirmware/zmk-dev-arm:4.1
|
||||
image: docker.io/zmkfirmware/zmk-dev-arm:3.2
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install dependencies
|
||||
run: pip install --break-system-packages -r app/scripts/requirements.txt
|
||||
run: pip install -r app/scripts/requirements.txt
|
||||
- name: West init
|
||||
run: west init -l app
|
||||
- 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:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.x
|
||||
- uses: pre-commit/action@v3.0.1
|
||||
- uses: pre-commit/action@v3.0.0
|
||||
|
||||
80
.github/workflows/release-please.yml
vendored
80
.github/workflows/release-please.yml
vendored
@@ -1,80 +0,0 @@
|
||||
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@v4
|
||||
|
||||
- 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
28
.github/workflows/stale.yml
vendored
@@ -1,28 +0,0 @@
|
||||
name: "Mark and close stale PRs in the repo"
|
||||
on:
|
||||
schedule:
|
||||
- cron: "00 14 * * *" # runs daily at 14:00 https://crontab.guru/#00_14_*_*_*
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/stale@v9.1.0
|
||||
with:
|
||||
days-before-pr-stale: 300 # ~10 months
|
||||
stale-pr-label: "stale"
|
||||
stale-pr-message: >
|
||||
This PR has been automatically marked as stale because it has not
|
||||
had activity in 10 months. It will be closed in 14 days if no
|
||||
further activity occurs. Feel free to give a status update or
|
||||
re-open when it has been rebased and is ready for review (again).
|
||||
Thanks!
|
||||
days-before-pr-close: 14
|
||||
close-pr-message: >
|
||||
This PR was closed because it had no activity for over 10 months.
|
||||
Feel free to give a status update or re-open when it has been
|
||||
rebased and is ready for review (again).
|
||||
days-before-issue-stale: 1000 # ~3 years
|
||||
days-before-issue-close: -1
|
||||
ascending: true # Process older PRs first
|
||||
operations-per-run: 30 # Default value, listed here again to make it explicit
|
||||
24
.github/workflows/test.yml
vendored
24
.github/workflows/test.yml
vendored
@@ -4,17 +4,13 @@ on:
|
||||
push:
|
||||
paths:
|
||||
- ".github/workflows/test.yml"
|
||||
- "app/run-test.sh"
|
||||
- "app/tests/**"
|
||||
- "app/src/**"
|
||||
- "app/include/**"
|
||||
pull_request:
|
||||
paths:
|
||||
- ".github/workflows/test.yml"
|
||||
- "app/run-test.sh"
|
||||
- "app/tests/**"
|
||||
- "app/src/**"
|
||||
- "app/include/**"
|
||||
|
||||
jobs:
|
||||
collect-tests:
|
||||
@@ -23,13 +19,13 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: Find test directories
|
||||
id: test-dirs
|
||||
run: |
|
||||
cd app/tests/
|
||||
export TESTS=$(ls -d * | grep -v ble | jq -R -s -c 'split("\n")[:-1]')
|
||||
echo "test-dirs=${TESTS}" >> $GITHUB_OUTPUT
|
||||
export TESTS=$(ls -d * | jq -R -s -c 'split("\n")[:-1]')
|
||||
echo "::set-output name=test-dirs::${TESTS}"
|
||||
run-tests:
|
||||
needs: collect-tests
|
||||
strategy:
|
||||
@@ -37,12 +33,12 @@ jobs:
|
||||
test: ${{ fromJSON(needs.collect-tests.outputs.test-dirs) }}
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker.io/zmkfirmware/zmk-build-arm:4.1
|
||||
image: docker.io/zmkfirmware/zmk-build-arm:3.2
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: Cache west modules
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3.0.2
|
||||
env:
|
||||
cache-name: cache-zephyr-modules
|
||||
with:
|
||||
@@ -61,15 +57,15 @@ jobs:
|
||||
- name: Initialize workspace (west init)
|
||||
run: west init -l app
|
||||
- name: Update modules (west update)
|
||||
run: west update --fetch-opt=--filter=tree:0
|
||||
run: west update
|
||||
- name: Export Zephyr CMake package (west zephyr-export)
|
||||
run: west zephyr-export
|
||||
- name: Test ${{ matrix.test }}
|
||||
working-directory: app
|
||||
run: ZMK_TESTS_VERBOSE=1 west test tests/${{ matrix.test }}
|
||||
run: west test tests/${{ matrix.test }}
|
||||
- name: Archive artifacts
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: "${{ matrix.test }}-log-files"
|
||||
name: "log-files"
|
||||
path: app/build/**/*.log
|
||||
|
||||
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,19 +1,9 @@
|
||||
/.west
|
||||
/bootloader
|
||||
/modules
|
||||
/optional
|
||||
/tools
|
||||
/zephyr
|
||||
/zmk-config
|
||||
/build
|
||||
|
||||
# macOS
|
||||
*.DS_Store
|
||||
|
||||
# Python
|
||||
__pycache__
|
||||
.python-version
|
||||
.venv
|
||||
|
||||
# clangd
|
||||
app/.cache/
|
||||
__pycache__
|
||||
138
.gitlint
138
.gitlint
@@ -1,138 +0,0 @@
|
||||
# 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,28 +4,20 @@ repos:
|
||||
rev: v1.5.1
|
||||
hooks:
|
||||
- id: remove-tabs
|
||||
exclude: "vendor-prefixes\\.txt$|.git/COMMIT_EDITMSG"
|
||||
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||
rev: v18.1.8
|
||||
exclude: "vendor-prefixes\\.txt$"
|
||||
- repo: https://github.com/pocc/pre-commit-hooks
|
||||
rev: v1.3.5
|
||||
hooks:
|
||||
- id: clang-format
|
||||
types_or: [c++, c]
|
||||
args:
|
||||
- -i
|
||||
- repo: https://github.com/rbubley/mirrors-prettier
|
||||
rev: 787fb9f542b140ba0b2aced38e6a3e68021647a3
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v2.7.1
|
||||
hooks:
|
||||
- id: prettier
|
||||
exclude: |
|
||||
(?x)^(
|
||||
.git/COMMIT_EDITMSG|
|
||||
CHANGELOG.md|
|
||||
.release-please-manifest.json
|
||||
)$
|
||||
- repo: https://github.com/jorisroovers/gitlint
|
||||
rev: v0.19.1
|
||||
hooks:
|
||||
- id: gitlint
|
||||
# Workaround for https://github.com/pre-commit/mirrors-prettier/issues/29
|
||||
additional_dependencies:
|
||||
- prettier@2.8.7
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.4.0
|
||||
hooks:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{".":"0.3.0"}
|
||||
4
.vscode/extensions.json
vendored
4
.vscode/extensions.json
vendored
@@ -1,11 +1,9 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"esbenp.prettier-vscode",
|
||||
"ms-python.black-formatter",
|
||||
"ms-python.python",
|
||||
"ms-vscode.cpptools",
|
||||
"plorefice.devicetree",
|
||||
"twxs.cmake",
|
||||
"unifiedjs.vscode-mdx"
|
||||
"twxs.cmake"
|
||||
]
|
||||
}
|
||||
|
||||
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@@ -3,7 +3,7 @@
|
||||
"*.overlay": "dts",
|
||||
"*.keymap": "dts"
|
||||
},
|
||||
"python.analysis.include": ["app/scripts", "zephyr/scripts"],
|
||||
"python.formatting.provider": "black",
|
||||
"[c]": {
|
||||
"editor.formatOnSave": true
|
||||
},
|
||||
@@ -13,7 +13,7 @@
|
||||
},
|
||||
"[python]": {
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||
"editor.defaultFormatter": "ms-python.python"
|
||||
},
|
||||
"[css][json][jsonc][html][markdown][yaml]": {
|
||||
"editor.formatOnSave": true,
|
||||
|
||||
116
CHANGELOG.md
116
CHANGELOG.md
@@ -1,116 +0,0 @@
|
||||
# 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,12 +86,6 @@ documentation to areas not currently covered are greatly appreciated.
|
||||
ZMK uses `prettier` to format documentation files. You can run prettier with `npm run prettier:format`.
|
||||
You can setup git to run prettier automatically when you commit by installing the pre-commit hooks: `pip3 install pre-commit`, `pre-commit install`.
|
||||
|
||||
### Linting
|
||||
|
||||
This repository utilizes ESLint for code linting to ensure consistent code style and identify potential errors or bugs early in the development process.
|
||||
|
||||
You can run ESLint with `npm run lint` to verify your changes.
|
||||
|
||||
## Code Contributions
|
||||
|
||||
### Development Setup
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
module.exports = {
|
||||
endOfLine: "auto",
|
||||
trailingComma: "es5",
|
||||
};
|
||||
|
||||
@@ -2,40 +2,32 @@ cmake_minimum_required(VERSION 3.13.1)
|
||||
|
||||
set(CONFIG_APPLICATION_DEFINED_SYSCALL true)
|
||||
|
||||
set(ZEPHYR_BOARD_ALIASES "boards/aliases.cmake")
|
||||
set(ZEPHYR_EXTRA_MODULES "${ZMK_EXTRA_MODULES};${CMAKE_CURRENT_SOURCE_DIR}/module;${CMAKE_CURRENT_SOURCE_DIR}/keymap-module")
|
||||
# Add our custom Zephyr module for drivers w/ syscalls, etc.
|
||||
list(APPEND DTS_ROOT ${CMAKE_SOURCE_DIR}/drivers/zephyr)
|
||||
|
||||
set(ZephyrBuildConfiguration_ROOT ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
list(APPEND ZEPHYR_EXTRA_MODULES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/module
|
||||
)
|
||||
|
||||
# Find Zephyr. This also loads Zephyr's build system.
|
||||
find_package(Zephyr REQUIRED HINTS ../zephyr)
|
||||
project(zmk)
|
||||
|
||||
zephyr_linker_sources(SECTIONS include/linker/zmk-behaviors.ld)
|
||||
zephyr_linker_sources(RODATA include/linker/zmk-events.ld)
|
||||
|
||||
if(CONFIG_ZMK_BEHAVIOR_LOCAL_IDS)
|
||||
zephyr_linker_sources(DATA_SECTIONS include/linker/zmk-behavior-local-id-map.ld)
|
||||
endif()
|
||||
|
||||
zephyr_syscall_header(${APPLICATION_SOURCE_DIR}/include/drivers/behavior.h)
|
||||
zephyr_syscall_header(${APPLICATION_SOURCE_DIR}/include/drivers/input_processor.h)
|
||||
zephyr_syscall_header(${APPLICATION_SOURCE_DIR}/include/drivers/ext_power.h)
|
||||
|
||||
# Add your source file to the "app" target. This must come after
|
||||
# find_package(Zephyr) which defines the target.
|
||||
target_include_directories(app PRIVATE include)
|
||||
add_subdirectory(src/boot)
|
||||
target_sources(app PRIVATE src/stdlib.c)
|
||||
target_sources(app PRIVATE src/activity.c)
|
||||
target_sources(app PRIVATE src/behavior.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_KSCAN_SIDEBAND_BEHAVIORS app PRIVATE src/kscan_sideband_behaviors.c)
|
||||
target_sources(app PRIVATE src/kscan.c)
|
||||
target_sources(app PRIVATE src/matrix_transform.c)
|
||||
target_sources(app PRIVATE src/physical_layouts.c)
|
||||
target_sources(app PRIVATE src/sensors.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/wpm.c)
|
||||
target_sources(app PRIVATE src/event_manager.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_PM app PRIVATE src/pm.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/ext_power_generic.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_GPIO_KEY_WAKEUP_TRIGGER app PRIVATE src/gpio_key_wakeup_trigger.c)
|
||||
target_sources(app PRIVATE src/events/activity_state_changed.c)
|
||||
target_sources(app PRIVATE src/events/position_state_changed.c)
|
||||
target_sources(app PRIVATE src/events/sensor_event.c)
|
||||
@@ -43,14 +35,12 @@ target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/events/wpm_state_changed.c)
|
||||
target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/events/usb_conn_state_changed.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_reset.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SOFT_OFF app PRIVATE src/behaviors/behavior_soft_off.c)
|
||||
add_subdirectory_ifdef(CONFIG_ZMK_POINTING src/pointing/)
|
||||
if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
|
||||
target_sources(app PRIVATE src/hid.c)
|
||||
target_sources(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_HOLD_TAP app PRIVATE src/behaviors/behavior_hold_tap.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_STICKY_KEY app PRIVATE src/behaviors/behavior_sticky_key.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_sticky_key.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_caps_word.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_key_repeat.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MACRO app PRIVATE src/behaviors/behavior_macro.c)
|
||||
@@ -64,11 +54,8 @@ if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
|
||||
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE app PRIVATE src/behaviors/behavior_sensor_rotate.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_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_ifdef(CONFIG_ZMK_BEHAVIOR_TAP_DANCE app PRIVATE src/behaviors/behavior_tap_dance.c)
|
||||
target_sources(app PRIVATE src/behaviors/behavior_tap_dance.c)
|
||||
target_sources(app PRIVATE src/behavior_queue.c)
|
||||
target_sources(app PRIVATE src/conditional_layer.c)
|
||||
target_sources(app PRIVATE src/endpoints.c)
|
||||
@@ -78,7 +65,6 @@ 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/modifiers_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)
|
||||
target_sources(app PRIVATE src/events/ble_active_profile_changed.c)
|
||||
@@ -94,42 +80,16 @@ 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/battery.c)
|
||||
|
||||
target_sources_ifdef(CONFIG_ZMK_HID_INDICATORS app PRIVATE src/events/hid_indicators_changed.c)
|
||||
|
||||
target_sources_ifdef(CONFIG_ZMK_SPLIT app PRIVATE src/events/split_peripheral_status_changed.c)
|
||||
add_subdirectory_ifdef(CONFIG_ZMK_SPLIT src/split)
|
||||
add_subdirectory(src/split)
|
||||
|
||||
target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/usb.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_USB app PRIVATE src/usb_hid.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/backlight.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_LOW_PRIORITY_WORK_QUEUE app PRIVATE src/workqueue.c)
|
||||
target_sources(app PRIVATE src/workqueue.c)
|
||||
target_sources(app PRIVATE src/main.c)
|
||||
|
||||
add_subdirectory(src/display/)
|
||||
add_subdirectory_ifdef(CONFIG_SETTINGS src/settings/)
|
||||
|
||||
if (CONFIG_ZMK_STUDIO_RPC)
|
||||
# For some reason this is failing if run from a different sub-file.
|
||||
list(APPEND CMAKE_MODULE_PATH ${ZEPHYR_BASE}/modules/nanopb)
|
||||
|
||||
include(nanopb)
|
||||
|
||||
# Turn off the default nanopb behavior
|
||||
set(NANOPB_GENERATE_CPP_STANDALONE OFF)
|
||||
|
||||
nanopb_generate_cpp(proto_srcs proto_hdrs RELPATH ${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}
|
||||
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/studio.proto
|
||||
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/meta.proto
|
||||
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/core.proto
|
||||
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/behaviors.proto
|
||||
${ZEPHYR_ZMK_STUDIO_MESSAGES_MODULE_DIR}/proto/zmk/keymap.proto
|
||||
)
|
||||
|
||||
target_include_directories(app PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_sources(app PRIVATE ${proto_srcs} ${proto_hdrs})
|
||||
|
||||
add_subdirectory(src/studio)
|
||||
endif()
|
||||
|
||||
zephyr_cc_option(-Wfatal-errors)
|
||||
|
||||
354
app/Kconfig
354
app/Kconfig
@@ -5,17 +5,6 @@ mainmenu "ZMK Firmware"
|
||||
|
||||
menu "ZMK"
|
||||
|
||||
config ZMK_BOARD_COMPAT
|
||||
bool
|
||||
help
|
||||
Hidden symbol used to hint that a board has been specifically
|
||||
set up with various ZMK requirements in mind, e.g. settings
|
||||
storage, bootloader integration, etc.
|
||||
|
||||
Failure to set this will warn users they may want to verify they
|
||||
used a ZMK variant of an upstream board, or are using a board
|
||||
properly migrated to a newer ZMK version.
|
||||
|
||||
menu "Basic Keyboard Setup"
|
||||
|
||||
config ZMK_KEYBOARD_NAME
|
||||
@@ -42,23 +31,12 @@ config BT_DIS_PNP_VID
|
||||
config BT_DIS_PNP_PID
|
||||
default 0x615E
|
||||
|
||||
config BT_DIS_MODEL_NUMBER_STR
|
||||
config BT_DIS_MODEL
|
||||
default ZMK_KEYBOARD_NAME
|
||||
|
||||
config BT_DIS_MANUF_NAME_STR
|
||||
config BT_DIS_MANUF
|
||||
default "ZMK Project"
|
||||
|
||||
# Hardware specific overrides
|
||||
|
||||
if SOC_SERIES_NRF52X
|
||||
|
||||
# Default on for our usage until boards implement retained bootmode.
|
||||
config NRF_STORE_REBOOT_TYPE_GPREGRET
|
||||
bool
|
||||
default y
|
||||
|
||||
endif # SOC_SERIES_NRF52X
|
||||
|
||||
menu "HID"
|
||||
|
||||
choice ZMK_HID_REPORT_TYPE
|
||||
@@ -75,28 +53,22 @@ config ZMK_HID_REPORT_TYPE_NKRO
|
||||
help
|
||||
Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard
|
||||
from working with some BIOS/UEFI versions that only support "boot keyboard" support.
|
||||
This option also prevents using some infrequently used higher range HID usages (notably F13-F24 and INTL1-9)
|
||||
These usages can be re enabled with ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT.
|
||||
This option also prevents using some infrequently used higher range HID usages.
|
||||
|
||||
endchoice
|
||||
|
||||
config ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT
|
||||
bool "Enable extended NKRO reporting"
|
||||
depends on ZMK_HID_REPORT_TYPE_NKRO
|
||||
help
|
||||
Enables higher usage range for NKRO (F13-F24 and INTL1-9).
|
||||
Please note this is not compatible with Android currently and you will get no input
|
||||
|
||||
|
||||
if ZMK_HID_REPORT_TYPE_HKRO
|
||||
|
||||
config ZMK_HID_KEYBOARD_REPORT_SIZE
|
||||
int "# Keyboard Keys Reportable"
|
||||
default 6
|
||||
|
||||
endif # ZMK_HID_REPORT_TYPE_HKRO
|
||||
endif
|
||||
|
||||
config ZMK_HID_CONSUMER_REPORT_SIZE
|
||||
int "# Consumer Keys Reportable"
|
||||
default 6
|
||||
|
||||
|
||||
choice ZMK_HID_CONSUMER_REPORT_USAGES
|
||||
prompt "HID Report Type"
|
||||
@@ -115,18 +87,6 @@ config ZMK_HID_CONSUMER_REPORT_USAGES_BASIC
|
||||
|
||||
endchoice
|
||||
|
||||
config ZMK_HID_INDICATORS
|
||||
bool "HID Indicators"
|
||||
help
|
||||
Enable HID indicators, used for detecting state of Caps/Scroll/Num Lock,
|
||||
Kata, and Compose.
|
||||
|
||||
config ZMK_HID_SEPARATE_MOD_RELEASE_REPORT
|
||||
bool "Release Modifiers Separately"
|
||||
help
|
||||
Send a separate release event for the modifiers, to make sure the release
|
||||
of the modifier doesn't get recognized before the actual key's release event.
|
||||
|
||||
menu "Output Types"
|
||||
|
||||
config ZMK_USB
|
||||
@@ -138,11 +98,10 @@ config ZMK_USB
|
||||
|
||||
config ZMK_USB_BOOT
|
||||
bool "USB Boot Protocol Support"
|
||||
default y
|
||||
depends on ZMK_USB
|
||||
select USB_HID_BOOT_PROTOCOL
|
||||
|
||||
config USB_DEVICE_INITIALIZE_AT_BOOT
|
||||
default n
|
||||
select USB_DEVICE_SOF
|
||||
|
||||
if ZMK_USB
|
||||
|
||||
@@ -152,7 +111,8 @@ config USB_NUMOF_EP_WRITE_RETRIES
|
||||
config USB_HID_POLL_INTERVAL_MS
|
||||
default 1
|
||||
|
||||
endif # ZMK_USB
|
||||
#ZMK_USB
|
||||
endif
|
||||
|
||||
menuconfig ZMK_BLE
|
||||
bool "BLE (HID over GATT)"
|
||||
@@ -162,41 +122,24 @@ menuconfig ZMK_BLE
|
||||
select BT_SMP_APP_PAIRING_ACCEPT
|
||||
select BT_PERIPHERAL
|
||||
select BT_DIS
|
||||
imply BT_DEVICE_NAME_DYNAMIC
|
||||
imply BT_SETTINGS if !ARCH_POSIX
|
||||
imply SETTINGS if !ARCH_POSIX
|
||||
imply ZMK_BATTERY_REPORTING if !ARCH_POSIX
|
||||
select BT_SETTINGS
|
||||
select SETTINGS
|
||||
imply ZMK_BATTERY_REPORTING
|
||||
|
||||
if ZMK_BLE
|
||||
|
||||
config ZMK_BLE_EXPERIMENTAL_CONN
|
||||
bool "Experimental BLE connection changes"
|
||||
help
|
||||
Enables settings that are planned to be default in future versions of ZMK
|
||||
to improve connection stability.
|
||||
# BT_TINYCRYPT_ECC is required for BT_SMP_SC_PAIR_ONLY when using HCI
|
||||
config BT_TINYCRYPT_ECC
|
||||
default y if BT_HCI && !BT_CTLR
|
||||
|
||||
config ZMK_BLE_EXPERIMENTAL_SEC
|
||||
bool "Experimental BLE security changes"
|
||||
imply BT_SMP_ALLOW_UNAUTH_OVERWRITE
|
||||
help
|
||||
Enables security settings that are planned to be officially supported in the future.
|
||||
choice BT_LL_SW_LLCP_IMPL
|
||||
default BT_LL_SW_LLCP_LEGACY
|
||||
|
||||
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.
|
||||
endchoice
|
||||
|
||||
config ZMK_BLE_PASSKEY_ENTRY
|
||||
bool "Require passkey entry on the keyboard to complete pairing"
|
||||
select RING_BUFFER
|
||||
|
||||
config BT_SMP_ALLOW_UNAUTH_OVERWRITE
|
||||
imply ZMK_BLE_PASSKEY_ENTRY
|
||||
|
||||
config BT_CTLR_PHY_2M
|
||||
default n if ZMK_BLE_EXPERIMENTAL_CONN
|
||||
config SYSTEM_WORKQUEUE_STACK_SIZE
|
||||
default 4096 if SOC_RP2040
|
||||
default 2048
|
||||
|
||||
config ZMK_BLE_THREAD_STACK_SIZE
|
||||
int "BLE notify thread stack size"
|
||||
@@ -214,19 +157,24 @@ config ZMK_BLE_CONSUMER_REPORT_QUEUE_SIZE
|
||||
int "Max number of consumer HID reports to queue for sending over BLE"
|
||||
default 5
|
||||
|
||||
config ZMK_BLE_MOUSE_REPORT_QUEUE_SIZE
|
||||
int "Max number of mouse HID reports to queue for sending over BLE"
|
||||
default 20
|
||||
|
||||
config ZMK_BLE_CLEAR_BONDS_ON_START
|
||||
bool "Configuration that clears all bond information from the keyboard on startup."
|
||||
default n
|
||||
|
||||
# HID GATT notifications sent this way are *not* picked up by Linux, and possibly others.
|
||||
config BT_GATT_NOTIFY_MULTIPLE
|
||||
default n
|
||||
|
||||
config BT_GATT_AUTO_SEC_REQ
|
||||
default (ZMK_SPLIT_BLE && !ZMK_SPLIT_ROLE_CENTRAL)
|
||||
default n
|
||||
|
||||
config BT_DEVICE_APPEARANCE
|
||||
default 961
|
||||
|
||||
config ZMK_BLE_PASSKEY_ENTRY
|
||||
bool "Require passkey entry on the keyboard to complete pairing"
|
||||
default n
|
||||
select RING_BUFFER
|
||||
|
||||
config BT_PERIPHERAL_PREF_MIN_INT
|
||||
default 6
|
||||
@@ -240,99 +188,91 @@ config BT_PERIPHERAL_PREF_LATENCY
|
||||
config BT_PERIPHERAL_PREF_TIMEOUT
|
||||
default 400
|
||||
|
||||
# The device name should be 16 characters or less so it fits within the
|
||||
# advertising data.
|
||||
config BT_DEVICE_NAME_MAX
|
||||
default 16
|
||||
#ZMK_BLE
|
||||
endif
|
||||
|
||||
endif # ZMK_BLE
|
||||
#Output Types
|
||||
endmenu
|
||||
|
||||
endmenu # Output Types
|
||||
|
||||
endmenu # HID
|
||||
# HID
|
||||
endmenu
|
||||
|
||||
rsource "src/split/Kconfig"
|
||||
|
||||
endmenu # Basic Keyboard Setup
|
||||
|
||||
menu "Keymaps"
|
||||
|
||||
config ZMK_KEYMAP_LAYER_REORDERING
|
||||
bool "Layer Reordering Support"
|
||||
|
||||
config ZMK_KEYMAP_SETTINGS_STORAGE
|
||||
bool "Settings Save/Load"
|
||||
depends on SETTINGS
|
||||
depends on ZMK_BEHAVIOR_LOCAL_IDS
|
||||
|
||||
if ZMK_KEYMAP_SETTINGS_STORAGE
|
||||
|
||||
config ZMK_KEYMAP_LAYER_NAME_MAX_LEN
|
||||
int "Max Layer Name Length"
|
||||
default 20
|
||||
|
||||
endif # ZMK_KEYMAP_SETTINGS_STORAGE
|
||||
|
||||
endmenu # Keymaps
|
||||
|
||||
rsource "src/studio/Kconfig"
|
||||
#Basic Keyboard Setup
|
||||
endmenu
|
||||
|
||||
menu "Display/LED Options"
|
||||
|
||||
rsource "src/display/Kconfig"
|
||||
|
||||
menuconfig ZMK_RGB_UNDERGLOW
|
||||
bool "RGB Addressable LED Underglow"
|
||||
bool "RGB Adressable LED Underglow"
|
||||
select LED_STRIP
|
||||
select ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||
|
||||
if ZMK_RGB_UNDERGLOW
|
||||
|
||||
# This default value cuts down on tons of excess .conf files, if you're using GPIO, manually disable this
|
||||
config SPI
|
||||
default y
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_EXT_POWER
|
||||
bool "RGB underglow toggling also controls external power"
|
||||
default y
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_BRT_MIN
|
||||
int "RGB underglow minimum brightness in percent"
|
||||
range 0 100
|
||||
default 0
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_BRT_MAX
|
||||
int "RGB underglow maximum brightness in percent"
|
||||
range ZMK_RGB_UNDERGLOW_BRT_MIN 100
|
||||
default 100
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_HUE_STEP
|
||||
int "RGB underglow hue step in degrees"
|
||||
range 0 359
|
||||
default 10
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_SAT_STEP
|
||||
int "RGB underglow saturation step in percent"
|
||||
range 0 100
|
||||
default 10
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_BRT_STEP
|
||||
int "RGB underglow brightness step in percent"
|
||||
range 0 100
|
||||
default 10
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_HUE_START
|
||||
int "RGB underglow start hue value in degrees"
|
||||
range 0 359
|
||||
default 0
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_SAT_START
|
||||
int "RGB underglow start saturations value in percent"
|
||||
range 0 100
|
||||
default 100
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_BRT_START
|
||||
int "RGB underglow start brightness value in percent"
|
||||
range ZMK_RGB_UNDERGLOW_BRT_MIN ZMK_RGB_UNDERGLOW_BRT_MAX
|
||||
default ZMK_RGB_UNDERGLOW_BRT_MAX
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_SPD_START
|
||||
int "RGB underglow start animation speed value"
|
||||
range 1 5
|
||||
default 3
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_EFF_START
|
||||
int "RGB underglow start effect int value related to the effect enum list"
|
||||
range 0 3
|
||||
default 0
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_ON_START
|
||||
bool "RGB underglow starts on by default"
|
||||
default y
|
||||
|
||||
config ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE
|
||||
bool "Turn off RGB underglow when keyboard goes into idle state"
|
||||
@@ -341,7 +281,8 @@ config ZMK_RGB_UNDERGLOW_AUTO_OFF_USB
|
||||
bool "Turn off RGB underglow when USB is disconnected"
|
||||
depends on USB_DEVICE_STACK
|
||||
|
||||
endif # ZMK_RGB_UNDERGLOW
|
||||
#ZMK_RGB_UNDERGLOW
|
||||
endif
|
||||
|
||||
menuconfig ZMK_BACKLIGHT
|
||||
bool "LED backlight"
|
||||
@@ -352,13 +293,16 @@ if ZMK_BACKLIGHT
|
||||
config ZMK_BACKLIGHT_BRT_STEP
|
||||
int "Brightness step in percent"
|
||||
range 1 100
|
||||
default 20
|
||||
|
||||
config ZMK_BACKLIGHT_BRT_START
|
||||
int "Default brightness in percent"
|
||||
range 1 100
|
||||
default 40
|
||||
|
||||
config ZMK_BACKLIGHT_ON_START
|
||||
bool "Default backlight state"
|
||||
default y
|
||||
|
||||
config ZMK_BACKLIGHT_AUTO_OFF_IDLE
|
||||
bool "Turn off backlight when keyboard goes into idle state"
|
||||
@@ -366,34 +310,19 @@ config ZMK_BACKLIGHT_AUTO_OFF_IDLE
|
||||
config ZMK_BACKLIGHT_AUTO_OFF_USB
|
||||
bool "Turn off backlight when USB is disconnected"
|
||||
|
||||
endif # ZMK_BACKLIGHT
|
||||
#ZMK_BACKLIGHT
|
||||
endif
|
||||
|
||||
endmenu # Display/LED Options
|
||||
|
||||
rsource "src/pointing/Kconfig"
|
||||
#Display/LED Options
|
||||
endmenu
|
||||
|
||||
menu "Power Management"
|
||||
|
||||
config ZMK_BATTERY_REPORTING
|
||||
bool "Battery level detection/reporting"
|
||||
default n
|
||||
select SENSOR
|
||||
select ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||
imply BT_BAS if ZMK_BLE
|
||||
|
||||
if ZMK_BATTERY_REPORTING
|
||||
|
||||
choice ZMK_BATTERY_REPORTING_FETCH_MODE
|
||||
prompt "Battery Reporting Fetch Mode"
|
||||
|
||||
config ZMK_BATTERY_REPORTING_FETCH_MODE_STATE_OF_CHARGE
|
||||
bool "State of charge"
|
||||
|
||||
config ZMK_BATTERY_REPORTING_FETCH_MODE_LITHIUM_VOLTAGE
|
||||
bool "Lithium Voltage"
|
||||
|
||||
endchoice
|
||||
|
||||
endif # ZMK_BATTERY_REPORTING
|
||||
select BT_BAS if ZMK_BLE
|
||||
|
||||
config ZMK_IDLE_TIMEOUT
|
||||
int "Milliseconds of inactivity before entering idle state (OLED shutoff, etc)"
|
||||
@@ -401,9 +330,6 @@ config ZMK_IDLE_TIMEOUT
|
||||
|
||||
config ZMK_SLEEP
|
||||
bool "Enable deep sleep support"
|
||||
depends on HAS_POWEROFF
|
||||
select POWEROFF
|
||||
select ZMK_PM_DEVICE_SUSPEND_RESUME
|
||||
imply USB
|
||||
|
||||
if ZMK_SLEEP
|
||||
@@ -415,32 +341,14 @@ config ZMK_IDLE_SLEEP_TIMEOUT
|
||||
int "Milliseconds of inactivity before entering deep sleep"
|
||||
default 900000
|
||||
|
||||
endif # ZMK_SLEEP
|
||||
#ZMK_SLEEP
|
||||
endif
|
||||
|
||||
config ZMK_EXT_POWER
|
||||
bool "Enable support to control external power output"
|
||||
|
||||
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
|
||||
#Power Management
|
||||
endmenu
|
||||
|
||||
menu "Combo options"
|
||||
@@ -450,18 +358,14 @@ config ZMK_COMBO_MAX_PRESSED_COMBOS
|
||||
default 4
|
||||
|
||||
config ZMK_COMBO_MAX_COMBOS_PER_KEY
|
||||
int "Deprecated: Max combos per key"
|
||||
default 0
|
||||
help
|
||||
Deprecated: Storage for combos is now determined automatically
|
||||
int "Maximum number of combos per key"
|
||||
default 5
|
||||
|
||||
config ZMK_COMBO_MAX_KEYS_PER_COMBO
|
||||
int "Deprecated: Max keys per combo"
|
||||
default 0
|
||||
help
|
||||
Deprecated: This is now auto-calculated based on `key-positions` in devicetree
|
||||
int "Maximum number of keys per combo"
|
||||
default 4
|
||||
|
||||
# Combo options
|
||||
#Combo options
|
||||
endmenu
|
||||
|
||||
menu "Behavior Options"
|
||||
@@ -484,21 +388,16 @@ endmenu
|
||||
|
||||
menu "Advanced"
|
||||
|
||||
rsource "src/boot/Kconfig"
|
||||
|
||||
menu "Initialization Priorities"
|
||||
|
||||
if USB_DEVICE_STACK
|
||||
|
||||
config ZMK_USB_INIT_PRIORITY
|
||||
int "USB Init Priority"
|
||||
default 96
|
||||
default 50
|
||||
|
||||
config ZMK_USB_HID_INIT_PRIORITY
|
||||
int "USB HID Init Priority"
|
||||
default 95
|
||||
|
||||
endif # USB
|
||||
#USB
|
||||
endif
|
||||
|
||||
if ZMK_BLE || ZMK_SPLIT_BLE
|
||||
|
||||
@@ -506,13 +405,11 @@ config ZMK_BLE_INIT_PRIORITY
|
||||
int "BLE Init Priority"
|
||||
default 50
|
||||
|
||||
endif # ZMK_BLE || ZMK_SPLIT_BLE
|
||||
#ZMK_BLE || ZMK_SPLIT_BLE
|
||||
endif
|
||||
|
||||
endmenu # Initialization Priorities
|
||||
|
||||
config ZMK_PHYSICAL_LAYOUT_KEY_ROTATION
|
||||
bool "Support rotation of keys in physical layouts"
|
||||
default y
|
||||
#Initialization Priorities
|
||||
endmenu
|
||||
|
||||
menuconfig ZMK_KSCAN
|
||||
bool "ZMK KScan Integration"
|
||||
@@ -527,21 +424,6 @@ config ZMK_KSCAN_EVENT_QUEUE_SIZE
|
||||
|
||||
endif # ZMK_KSCAN
|
||||
|
||||
config ZMK_KSCAN_SIDEBAND_BEHAVIORS
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_KSCAN_SIDEBAND_BEHAVIORS_ENABLED
|
||||
select KSCAN
|
||||
|
||||
if ZMK_KSCAN_SIDEBAND_BEHAVIORS
|
||||
|
||||
config ZMK_KSCAN_SIDEBAND_BEHAVIORS_INIT_PRIORITY
|
||||
int "Keyboard scan sideband behaviors driver init priority"
|
||||
# The default kscan init priority is 90, so be sure we are initialized later.
|
||||
default 95
|
||||
|
||||
endif # ZMK_KSCAN_SIDEBAND_BEHAVIORS
|
||||
|
||||
menu "Logging"
|
||||
|
||||
config ZMK_LOGGING_MINIMAL
|
||||
@@ -586,7 +468,8 @@ config USB_CDC_ACM_RINGBUF_SIZE
|
||||
config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
|
||||
default 1000
|
||||
|
||||
endif # ZMK_USB_LOGGING
|
||||
#ZMK_USB_LOGGING
|
||||
endif
|
||||
|
||||
config ZMK_RTT_LOGGING
|
||||
bool "Enable RTT logging to help debug"
|
||||
@@ -602,7 +485,8 @@ if ZMK_RTT_LOGGING
|
||||
config SEGGER_RTT_BUFFER_SIZE_UP
|
||||
default 8192
|
||||
|
||||
endif # ZMK_RTT_LOGGING
|
||||
#ZMK_RTT_LOGGING
|
||||
endif
|
||||
|
||||
if ZMK_USB_LOGGING || ZMK_RTT_LOGGING
|
||||
|
||||
@@ -612,40 +496,25 @@ config LOG_BUFFER_SIZE
|
||||
config LOG_PROCESS_THREAD_SLEEP_MS
|
||||
default 100
|
||||
|
||||
endif # ZMK_USB_LOGGING || ZMK_RTT_LOGGING
|
||||
#ZMK_USB_LOGGING || ZMK_RTT_LOGGING
|
||||
endif
|
||||
|
||||
endmenu # Logging
|
||||
#Logging
|
||||
endmenu
|
||||
|
||||
if SETTINGS
|
||||
|
||||
config ZMK_SETTINGS_RESET_ON_START
|
||||
bool "Delete all persistent settings when the keyboard boots"
|
||||
|
||||
if ZMK_SETTINGS_RESET_ON_START
|
||||
|
||||
config ZMK_SETTINGS_RESET_ON_START_INIT_PRIORITY
|
||||
int "Settings Reset ON Start Initialization Priority"
|
||||
default 60
|
||||
help
|
||||
Initialization priority for the settings reset on start. Must be lower priority/
|
||||
higher value than FLASH_INIT_PRIORITY if using the NVS/Flash settings backend.
|
||||
|
||||
endif # ZMK_SETTINGS_RESET_ON_START
|
||||
|
||||
config ZMK_SETTINGS_SAVE_DEBOUNCE
|
||||
int "Milliseconds to debounce settings saves"
|
||||
default 60000
|
||||
|
||||
endif # SETTINGS
|
||||
#SETTINGS
|
||||
endif
|
||||
|
||||
config ZMK_BATTERY_REPORT_INTERVAL
|
||||
depends on ZMK_BATTERY_REPORTING
|
||||
int "Battery level report interval in seconds"
|
||||
|
||||
config ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||
bool "Work queue for low priority items"
|
||||
|
||||
if ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||
default 60
|
||||
|
||||
config ZMK_LOW_PRIORITY_THREAD_STACK_SIZE
|
||||
int "Low priority thread stack size"
|
||||
@@ -655,18 +524,14 @@ config ZMK_LOW_PRIORITY_THREAD_PRIORITY
|
||||
int "Low priority thread priority"
|
||||
default 10
|
||||
|
||||
endif # ZMK_LOW_PRIORITY_WORK_QUEUE
|
||||
#Advanced
|
||||
endmenu
|
||||
|
||||
endmenu # Advanced
|
||||
#ZMK
|
||||
endmenu
|
||||
|
||||
endmenu # ZMK
|
||||
|
||||
if SOC_FAMILY_NORDIC_NRF
|
||||
|
||||
config NRF_SOC_VALIDATE_HEADERS_DISABLED
|
||||
default y
|
||||
|
||||
endif
|
||||
config HEAP_MEM_POOL_SIZE
|
||||
default 8192
|
||||
|
||||
config KERNEL_BIN_NAME
|
||||
default "zmk"
|
||||
@@ -677,11 +542,9 @@ config REBOOT
|
||||
config USB_DEVICE_STACK
|
||||
default y if HAS_HW_NRF_USBD
|
||||
|
||||
config FPU
|
||||
default CPU_HAS_FPU
|
||||
|
||||
config ZMK_WPM
|
||||
bool "Calculate WPM"
|
||||
default n
|
||||
|
||||
config ZMK_KEYMAP_SENSORS
|
||||
bool "Enable Keymap Sensors support"
|
||||
@@ -702,24 +565,21 @@ config ZMK_KEYMAP_SENSORS_DEFAULT_TRIGGERS_PER_ROTATION
|
||||
|
||||
endif # ZMK_KEYMAP_SENSORS
|
||||
|
||||
choice CBPRINTF_IMPLEMENTATION
|
||||
default CBPRINTF_NANO
|
||||
|
||||
endchoice
|
||||
|
||||
module = ZMK
|
||||
module-str = zmk
|
||||
source "subsys/logging/Kconfig.template.log_config"
|
||||
|
||||
# This loads ZMK's internal board and shield Kconfigs
|
||||
rsource "boards/Kconfig"
|
||||
rsource "boards/shields/*/Kconfig.defconfig"
|
||||
rsource "boards/shields/*/Kconfig.shield"
|
||||
|
||||
# This loads custom shields defconfigs (from BOARD_ROOT)
|
||||
# Duplicated from Kconfig.zephyr
|
||||
osource "$(KCONFIG_BINARY_DIR)/Kconfig.shield.defconfig"
|
||||
|
||||
# This loads board and shield Kconfigs found under zmk-config/config/
|
||||
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.defconfig"
|
||||
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.shield"
|
||||
|
||||
# This loads ZMK's sensible defaults
|
||||
rsource "Kconfig.defaults"
|
||||
|
||||
source "Kconfig.zephyr"
|
||||
|
||||
@@ -1,117 +1,15 @@
|
||||
# Copyright (c) 2023 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config ZMK_BEHAVIOR_METADATA
|
||||
bool "Metadata"
|
||||
help
|
||||
Enabling this option adds APIs for documenting and fetching
|
||||
metadata describing a behaviors name, and supported parameters.
|
||||
|
||||
config ZMK_BEHAVIOR_LOCAL_IDS
|
||||
bool "Local IDs"
|
||||
|
||||
if ZMK_BEHAVIOR_LOCAL_IDS
|
||||
|
||||
config ZMK_BEHAVIOR_LOCAL_IDS_IN_BINDINGS
|
||||
bool "Track in behavior bindings"
|
||||
|
||||
choice ZMK_BEHAVIOR_LOCAL_ID_TYPE
|
||||
prompt "Local ID Type"
|
||||
|
||||
config ZMK_BEHAVIOR_LOCAL_ID_TYPE_SETTINGS_TABLE
|
||||
bool "Settings Table"
|
||||
depends on SETTINGS
|
||||
select ZMK_BEHAVIOR_LOCAL_IDS_IN_BINDINGS
|
||||
help
|
||||
Use persistent entries in the settings subsystem to identify
|
||||
behaviors by local ID, which uses the device name to generate
|
||||
a new settings entry tying a presistant local ID to that name.
|
||||
This guarantees stable, colllision-free local IDs at the expense
|
||||
of settings storage used.
|
||||
|
||||
config ZMK_BEHAVIOR_LOCAL_ID_TYPE_CRC16
|
||||
bool "CRC16 Hash"
|
||||
select CRC
|
||||
help
|
||||
Use the CRC16-ANSI hash of behavior device names to generate
|
||||
stable behavior local IDs. This saves on settings storage at
|
||||
the expense of (highly unlikely) risk of collisions.
|
||||
|
||||
endchoice
|
||||
|
||||
endif
|
||||
|
||||
|
||||
config ZMK_BEHAVIOR_HOLD_TAP
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_HOLD_TAP_ENABLED
|
||||
|
||||
if ZMK_BEHAVIOR_HOLD_TAP
|
||||
|
||||
config ZMK_BEHAVIOR_HOLD_TAP_MAX_HELD
|
||||
int "Hold Tap Max Held"
|
||||
help
|
||||
Max number of simultaneously held hold-taps
|
||||
|
||||
config ZMK_BEHAVIOR_HOLD_TAP_MAX_CAPTURED_EVENTS
|
||||
int "Hold Tap Max Captured Events"
|
||||
help
|
||||
Max number of captured system events while waiting to resolve hold taps
|
||||
|
||||
endif
|
||||
|
||||
config ZMK_BEHAVIOR_KEY_TOGGLE
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_KEY_TOGGLE_ENABLED
|
||||
|
||||
config ZMK_BEHAVIOR_MOUSE_KEY_PRESS
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_MOUSE_KEY_PRESS_ENABLED && ZMK_POINTING
|
||||
|
||||
config ZMK_BEHAVIOR_STICKY_KEY
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_STICKY_KEY_ENABLED
|
||||
|
||||
if ZMK_BEHAVIOR_STICKY_KEY
|
||||
|
||||
config ZMK_BEHAVIOR_STICKY_KEY_MAX_HELD
|
||||
int "Sticky Key Max Held"
|
||||
help
|
||||
Max number of simultaneously held sticky keys
|
||||
|
||||
endif
|
||||
|
||||
config ZMK_BEHAVIOR_SOFT_OFF
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_SOFT_OFF_ENABLED && ZMK_PM_SOFT_OFF
|
||||
|
||||
|
||||
config ZMK_BEHAVIOR_TAP_DANCE
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_TAP_DANCE_ENABLED
|
||||
|
||||
if ZMK_BEHAVIOR_TAP_DANCE
|
||||
|
||||
config ZMK_BEHAVIOR_TAP_DANCE_MAX_HELD
|
||||
int "Tap-Dance Max Held"
|
||||
help
|
||||
Max number of simultaneously held taps-dances
|
||||
|
||||
endif
|
||||
|
||||
config ZMK_BEHAVIOR_INPUT_TWO_AXIS
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_INPUT_TWO_AXIS_ENABLED && ZMK_POINTING
|
||||
|
||||
config ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
|
||||
bool
|
||||
default n
|
||||
|
||||
config ZMK_BEHAVIOR_SENSOR_ROTATE
|
||||
bool
|
||||
@@ -125,12 +23,7 @@ config ZMK_BEHAVIOR_SENSOR_ROTATE_VAR
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR_ENABLED
|
||||
select ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
|
||||
|
||||
config ZMK_BEHAVIOR_STUDIO_UNLOCK
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_STUDIO_UNLOCK_ENABLED && ZMK_STUDIO
|
||||
|
||||
config ZMK_BEHAVIOR_MACRO
|
||||
bool
|
||||
default y
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED
|
||||
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED
|
||||
@@ -1,118 +0,0 @@
|
||||
# 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
13
app/VERSION
@@ -1,13 +0,0 @@
|
||||
# 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
|
||||
6
app/boards/01space_rp2040_042lcd.conf
Normal file
6
app/boards/01space_rp2040_042lcd.conf
Normal file
@@ -0,0 +1,6 @@
|
||||
CONFIG_ZMK_DISPLAY=y
|
||||
CONFIG_LV_FONT_UNSCII_8=n
|
||||
CONFIG_ZMK_USB=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_DW=y
|
||||
CONFIG_LV_Z_VDB_SIZE=50
|
||||
@@ -4,5 +4,6 @@
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "mikoto-pinctrl.dtsi"
|
||||
#include "arduino_pro_micro_pins_v6.dtsi"
|
||||
#include "usb_console.dtsi"
|
||||
|
||||
&xiao_serial { status = "disabled"; };
|
||||
@@ -1,9 +0,0 @@
|
||||
# Copyright (c) 2026 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_ADAFRUIT_KB2040
|
||||
select ZMK_BOARD_COMPAT if BOARD_ADAFRUIT_KB2040_RP2040_ZMK
|
||||
imply RETAINED_MEM if BOARD_ADAFRUIT_KB2040_RP2040_ZMK
|
||||
imply RETENTION if BOARD_ADAFRUIT_KB2040_RP2040_ZMK
|
||||
imply RETENTION_BOOT_MODE if BOARD_ADAFRUIT_KB2040_RP2040_ZMK
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000
|
||||
|
||||
# Enable reset by default
|
||||
CONFIG_RESET=y
|
||||
|
||||
# Enable clock control by default
|
||||
CONFIG_CLOCK_CONTROL=y
|
||||
|
||||
# Code partition needed to target the correct flash range
|
||||
CONFIG_USE_DT_CODE_PARTITION=y
|
||||
|
||||
# Output UF2 by default, native bootloader supports it.
|
||||
CONFIG_BUILD_OUTPUT_UF2=y
|
||||
|
||||
# USB HID
|
||||
CONFIG_ZMK_USB=y
|
||||
|
||||
# Bootloader Support
|
||||
CONFIG_RETAINED_MEM=y
|
||||
CONFIG_RETENTION=y
|
||||
CONFIG_RETENTION_BOOT_MODE=y
|
||||
@@ -1,5 +0,0 @@
|
||||
board:
|
||||
extend: adafruit_kb2040
|
||||
variants:
|
||||
- name: zmk
|
||||
qualifier: rp2040
|
||||
@@ -1,9 +0,0 @@
|
||||
# Copyright (c) 2026 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_ADAFRUIT_QT_PY_RP2040
|
||||
select ZMK_BOARD_COMPAT if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK
|
||||
imply RETAINED_MEM if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK
|
||||
imply RETENTION if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK
|
||||
imply RETENTION_BOOT_MODE if BOARD_ADAFRUIT_QT_PY_RP2040_RP2040_ZMK
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2023 The ZMK Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include <../boards/adafruit/qt_py_rp2040/adafruit_qt_py_rp2040.dts>
|
||||
#include <arm/raspberrypi/rp2040-boot-mode-retention.dtsi>
|
||||
|
||||
&xiao_serial { status = "disabled"; };
|
||||
@@ -1,23 +0,0 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000
|
||||
|
||||
# Enable reset by default
|
||||
CONFIG_RESET=y
|
||||
|
||||
# Enable clock control by default
|
||||
CONFIG_CLOCK_CONTROL=y
|
||||
|
||||
# Code partition needed to target the correct flash range
|
||||
CONFIG_USE_DT_CODE_PARTITION=y
|
||||
|
||||
# Output UF2 by default, native bootloader supports it.
|
||||
CONFIG_BUILD_OUTPUT_UF2=y
|
||||
|
||||
# USB HID
|
||||
CONFIG_ZMK_USB=y
|
||||
|
||||
# Bootloader Support
|
||||
CONFIG_RETAINED_MEM=y
|
||||
CONFIG_RETENTION=y
|
||||
CONFIG_RETENTION_BOOT_MODE=y
|
||||
@@ -1,5 +0,0 @@
|
||||
board:
|
||||
extend: adafruit_qt_py_rp2040
|
||||
variants:
|
||||
- name: zmk
|
||||
qualifier: rp2040
|
||||
4
app/boards/adafruit_kb2040.conf
Normal file
4
app/boards/adafruit_kb2040.conf
Normal file
@@ -0,0 +1,4 @@
|
||||
CONFIG_CONSOLE=n
|
||||
CONFIG_SERIAL=n
|
||||
CONFIG_UART_CONSOLE=n
|
||||
CONFIG_ZMK_USB=y
|
||||
@@ -4,5 +4,6 @@
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "mikoto-pinctrl.dtsi"
|
||||
#include "arduino_pro_micro_pins_v5.dtsi"
|
||||
#include "usb_console.dtsi"
|
||||
|
||||
&pro_micro_serial { status = "disabled"; };
|
||||
4
app/boards/adafruit_qt_py_rp2040.conf
Normal file
4
app/boards/adafruit_qt_py_rp2040.conf
Normal file
@@ -0,0 +1,4 @@
|
||||
CONFIG_CONSOLE=n
|
||||
CONFIG_SERIAL=n
|
||||
CONFIG_UART_CONSOLE=n
|
||||
CONFIG_ZMK_USB=y
|
||||
@@ -4,6 +4,6 @@
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include <zephyr/linker/linker-defs.h>
|
||||
#include "usb_console.dtsi"
|
||||
|
||||
ITERABLE_SECTION_ROM(zmk_behavior_ref, 4)
|
||||
&xiao_serial { status = "disabled"; };
|
||||
@@ -1,2 +0,0 @@
|
||||
# defines board aliases for shorter names (or for renaming boards)
|
||||
set(mikoto_520_BOARD_ALIAS "mikoto")
|
||||
@@ -1,5 +1,5 @@
|
||||
file_format: "1"
|
||||
id: adafruit_kb2040//zmk
|
||||
id: adafruit_kb2040
|
||||
name: Adafruit KB2040
|
||||
type: board
|
||||
arch: arm
|
||||
@@ -1,5 +1,5 @@
|
||||
file_format: "1"
|
||||
id: adafruit_qt_py_rp2040//zmk
|
||||
id: adafruit_qt_py_rp2040
|
||||
name: Adafruit QT Py RP2040
|
||||
type: board
|
||||
arch: arm
|
||||
8
app/boards/arm/bdn9/Kconfig.board
Normal file
8
app/boards/arm/bdn9/Kconfig.board
Normal file
@@ -0,0 +1,8 @@
|
||||
# keeb.io BDN9 board configuration
|
||||
|
||||
# Copyright (c) 2020 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_BDN9
|
||||
bool "BDN9 rev2"
|
||||
depends on SOC_STM32F072XB
|
||||
@@ -11,4 +11,8 @@ config BOARD
|
||||
config ZMK_KEYBOARD_NAME
|
||||
default "BDN9 Rev2"
|
||||
|
||||
config ZMK_RGB_UNDERGLOW
|
||||
select SPI
|
||||
select WS2812_STRIP
|
||||
|
||||
endif # BOARD_BDN9
|
||||
@@ -9,14 +9,6 @@
|
||||
#include <st/f0/stm32f072c(8-b)tx-pinctrl.dtsi>
|
||||
#include <dt-bindings/led/led.h>
|
||||
|
||||
#include <dt-bindings/zmk/matrix_transform.h>
|
||||
|
||||
#include "bdn9-layouts.dtsi"
|
||||
|
||||
&physical_layout0 {
|
||||
transform = <&matrix_transform0>;
|
||||
};
|
||||
|
||||
/ {
|
||||
model = "Keeb.io BDN9 rev2";
|
||||
compatible = "keebio,bdn9", "st,stm32f072";
|
||||
@@ -24,24 +16,14 @@
|
||||
chosen {
|
||||
zephyr,sram = &sram0;
|
||||
zephyr,flash = &flash0;
|
||||
zephyr,console = &cdc_acm_uart;
|
||||
zmk,kscan = &kscan;
|
||||
zmk,underglow = &led_strip;
|
||||
zmk,physical-layout = &physical_layout0;
|
||||
zmk,kscan = &kscan0;
|
||||
};
|
||||
|
||||
matrix_transform0: matrix_transform_0 {
|
||||
compatible = "zmk,matrix-transform";
|
||||
columns = <3>;
|
||||
rows = <3>;
|
||||
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)
|
||||
>;
|
||||
};
|
||||
|
||||
kscan0: kscan_0 {
|
||||
kscan: kscan {
|
||||
compatible = "zmk,kscan-gpio-direct";
|
||||
label = "KSCAN";
|
||||
|
||||
input-gpios
|
||||
= <&gpiob 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
|
||||
@@ -58,6 +40,7 @@
|
||||
|
||||
left_encoder: encoder_left {
|
||||
compatible = "alps,ec11";
|
||||
label = "LEFT_ENCODER";
|
||||
a-gpios = <&gpioa 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
|
||||
b-gpios = <&gpioa 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
|
||||
steps = <80>;
|
||||
@@ -65,6 +48,7 @@
|
||||
};
|
||||
mid_encoder: encoder_mid {
|
||||
compatible = "alps,ec11";
|
||||
label = "MID_ENCODER";
|
||||
a-gpios = <&gpioa 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
|
||||
b-gpios = <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
|
||||
steps = <80>;
|
||||
@@ -72,6 +56,7 @@
|
||||
};
|
||||
right_encoder: encoder_right {
|
||||
compatible = "alps,ec11";
|
||||
label = "RIGHT_ENCODER";
|
||||
a-gpios = <&gpioa 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
|
||||
b-gpios = <&gpiob 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
|
||||
steps = <80>;
|
||||
@@ -93,6 +78,7 @@
|
||||
|
||||
led_strip: ws2812@0 {
|
||||
compatible = "worldsemi,ws2812-spi";
|
||||
label = "WS2812";
|
||||
|
||||
/* SPI */
|
||||
reg = <0>; /* ignored, but necessary for SPI bindings */
|
||||
@@ -125,13 +111,14 @@
|
||||
apb1-prescaler = <1>;
|
||||
};
|
||||
|
||||
zephyr_udc0: &usb {
|
||||
&usb {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&usb_dm_pa11 &usb_dp_pa12>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
// Overridden to lower RAM usage.
|
||||
num-bidir-endpoints = <4>;
|
||||
cdc_acm_uart: cdc_acm_uart {
|
||||
compatible = "zephyr,cdc-acm-uart";
|
||||
label = "CDC_ACM_0";
|
||||
};
|
||||
};
|
||||
|
||||
&rtc {
|
||||
@@ -150,6 +137,7 @@ zephyr_udc0: &usb {
|
||||
|
||||
/* Set 6Kb of storage at the end of the 128Kb of flash */
|
||||
storage_partition: partition@1e800 {
|
||||
label = "storage";
|
||||
reg = <0x0001e800 0x00001800>;
|
||||
};
|
||||
};
|
||||
@@ -4,8 +4,6 @@
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#undef ZMK_BEHAVIORS_KEEP_ALL
|
||||
|
||||
#include <behaviors.dtsi>
|
||||
#include <dt-bindings/zmk/keys.h>
|
||||
|
||||
11
app/boards/arm/bdn9/bdn9_rev2.yml
Normal file
11
app/boards/arm/bdn9/bdn9_rev2.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
file_format: "1"
|
||||
id: bdn9_rev2
|
||||
name: BDN9 Rev2
|
||||
type: board
|
||||
arch: arm
|
||||
features:
|
||||
- keys
|
||||
- encoder
|
||||
outputs:
|
||||
- usb
|
||||
url: https://keeb.io/products/bdn9-rev-2-3x3-9-key-macropad-rotary-encoder-and-rgb
|
||||
@@ -1,6 +1,6 @@
|
||||
file_format: "1"
|
||||
id: bdn9//zmk
|
||||
name: BDN9 (Rev2)
|
||||
id: bdn9_rev2
|
||||
name: BDN9 Rev2
|
||||
type: board
|
||||
arch: arm
|
||||
outputs:
|
||||
@@ -9,6 +9,3 @@ features:
|
||||
- keys
|
||||
- encoder
|
||||
url: https://keeb.io/collections/bdn9-collection/products/bdn9-rev-2-3x3-9-key-macropad-rotary-encoder-and-rgb
|
||||
revisions:
|
||||
- "2.0.0"
|
||||
default_revision: "2.0.0"
|
||||
@@ -1,8 +1,13 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SOC_SERIES_STM32F0X=y
|
||||
CONFIG_SOC_STM32F072XB=y
|
||||
# 72MHz system clock
|
||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000
|
||||
|
||||
# Floating Point Options
|
||||
CONFIG_FPU=y
|
||||
|
||||
# enable GPIO
|
||||
CONFIG_GPIO=y
|
||||
|
||||
@@ -12,10 +17,10 @@ CONFIG_PINCTRL=y
|
||||
# Poll to avoid interrupt overlap issues
|
||||
CONFIG_ZMK_KSCAN_DIRECT_POLLING=y
|
||||
|
||||
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1536
|
||||
CONFIG_ISR_STACK_SIZE=1024
|
||||
# Needed to reduce this to size that will fit on F072
|
||||
CONFIG_HEAP_MEM_POOL_SIZE=1024
|
||||
|
||||
# clock configuration
|
||||
CONFIG_CLOCK_CONTROL=y
|
||||
|
||||
CONFIG_ZMK_USB=y
|
||||
CONFIG_ZMK_USB=y
|
||||
@@ -1,5 +1,5 @@
|
||||
file_format: "1"
|
||||
id: blackpill_f401ce//zmk
|
||||
id: blackpill_f401ce
|
||||
name: BlackPill F401CE
|
||||
type: board
|
||||
arch: arm
|
||||
@@ -1,5 +1,5 @@
|
||||
file_format: "1"
|
||||
id: blackpill_f411ce//zmk
|
||||
id: blackpill_f411ce
|
||||
name: BlackPill F411CE
|
||||
type: board
|
||||
arch: arm
|
||||
@@ -4,5 +4,5 @@ config BOARD_ENABLE_DCDC
|
||||
bool "Enable DCDC mode"
|
||||
select SOC_DCDC_NRF52X
|
||||
default y
|
||||
depends on BOARD_BLUEMICRO840
|
||||
depends on BOARD_BLUEMICRO840_V1
|
||||
|
||||
8
app/boards/arm/bluemicro840/Kconfig.board
Normal file
8
app/boards/arm/bluemicro840/Kconfig.board
Normal file
@@ -0,0 +1,8 @@
|
||||
# BlueMicro840 board configuration
|
||||
|
||||
# Copyright (c) 2020 Pete Johanson, Derek Schmell
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_BLUEMICRO840_V1
|
||||
bool "BlueMicro840_V1"
|
||||
depends on SOC_NRF52840_QIAA
|
||||
@@ -3,7 +3,10 @@
|
||||
# Copyright (c) 2020 Pete Johanson, Derek Schmell
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
if BOARD_BLUEMICRO840
|
||||
if BOARD_BLUEMICRO840_V1
|
||||
|
||||
config BOARD
|
||||
default "bluemicro840_v1"
|
||||
|
||||
if USB_DEVICE_STACK
|
||||
|
||||
@@ -15,4 +18,4 @@ endif # USB_DEVICE_STACK
|
||||
config BT_CTLR
|
||||
default BT
|
||||
|
||||
endif # BOARD_BLUEMICRO840
|
||||
endif # BOARD_BLUEMICRO840_V1
|
||||
@@ -53,5 +53,5 @@
|
||||
|
||||
pro_micro_d: &pro_micro {};
|
||||
pro_micro_i2c: &i2c0 {};
|
||||
pro_micro_spi: &spi1 {};
|
||||
pro_micro_spi: &spi0 {};
|
||||
pro_micro_serial: &uart0 {};
|
||||
@@ -36,21 +36,4 @@
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
|
||||
spi1_default: spi1_default {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 1, 13)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 28)>,
|
||||
<NRF_PSEL(SPIM_MISO, 0, 3)>;
|
||||
};
|
||||
};
|
||||
|
||||
spi1_sleep: spi1_sleep {
|
||||
group1 {
|
||||
psels = <NRF_PSEL(SPIM_SCK, 1, 13)>,
|
||||
<NRF_PSEL(SPIM_MOSI, 0, 28)>,
|
||||
<NRF_PSEL(SPIM_MISO, 0, 3)>;
|
||||
low-power-enable;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -6,9 +6,8 @@
|
||||
|
||||
/dts-v1/;
|
||||
#include <nordic/nrf52840_qiaa.dtsi>
|
||||
|
||||
#include "arduino_pro_micro_pins.dtsi"
|
||||
#include "bluemicro840-pinctrl.dtsi"
|
||||
#include "bluemicro840_v1-pinctrl.dtsi"
|
||||
|
||||
/ {
|
||||
model = "BlueMicro840_V1";
|
||||
@@ -18,14 +17,33 @@
|
||||
zephyr,code-partition = &code_partition;
|
||||
zephyr,sram = &sram0;
|
||||
zephyr,flash = &flash0;
|
||||
zephyr,console = &cdc_acm_uart;
|
||||
zmk,battery = &vbatt;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
blue_led: led_0 {
|
||||
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
|
||||
label = "Blue LED";
|
||||
};
|
||||
};
|
||||
|
||||
ext-power {
|
||||
compatible = "zmk,ext-power-generic";
|
||||
label = "EXT_POWER";
|
||||
init-delay-ms = <20>;
|
||||
control-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
vbatt: vbatt {
|
||||
compatible = "zmk,battery-voltage-divider";
|
||||
label = "BATTERY";
|
||||
io-channels = <&adc 7>;
|
||||
output-ohms = <2000000>;
|
||||
full-ohms = <(2000000 + 806000)>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&adc {
|
||||
@@ -51,13 +69,6 @@
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
&spi1 {
|
||||
compatible = "nordic,nrf-spim";
|
||||
pinctrl-0 = <&spi1_default>;
|
||||
pinctrl-1 = <&spi1_sleep>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
compatible = "nordic,nrf-uarte";
|
||||
current-speed = <115200>;
|
||||
@@ -66,8 +77,12 @@
|
||||
pinctrl-names = "default", "sleep";
|
||||
};
|
||||
|
||||
zephyr_udc0: &usbd {
|
||||
&usbd {
|
||||
status = "okay";
|
||||
cdc_acm_uart: cdc_acm_uart {
|
||||
compatible = "zephyr,cdc-acm-uart";
|
||||
label = "CDC_ACM_0";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -82,9 +97,11 @@ zephyr_udc0: &usbd {
|
||||
#size-cells = <1>;
|
||||
|
||||
sd_partition: partition@0 {
|
||||
label = "softdevice";
|
||||
reg = <0x00000000 0x00026000>;
|
||||
};
|
||||
code_partition: partition@26000 {
|
||||
label = "code_partition";
|
||||
reg = <0x00026000 0x000c6000>;
|
||||
};
|
||||
|
||||
@@ -98,10 +115,12 @@ zephyr_udc0: &usbd {
|
||||
* if enabled.
|
||||
*/
|
||||
storage_partition: partition@ec000 {
|
||||
label = "storage";
|
||||
reg = <0x000ec000 0x00008000>;
|
||||
};
|
||||
|
||||
boot_partition: partition@f4000 {
|
||||
label = "adafruit_boot";
|
||||
reg = <0x000f4000 0x0000c000>;
|
||||
};
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
identifier: bluemicro840
|
||||
identifier: bluemicro840_v1
|
||||
name: BlueMicro840_V1
|
||||
type: mcu
|
||||
arch: arm
|
||||
@@ -1,5 +1,5 @@
|
||||
file_format: "1"
|
||||
id: bluemicro840//zmk
|
||||
id: bluemicro840_v1
|
||||
name: BlueMicro840 v1
|
||||
type: board
|
||||
arch: arm
|
||||
@@ -1,5 +1,9 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SOC_SERIES_NRF52X=y
|
||||
CONFIG_SOC_NRF52840_QIAA=y
|
||||
CONFIG_BOARD_BLUEMICRO840_V1=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
@@ -17,8 +21,6 @@ CONFIG_SETTINGS_NVS=y
|
||||
CONFIG_FLASH=y
|
||||
CONFIG_FLASH_PAGE_LAYOUT=y
|
||||
CONFIG_FLASH_MAP=y
|
||||
CONFIG_CLOCK_CONTROL_NRF=y
|
||||
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
|
||||
|
||||
CONFIG_ZMK_USB=y
|
||||
CONFIG_ZMK_BLE=y
|
||||
@@ -1,7 +1,5 @@
|
||||
# Copyright (c) 2026 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
|
||||
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
9
app/boards/arm/boardsource_blok/boardsource_blok.zmk.yml
Normal file
9
app/boards/arm/boardsource_blok/boardsource_blok.zmk.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
file_format: "1"
|
||||
id: boardsource_blok
|
||||
name: BoardSource blok
|
||||
type: board
|
||||
arch: arm
|
||||
outputs:
|
||||
- usb
|
||||
url: https://peg.software/docs/blok
|
||||
exposes: [pro_micro]
|
||||
7
app/boards/arm/bt60/Kconfig
Normal file
7
app/boards/arm/bt60/Kconfig
Normal file
@@ -0,0 +1,7 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_ENABLE_DCDC
|
||||
bool "Enable DCDC mode"
|
||||
select SOC_DCDC_NRF52X
|
||||
default y
|
||||
depends on (BOARD_BT60_V1_HS || BOARD_BT60_V1)
|
||||
12
app/boards/arm/bt60/Kconfig.board
Normal file
12
app/boards/arm/bt60/Kconfig.board
Normal file
@@ -0,0 +1,12 @@
|
||||
# BT60 board configuration
|
||||
|
||||
# Copyright (c) 2021 Polarity Works
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_BT60_V1
|
||||
bool "bt60"
|
||||
depends on SOC_NRF52840_QIAA
|
||||
|
||||
config BOARD_BT60_V1_HS
|
||||
bool "bt60 hotswap"
|
||||
depends on SOC_NRF52840_QIAA
|
||||
@@ -1,10 +1,10 @@
|
||||
# Copyright (c) 2022 The ZMK Contributors
|
||||
# Copyright (c) 2021 Polarity Works
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config ZMK_KEYBOARD_NAME
|
||||
default "BT75" if BOARD_BT75
|
||||
if BOARD_BT60_V1_HS || BOARD_BT60_V1
|
||||
|
||||
if BOARD_BT75
|
||||
config BOARD
|
||||
default "bt60"
|
||||
|
||||
if USB
|
||||
|
||||
@@ -19,4 +19,7 @@ endif # USB
|
||||
config BT_CTLR
|
||||
default BT
|
||||
|
||||
endif # BOARD_BT75
|
||||
config ZMK_KEYBOARD_NAME
|
||||
default "BT60"
|
||||
|
||||
endif # BOARD_BT60
|
||||
@@ -1,5 +1,5 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
|
||||
include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
135
app/boards/arm/bt60/bt60.dtsi
Normal file
135
app/boards/arm/bt60/bt60.dtsi
Normal file
@@ -0,0 +1,135 @@
|
||||
/*
|
||||
* 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -4,17 +4,14 @@
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "bt60_1_0_0.dtsi"
|
||||
#include <layouts/common/60percent/all1u.dtsi>
|
||||
#include <layouts/common/60percent/ansi.dtsi>
|
||||
#include <layouts/common/60percent/hhkb.dtsi>
|
||||
#include <layouts/common/60percent/iso.dtsi>
|
||||
/dts-v1/;
|
||||
#include "bt60.dtsi"
|
||||
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
zmk,kscan = &kscan0;
|
||||
zmk,physical-layout = &layout_60_ansi;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
};
|
||||
|
||||
ansi_transform: keymap_transform_0 {
|
||||
@@ -69,10 +66,22 @@
|
||||
>;
|
||||
};
|
||||
|
||||
split_transform: keymap_transform_4 {
|
||||
compatible = "zmk,matrix-transform";
|
||||
columns = <15>;
|
||||
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(0,14)
|
||||
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,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,12) RC(3,14)
|
||||
RC(4,0) RC(4,1) RC(4,2) RC(4,6) RC(4,10) RC(4,11) RC(4,12) RC(4,13)
|
||||
>;
|
||||
};
|
||||
|
||||
kscan0: kscan_0 {
|
||||
compatible = "zmk,kscan-gpio-matrix";
|
||||
wakeup-source;
|
||||
|
||||
label = "KSCAN";
|
||||
diode-direction = "col2row";
|
||||
|
||||
col-gpios
|
||||
@@ -102,19 +111,3 @@
|
||||
;
|
||||
};
|
||||
};
|
||||
|
||||
&layout_60_ansi {
|
||||
transform = <&ansi_transform>;
|
||||
};
|
||||
|
||||
&layout_60_iso {
|
||||
transform = <&iso_transform>;
|
||||
};
|
||||
|
||||
&layout_60_all1u {
|
||||
transform = <&all_1u_transform>;
|
||||
};
|
||||
|
||||
&layout_60_hhkb {
|
||||
transform = <&hhkb_transform>;
|
||||
};
|
||||
@@ -2,25 +2,26 @@
|
||||
#include <dt-bindings/zmk/keys.h>
|
||||
#include <dt-bindings/zmk/bt.h>
|
||||
|
||||
#define ANSI
|
||||
//#define HHKB
|
||||
//#define ISO
|
||||
//#define ALL_1U
|
||||
#define ANSI true
|
||||
//#define HHKB true
|
||||
//#define ISO true
|
||||
//#define ALL_1U true
|
||||
//#define SPLIT_BKSP_RSHFT true
|
||||
|
||||
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
#ifdef ANSI
|
||||
zmk,physical-layout = &layout_60_ansi;
|
||||
#elif defined(ISO)
|
||||
zmk,physical-layout = &layout_60_iso;
|
||||
#elif defined(ALL_1U)
|
||||
zmk,physical-layout = &layout_60_all1u;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
#elif defined(HHKB)
|
||||
zmk,physical-layout = &layout_60_hhkb;
|
||||
zmk,matrix_transform = &hhkb_transform;
|
||||
#elif defined(ISO)
|
||||
zmk,matrix_transform = &iso_transform;
|
||||
#elif defined(ALL_1U)
|
||||
zmk,matrix_transform = &all_1u_transform;
|
||||
#else
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
|
||||
zmk,matrix_transform = &split_transform;
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -30,7 +31,7 @@
|
||||
#ifdef ANSI
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC |
|
||||
// | 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 |
|
||||
@@ -93,7 +94,7 @@
|
||||
#elif defined(ISO)
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC |
|
||||
// | 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 |
|
||||
@@ -121,7 +122,7 @@
|
||||
#elif defined(ALL_1U)
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC |
|
||||
// | 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 | , | . | / | SHFT | UP | 1 |
|
||||
@@ -147,7 +148,33 @@
|
||||
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
|
||||
};
|
||||
#else
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BKSP| DEL |
|
||||
// | 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 | 1 |
|
||||
// | CTL | WIN | ALT | SPACE | ALT | 1 | CTRL |
|
||||
// ------------------------------------------------------------------------------------------
|
||||
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 DEL
|
||||
&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 &kp FSLH &kp RSHFT &mo 1
|
||||
&kp LCTRL &kp LGUI &kp LALT &kp SPACE &kp RALT &kp RGUI &kp C_MENU &kp RCTRL
|
||||
>;
|
||||
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
|
||||
};
|
||||
raise {
|
||||
bindings = <
|
||||
&kp GRAVE &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp DEL &trans
|
||||
&trans &trans &kp UP &trans &trans &trans &trans &trans &kp INS &trans &kp PSCRN &kp SLCK &kp PAUSE_BREAK &sys_reset
|
||||
&trans &kp LEFT &kp DOWN &kp RIGHT &trans &trans &trans &trans &trans &trans &kp HOME &kp PG_UP &bootloader
|
||||
&kp C_PREV &kp C_VOL_DN &kp C_VOL_UP &kp C_MUTE &trans &trans &trans &trans &trans &kp END &kp PG_DN &kp C_NEXT &trans
|
||||
&bt BT_PRV &bt BT_NXT &trans &trans &trans &trans &trans &bt BT_CLR
|
||||
>;
|
||||
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
};
|
||||
15
app/boards/arm/bt60/bt60_v1.yaml
Normal file
15
app/boards/arm/bt60/bt60_v1.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
identifier: bt60_v1
|
||||
name: BT60 V1 Soldered
|
||||
type: mcu
|
||||
arch: arm
|
||||
toolchain:
|
||||
- zephyr
|
||||
- gnuarmemb
|
||||
- xtools
|
||||
supported:
|
||||
- adc
|
||||
- usb_device
|
||||
- ble
|
||||
- ieee802154
|
||||
- pwm
|
||||
- watchdog
|
||||
12
app/boards/arm/bt60/bt60_v1.zmk.yml
Normal file
12
app/boards/arm/bt60/bt60_v1.zmk.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
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,5 +1,9 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SOC_SERIES_NRF52X=y
|
||||
CONFIG_SOC_NRF52840_QIAA=y
|
||||
CONFIG_BOARD_BT60_V1=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
@@ -21,4 +25,4 @@ CONFIG_FLASH_PAGE_LAYOUT=y
|
||||
CONFIG_FLASH_MAP=y
|
||||
|
||||
CONFIG_ZMK_USB=y
|
||||
CONFIG_ZMK_BLE=y
|
||||
CONFIG_ZMK_BLE=y
|
||||
@@ -4,14 +4,14 @@
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "bt60_nrf52840_zmk.dts"
|
||||
#include "bt60_1_0_0.dtsi"
|
||||
#include <layouts/common/60percent/ansi.dtsi>
|
||||
/dts-v1/;
|
||||
#include "bt60.dtsi"
|
||||
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
zmk,kscan = &kscan0;
|
||||
zmk,physical-layout = &layout_60_ansi;
|
||||
zmk,matrix_transform = &default_transform;
|
||||
};
|
||||
|
||||
default_transform: keymap_transform_0 {
|
||||
@@ -30,8 +30,7 @@
|
||||
|
||||
kscan0: kscan_0 {
|
||||
compatible = "zmk,kscan-gpio-matrix";
|
||||
wakeup-source;
|
||||
|
||||
label = "KSCAN";
|
||||
diode-direction = "col2row";
|
||||
|
||||
col-gpios
|
||||
@@ -60,7 +59,3 @@
|
||||
;
|
||||
};
|
||||
};
|
||||
|
||||
&layout_60_ansi {
|
||||
transform = <&default_transform>;
|
||||
};
|
||||
@@ -8,14 +8,14 @@
|
||||
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC |
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | |
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | DEL
|
||||
// | 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 |
|
||||
// | CTL | WIN | ALT | SPACE | ALT | 1 | MENU | CTRL |
|
||||
// | CTL | WIN | ALT | SPACE | ALT | 1 | MENU | CTRL |
|
||||
// ------------------------------------------------------------------------------------------
|
||||
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 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 &bt BT_CLR
|
||||
&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 &kp FSLH &kp RSHFT
|
||||
@@ -25,7 +25,7 @@
|
||||
};
|
||||
raise {
|
||||
bindings = <
|
||||
&kp GRAVE &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp DEL
|
||||
&kp GRAVE &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp DEL &trans
|
||||
&trans &trans &kp UP &trans &trans &trans &trans &trans &kp INS &trans &kp PSCRN &kp SLCK &kp PAUSE_BREAK &sys_reset
|
||||
&trans &kp LEFT &kp DOWN &kp RIGHT &trans &trans &trans &trans &trans &trans &kp HOME &kp PG_UP &bootloader
|
||||
&kp C_PREV &kp C_VOL_DN &kp C_VOL_UP &kp C_MUTE &trans &trans &trans &trans &trans &kp END &kp PG_DN &kp C_NEXT
|
||||
15
app/boards/arm/bt60/bt60_v1_hs.yaml
Normal file
15
app/boards/arm/bt60/bt60_v1_hs.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
identifier: bt60_v1_hs
|
||||
name: BT60 V1 Hotswap
|
||||
type: mcu
|
||||
arch: arm
|
||||
toolchain:
|
||||
- zephyr
|
||||
- gnuarmemb
|
||||
- xtools
|
||||
supported:
|
||||
- adc
|
||||
- usb_device
|
||||
- ble
|
||||
- ieee802154
|
||||
- pwm
|
||||
- watchdog
|
||||
@@ -1,12 +1,11 @@
|
||||
file_format: "1"
|
||||
id: bt60_hs//zmk
|
||||
id: bt60_v1_hs
|
||||
name: BT60 V1 Hotswap
|
||||
type: board
|
||||
arch: arm
|
||||
features:
|
||||
- keys
|
||||
- encoder
|
||||
- studio
|
||||
outputs:
|
||||
- usb
|
||||
- ble
|
||||
@@ -1,5 +1,9 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SOC_SERIES_NRF52X=y
|
||||
CONFIG_SOC_NRF52840_QIAA=y
|
||||
CONFIG_BOARD_BT60_V1_HS=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
@@ -21,4 +25,4 @@ CONFIG_FLASH_PAGE_LAYOUT=y
|
||||
CONFIG_FLASH_MAP=y
|
||||
|
||||
CONFIG_ZMK_USB=y
|
||||
CONFIG_ZMK_BLE=y
|
||||
CONFIG_ZMK_BLE=y
|
||||
8
app/boards/arm/ckp/Kconfig
Normal file
8
app/boards/arm/ckp/Kconfig
Normal file
@@ -0,0 +1,8 @@
|
||||
# Copyright (c) 2022 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_ENABLE_DCDC
|
||||
bool "Enable DCDC mode"
|
||||
select SOC_DCDC_NRF52X
|
||||
default y
|
||||
depends on BOARD_BT60_V2 || BOARD_BT65_V1 || BOARD_BT75_V1
|
||||
16
app/boards/arm/ckp/Kconfig.board
Normal file
16
app/boards/arm/ckp/Kconfig.board
Normal file
@@ -0,0 +1,16 @@
|
||||
# CKP boards configuration
|
||||
|
||||
# Copyright (c) 2022 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD_BT60_V2
|
||||
bool "bt60_v2"
|
||||
depends on SOC_NRF52840_QIAA
|
||||
|
||||
config BOARD_BT65_V1
|
||||
bool "bt65_v1"
|
||||
depends on SOC_NRF52840_QIAA
|
||||
|
||||
config BOARD_BT75_V1
|
||||
bool "bt75_v1"
|
||||
depends on SOC_NRF52840_QIAA
|
||||
28
app/boards/arm/ckp/Kconfig.defconfig
Normal file
28
app/boards/arm/ckp/Kconfig.defconfig
Normal file
@@ -0,0 +1,28 @@
|
||||
# Copyright (c) 2022 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config BOARD
|
||||
default "bt60_v2" if BOARD_BT60_V2
|
||||
default "bt65_v1" if BOARD_BT65_V1
|
||||
default "bt75_v1" if BOARD_BT75_V1
|
||||
config ZMK_KEYBOARD_NAME
|
||||
default "BT60 V2" if BOARD_BT60_V2
|
||||
default "BT65" if BOARD_BT65_V1
|
||||
default "BT75" if BOARD_BT75_V1
|
||||
|
||||
if BOARD_BT60_V2 || BOARD_BT65_V1 || BOARD_BT75_V1
|
||||
|
||||
if USB
|
||||
|
||||
config USB_NRFX
|
||||
default y
|
||||
|
||||
config USB_DEVICE_STACK
|
||||
default y
|
||||
|
||||
endif # USB
|
||||
|
||||
config BT_CTLR
|
||||
default BT
|
||||
|
||||
endif # BOARD_BT60_V2 || BOARD_BT65_V1 || BOARD_BT75_V1
|
||||
@@ -1,5 +1,4 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
|
||||
include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
@@ -4,19 +4,16 @@
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "../common/ckp.dtsi"
|
||||
#include <layouts/common/60percent/all1u.dtsi>
|
||||
#include <layouts/common/60percent/ansi.dtsi>
|
||||
#include <layouts/common/60percent/hhkb.dtsi>
|
||||
#include <layouts/common/60percent/iso.dtsi>
|
||||
/dts-v1/;
|
||||
#include "ckp.dtsi"
|
||||
|
||||
|
||||
/ {
|
||||
model = "BT60_V2";
|
||||
compatible = "polarityworks,bt60";
|
||||
compatible = "polarityworks,bt60_v2";
|
||||
|
||||
chosen {
|
||||
zmk,physical-layout = &layout_60_ansi;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
};
|
||||
|
||||
|
||||
@@ -72,19 +69,3 @@
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&layout_60_ansi {
|
||||
transform = <&ansi_transform>;
|
||||
};
|
||||
|
||||
&layout_60_iso {
|
||||
transform = <&iso_transform>;
|
||||
};
|
||||
|
||||
&layout_60_all1u {
|
||||
transform = <&all_1u_transform>;
|
||||
};
|
||||
|
||||
&layout_60_hhkb {
|
||||
transform = <&hhkb_transform>;
|
||||
};
|
||||
@@ -12,15 +12,15 @@
|
||||
/ {
|
||||
chosen {
|
||||
#ifdef ANSI
|
||||
zmk,physical-layout = &layout_60_ansi;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
#elif defined(ISO)
|
||||
zmk,physical-layout = &layout_60_iso;
|
||||
zmk,matrix_transform = &iso_transform;
|
||||
#elif defined(ALL_1U)
|
||||
zmk,physical-layout = &layout_60_all1u;
|
||||
zmk,matrix_transform = &all_1u_transform;
|
||||
#elif defined(HHKB)
|
||||
zmk,physical-layout = &layout_60_hhkb;
|
||||
zmk,matrix_transform = &hhkb_transform;
|
||||
#else
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v2.keymap"
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#ifdef ANSI
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC |
|
||||
// | 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 |
|
||||
@@ -65,7 +65,7 @@
|
||||
#elif defined(ISO)
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC |
|
||||
// | 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 |
|
||||
@@ -101,7 +101,7 @@
|
||||
#elif defined(ALL_1U)
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BSPC | DEL |
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BKSP | DEL |
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
|
||||
// | SHFT |NONE| Z | X | C | V | B | N | M | , | . | / | SHFT | UP | 1 |
|
||||
@@ -118,7 +118,7 @@
|
||||
};
|
||||
raise {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// |GRAVE| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |BSPC | DEL |
|
||||
// |GRAVE| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |BKSP | DEL |
|
||||
// | TAB | Q | W | E | HUI | HUD | Y | U | INS | O |PSCRN| SLCK| P_B | RGB_TOG |
|
||||
// | CAPS | A | S | D | BRI | BRD | H | J | K | L | HOME| PGUP| BOOT |
|
||||
// | SHFT |NONE|VOLDN|VOLUP|MUTE|BLINC|BLDEC| N | M | , | END | PGDN | SHFT|BL_TOG| 1 |
|
||||
@@ -136,7 +136,7 @@
|
||||
#elif defined(HHKB)
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC |
|
||||
// | 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 |
|
||||
@@ -170,7 +170,7 @@
|
||||
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
|
||||
};
|
||||
#else
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60.keymap"
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v2.keymap"
|
||||
#endif
|
||||
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
identifier: bt60
|
||||
identifier: bt60_v2
|
||||
name: BT60 V2
|
||||
type: mcu
|
||||
arch: arm
|
||||
@@ -1,6 +1,6 @@
|
||||
file_format: "1"
|
||||
id: bt75//zmk
|
||||
name: BT75 V1
|
||||
id: bt60_v2
|
||||
name: BT60 V2
|
||||
type: board
|
||||
arch: arm
|
||||
features:
|
||||
@@ -8,7 +8,6 @@ features:
|
||||
- encoder
|
||||
- underglow
|
||||
- backlight
|
||||
- studio
|
||||
outputs:
|
||||
- usb
|
||||
- ble
|
||||
@@ -1,5 +1,9 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SOC_SERIES_NRF52X=y
|
||||
CONFIG_SOC_NRF52840_QIAA=y
|
||||
CONFIG_BOARD_BT60_V2=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
@@ -28,6 +32,8 @@ CONFIG_ZMK_RGB_UNDERGLOW=y
|
||||
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
|
||||
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=y
|
||||
CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=262
|
||||
CONFIG_WS2812_STRIP=y
|
||||
CONFIG_SPI=y
|
||||
|
||||
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
|
||||
|
||||
@@ -5,23 +5,15 @@
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <nordic/nrf52840_qiaa.dtsi>
|
||||
#include <common/nordic/nrf52840_uf2_boot_mode.dtsi>
|
||||
|
||||
#include "../common/ckp-base.dtsi"
|
||||
#include "../common/ckp.dtsi"
|
||||
#include <layouts/common/65percent/all1u.dtsi>
|
||||
#include <layouts/common/65percent/ansi.dtsi>
|
||||
#include <layouts/common/65percent/iso.dtsi>
|
||||
#include <layouts/common/65percent/hhkb.dtsi>
|
||||
#include "ckp.dtsi"
|
||||
|
||||
|
||||
/ {
|
||||
model = "BT65_V1";
|
||||
compatible = "polarityworks,bt65";
|
||||
compatible = "polarityworks,bt65_v1";
|
||||
|
||||
chosen {
|
||||
zmk,physical-layout = &layout_65_ansi;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
};
|
||||
|
||||
|
||||
@@ -77,19 +69,3 @@
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&layout_65_ansi {
|
||||
transform = <&ansi_transform>;
|
||||
};
|
||||
|
||||
&layout_65_iso {
|
||||
transform = <&iso_transform>;
|
||||
};
|
||||
|
||||
&layout_65_all1u {
|
||||
transform = <&all_1u_transform>;
|
||||
};
|
||||
|
||||
&layout_65_hhkb {
|
||||
transform = <&hhkb_transform>;
|
||||
};
|
||||
@@ -12,15 +12,15 @@
|
||||
/ {
|
||||
chosen {
|
||||
#ifdef ANSI
|
||||
zmk,physical-layout = &layout_65_ansi;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
#elif defined(ISO)
|
||||
zmk,physical-layout = &layout_65_iso;
|
||||
zmk,matrix_transform = &iso_transform;
|
||||
#elif defined(ALL_1U)
|
||||
zmk,physical-layout = &layout_65_all1u;
|
||||
zmk,matrix_transform = &all_1u_transform;
|
||||
#elif defined(HHKB)
|
||||
zmk,physical-layout = &layout_65_hhkb;
|
||||
zmk,matrix_transform = &hhkb_transform;
|
||||
#else
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65.keymap"
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65_v1.keymap"
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#ifdef ANSI
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC | DEL |
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | DEL |
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | INS |
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | PGUP|
|
||||
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | PGDN|
|
||||
@@ -37,7 +37,7 @@
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
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 DEL
|
||||
&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 BKSP &kp DEL
|
||||
&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 INS
|
||||
&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 PG_UP
|
||||
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &kp UP &kp PG_DN
|
||||
@@ -65,7 +65,7 @@
|
||||
#elif defined(ISO)
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC | DEL |
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | DEL |
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | INS |
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | # | ENTER | PGUP|
|
||||
// |SHIFT | \ | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | PGDN|
|
||||
@@ -73,7 +73,7 @@
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
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 DEL
|
||||
&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 BKSP &kp DEL
|
||||
&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 INS
|
||||
&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 NON_US_HASH &kp RET &kp PG_UP
|
||||
&kp LSHFT &kp NON_US_BSLH &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &kp UP &kp PG_DN
|
||||
@@ -101,7 +101,7 @@
|
||||
#elif defined(ALL_1U)
|
||||
default_layer {
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BSPC | DEL | HOME|
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BKSP | DEL | HOME|
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | END |
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | PGUP|
|
||||
// |SHIFT|NONE | Z | X | C | V | B | N | M | , | . | / |SHIFT|NONE | UP | PGDN|
|
||||
@@ -136,7 +136,7 @@
|
||||
#elif defined(HHKB)
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC | DEL |
|
||||
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | DEL |
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | HOME|
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | END |
|
||||
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | PGUP|
|
||||
@@ -144,7 +144,7 @@
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
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 DEL
|
||||
&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 BKSP &kp DEL
|
||||
&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 HOME
|
||||
&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 END
|
||||
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &kp PG_UP
|
||||
@@ -170,7 +170,7 @@
|
||||
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
|
||||
};
|
||||
#else
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65.keymap"
|
||||
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65_v1.keymap"
|
||||
#endif
|
||||
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
identifier: bt65
|
||||
identifier: bt65_v1
|
||||
name: BT65_V1
|
||||
type: mcu
|
||||
arch: arm
|
||||
@@ -1,5 +1,5 @@
|
||||
file_format: "1"
|
||||
id: bt65//zmk
|
||||
id: bt65_v1
|
||||
name: BT65
|
||||
type: board
|
||||
arch: arm
|
||||
@@ -8,7 +8,6 @@ features:
|
||||
- encoder
|
||||
- underglow
|
||||
- backlight
|
||||
- studio
|
||||
outputs:
|
||||
- usb
|
||||
- ble
|
||||
@@ -1,5 +1,9 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
CONFIG_SOC_SERIES_NRF52X=y
|
||||
CONFIG_SOC_NRF52840_QIAA=y
|
||||
CONFIG_BOARD_BT65_V1=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
@@ -28,8 +32,10 @@ CONFIG_ZMK_RGB_UNDERGLOW=y
|
||||
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
|
||||
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=y
|
||||
CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=262
|
||||
CONFIG_WS2812_STRIP=y
|
||||
CONFIG_SPI=y
|
||||
|
||||
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
|
||||
|
||||
CONFIG_ZMK_USB=y
|
||||
CONFIG_ZMK_BLE=y
|
||||
CONFIG_ZMK_BLE=y
|
||||
@@ -5,22 +5,15 @@
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <nordic/nrf52840_qiaa.dtsi>
|
||||
#include <common/nordic/nrf52840_uf2_boot_mode.dtsi>
|
||||
|
||||
#include "../common/ckp-base.dtsi"
|
||||
#include "../common/ckp.dtsi"
|
||||
#include <layouts/common/75percent/all1u.dtsi>
|
||||
#include <layouts/common/75percent/ansi.dtsi>
|
||||
#include <layouts/common/75percent/iso.dtsi>
|
||||
#include "ckp.dtsi"
|
||||
|
||||
|
||||
/ {
|
||||
model = "BT75_V1";
|
||||
compatible = "polarityworks,bt75";
|
||||
compatible = "polarityworks,bt75_v1";
|
||||
|
||||
chosen {
|
||||
zmk,physical-layout = &layout_75_ansi;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
};
|
||||
|
||||
|
||||
@@ -66,15 +59,3 @@
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&layout_75_ansi {
|
||||
transform = <&ansi_transform>;
|
||||
};
|
||||
|
||||
&layout_75_iso {
|
||||
transform = <&iso_transform>;
|
||||
};
|
||||
|
||||
&layout_75_all1u {
|
||||
transform = <&all_1u_transform>;
|
||||
};
|
||||
@@ -11,13 +11,13 @@
|
||||
/ {
|
||||
chosen {
|
||||
#ifdef ANSI
|
||||
zmk,physical-layout = &layout_75_ansi;
|
||||
zmk,matrix_transform = &ansi_transform;
|
||||
#elif defined(ISO)
|
||||
zmk,physical-layout = &layout_75_iso;
|
||||
zmk,matrix_transform = &iso_transform;
|
||||
#elif defined(ALL_1U)
|
||||
zmk,physical-layout = &layout_75_all1u;
|
||||
zmk,matrix_transform = &all_1u_transform;
|
||||
#else
|
||||
#error "Layout not defined, please define a layout using by uncommenting the appropriate line in bt75.keymap"
|
||||
#error "Layout not defined, please define a layout using by uncommenting the appropriate line in bt75_v1.keymap"
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F9 | F9 | F10 | F11 | F12 |PSCRN|HOME| END |
|
||||
// |GRAVE| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC | DEL |
|
||||
// |GRAVE| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | DEL |
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | INS |
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | PGUP|
|
||||
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | PGDN|
|
||||
@@ -35,7 +35,7 @@
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bindings = <
|
||||
&kp ESC &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp PSCRN &kp HOME &kp END
|
||||
&kp GRAVE &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 DEL
|
||||
&kp GRAVE &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 BKSP &kp DEL
|
||||
&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 INS
|
||||
&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 PG_UP
|
||||
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &kp UP &kp PG_DN
|
||||
@@ -66,7 +66,7 @@
|
||||
default_layer {
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F9 | F9 | F10 | F11 | F12 |PSCRN|HOME| END |
|
||||
// |GRAVE| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSPC | DEL |
|
||||
// |GRAVE| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BKSP | DEL |
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | INS |
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | # | ENTER | PGUP|
|
||||
// |SHIFT | \ | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | PGDN|
|
||||
@@ -74,7 +74,7 @@
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bindings = <
|
||||
&kp ESC &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp PSCRN &kp HOME &kp END
|
||||
&kp GRAVE &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 DEL
|
||||
&kp GRAVE &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 BKSP &kp DEL
|
||||
&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 INS
|
||||
&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 NON_US_HASH &kp RET &kp PG_UP
|
||||
&kp LSHFT &kp NON_US_BSLH &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &kp UP &kp PG_DN
|
||||
@@ -105,7 +105,7 @@
|
||||
default_layer {
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
// | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F9 | F9 | F10 | F11 | F12 |PSCRN| P_B | INS |
|
||||
// |GRAVE| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BSPC | DEL | HOME|
|
||||
// |GRAVE| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |BKSP | DEL | HOME|
|
||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | END |
|
||||
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | PGUP|
|
||||
// |SHIFT|NONE | Z | X | C | V | B | N | M | , | . | / |SHIFT|NONE | UP | PGDN|
|
||||
@@ -1,4 +1,4 @@
|
||||
identifier: bt75
|
||||
identifier: bt75_v1
|
||||
name: BT75_V1
|
||||
type: mcu
|
||||
arch: arm
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user