Compare commits

..

3 Commits

Author SHA1 Message Date
Peter Johanson
0b23d07954 refactor: Move to zmk_hid_indicators_t type. 2023-11-27 15:49:43 -08:00
Alessandro Bortolin
f14ac2b3d6 feat: LED indicators on peripheral side 2023-11-27 15:06:48 -08:00
Alessandro Bortolin
c23cc8ee42 feat: handle LED indicators report 2023-11-27 14:47:45 -08:00
610 changed files with 18956 additions and 16234 deletions

View File

@@ -6,8 +6,3 @@ fi
if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then
source "$WORKSPACE_DIR/zephyr/zephyr-env.sh" source "$WORKSPACE_DIR/zephyr/zephyr-env.sh"
fi fi
if [ -d "$WORKSPACE_DIR/tools/bsim" ]; then
export BSIM_OUT_PATH="$WORKSPACE_DIR/tools/bsim/"
export BSIM_COMPONENTS_PATH="$WORKSPACE_DIR/tools/bsim/components/"
fi

View File

@@ -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:3.2
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
- 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

View File

@@ -32,7 +32,7 @@ jobs:
build_matrix: ${{ env.build_matrix }} build_matrix: ${{ env.build_matrix }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Install yaml2json - name: Install yaml2json
run: python3 -m pip install remarshal run: python3 -m pip install remarshal
@@ -52,13 +52,6 @@ jobs:
fail-fast: false fail-fast: false
matrix: ${{ fromJson(needs.matrix.outputs.build_matrix) }} matrix: ${{ fromJson(needs.matrix.outputs.build_matrix) }}
steps: steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create build directory
run: |
echo "build_dir=$(mktemp -d)" >> $GITHUB_ENV
- name: Prepare variables - name: Prepare variables
shell: sh -x {0} shell: sh -x {0}
env: env:
@@ -66,38 +59,26 @@ jobs:
shield: ${{ matrix.shield }} shield: ${{ matrix.shield }}
artifact_name: ${{ matrix.artifact-name }} artifact_name: ${{ matrix.artifact-name }}
run: | run: |
if [ -e zephyr/module.yml ]; then
export zmk_load_arg=" -DZMK_EXTRA_MODULES='${GITHUB_WORKSPACE}'"
export new_tmp_dir=$(mktemp -d)
echo "base_dir=${new_tmp_dir}" >> $GITHUB_ENV
else
echo "base_dir=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
fi
echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV echo "zephyr_version=${ZEPHYR_VERSION}" >> $GITHUB_ENV
echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}${zmk_load_arg}" >> $GITHUB_ENV echo "extra_cmake_args=${shield:+-DSHIELD=\"$shield\"}" >> $GITHUB_ENV
echo "display_name=${shield:+$shield - }${board}" >> $GITHUB_ENV echo "display_name=${shield:+$shield - }${board}" >> $GITHUB_ENV
echo "artifact_name=${artifact_name:-${shield:+$shield-}${board}-zmk}" >> $GITHUB_ENV echo "artifact_name=${artifact_name:-${shield:+$shield-}${board}-zmk}" >> $GITHUB_ENV
- name: Copy config files to isolated temporary directory - name: Checkout
run: | uses: actions/checkout@v3
if [ "${{ env.base_dir }}" != "${GITHUB_WORKSPACE}" ]; then
mkdir "${{ env.base_dir }}/${{ inputs.config_path }}"
cp -R ${{ inputs.config_path }}/* "${{ env.base_dir }}/${{ inputs.config_path }}/"
fi
- name: Cache west modules - name: Cache west modules
uses: actions/cache@v4 uses: actions/cache@v3.0.11
continue-on-error: true continue-on-error: true
env: env:
cache_name: cache-zephyr-${{ env.zephyr_version }}-modules cache_name: cache-zephyr-${{ env.zephyr_version }}-modules
with: with:
path: | path: |
${{ env.base_dir }}/modules/ modules/
${{ env.base_dir }}/tools/ tools/
${{ env.base_dir }}/zephyr/ zephyr/
${{ env.base_dir }}/bootloader/ bootloader/
${{ env.base_dir }}/zmk/ zmk/
key: ${{ runner.os }}-build-${{ env.cache_name }}-${{ hashFiles('**/west.yml', '**/build.yaml') }} key: ${{ runner.os }}-build-${{ env.cache_name }}-${{ hashFiles('**/west.yml', '**/build.yaml') }}
restore-keys: | restore-keys: |
${{ runner.os }}-build-${{ env.cache_name }}- ${{ runner.os }}-build-${{ env.cache_name }}-
@@ -105,27 +86,23 @@ jobs:
${{ runner.os }}- ${{ runner.os }}-
- name: West Init - name: West Init
working-directory: ${{ env.base_dir }} run: west init -l "${{ inputs.config_path }}"
run: west init -l "${{ env.base_dir }}/${{ inputs.config_path }}"
- name: West Update - name: West Update
working-directory: ${{ env.base_dir }}
run: west update run: west update
- name: West Zephyr export - name: West Zephyr export
working-directory: ${{ env.base_dir }}
run: west zephyr-export run: west zephyr-export
- name: West Build (${{ env.display_name }}) - name: West Build (${{ env.display_name }})
working-directory: ${{ env.base_dir }}
shell: sh -x {0} shell: sh -x {0}
run: west build -s zmk/app -d "${{ env.build_dir }}" -b "${{ matrix.board }}" -- -DZMK_CONFIG=${{ env.base_dir }}/${{ inputs.config_path }} ${{ env.extra_cmake_args }} ${{ matrix.cmake-args }} 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 - name: ${{ env.display_name }} Kconfig file
run: | run: |
if [ -f "${{ env.build_dir }}/zephyr/.config" ] if [ -f build/zephyr/.config ]
then then
grep -v -e "^#" -e "^$" "${{ env.build_dir }}/zephyr/.config" | sort grep -v -e "^#" -e "^$" build/zephyr/.config | sort
else else
echo "No Kconfig output" echo "No Kconfig output"
fi fi
@@ -133,12 +110,12 @@ jobs:
- name: ${{ env.display_name }} Devicetree file - name: ${{ env.display_name }} Devicetree file
run: | run: |
if [ -f "${{ env.build_dir }}/zephyr/zephyr.dts" ] if [ -f build/zephyr/zephyr.dts ]
then then
cat "${{ env.build_dir }}/zephyr/zephyr.dts" cat build/zephyr/zephyr.dts
elif [ -f "${{ env.build_dir }}/zephyr/zephyr.dts.pre" ] elif [ -f build/zephyr/zephyr.dts.pre ]
then then
cat -s "${{ env.build_dir }}/zephyr/zephyr.dts.pre" cat -s build/zephyr/zephyr.dts.pre
else else
echo "No Devicetree output" echo "No Devicetree output"
fi fi
@@ -147,17 +124,17 @@ jobs:
- name: Rename artifacts - name: Rename artifacts
shell: sh -x {0} shell: sh -x {0}
run: | run: |
mkdir "${{ env.build_dir }}/artifacts" mkdir build/artifacts
if [ -f "${{ env.build_dir }}/zephyr/zmk.uf2" ] if [ -f build/zephyr/zmk.uf2 ]
then then
cp "${{ env.build_dir }}/zephyr/zmk.uf2" "${{ env.build_dir }}/artifacts/${{ env.artifact_name }}.uf2" cp build/zephyr/zmk.uf2 "build/artifacts/${{ env.artifact_name }}.uf2"
elif [ -f "${{ env.build_dir }}/zephyr/zmk.${{ inputs.fallback_binary }}" ] elif [ -f build/zephyr/zmk.${{ inputs.fallback_binary }} ]
then 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 fi
- name: Archive (${{ env.display_name }}) - name: Archive (${{ env.display_name }})
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: ${{ inputs.archive_name }} name: ${{ inputs.archive_name }}
path: ${{ env.build_dir }}/artifacts path: build/artifacts

View File

@@ -24,9 +24,9 @@ jobs:
include: ${{ fromJSON(needs.compile-matrix.outputs.include-list) }} include: ${{ fromJSON(needs.compile-matrix.outputs.include-list) }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Cache west modules - name: Cache west modules
uses: actions/cache@v4 uses: actions/cache@v3.0.2
env: env:
cache-name: cache-zephyr-modules cache-name: cache-zephyr-modules
with: with:
@@ -49,17 +49,19 @@ jobs:
- name: Export Zephyr CMake package (west zephyr-export) - name: Export Zephyr CMake package (west zephyr-export)
run: west zephyr-export run: west zephyr-export
- name: Use Node.js - name: Use Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v2
with: with:
node-version: "14.x" node-version: "14.x"
- name: Install @actions/artifact - name: Install @actions/artifact
run: npm install @actions/artifact run: npm install @actions/artifact
- name: Build - name: Build and upload artifacts
uses: actions/github-script@v7 uses: actions/github-script@v4
id: boards-list id: boards-list
with: with:
script: | script: |
const fs = require('fs'); const fs = require('fs');
const artifact = require('@actions/artifact');
const artifactClient = artifact.create();
const execSync = require('child_process').execSync; const execSync = require('child_process').execSync;
@@ -69,39 +71,10 @@ jobs:
for (const shieldArgs of buildShieldArgs) { for (const shieldArgs of buildShieldArgs) {
try { try {
console.log(`::group::${{ matrix.board}} ${shieldArgs.shield} Build`)
const output = execSync(`west build -s app -p -b ${{ matrix.board }} -- ${shieldArgs.shield ? '-DSHIELD="' + shieldArgs.shield + '"' : ''} ${shieldArgs['cmake-args'] || ''}`); const output = execSync(`west build -s app -p -b ${{ matrix.board }} -- ${shieldArgs.shield ? '-DSHIELD="' + shieldArgs.shield + '"' : ''} ${shieldArgs['cmake-args'] || ''}`);
console.log(`::group::${{ matrix.board}} ${shieldArgs.shield} Build`)
console.log(output.toString()); console.log(output.toString());
} catch (e) {
console.error(`::error::Failed to build ${{ matrix.board }} ${shieldArgs.shield} ${shieldArgs['cmake-args']}`);
console.error(e);
error = true;
} finally {
console.log('::endgroup::');
}
}
if (error) {
throw new Error('Failed to build one or more configurations');
}
- name: Upload artifacts
uses: actions/github-script@v7
continue-on-error: ${{ github.event_name == 'pull_request' }}
id: boards-upload
with:
script: |
const fs = require('fs');
const {default: artifact} = require('@actions/artifact');
const buildShieldArgs = JSON.parse(`${{ matrix.shieldArgs }}`);
let error = false;
for (const shieldArgs of buildShieldArgs) {
try {
console.log(`::group::${{ matrix.board}} ${shieldArgs.shield} Upload`)
const fileExtensions = ["hex", "uf2"]; const fileExtensions = ["hex", "uf2"];
@@ -117,9 +90,9 @@ jobs:
const cmakeName = shieldArgs['cmake-args'] ? '-' + (shieldArgs.nickname || shieldArgs['cmake-args'].split(' ').join('')) : ''; const cmakeName = shieldArgs['cmake-args'] ? '-' + (shieldArgs.nickname || shieldArgs['cmake-args'].split(' ').join('')) : '';
const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`; const artifactName = `${{ matrix.board }}${shieldArgs.shield ? '-' + shieldArgs.shield : ''}${cmakeName}-zmk`;
await artifact.uploadArtifact(artifactName, files, rootDirectory, options); await artifactClient.uploadArtifact(artifactName, files, rootDirectory, options);
} catch (e) { } 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); console.error(e);
error = true; error = true;
} finally { } finally {
@@ -138,7 +111,7 @@ jobs:
include-list: ${{ steps.compile-list.outputs.result }} include-list: ${{ steps.compile-list.outputs.result }}
steps: steps:
- name: Join build lists - name: Join build lists
uses: actions/github-script@v7 uses: actions/github-script@v4
id: compile-list id: compile-list
with: with:
script: | script: |
@@ -178,14 +151,14 @@ jobs:
core-include: ${{ steps.core-list.outputs.result }} core-include: ${{ steps.core-list.outputs.result }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Use Node.js - name: Use Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v2
with: with:
node-version: "14.x" node-version: "14.x"
- name: Install js-yaml - name: Install js-yaml
run: npm install js-yaml run: npm install js-yaml
- uses: actions/github-script@v7 - uses: actions/github-script@v4
id: core-list id: core-list
with: with:
script: | script: |
@@ -207,14 +180,14 @@ jobs:
boards-include: ${{ steps.boards-list.outputs.result }} boards-include: ${{ steps.boards-list.outputs.result }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Use Node.js - name: Use Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v2
with: with:
node-version: "14.x" node-version: "14.x"
- name: Install js-yaml - name: Install js-yaml
run: npm install js-yaml run: npm install js-yaml
- uses: actions/github-script@v7 - uses: actions/github-script@v4
id: boards-list id: boards-list
with: with:
script: | script: |
@@ -291,7 +264,7 @@ jobs:
nightly-include: ${{ steps.nightly-list.outputs.result }} nightly-include: ${{ steps.nightly-list.outputs.result }}
steps: steps:
- name: Create nightly list - name: Create nightly list
uses: actions/github-script@v7 uses: actions/github-script@v4
id: nightly-list id: nightly-list
with: with:
script: | script: |
@@ -334,15 +307,15 @@ jobs:
organized-metadata: ${{ steps.organize-metadata.outputs.result }} organized-metadata: ${{ steps.organize-metadata.outputs.result }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Use Node.js - name: Use Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v2
with: with:
node-version: "14.x" node-version: "14.x"
- name: Install js-yaml - name: Install js-yaml
run: npm install js-yaml run: npm install js-yaml
- name: Aggregate Metadata - name: Aggregate Metadata
uses: actions/github-script@v7 uses: actions/github-script@v4
id: aggregate-metadata id: aggregate-metadata
with: with:
script: | script: |
@@ -360,7 +333,7 @@ jobs:
result-encoding: string result-encoding: string
- name: Organize Metadata - name: Organize Metadata
uses: actions/github-script@v7 uses: actions/github-script@v4
id: organize-metadata id: organize-metadata
with: with:
script: | script: |
@@ -409,28 +382,27 @@ jobs:
if: ${{ github.event_name != 'schedule' }} if: ${{ github.event_name != 'schedule' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
changed-files: ${{ steps.changed-files.outputs.all_changed_files }} changed-files: ${{ steps.changed-files.outputs.all }}
board-changes: ${{ steps.board-changes.outputs.result }} board-changes: ${{ steps.board-changes.outputs.result }}
core-changes: ${{ steps.core-changes.outputs.result }} core-changes: ${{ steps.core-changes.outputs.result }}
steps: steps:
- uses: tj-actions/changed-files@v42 - uses: Ana06/get-changed-files@v2.0.0
id: changed-files id: changed-files
with: with:
json: true format: "json"
escape_json: false - uses: actions/github-script@v4
- uses: actions/github-script@v7
id: board-changes id: board-changes
with: with:
script: | 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 boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
return boardChanges.length ? 'true' : 'false'; return boardChanges.length ? 'true' : 'false';
result-encoding: string result-encoding: string
- uses: actions/github-script@v7 - uses: actions/github-script@v4
id: core-changes id: core-changes
with: with:
script: | 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 boardChanges = changedFiles.filter(f => f.startsWith('app/boards'));
const appChanges = changedFiles.filter(f => f.startsWith('app')); const appChanges = changedFiles.filter(f => f.startsWith('app'));
const ymlChanges = changedFiles.includes('.github/workflows/build.yml'); const ymlChanges = changedFiles.includes('.github/workflows/build.yml');

View File

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

View File

@@ -20,7 +20,7 @@ jobs:
container: container:
image: docker.io/zmkfirmware/zmk-dev-arm:3.2 image: docker.io/zmkfirmware/zmk-dev-arm:3.2
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- name: Install dependencies - name: Install dependencies
run: pip install -r app/scripts/requirements.txt run: pip install -r app/scripts/requirements.txt
- name: West init - name: West init

View File

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

View File

@@ -6,13 +6,11 @@ on:
- ".github/workflows/test.yml" - ".github/workflows/test.yml"
- "app/tests/**" - "app/tests/**"
- "app/src/**" - "app/src/**"
- "app/include/**"
pull_request: pull_request:
paths: paths:
- ".github/workflows/test.yml" - ".github/workflows/test.yml"
- "app/tests/**" - "app/tests/**"
- "app/src/**" - "app/src/**"
- "app/include/**"
jobs: jobs:
collect-tests: collect-tests:
@@ -21,13 +19,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Find test directories - name: Find test directories
id: test-dirs id: test-dirs
run: | run: |
cd app/tests/ cd app/tests/
export TESTS=$(ls -d * | grep -v ble | jq -R -s -c 'split("\n")[:-1]') export TESTS=$(ls -d * | jq -R -s -c 'split("\n")[:-1]')
echo "test-dirs=${TESTS}" >> $GITHUB_OUTPUT echo "::set-output name=test-dirs::${TESTS}"
run-tests: run-tests:
needs: collect-tests needs: collect-tests
strategy: strategy:
@@ -38,9 +36,9 @@ jobs:
image: docker.io/zmkfirmware/zmk-build-arm:3.2 image: docker.io/zmkfirmware/zmk-build-arm:3.2
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Cache west modules - name: Cache west modules
uses: actions/cache@v4 uses: actions/cache@v3.0.2
env: env:
cache-name: cache-zephyr-modules cache-name: cache-zephyr-modules
with: with:
@@ -67,7 +65,7 @@ jobs:
run: west test tests/${{ matrix.test }} run: west test tests/${{ matrix.test }}
- name: Archive artifacts - name: Archive artifacts
if: ${{ always() }} if: ${{ always() }}
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v2
with: with:
name: "${{ matrix.test }}-log-files" name: "log-files"
path: app/build/**/*.log path: app/build/**/*.log

4
.gitignore vendored
View File

@@ -6,6 +6,4 @@
/zmk-config /zmk-config
/build /build
*.DS_Store *.DS_Store
__pycache__ __pycache__
.python-version
.venv

View File

@@ -2,13 +2,19 @@ cmake_minimum_required(VERSION 3.13.1)
set(CONFIG_APPLICATION_DEFINED_SYSCALL true) set(CONFIG_APPLICATION_DEFINED_SYSCALL true)
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 Zephyr. This also loads Zephyr's build system.
find_package(Zephyr REQUIRED HINTS ../zephyr) find_package(Zephyr REQUIRED HINTS ../zephyr)
project(zmk) project(zmk)
zephyr_linker_sources(SECTIONS include/linker/zmk-behaviors.ld)
zephyr_linker_sources(RODATA include/linker/zmk-events.ld) zephyr_linker_sources(RODATA include/linker/zmk-events.ld)
# Add your source file to the "app" target. This must come after # Add your source file to the "app" target. This must come after
@@ -16,7 +22,6 @@ zephyr_linker_sources(RODATA include/linker/zmk-events.ld)
target_include_directories(app PRIVATE include) target_include_directories(app PRIVATE include)
target_sources(app PRIVATE src/stdlib.c) target_sources(app PRIVATE src/stdlib.c)
target_sources(app PRIVATE src/activity.c) target_sources(app PRIVATE src/activity.c)
target_sources(app PRIVATE src/behavior.c)
target_sources(app PRIVATE src/kscan.c) target_sources(app PRIVATE src/kscan.c)
target_sources(app PRIVATE src/matrix_transform.c) target_sources(app PRIVATE src/matrix_transform.c)
target_sources(app PRIVATE src/sensors.c) target_sources(app PRIVATE src/sensors.c)
@@ -88,7 +93,7 @@ target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/usb.c)
target_sources_ifdef(CONFIG_ZMK_USB app PRIVATE src/usb_hid.c) target_sources_ifdef(CONFIG_ZMK_USB app PRIVATE src/usb_hid.c)
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c) target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c)
target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/backlight.c) target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/backlight.c)
target_sources_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) target_sources(app PRIVATE src/main.c)
add_subdirectory(src/display/) add_subdirectory(src/display/)

View File

@@ -53,19 +53,10 @@ config ZMK_HID_REPORT_TYPE_NKRO
help help
Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard
from working with some BIOS/UEFI versions that only support "boot keyboard" support. from working with some BIOS/UEFI versions that only support "boot keyboard" support.
This option also prevents using some infrequently used higher range HID usages (notably F13-F24 and INTL1-9) This option also prevents using some infrequently used higher range HID usages.
These usages can be re enabled with ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT.
endchoice endchoice
config ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT
bool "Enable extended NKRO reporting"
depends on ZMK_HID_REPORT_TYPE_NKRO
help
Enables higher usage range for NKRO (F13-F24 and INTL1-9).
Please note this is not compatible with Android currently and you will get no input
if ZMK_HID_REPORT_TYPE_HKRO if ZMK_HID_REPORT_TYPE_HKRO
config ZMK_HID_KEYBOARD_REPORT_SIZE config ZMK_HID_KEYBOARD_REPORT_SIZE
@@ -136,54 +127,21 @@ menuconfig ZMK_BLE
select BT_SMP_APP_PAIRING_ACCEPT select BT_SMP_APP_PAIRING_ACCEPT
select BT_PERIPHERAL select BT_PERIPHERAL
select BT_DIS select BT_DIS
imply BT_SETTINGS if !ARCH_POSIX select BT_SETTINGS
imply SETTINGS if !ARCH_POSIX select SETTINGS
imply ZMK_BATTERY_REPORTING if !ARCH_POSIX imply ZMK_BATTERY_REPORTING
if ZMK_BLE if ZMK_BLE
config ZMK_BLE_EXPERIMENTAL_CONN
bool "Experimental BLE connection changes"
help
Enables a combination of settings that are planned to be default in future versions of ZMK
to improve connection stability. This includes changes to timing on BLE pairing initation,
restores use of the updated/new LLCP implementation, and disables 2M PHY support.
config ZMK_BLE_EXPERIMENTAL_SEC
bool "Experimental BLE security changes"
imply BT_SMP_ALLOW_UNAUTH_OVERWRITE
help
Enables a combination of settings that are planned to be officially supported in the future.
This includes enabling BT Secure Connection passkey entry, and allows overwrite of keys from
previously paired hosts.
config ZMK_BLE_EXPERIMENTAL_FEATURES
bool "Experimental BLE connection and security settings/features"
select ZMK_BLE_EXPERIMENTAL_CONN
select ZMK_BLE_EXPERIMENTAL_SEC
help
Enables experimental connection changes and security features.
config ZMK_BLE_PASSKEY_ENTRY
bool "Require passkey entry on the keyboard to complete pairing"
default n
select RING_BUFFER
config BT_SMP_ALLOW_UNAUTH_OVERWRITE
imply ZMK_BLE_PASSKEY_ENTRY
choice BT_LL_SW_LLCP_IMPL
default BT_LL_SW_LLCP_LEGACY if !ZMK_BLE_EXPERIMENTAL_CONN
endchoice
config BT_CTLR_PHY_2M
default n if ZMK_BLE_EXPERIMENTAL_CONN
# BT_TINYCRYPT_ECC is required for BT_SMP_SC_PAIR_ONLY when using HCI # BT_TINYCRYPT_ECC is required for BT_SMP_SC_PAIR_ONLY when using HCI
config BT_TINYCRYPT_ECC config BT_TINYCRYPT_ECC
default y if BT_HCI && !BT_CTLR default y if BT_HCI && !BT_CTLR
choice BT_LL_SW_LLCP_IMPL
default BT_LL_SW_LLCP_LEGACY
endchoice
config SYSTEM_WORKQUEUE_STACK_SIZE config SYSTEM_WORKQUEUE_STACK_SIZE
default 4096 if SOC_RP2040 default 4096 if SOC_RP2040
default 2048 default 2048
@@ -217,11 +175,16 @@ config BT_GATT_NOTIFY_MULTIPLE
default n default n
config BT_GATT_AUTO_SEC_REQ config BT_GATT_AUTO_SEC_REQ
default (ZMK_SPLIT_BLE && !ZMK_SPLIT_ROLE_CENTRAL) default n
config BT_DEVICE_APPEARANCE config BT_DEVICE_APPEARANCE
default 961 default 961
config ZMK_BLE_PASSKEY_ENTRY
bool "Require passkey entry on the keyboard to complete pairing"
default n
select RING_BUFFER
config BT_PERIPHERAL_PREF_MIN_INT config BT_PERIPHERAL_PREF_MIN_INT
default 6 default 6
@@ -255,7 +218,6 @@ rsource "src/display/Kconfig"
menuconfig ZMK_RGB_UNDERGLOW menuconfig ZMK_RGB_UNDERGLOW
bool "RGB Adressable LED Underglow" bool "RGB Adressable LED Underglow"
select LED_STRIP select LED_STRIP
select ZMK_LOW_PRIORITY_WORK_QUEUE
if ZMK_RGB_UNDERGLOW if ZMK_RGB_UNDERGLOW
@@ -378,7 +340,6 @@ config ZMK_BATTERY_REPORTING
bool "Battery level detection/reporting" bool "Battery level detection/reporting"
default n default n
select SENSOR select SENSOR
select ZMK_LOW_PRIORITY_WORK_QUEUE
imply BT_BAS if ZMK_BLE imply BT_BAS if ZMK_BLE
config ZMK_IDLE_TIMEOUT config ZMK_IDLE_TIMEOUT
@@ -573,11 +534,6 @@ config ZMK_BATTERY_REPORT_INTERVAL
int "Battery level report interval in seconds" int "Battery level report interval in seconds"
default 60 default 60
config ZMK_LOW_PRIORITY_WORK_QUEUE
bool "Work queue for low priority items"
if ZMK_LOW_PRIORITY_WORK_QUEUE
config ZMK_LOW_PRIORITY_THREAD_STACK_SIZE config ZMK_LOW_PRIORITY_THREAD_STACK_SIZE
int "Low priority thread stack size" int "Low priority thread stack size"
default 768 default 768
@@ -586,8 +542,6 @@ config ZMK_LOW_PRIORITY_THREAD_PRIORITY
int "Low priority thread priority" int "Low priority thread priority"
default 10 default 10
endif
#Advanced #Advanced
endmenu endmenu
@@ -595,7 +549,7 @@ endmenu
endmenu endmenu
config HEAP_MEM_POOL_SIZE config HEAP_MEM_POOL_SIZE
default 8192 if ZMK_DISPLAY default 8192
config KERNEL_BIN_NAME config KERNEL_BIN_NAME
default "zmk" default "zmk"

View File

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

View File

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

View File

@@ -1,55 +0,0 @@
#
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: MIT
#
if BOARD_ADV360PRO_LEFT
config ZMK_KEYBOARD_NAME
default "Adv360 Pro"
config ZMK_SPLIT_ROLE_CENTRAL
default y
endif # BOARD_ADV360PRO_LEFT
if BOARD_ADV360PRO_RIGHT
config ZMK_KEYBOARD_NAME
default "Adv360 Pro rt"
endif # BOARD_ADV360PRO_RIGHT
if BOARD_ADV360PRO_LEFT || BOARD_ADV360PRO_RIGHT
config BOARD
default "adv360pro"
config ZMK_SPLIT
default y
config SPI
bool
default y
config BT_CTLR
default BT
if USB
config USB_NRFX
default y
config USB_DEVICE_STACK
default y
endif # USB
config ZMK_BATTERY_VOLTAGE_DIVIDER
default y
config SPI
default y
endif # BOARD_ADV360PRO_LEFT || BOARD_ADV360PRO_RIGHT

View File

@@ -1,7 +0,0 @@
# Kinesis Advantage 360 Professional
This board definition provides upstream support for the [Kinesis Advantage 360 Professional](https://kinesis-ergo.com/keyboards/advantage360/)
Kinesis offer a specific [custom configuration](https://github.com/KinesisCorporation/Adv360-Pro-ZMK/) for the 360 Pro that references [a customised version of ZMK](https://github.com/ReFil/zmk/tree/adv360-z3.2-2) with Advantage 360 Pro specific functionality and changes over base ZMK. The Kinesis fork is regularly updated to bring the latest updates and changes from base ZMK however will not always be completely up to date, some features such as new keycodes will not be immediately available on the 360 Pro after they are implemented in base ZMK.
When using this board definition some of the more advanced features (the indicator RGB leds) will not work, and Kinesis cannot provide customer service for usage of base ZMK. Likewise the ZMK community cannot provide support for either the Kinesis keymap editor, nor any usage of the Kinesis custom fork.

View File

@@ -1,30 +0,0 @@
/*
* Copyright (c) 2023 The ZMK Contributors
* SPDX-License-Identifier: MIT
*/
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 20)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 20)>;
low-power-enable;
};
};
pwm0_default: pwm0_default {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 0, 17)>;
};
};
pwm0_sleep: pwm0_sleep {
group1 {
psels = <NRF_PSEL(PWM_OUT0, 0, 17)>;
low-power-enable;
};
};
};

View File

@@ -1,159 +0,0 @@
/*
*
* Copyright (c) 2023 The ZMK Contributors
* SPDX-License-Identifier: MIT
*
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include <dt-bindings/led/led.h>
#include <dt-bindings/zmk/matrix_transform.h>
#include "adv360pro-pinctrl.dtsi"
/ {
model = "Adv360 Pro";
compatible = "kinesis,adv360pro";
chosen {
zephyr,code-partition = &code_partition;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart;
zmk,kscan = &kscan0;
zmk,backlight = &backlight;
zmk,battery = &vbatt;
zmk,matrix-transform = &default_transform;
zmk,underglow = &led_strip;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <20>;
rows = <5>;
map = <
RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,13) RC(4,14) RC(4,15) RC(4,16) RC(4,17) RC(4,18) RC(4,19)
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,13) RC(3,14) RC(3,15) RC(3,16) RC(3,17) RC(3,18) RC(3,19)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,13) RC(2,14) RC(2,15) RC(2,16) RC(2,17) RC(2,18) RC(2,19)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,9) RC(1,10) RC(1,14) RC(1,15) RC(1,16) RC(1,17) RC(1,18) RC(1,19)
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,15) RC(0,16) RC(0,17) RC(0,18) RC(0,19)
>;
};
// Node name must match original "EXT_POWER" label to preserve user settings.
EXT_POWER {
compatible = "zmk,ext-power-generic";
control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
};
vbatt: vbatt {
compatible = "zmk,battery-voltage-divider";
io-channels = <&adc 2>;
output-ohms = <100000>;
full-ohms = <(100000 + 100000)>;
};
backlight: pwmleds {
compatible = "pwm-leds";
pwm_led_0 {
pwms = <&pwm0 0 10000 PWM_POLARITY_NORMAL>;
};
};
};
&pwm0 {
status = "okay";
pinctrl-0 = <&pwm0_default>;
pinctrl-1 = <&pwm0_sleep>;
pinctrl-names = "default", "sleep";
};
&adc {
status = "okay";
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&usbd {
status = "okay";
cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart";
};
};
&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 {
reg = <0x00000000 0x00026000>;
};
code_partition: partition@26000 {
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 {
reg = <0x000ec000 0x00008000>;
};
boot_partition: partition@f4000 {
reg = <0x000f4000 0x0000c000>;
};
};
};
&spi3 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi3_default>;
pinctrl-1 = <&spi3_sleep>;
pinctrl-names = "default", "sleep";
led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi";
/* SPI */
reg = <0>;
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <3>; /* number of LEDs */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN
LED_COLOR_ID_RED
LED_COLOR_ID_BLUE>;
};
};

View File

@@ -1,48 +0,0 @@
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/rgb.h>
#include <dt-bindings/zmk/backlight.h>
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
bindings = <
&kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &tog 1 &mo 3 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS
&kp TAB &kp Q &kp W &kp E &kp R &kp T &none &none &kp Y &kp U &kp I &kp O &kp P &kp BSLH
&kp ESC &kp A &kp S &kp D &kp F &kp G &none &kp LCTRL &kp LALT &kp LGUI &kp RCTRL &none &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp HOME &kp PG_UP &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT
&mo 2 &kp GRAVE &kp CAPS &kp LEFT &kp RIGHT &kp BSPC &kp DEL &kp END &kp PG_DN &kp ENTER &kp SPACE &kp UP &kp DOWN &kp LBKT &kp RBKT &mo 2
>;
};
keypad {
bindings = <
&kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &trans &mo 3 &kp N6 &kp KP_NUM &kp KP_EQUAL &kp KP_DIVIDE &kp KP_MULTIPLY &kp MINUS
&kp TAB &kp Q &kp W &kp E &kp R &kp T &none &none &kp Y &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_MINUS &kp BSLH
&kp ESC &kp A &kp S &kp D &kp F &kp G &none &kp LCTRL &kp LALT &kp LGUI &kp RCTRL &none &kp H &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_PLUS &kp SQT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp HOME &kp PG_UP &kp N &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_ENTER &kp RSHFT
&mo 2 &kp GRAVE &kp CAPS &kp LEFT &kp RIGHT &kp BSPC &kp DEL &kp END &kp PG_DN &kp ENTER &kp KP_N0 &kp UP &kp DOWN &kp KP_DOT &kp RBKT &mo 2
>;
};
fn {
bindings = <
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &tog 1 &mo 3 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12
&trans &trans &trans &trans &trans &trans &none &none &trans &trans &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &none &trans &trans &trans &trans &none &trans &trans &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
>;
};
mod {
bindings = <
&none &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &none &trans &none &none &none &none &none &none
&none &none &none &none &none &none &bootloader &bootloader &none &none &none &none &none &none
&none &none &none &none &none &none &none &none &none &bt BT_CLR &none &none &none &none &none &none &none &none
&none &none &none &none &none &none &none &none &none &none &none &none &none &none
&none &none &none &none &none &none &none &none &none &bl BL_TOG &rgb_ug RGB_TOG &bl BL_INC &bl BL_DEC &none &none &none
>;
};
};
};

View File

@@ -1,19 +0,0 @@
identifier: adv360pro
name: Advantage 360 Pro
type: keyboard
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- gpio
- i2c
- counter
- spi
- usb_device
- nvs
- can
- kscan
- ble
- pwm

View File

@@ -1,16 +0,0 @@
file_format: "1"
id: adv360pro
name: Advantage 360 Pro
type: board
url: https://kinesis-ergo.com/keyboards/advantage360
arch: arm
features:
- keys
- underglow
- backlight
outputs:
- usb
- ble
siblings:
- adv360pro_left
- adv360pro_right

View File

@@ -1,36 +0,0 @@
/*
*
* Copyright (c) 2023 The ZMK Contributors
* SPDX-License-Identifier: MIT
*
*/
#include "adv360pro.dtsi"
/{
kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix";
diode-direction = "col2row";
row-gpios
= <&gpio1 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio1 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio1 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio1 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
;
col-gpios
= <&gpio0 25 GPIO_ACTIVE_HIGH>
, <&gpio0 11 GPIO_ACTIVE_HIGH>
, <&gpio0 2 GPIO_ACTIVE_HIGH>
, <&gpio0 28 GPIO_ACTIVE_HIGH>
, <&gpio0 29 GPIO_ACTIVE_HIGH>
, <&gpio0 30 GPIO_ACTIVE_HIGH>
, <&gpio0 31 GPIO_ACTIVE_HIGH>
, <&gpio1 9 GPIO_ACTIVE_HIGH>
, <&gpio0 12 GPIO_ACTIVE_HIGH>
, <&gpio0 7 GPIO_ACTIVE_HIGH>
;
};
};

View File

@@ -1,55 +0,0 @@
#
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: MIT
#
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_ADV360PRO_LEFT=y
# Enable MPU
CONFIG_ARM_MPU=y
# enable GPIO
CONFIG_GPIO=y
# Enable SPI for LEDS
CONFIG_PINCTRL=y
CONFIG_SPI=y
CONFIG_SPI_NRFX=y
# Enable writing to flash
CONFIG_USE_DT_CODE_PARTITION=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
# Enable 32kHz crystal
CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_150PPM=y
#RGB leds config
CONFIG_WS2812_STRIP=y
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=n
CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=0
CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y
#Backlighting configuration
CONFIG_PWM=y
CONFIG_LED_PWM=y
CONFIG_ZMK_BACKLIGHT=y
CONFIG_ZMK_BACKLIGHT_BRT_START=20
CONFIG_ZMK_BACKLIGHT_AUTO_OFF_IDLE=y
#Misc configuration
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
CONFIG_ZMK_HID_REPORT_TYPE_NKRO=y
CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y
CONFIG_BUILD_OUTPUT_UF2=y
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=y

View File

@@ -1,40 +0,0 @@
/*
*
* Copyright (c) 2023 The ZMK Contributors
* SPDX-License-Identifier: MIT
*
*/
#include "adv360pro.dtsi"
/{
kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix";
diode-direction = "col2row";
row-gpios
= <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 31 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 30 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio0 29 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
;
col-gpios
= <&gpio0 12 GPIO_ACTIVE_HIGH>
, <&gpio1 9 GPIO_ACTIVE_HIGH>
, <&gpio0 7 GPIO_ACTIVE_HIGH>
, <&gpio1 11 GPIO_ACTIVE_HIGH>
, <&gpio1 10 GPIO_ACTIVE_HIGH>
, <&gpio1 13 GPIO_ACTIVE_HIGH>
, <&gpio1 15 GPIO_ACTIVE_HIGH>
, <&gpio0 3 GPIO_ACTIVE_HIGH>
, <&gpio0 2 GPIO_ACTIVE_HIGH>
, <&gpio0 28 GPIO_ACTIVE_HIGH>
;
};
};
&default_transform {
col-offset = <10>;
};

View File

@@ -1,54 +0,0 @@
#
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: MIT
#
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_ADV360PRO_RIGHT=y
# Enable MPU
CONFIG_ARM_MPU=y
# enable GPIO
CONFIG_GPIO=y
# Enable SPI for LEDS
CONFIG_PINCTRL=y
CONFIG_SPI=y
CONFIG_SPI_NRFX=y
# Enable writing to flash
CONFIG_USE_DT_CODE_PARTITION=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
# Enable 32kHz crystal
CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_150PPM=y
#RGB leds config
CONFIG_WS2812_STRIP=y
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y
CONFIG_ZMK_RGB_UNDERGLOW_ON_START=n
CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=0
CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y
#Backlighting configuration
CONFIG_PWM=y
CONFIG_LED_PWM=y
CONFIG_ZMK_BACKLIGHT=y
CONFIG_ZMK_BACKLIGHT_BRT_START=20
CONFIG_ZMK_BACKLIGHT_AUTO_OFF_IDLE=y
#Misc configuration
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
CONFIG_ZMK_HID_REPORT_TYPE_NKRO=y
CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y
CONFIG_BUILD_OUTPUT_UF2=y
CONFIG_ZMK_BLE=y

View File

@@ -1,8 +0,0 @@
#
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: MIT
#
board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset")
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)

View File

@@ -23,6 +23,7 @@
kscan: kscan { kscan: kscan {
compatible = "zmk,kscan-gpio-direct"; compatible = "zmk,kscan-gpio-direct";
label = "KSCAN";
input-gpios input-gpios
= <&gpiob 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> = <&gpiob 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
@@ -39,6 +40,7 @@
left_encoder: encoder_left { left_encoder: encoder_left {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "LEFT_ENCODER";
a-gpios = <&gpioa 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&gpioa 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpioa 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&gpioa 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>; steps = <80>;
@@ -46,6 +48,7 @@
}; };
mid_encoder: encoder_mid { mid_encoder: encoder_mid {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "MID_ENCODER";
a-gpios = <&gpioa 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&gpioa 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>; steps = <80>;
@@ -53,6 +56,7 @@
}; };
right_encoder: encoder_right { right_encoder: encoder_right {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "RIGHT_ENCODER";
a-gpios = <&gpioa 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&gpioa 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpiob 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&gpiob 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>; steps = <80>;
@@ -74,6 +78,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */
@@ -112,6 +117,7 @@
pinctrl-names = "default"; pinctrl-names = "default";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -131,6 +137,7 @@
/* Set 6Kb of storage at the end of the 128Kb of flash */ /* Set 6Kb of storage at the end of the 128Kb of flash */
storage_partition: partition@1e800 { storage_partition: partition@1e800 {
label = "storage";
reg = <0x0001e800 0x00001800>; reg = <0x0001e800 0x00001800>;
}; };
}; };

View File

@@ -25,18 +25,20 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
init-delay-ms = <20>; init-delay-ms = <20>;
control-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; control-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 7>; io-channels = <&adc 7>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 806000)>; full-ohms = <(2000000 + 806000)>;
@@ -79,6 +81,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -94,9 +97,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -110,10 +115,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -19,7 +19,7 @@
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,battery = &vbatt; zmk,battery = &vbatt;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
sensors: sensors { sensors: sensors {
@@ -32,6 +32,7 @@
left_encoder: encoder_left { left_encoder: encoder_left {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "LEFT_ENCODER";
a-gpios = <&gpio1 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&gpio1 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>; steps = <80>;
@@ -43,11 +44,13 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 806000)>; full-ohms = <(2000000 + 806000)>;
@@ -86,6 +89,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -101,9 +105,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -117,10 +123,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -11,7 +11,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
}; };
ansi_transform: keymap_transform_0 { ansi_transform: keymap_transform_0 {
@@ -81,6 +81,7 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios

View File

@@ -13,15 +13,15 @@
/ { / {
chosen { chosen {
#ifdef ANSI #ifdef ANSI
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
#elif defined(HHKB) #elif defined(HHKB)
zmk,matrix-transform = &hhkb_transform; zmk,matrix_transform = &hhkb_transform;
#elif defined(ISO) #elif defined(ISO)
zmk,matrix-transform = &iso_transform; zmk,matrix_transform = &iso_transform;
#elif defined(ALL_1U) #elif defined(ALL_1U)
zmk,matrix-transform = &all_1u_transform; zmk,matrix_transform = &all_1u_transform;
#else #else
zmk,matrix-transform = &split_transform; zmk,matrix_transform = &split_transform;
#endif #endif
}; };

View File

@@ -11,7 +11,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -30,6 +30,7 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios

View File

@@ -13,7 +13,7 @@
compatible = "polarityworks,bt60_v2"; compatible = "polarityworks,bt60_v2";
chosen { chosen {
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
}; };

View File

@@ -12,13 +12,13 @@
/ { / {
chosen { chosen {
#ifdef ANSI #ifdef ANSI
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
#elif defined(ISO) #elif defined(ISO)
zmk,matrix-transform = &iso_transform; zmk,matrix_transform = &iso_transform;
#elif defined(ALL_1U) #elif defined(ALL_1U)
zmk,matrix-transform = &all_1u_transform; zmk,matrix_transform = &all_1u_transform;
#elif defined(HHKB) #elif defined(HHKB)
zmk,matrix-transform = &hhkb_transform; zmk,matrix_transform = &hhkb_transform;
#else #else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v2.keymap" #error "Layout not defined, please define a layout by uncommenting the appropriate line in bt60_v2.keymap"
#endif #endif

View File

@@ -13,7 +13,7 @@
compatible = "polarityworks,bt65_v1"; compatible = "polarityworks,bt65_v1";
chosen { chosen {
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
}; };

View File

@@ -12,13 +12,13 @@
/ { / {
chosen { chosen {
#ifdef ANSI #ifdef ANSI
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
#elif defined(ISO) #elif defined(ISO)
zmk,matrix-transform = &iso_transform; zmk,matrix_transform = &iso_transform;
#elif defined(ALL_1U) #elif defined(ALL_1U)
zmk,matrix-transform = &all_1u_transform; zmk,matrix_transform = &all_1u_transform;
#elif defined(HHKB) #elif defined(HHKB)
zmk,matrix-transform = &hhkb_transform; zmk,matrix_transform = &hhkb_transform;
#else #else
#error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65_v1.keymap" #error "Layout not defined, please define a layout by uncommenting the appropriate line in bt65_v1.keymap"
#endif #endif

View File

@@ -13,7 +13,7 @@
compatible = "polarityworks,bt75_v1"; compatible = "polarityworks,bt75_v1";
chosen { chosen {
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
}; };

View File

@@ -11,11 +11,11 @@
/ { / {
chosen { chosen {
#ifdef ANSI #ifdef ANSI
zmk,matrix-transform = &ansi_transform; zmk,matrix_transform = &ansi_transform;
#elif defined(ISO) #elif defined(ISO)
zmk,matrix-transform = &iso_transform; zmk,matrix_transform = &iso_transform;
#elif defined(ALL_1U) #elif defined(ALL_1U)
zmk,matrix-transform = &all_1u_transform; zmk,matrix_transform = &all_1u_transform;
#else #else
#error "Layout not defined, please define a layout using by uncommenting the appropriate line in bt75_v1.keymap" #error "Layout not defined, please define a layout using by uncommenting the appropriate line in bt75_v1.keymap"
#endif #endif

View File

@@ -34,6 +34,7 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios
@@ -65,14 +66,15 @@
; ;
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
}; };
encoder_1: encoder_1 { encoder_1: encoder_1 {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "ENCODER_ONE";
a-gpios = <&gpio0 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&gpio0 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>; steps = <80>;
@@ -81,6 +83,7 @@
encoder_2: encoder_2 { encoder_2: encoder_2 {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "ENCODER_TWO";
a-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpio0 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&gpio0 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>; steps = <80>;
@@ -89,6 +92,7 @@
encoder_3: encoder_3 { encoder_3: encoder_3 {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "encoder_3";
a-gpios = <&gpio0 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&gpio0 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&gpio0 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&gpio0 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
steps = <80>; steps = <80>;
@@ -97,6 +101,7 @@
backlight: pwmleds { backlight: pwmleds {
compatible = "pwm-leds"; compatible = "pwm-leds";
label = "Backlight LEDs";
pwm_led_0 { pwm_led_0 {
pwms = <&pwm0 0 10000 PWM_POLARITY_NORMAL>; pwms = <&pwm0 0 10000 PWM_POLARITY_NORMAL>;
}; };
@@ -106,11 +111,13 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "VBATT";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <100000>; output-ohms = <100000>;
full-ohms = <(100000 + 100000)>; full-ohms = <(100000 + 100000)>;
@@ -156,9 +163,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -172,10 +181,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };
@@ -190,6 +201,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; reg = <0>;

View File

@@ -21,7 +21,7 @@
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,display = &epd; zmk,display = &epd;
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -80,6 +80,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -94,9 +95,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -110,10 +113,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -11,8 +11,8 @@
/ { / {
chosen { chosen {
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
// zmk,matrix-transform = &five_column_transform; // zmk,matrix_transform = &five_column_transform;
}; };
}; };
@@ -21,7 +21,7 @@
compatible = "zmk,keymap"; compatible = "zmk,keymap";
default_layer { default_layer {
display-name = "QWERTY"; label = "QWERTY";
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
// | TAB | Q | W | E | R | T | | Y | U | I | O | P | BKSP | // | TAB | Q | W | E | R | T | | Y | U | I | O | P | BKSP |
// | CTRL | A | S | D | F | G | | H | J | K | L | ; | ' | // | CTRL | A | S | D | F | G | | H | J | K | L | ; | ' |
@@ -36,7 +36,7 @@
}; };
lower_layer { lower_layer {
display-name = "NUMBER"; label = "NUMBER";
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
// | TAB | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BKSP | // | TAB | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BKSP |
// | BTCLR| BT1 | BT2 | BT3 | BT4 | BT5 | | LFT | DWN | UP | RGT | | | // | BTCLR| BT1 | BT2 | BT3 | BT4 | BT5 | | LFT | DWN | UP | RGT | | |
@@ -51,7 +51,7 @@
}; };
raise_layer { raise_layer {
display-name = "SYMBOL"; label = "SYMBOL";
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
// | TAB | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BKSP | // | TAB | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BKSP |
// | CTRL | | | | | | | - | = | [ | ] | \ | ` | // | CTRL | | | | | | | - | = | [ | ] | \ | ` |

View File

@@ -15,6 +15,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -38,6 +39,7 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
}; };
@@ -86,6 +88,7 @@
fuelgauge: bq274xx@55 { fuelgauge: bq274xx@55 {
compatible = "ti,bq274xx"; compatible = "ti,bq274xx";
label = "BATTERY";
reg = <0x55>; reg = <0x55>;
design-voltage = <3700>; //Battery Design Volatge in mV design-voltage = <3700>; //Battery Design Volatge in mV
design-capacity = <180>; //Battery Design Capacity in mAh design-capacity = <180>; //Battery Design Capacity in mAh
@@ -106,6 +109,7 @@
epd: il0323@0 { epd: il0323@0 {
compatible = "gooddisplay,il0323"; compatible = "gooddisplay,il0323";
reg = <0>; reg = <0>;
label = "DISPLAY";
width = <80>; width = <80>;
height = <128>; height = <128>;
spi-max-frequency = <4000000>; spi-max-frequency = <4000000>;

View File

@@ -15,6 +15,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -38,6 +39,7 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
}; };
@@ -94,6 +96,7 @@
fuelgauge: bq274xx@55 { fuelgauge: bq274xx@55 {
compatible = "ti,bq274xx"; compatible = "ti,bq274xx";
label = "BATTERY";
reg = <0x55>; reg = <0x55>;
design-voltage = <3700>; //Battery Design Volatge in mV design-voltage = <3700>; //Battery Design Volatge in mV
design-capacity = <180>; //Battery Design Capacity in mAh design-capacity = <180>; //Battery Design Capacity in mAh
@@ -114,6 +117,7 @@
epd: il0323@0 { epd: il0323@0 {
compatible = "gooddisplay,il0323"; compatible = "gooddisplay,il0323";
reg = <0>; reg = <0>;
label = "DISPLAY";
width = <80>; width = <80>;
height = <128>; height = <128>;
spi-max-frequency = <4000000>; spi-max-frequency = <4000000>;

View File

@@ -15,6 +15,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -38,11 +39,13 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 0>; io-channels = <&adc 0>;
output-ohms = <1960000>; output-ohms = <1960000>;
full-ohms = <(1960000 + 810000)>; full-ohms = <(1960000 + 810000)>;
@@ -80,6 +83,7 @@
epd: il0323@0 { epd: il0323@0 {
compatible = "gooddisplay,il0323"; compatible = "gooddisplay,il0323";
reg = <0>; reg = <0>;
label = "DISPLAY";
width = <80>; width = <80>;
height = <128>; height = <128>;
spi-max-frequency = <4000000>; spi-max-frequency = <4000000>;

View File

@@ -15,6 +15,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -38,11 +39,13 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 0>; io-channels = <&adc 0>;
output-ohms = <1960000>; output-ohms = <1960000>;
full-ohms = <(1960000 + 810000)>; full-ohms = <(1960000 + 810000)>;
@@ -87,6 +90,7 @@
epd: il0323@0 { epd: il0323@0 {
compatible = "gooddisplay,il0323"; compatible = "gooddisplay,il0323";
reg = <0>; reg = <0>;
label = "DISPLAY";
width = <80>; width = <80>;
height = <128>; height = <128>;
spi-max-frequency = <4000000>; spi-max-frequency = <4000000>;

View File

@@ -67,7 +67,7 @@ void battery_status_update_cb(struct battery_status_state state) {
static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) { static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) {
return (struct battery_status_state) { return (struct battery_status_state) {
.level = zmk_battery_state_of_charge(), .level = bt_bas_get_battery_level(),
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) #if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
.usb_present = zmk_usb_is_powered(), .usb_present = zmk_usb_is_powered(),
#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */

View File

@@ -45,7 +45,7 @@ static void layer_status_update_cb(struct layer_status_state state) {
static struct layer_status_state layer_status_get_state(const zmk_event_t *eh) { static struct layer_status_state layer_status_get_state(const zmk_event_t *eh) {
uint8_t index = zmk_keymap_highest_layer_active(); uint8_t index = zmk_keymap_highest_layer_active();
return (struct layer_status_state){.index = index, .label = zmk_keymap_layer_name(index)}; return (struct layer_status_state){.index = index, .label = zmk_keymap_layer_label(index)};
} }
ZMK_DISPLAY_WIDGET_LISTENER(widget_layer_status, struct layer_status_state, layer_status_update_cb, ZMK_DISPLAY_WIDGET_LISTENER(widget_layer_status, struct layer_status_state, layer_status_update_cb,

View File

@@ -18,7 +18,7 @@
zephyr,flash = &flash0; zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -36,6 +36,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -69,6 +70,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -84,6 +86,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) RC(
/* Set 6Kb of storage at the end of the 256Kb of flash */ /* Set 6Kb of storage at the end of the 256Kb of flash */
storage_partition: partition@3e800 { storage_partition: partition@3e800 {
label = "storage";
reg = <0x0003e800 0x00001800>; reg = <0x0003e800 0x00001800>;
}; };
}; };

View File

@@ -19,7 +19,7 @@
zephyr,flash = &flash0; zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,kscan = &kscan; zmk,kscan = &kscan;
zmk,matrix-transform = &transform; zmk,matrix_transform = &transform;
/* TODO: Enable once we support the IC for underglow /* TODO: Enable once we support the IC for underglow
zmk,underglow = &led_strip; zmk,underglow = &led_strip;
*/ */
@@ -40,6 +40,7 @@
kscan: kscan { kscan: kscan {
compatible = "zmk,kscan-composite"; compatible = "zmk,kscan-composite";
label = "KSCAN";
rows = <4>; rows = <4>;
columns = <10>; columns = <10>;
@@ -55,6 +56,7 @@
kscan_left: kscan_left { kscan_left: kscan_left {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN_LEFT";
diode-direction = "col2row"; diode-direction = "col2row";
@@ -75,6 +77,7 @@
kscan_right: kscan_right { kscan_right: kscan_right {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN_RIGHT";
diode-direction = "row2col"; diode-direction = "row2col";
@@ -114,6 +117,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -152,6 +156,7 @@
/* Set 6Kb of storage at the end of the 128Kb of flash */ /* Set 6Kb of storage at the end of the 128Kb of flash */
storage_partition: partition@3e800 { storage_partition: partition@3e800 {
label = "storage";
reg = <0x0001e800 0x00001800>; reg = <0x0001e800 0x00001800>;
}; };
}; };

View File

@@ -20,6 +20,7 @@
behaviors { behaviors {
hm: homerow_mods { hm: homerow_mods {
compatible = "zmk,behavior-hold-tap"; compatible = "zmk,behavior-hold-tap";
label = "homerow mods";
#binding-cells = <2>; #binding-cells = <2>;
tapping_term_ms = <200>; tapping_term_ms = <200>;
flavor = "tap-preferred"; flavor = "tap-preferred";

View File

@@ -11,7 +11,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
zephyr,code-partition = &code_partition; zephyr,code-partition = &code_partition;
zephyr,sram = &sram0; zephyr,sram = &sram0;
zephyr,flash = &flash0; zephyr,flash = &flash0;
@@ -34,6 +34,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
debounce-press-ms = <4>; debounce-press-ms = <4>;
debounce-release-ms = <20>; debounce-release-ms = <20>;
@@ -61,6 +62,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -75,9 +77,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -91,10 +95,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -22,6 +22,7 @@
// Configure it as a tap dance, so the first tap (or hold) is a &mo and the second tap is a &to // Configure it as a tap dance, so the first tap (or hold) is a &mo and the second tap is a &to
layer_td: tap_dance_0 { layer_td: tap_dance_0 {
compatible = "zmk,behavior-tap-dance"; compatible = "zmk,behavior-tap-dance";
label = "LAYER_TAP_DANCE";
#binding-cells = <0>; #binding-cells = <0>;
tapping-term-ms = <200>; tapping-term-ms = <200>;
bindings = <&mo LOWER>, <&to LOWER>; bindings = <&mo LOWER>, <&to LOWER>;
@@ -30,6 +31,7 @@
macros { macros {
bt_0: bt_profile_macro_0 { bt_0: bt_profile_macro_0 {
label = "BT_0";
compatible = "zmk,behavior-macro"; compatible = "zmk,behavior-macro";
#binding-cells = <0>; #binding-cells = <0>;
bindings bindings
@@ -38,6 +40,7 @@
}; };
bt_1: bt_profile_macro_1 { bt_1: bt_profile_macro_1 {
label = "BT_1";
compatible = "zmk,behavior-macro"; compatible = "zmk,behavior-macro";
#binding-cells = <0>; #binding-cells = <0>;
bindings bindings
@@ -46,6 +49,7 @@
}; };
bt_2: bt_profile_macro_2 { bt_2: bt_profile_macro_2 {
label = "BT_2";
compatible = "zmk,behavior-macro"; compatible = "zmk,behavior-macro";
#binding-cells = <0>; #binding-cells = <0>;
bindings bindings
@@ -54,6 +58,7 @@
}; };
bt_3: bt_profile_macro_3 { bt_3: bt_profile_macro_3 {
label = "BT_3";
compatible = "zmk,behavior-macro"; compatible = "zmk,behavior-macro";
#binding-cells = <0>; #binding-cells = <0>;
bindings bindings

View File

@@ -21,20 +21,23 @@
back_led_backlight: pwmleds { back_led_backlight: pwmleds {
compatible = "pwm-leds"; compatible = "pwm-leds";
label = "BACK LED";
pwm_led_0 { pwm_led_0 {
pwms = <&pwm0 0 PWM_USEC(20) PWM_POLARITY_NORMAL>; pwms = <&pwm0 0 PWM_USEC(20) PWM_POLARITY_NORMAL>;
label = "Back LED configured as backlight";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; /* WS2812_CE */ control-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; /* WS2812_CE */
init-delay-ms = <100>; init-delay-ms = <100>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-nrf-vddh"; compatible = "zmk,battery-nrf-vddh";
label = "BATTERY";
}; };
}; };
@@ -48,6 +51,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812C-2020";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -22,20 +22,23 @@
back_led_backlight: pwmleds { back_led_backlight: pwmleds {
compatible = "pwm-leds"; compatible = "pwm-leds";
label = "BACK LED";
pwm_led_0 { pwm_led_0 {
pwms = <&pwm0 0 PWM_USEC(20) PWM_POLARITY_NORMAL>; pwms = <&pwm0 0 PWM_USEC(20) PWM_POLARITY_NORMAL>;
label = "Back LED configured as backlight";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 19 GPIO_ACTIVE_HIGH>; /* WS2812_CE */ control-gpios = <&gpio0 19 GPIO_ACTIVE_HIGH>; /* WS2812_CE */
init-delay-ms = <100>; init-delay-ms = <100>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-nrf-vddh"; compatible = "zmk,battery-nrf-vddh";
label = "BATTERY";
}; };
}; };
@@ -49,6 +52,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812C-2020";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -17,7 +17,7 @@
zephyr,shell-uart = &cdc_acm_uart; zephyr,shell-uart = &cdc_acm_uart;
zephyr,code-partition = &code_partition; zephyr,code-partition = &code_partition;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
xtal_clk: xtal-clk { xtal_clk: xtal-clk {
@@ -53,6 +53,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,6) RC(4,8) RC(4,9)
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -92,6 +93,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,6) RC(4,8) RC(4,9)
/* Reserved memory for the second stage bootloader */ /* Reserved memory for the second stage bootloader */
second_stage_bootloader: partition@0 { second_stage_bootloader: partition@0 {
label = "second_stage_bootloader";
reg = <0x00000000 0x100>; reg = <0x00000000 0x100>;
read-only; read-only;
}; };
@@ -101,6 +103,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,6) RC(4,8) RC(4,9)
* size is 16MB minus the 0x100 bytes taken by the bootloader. * size is 16MB minus the 0x100 bytes taken by the bootloader.
*/ */
code_partition: partition@100 { code_partition: partition@100 {
label = "code";
reg = <0x100 (DT_SIZE_M(16) - 0x100)>; reg = <0x100 (DT_SIZE_M(16) - 0x100)>;
read-only; read-only;
}; };

View File

@@ -25,18 +25,20 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
init-delay-ms = <50>; init-delay-ms = <50>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 1>; io-channels = <&adc 1>;
output-ohms = <10000000>; output-ohms = <10000000>;
full-ohms = <(10000000 + 4000000)>; full-ohms = <(10000000 + 4000000)>;
@@ -78,6 +80,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -93,9 +96,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -109,10 +114,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -23,7 +23,7 @@
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,battery = &vbatt; zmk,battery = &vbatt;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
zmk,underglow = &led_strip; zmk,underglow = &led_strip;
}; };
@@ -42,6 +42,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) R
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -73,17 +74,19 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) R
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>; control-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 806000)>; full-ohms = <(2000000 + 806000)>;
@@ -115,6 +118,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) R
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */
@@ -132,6 +136,7 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) R
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -146,10 +151,12 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) R
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "mbr";
reg = <0x00000000 0x00001000>; reg = <0x00000000 0x00001000>;
}; };
code_partition: partition@1000 { code_partition: partition@1000 {
label = "code_partition";
reg = <0x00001000 0x000d3000>; reg = <0x00001000 0x000d3000>;
}; };
@@ -163,10 +170,12 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,5) R
* if enabled. * if enabled.
*/ */
storage_partition: partition@d4000 { storage_partition: partition@d4000 {
label = "storage";
reg = <0x000d4000 0x00020000>; reg = <0x000d4000 0x00020000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -12,14 +12,15 @@
zmk,battery = &vbatt; zmk,battery = &vbatt;
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; control-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 806000)>; full-ohms = <(2000000 + 806000)>;

View File

@@ -23,6 +23,7 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
}; };
@@ -62,6 +63,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -77,9 +79,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -93,10 +97,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -12,14 +12,15 @@
zmk,battery = &vbatt; zmk,battery = &vbatt;
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
init-delay-ms = <50>; init-delay-ms = <50>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-nrf-vddh"; compatible = "zmk,battery-nrf-vddh";
label = "BATTERY";
}; };
}; };

View File

@@ -23,17 +23,21 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
red_led: led_0 { red_led: led_0 {
gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
label = "Red LED";
}; };
green_led: led_1 { green_led: led_1 {
gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
label = "Green LED";
}; };
blue_led: led_2 { blue_led: led_2 {
gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 0>; io-channels = <&adc 0>;
output-ohms = <1000000>; output-ohms = <1000000>;
full-ohms = <(1000000 + 1000000)>; full-ohms = <(1000000 + 1000000)>;
@@ -62,6 +66,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -77,9 +82,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -93,10 +100,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -24,12 +24,13 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
}; };
}; };
@@ -65,6 +66,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -80,9 +82,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -96,10 +100,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -24,12 +24,13 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>; control-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
}; };
}; };
@@ -65,6 +66,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -80,9 +82,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -96,10 +100,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -25,17 +25,19 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 820000)>; full-ohms = <(2000000 + 820000)>;
@@ -77,6 +79,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -92,9 +95,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -108,10 +113,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -25,17 +25,19 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 820000)>; full-ohms = <(2000000 + 820000)>;
@@ -77,6 +79,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -92,9 +95,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x00046000>; reg = <0x00026000 0x00046000>;
}; };
@@ -108,10 +113,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@6c000 { storage_partition: partition@6c000 {
label = "storage";
reg = <0x0006c000 0x00008000>; reg = <0x0006c000 0x00008000>;
}; };
boot_partition: partition@74000 { boot_partition: partition@74000 {
label = "adafruit_boot";
reg = <0x00074000 0x0000c000>; reg = <0x00074000 0x0000c000>;
}; };
}; };

View File

@@ -26,18 +26,20 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; control-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
init-delay-ms = <50>; init-delay-ms = <50>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 820000)>; full-ohms = <(2000000 + 820000)>;
@@ -87,6 +89,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -102,10 +105,12 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "mbr";
reg = <0x00000000 0x00001000>; reg = <0x00000000 0x00001000>;
}; };
code_partition: partition@1000 { code_partition: partition@1000 {
label = "code_partition";
reg = <0x00001000 0x000d3000>; reg = <0x00001000 0x000d3000>;
}; };
@@ -119,10 +124,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@d4000 { storage_partition: partition@d4000 {
label = "storage";
reg = <0x000d4000 0x00020000>; reg = <0x000d4000 0x00020000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -18,11 +18,12 @@
zephyr,flash = &flash0; zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &layout_grid_transform; zmk,matrix_transform = &layout_grid_transform;
}; };
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
= <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> = <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
@@ -88,6 +89,7 @@ layout_2x2u_transform:
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -123,6 +125,7 @@ layout_2x2u_transform:
/* Set 6Kb of storage at the end of the 256Kb of flash */ /* Set 6Kb of storage at the end of the 256Kb of flash */
storage_partition: partition@3e800 { storage_partition: partition@3e800 {
label = "storage";
reg = <0x0003e800 0x00001800>; reg = <0x0003e800 0x00001800>;
}; };
}; };

View File

@@ -18,11 +18,12 @@
zephyr,sram = &sram0; zephyr,sram = &sram0;
zephyr,flash = &flash0; zephyr,flash = &flash0;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &layout_grid_transform; zmk,matrix_transform = &layout_grid_transform;
}; };
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
= <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> = <&gpioa 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
@@ -95,6 +96,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -130,6 +132,7 @@ cdc_acm_uart: cdc_acm_uart {
/* Set 6Kb of storage at the end of the 256Kb of flash */ /* Set 6Kb of storage at the end of the 256Kb of flash */
storage_partition: partition@3e800 { storage_partition: partition@3e800 {
label = "storage";
reg = <0x0003e800 0x00001800>; reg = <0x0003e800 0x00001800>;
}; };
}; };

View File

@@ -13,7 +13,7 @@
#define RAISE 2 #define RAISE 2
/ { / {
chosen { zmk,matrix-transform = &layout_grid_transform; }; chosen { zmk,matrix_transform = &layout_grid_transform; };
keymap { keymap {
compatible = "zmk,keymap"; compatible = "zmk,keymap";
default_layer { default_layer {

View File

@@ -27,6 +27,7 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
led: led_0 { led: led_0 {
gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>; gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
label = "User LED";
}; };
}; };
}; };
@@ -72,6 +73,7 @@
status = "okay"; status = "okay";
cdc_acm_uart0: cdc_acm_uart0 { cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -91,6 +93,7 @@
/* Set 6Kb of storage at the end of the 256Kb of flash */ /* Set 6Kb of storage at the end of the 256Kb of flash */
storage_partition: partition@3e800 { storage_partition: partition@3e800 {
label = "storage";
reg = <0x0003e800 0x00001800>; reg = <0x0003e800 0x00001800>;
}; };
}; };

View File

@@ -25,17 +25,19 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>; gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
// Node name must match original "EXT_POWER" label to preserve user settings. ext-power {
EXT_POWER {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER";
control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 820000)>; full-ohms = <(2000000 + 820000)>;
@@ -76,6 +78,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -91,9 +94,11 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00026000>;
}; };
code_partition: partition@26000 { code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00026000 0x000c6000>;
}; };
@@ -107,10 +112,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -19,7 +19,7 @@
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,battery = &vbatt; zmk,battery = &vbatt;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -37,6 +37,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -65,11 +66,13 @@
compatible = "gpio-leds"; compatible = "gpio-leds";
blue_led: led_0 { blue_led: led_0 {
gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
label = "Blue LED";
}; };
}; };
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 2>; io-channels = <&adc 2>;
output-ohms = <2000000>; output-ohms = <2000000>;
full-ohms = <(2000000 + 820000)>; full-ohms = <(2000000 + 820000)>;
@@ -96,6 +99,7 @@
status = "okay"; status = "okay";
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
@@ -110,10 +114,12 @@
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "mbr";
reg = <0x00000000 0x00001000>; reg = <0x00000000 0x00001000>;
}; };
code_partition: partition@1000 { code_partition: partition@1000 {
label = "code_partition";
reg = <0x00001000 0x000d3000>; reg = <0x00001000 0x000d3000>;
}; };
@@ -127,10 +133,12 @@
* if enabled. * if enabled.
*/ */
storage_partition: partition@d4000 { storage_partition: partition@d4000 {
label = "storage";
reg = <0x000d4000 0x00020000>; reg = <0x000d4000 0x00020000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };

View File

@@ -9,6 +9,7 @@
kscan: kscan { kscan: kscan {
compatible = "zmk,kscan-mock"; compatible = "zmk,kscan-mock";
label = "KSCAN_MOCK";
rows = <2>; rows = <2>;
columns = <2>; columns = <2>;

View File

@@ -4,24 +4,15 @@
/ { / {
chosen { chosen {
zephyr,console = &uart0;
zmk,kscan = &kscan; zmk,kscan = &kscan;
}; };
kscan: kscan { kscan: kscan {
compatible = "zmk,kscan-mock"; compatible = "zmk,kscan-mock";
label = "KSCAN_MOCK";
rows = <2>; rows = <2>;
columns = <2>; columns = <2>;
exit-after; exit-after;
}; };
uart0: uart {
status = "okay";
compatible = "zephyr,native-posix-uart";
/* Dummy current-speed entry to comply with serial
* DTS binding
*/
current-speed = <0>;
};
}; };

View File

@@ -1,4 +0,0 @@
CONFIG_ZMK_BLE=y
CONFIG_LOG=y
CONFIG_LOG_BACKEND_SHOW_COLOR=n
CONFIG_ZMK_LOG_LEVEL_DBG=y

View File

@@ -1,16 +0,0 @@
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/kscan_mock.h>
/ {
chosen {
zmk,kscan = &kscan;
};
kscan: kscan {
compatible = "zmk,kscan-mock";
rows = <2>;
columns = <2>;
};
};

View File

@@ -13,6 +13,7 @@
&usb0 { &usb0 {
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };

View File

@@ -13,6 +13,7 @@
vbatt: vbatt { vbatt: vbatt {
compatible = "zmk,battery-voltage-divider"; compatible = "zmk,battery-voltage-divider";
label = "BATTERY";
io-channels = <&adc 7>; io-channels = <&adc 7>;
power-gpios = <&gpio0 14 (GPIO_OPEN_DRAIN | GPIO_ACTIVE_LOW)>; power-gpios = <&gpio0 14 (GPIO_OPEN_DRAIN | GPIO_ACTIVE_LOW)>;
output-ohms = <510000>; output-ohms = <510000>;
@@ -27,28 +28,10 @@
&usbd { &usbd {
cdc_acm_uart: cdc_acm_uart { cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart"; compatible = "zephyr,cdc-acm-uart";
label = "CDC_ACM_0";
}; };
}; };
&qspi { &qspi {
status = "okay"; status = "disabled";
pinctrl-0 = <&qspi_default>;
pinctrl-1 = <&qspi_sleep>;
pinctrl-names = "default", "sleep";
p25q16h: p25q16h@0 {
compatible = "nordic,qspi-nor";
reg = <0>;
sck-frequency = <104000000>;
quad-enable-requirements = "S2B1v1";
jedec-id = [85 60 15];
sfdp-bfp = [
e5 20 f1 ff ff ff ff 00 44 eb 08 6b 08 3b 80 bb
ee ff ff ff ff ff 00 ff ff ff 00 ff 0c 20 0f 52
10 d8 08 81
];
size = <16777216>;
has-dpd;
t-enter-dpd = <3000>;
t-exit-dpd = <8000>;
};
}; };

View File

@@ -0,0 +1,14 @@
config ZMK_KEYBOARD_NAME
default "cradios"
# Unable to use interrupts as the same pin number is used
# across A & B controllers, and STM32F303CCT6 can't enable
# interrutps for multiple controllers for the same "line"
# for the external interrupts.
config ZMK_KSCAN_GPIO_POLLING
default y

View File

@@ -0,0 +1,5 @@
# Copyright (c) 2020 Pete Johanson
# SPDX-License-Identifier: MIT
config SHIELD_CRADIOS
def_bool $(shields_list_contains,cradios)

View File

@@ -10,7 +10,7 @@
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -27,6 +27,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-direct"; compatible = "zmk,kscan-gpio-direct";
label = "KSCAN";
input-gpios = input-gpios =
<&pro_micro 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>, <&pro_micro 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>,
<&pro_micro 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>, <&pro_micro 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>,

View File

@@ -9,7 +9,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -28,6 +28,7 @@ RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(6,0) RC(6,1) RC(6,2)
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios

View File

@@ -9,7 +9,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -28,6 +28,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios

View File

@@ -13,6 +13,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios

View File

@@ -13,6 +13,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios

View File

@@ -25,6 +25,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -25,6 +25,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -9,7 +9,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
@@ -44,6 +44,7 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios

View File

@@ -9,7 +9,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -26,6 +26,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-direct"; compatible = "zmk,kscan-gpio-direct";
label = "KSCAN";
input-gpios input-gpios
= <&pro_micro 18 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> = <&pro_micro 18 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>

View File

@@ -12,6 +12,8 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-direct"; compatible = "zmk,kscan-gpio-direct";
label = "KSCAN";
input-gpios input-gpios
= <&gpioa 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> = <&gpioa 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpioa 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&gpioa 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>

View File

@@ -11,6 +11,7 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios

View File

@@ -25,6 +25,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -25,6 +25,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -10,7 +10,7 @@
chosen { chosen {
zephyr,display = &oled; zephyr,display = &oled;
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -47,6 +47,7 @@ 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
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -67,6 +68,7 @@ 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
oled: ssd1306@3c { oled: ssd1306@3c {
compatible = "solomon,ssd1306fb"; compatible = "solomon,ssd1306fb";
reg = <0x3c>; reg = <0x3c>;
label = "DISPLAY";
width = <128>; width = <128>;
height = <32>; height = <32>;
segment-offset = <0>; segment-offset = <0>;

View File

@@ -10,7 +10,7 @@
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -27,6 +27,7 @@
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-direct"; compatible = "zmk,kscan-gpio-direct";
label = "KSCAN";
input-gpios input-gpios
= <&pro_micro 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> = <&pro_micro 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&pro_micro 18 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> , <&pro_micro 18 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>

View File

@@ -12,6 +12,7 @@
/ { / {
behaviors { behaviors {
ht: hold_tap { ht: hold_tap {
label = "hold_tap";
compatible = "zmk,behavior-hold-tap"; compatible = "zmk,behavior-hold-tap";
#binding-cells = <2>; #binding-cells = <2>;
flavor = "tap-preferred"; flavor = "tap-preferred";

View File

@@ -13,6 +13,7 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios
@@ -40,6 +41,7 @@
encoder: encoder { encoder: encoder {
compatible = "alps,ec11"; compatible = "alps,ec11";
label = "ENCODER";
a-gpios = <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; a-gpios = <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; b-gpios = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
resolution = <2>; resolution = <2>;

View File

@@ -9,7 +9,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -26,6 +26,7 @@
kscan0: kscan_0 { kscan0: kscan_0 {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
col-gpios col-gpios

View File

@@ -25,6 +25,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -25,6 +25,7 @@
led_strip: ws2812@0 { led_strip: ws2812@0 {
compatible = "worldsemi,ws2812-spi"; compatible = "worldsemi,ws2812-spi";
label = "WS2812";
/* SPI */ /* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */ reg = <0>; /* ignored, but necessary for SPI bindings */

View File

@@ -9,7 +9,7 @@
/ { / {
chosen { chosen {
zmk,kscan = &kscan0; zmk,kscan = &kscan0;
zmk,matrix-transform = &default_transform; zmk,matrix_transform = &default_transform;
}; };
default_transform: keymap_transform_0 { default_transform: keymap_transform_0 {
@@ -26,6 +26,7 @@ RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7)
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
@@ -44,6 +45,7 @@ RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7)
oled: ssd1306@3c { oled: ssd1306@3c {
compatible = "solomon,ssd1306fb"; compatible = "solomon,ssd1306fb";
reg = <0x3c>; reg = <0x3c>;
label = "DISPLAY";
width = <128>; width = <128>;
height = <32>; height = <32>;
segment-offset = <0>; segment-offset = <0>;

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