Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update new keyboard templates #12

Merged
merged 1 commit into from
Oct 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@ Run `zmk keyboard list` to print a list of supported keyboard hardware.

If ZMK doesn't support your keyboard yet, you can run `zmk keyboard new` to create a new keyboard from a template.

This won't walk you through all of the details of adding support for a new keyboard, but it will generate most of the boilerplate for you. See the [New Keyboard Shield](https://zmk.dev/docs/development/new-shield) guide for how to finish writing the keyboard files.
This won't walk you through all of the details of adding support for a new keyboard, but it will generate most of the boilerplate for you. See the [New Keyboard Shield](https://zmk.dev/docs/development/hardware-integration/new-shield) guide for how to finish writing the keyboard files.

## Module Management

[Zephyr modules](https://docs.zephyrproject.org/3.6.0/develop/modules.html) can add support for new keyboards, behaviors, and other features to ZMK. Use the `zmk module` command to install modules into your repo:
[Zephyr modules](https://docs.zephyrproject.org/3.5.0/develop/modules.html) can add support for new keyboards, behaviors, and other features to ZMK. Use the `zmk module` command to install modules into your repo:

```sh
zmk module add # Add a module
Expand Down
4 changes: 3 additions & 1 deletion zmk/commands/keyboard/new.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,9 @@ def keyboard_new(
rich.print(
"Open this folder and edit the files to finish setting up the new keyboard."
)
rich.print("See https://zmk.dev/docs/development/new-shield for help.")
rich.print(
"See https://zmk.dev/docs/development/hardware-integration/new-shield for help."
)


def _prompt_keyboard_type():
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/nrf52840/Kconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

if ${self.guard() | trim}
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/nrf52840/Kconfig.defconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

<%block name="before" />
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/nrf52840/board.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/develop/test/twister.html#board-configuration
# See https://docs.zephyrproject.org/3.5.0/develop/test/twister.html#board-configuration
# for more information.

identifier: ${id}
Expand Down
7 changes: 5 additions & 2 deletions zmk/templates/board/nrf52840/board_defconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

CONFIG_SOC_SERIES_NRF52X=y
Expand All @@ -12,7 +12,7 @@ CONFIG_ARM_MPU=y
# Enable GPIO
CONFIG_GPIO=y

# Use pinctrl
# Enable pinctrl
CONFIG_PINCTRL=y

# Place application at &code_partition address
Expand All @@ -29,6 +29,9 @@ CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y

# Uncomment this if not using an external 32 kHz crystal
# CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y

# Enable ZMK BLE and USB output
CONFIG_ZMK_BLE=y
CONFIG_ZMK_USB=y
28 changes: 16 additions & 12 deletions zmk/templates/board/nrf52840/common_outer.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -14,46 +14,50 @@
status = "okay";
};

&usbd {
status = "okay";
&uart0 {
compatible = "nordic,nrf-uarte";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-1 = <&uart0_sleep>;
pinctrl-names = "default", "sleep";
};
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is present in all the current nRF52 boards in ZMK, but I'm actually not sure if this is needed for anything.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure it is currently, but I think it's useful to leave in to make wired split in the future easier.


cdc_acm_uart: cdc_acm_uart {
compatible = "zephyr,cdc-acm-uart";
};
zephyr_udc0: &usbd {
status = "okay";
};

&flash0 {
// Adjust this flash map as is necessary for your board. For more information, see
// https://docs.zephyrproject.org/latest/reference/storage/flash_map/flash_map.html
// https://docs.zephyrproject.org/3.5.0/services/storage/flash_map/flash_map.html#relationship-with-devicetree
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

code_partition: partition@1000 {
reg = <0x00001000 0x000d3000>;
reg = <DT_SIZE_K(4) DT_SIZE_K(844)>;
};

// If using a bootloader with SoftDevice included, replace the code_partition
// node above with the following. If using SoftDevice v7, change 26000 to 27000.

// sd_partition: partition@0 {
// reg = <0x00000000 0x00026000>;
// reg = <0x0 <DT_SIZE_K(4)>;
// };
// code_partition: partition@26000 {
// reg = <0x00026000 0x000c6000>;
// reg = <DT_SIZE_K(152) DT_SIZE_K(792)>;
// };

// The flash starting at 0x000d4000 and ending at
// 0x000f3fff is reserved for use by the application.

// Storage partition will be used by FCB/LittleFS/NVS if enabled.
// Storage partition will be used by NVS if enabled.
storage_partition: partition@d4000 {
reg = <0x000d4000 0x00020000>;
reg = <DT_SIZE_K(848) DT_SIZE_K(128)>;
};

boot_partition: partition@f4000 {
reg = <0x000f4000 0x0000c000>;
reg = <DT_SIZE_K(976) DT_SIZE_K(48)>;
};
};
};
4 changes: 2 additions & 2 deletions zmk/templates/board/nrf52840/pinctrl.dtsi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// This file was generated from a template. Edit it to match your keyboard.
// See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html
// and https://docs.zephyrproject.org/3.6.0/hardware/pinctrl/index.html for
// See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html
// and https://docs.zephyrproject.org/3.5.0/hardware/pinctrl/index.html for
// more instructions.

#include <dt-bindings/pinctrl/nrf-pinctrl.h>
Expand Down
1 change: 1 addition & 0 deletions zmk/templates/board/nrf52840/split/${id}-layouts.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%inherit file="/common/layouts.dtsi" />
3 changes: 1 addition & 2 deletions zmk/templates/board/nrf52840/split/${id}.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@
zephyr,flash = &flash0;
// Uncomment this if you enabled one of the "vddh" nodes below.
// zmk,battery = &vbatt;
zmk,kscan = &kscan;
zmk,matrix_transform = &default_transform;
zmk,physical-layout = &default_layout;
};
</%block>
<%block name="kscan">
Expand Down
1 change: 1 addition & 0 deletions zmk/templates/board/nrf52840/unibody/${id}-layouts.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%inherit file="/common/layouts.dtsi" />
4 changes: 1 addition & 3 deletions zmk/templates/board/nrf52840/unibody/${id}.dts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
</%block>
<%block name="includes">
#include "${id}-pinctrl.dtsi"

</%block>
<%block name="chosen">
chosen {
Expand All @@ -14,8 +13,7 @@
zephyr,flash = &flash0;
// Uncomment this if you enabled one of the "vddh" nodes below.
// zmk,battery = &vbatt;
zmk,kscan = &kscan;
zmk,matrix_transform = &default_transform;
zmk,physical-layout = &default_layout;
};
</%block>
<%block name="nodes">
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/other/Kconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

if ${self.guard() | trim}
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/other/Kconfig.defconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

<%block name="before" />
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/other/board.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#flash-and-debug-support
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#flash-and-debug-support
# for more information.
<%text>
include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake)
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/other/board.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/develop/test/twister.html#board-configuration
# See https://docs.zephyrproject.org/3.5.0/develop/test/twister.html#board-configuration
# for more information.

identifier: ${id}
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/board/other/board_defconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

CONFIG_BOARD_${id.upper()}=y
Expand Down
4 changes: 2 additions & 2 deletions zmk/templates/board/other/pinctrl.dtsi
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// This file was generated from a template. Edit it to match your keyboard.
// See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html
// and https://docs.zephyrproject.org/3.6.0/hardware/pinctrl/index.html for
// See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html
// and https://docs.zephyrproject.org/3.5.0/hardware/pinctrl/index.html for
// more instructions.

&pinctrl {
Expand Down
1 change: 1 addition & 0 deletions zmk/templates/board/other/split/${id}-layouts.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%inherit file="/common/layouts.dtsi" />
1 change: 0 additions & 1 deletion zmk/templates/board/other/split/${id}.dtsi
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<%inherit file="/common/board_split.dtsi" />\
<%block name="includes">
#include "${id}-pinctrl.dtsi"

</%block>
2 changes: 1 addition & 1 deletion zmk/templates/board/other/split/Kconfig.board
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

config BOARD_${id.upper()}_LEFT
Expand Down
1 change: 1 addition & 0 deletions zmk/templates/board/other/unibody/${id}-layouts.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%inherit file="/common/layouts.dtsi" />
1 change: 0 additions & 1 deletion zmk/templates/board/other/unibody/${id}.dts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<%inherit file="/common/board.dts" />
<%block name="includes">
#include "${id}-pinctrl.dtsi"

</%block>
2 changes: 1 addition & 1 deletion zmk/templates/board/other/unibody/Kconfig.board
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html#write-kconfig-files
# See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html#write-kconfig-files
# for more information.

config BOARD_${id.upper()}
Expand Down
10 changes: 6 additions & 4 deletions zmk/templates/common/board.dts
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
// This file was generated from a template. Edit it to match your keyboard.
// See https://docs.zephyrproject.org/3.6.0/hardware/porting/board_porting.html
// and https://zmk.dev/docs/development/new-shield for more instructions.
// See https://docs.zephyrproject.org/3.5.0/hardware/porting/board_porting.html
// and https://zmk.dev/docs/development/hardware-integration/new-shield for more
// instructions.

/dts-v1/;
<%block name="system_includes" />
#include <dt-bindings/zmk/matrix_transform.h>

<%block name="includes" />
#include "${id}-layouts.dtsi"

/ {
model = "${name}";
compatible = "${id}";

<%block name="chosen">
chosen {
zmk,kscan = &kscan;
zmk,matrix_transform = &default_transform;
zmk,physical-layout = &default_layout;
};
</%block>

Expand Down
3 changes: 2 additions & 1 deletion zmk/templates/common/board_left.dts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// This file was generated from a template. Edit it to match your keyboard.
// See https://zmk.dev/docs/development/new-shield for more instructions.
// See https://zmk.dev/docs/development/hardware-integration/new-shield for more
// instructions.

#include "${id}.dtsi"
#include "${id}_left-pinctrl.dtsi"
Expand Down
3 changes: 2 additions & 1 deletion zmk/templates/common/board_right.dts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// This file was generated from a template. Edit it to match your keyboard.
// See https://zmk.dev/docs/development/new-shield for more instructions.
// See https://zmk.dev/docs/development/hardware-integration/new-shield for more
// instructions.

#include "${id}.dtsi"
#include "${id}_right-pinctrl.dtsi"
Expand Down
3 changes: 2 additions & 1 deletion zmk/templates/common/default.conf
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://zmk.dev/docs/development/new-shield for more instructions.
# See https://zmk.dev/docs/development/hardware-integration/new-shield for more
# instructions.

# This file will be copied into the user's config directory when they add this
# keyboard. Define any Kconfig options users may frequently want to set here,
Expand Down
6 changes: 4 additions & 2 deletions zmk/templates/common/hardware.zmk.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# This file was generated from a template. Edit it to match your keyboard.
# See https://zmk.dev/docs/development/hardware-metadata-files for instructions.
# See https://zmk.dev/docs/development/hardware-integration/hardware-metadata-files
# for instructions.

file_format: "1"
id: ${id}
Expand All @@ -13,7 +14,8 @@ arch: ${arch}
url: https://example.com

# Add any features your keyboard supports here.
# See https://zmk.dev/docs/development/hardware-metadata-files#features.
# See https://zmk.dev/docs/development/hardware-integration/hardware-metadata-files#features
features:
- keys
- studio # Remove this line if your keyboard will not support ZMK Studio
${self.body()}
4 changes: 2 additions & 2 deletions zmk/templates/common/keymap.dtsi
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file was generated from a template. Edit it to match your keyboard.
// See https://zmk.dev/docs/development/new-shield for more instructions.
// See https://zmk.dev/docs/development/hardware-integration/new-shield for more instructions.

#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>

/ {
// Define a default keymap here.
// See https://zmk.dev/docs/development/new-shield#default-keymap.
// See https://zmk.dev/docs/development/hardware-integration/new-shield#default-keymap.
keymap {
compatible = "zmk,keymap";

Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/common/kscan.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
wakeup-source;

// Replace these comments with the GPIO pins in the matrix.
// See https://zmk.dev/docs/development/new-shield#shield-overlays
// See https://zmk.dev/docs/development/hardware-integration/new-shield#shield-overlays
col-gpios
= </* ${node} 0 */ GPIO_ACTIVE_HIGH>
, </* ${node} 0 */ GPIO_ACTIVE_HIGH>
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/common/kscan_split_common.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
wakeup-source;

// Replace these comments with the GPIO pins in the matrix.
// See https://zmk.dev/docs/development/new-shield#shield-overlays
// See https://zmk.dev/docs/development/hardware-integration/new-shield#shield-overlays
row-gpios
= </* ${node} 0 */ (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, </* ${node} 0 */ (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/common/kscan_split_left.dtsi
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<%page args="node = '&gpio0'" />
&kscan {
// Replace these comments with the GPIO pins in the matrix for the left side.
// See https://zmk.dev/docs/development/new-shield#shield-overlays
// See https://zmk.dev/docs/development/hardware-integration/new-shield#shield-overlays
col-gpios
= </* ${node} 0 */ GPIO_ACTIVE_HIGH>
, </* ${node} 0 */ GPIO_ACTIVE_HIGH>
Expand Down
2 changes: 1 addition & 1 deletion zmk/templates/common/kscan_split_right.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

&kscan {
// Replace these comments with the GPIO pins in the matrix for the right side.
// See https://zmk.dev/docs/development/new-shield#shield-overlays
// See https://zmk.dev/docs/development/hardware-integration/new-shield#shield-overlays
col-gpios
= </* ${node} 0 */ GPIO_ACTIVE_HIGH>
, </* ${node} 0 */ GPIO_ACTIVE_HIGH>
Expand Down
23 changes: 23 additions & 0 deletions zmk/templates/common/layouts.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// See https://zmk.dev/docs/development/hardware-integration/physical-layouts
// for how to configure this.

#include <physical_layouts.dtsi>

/ {
default_layout: default_layout {
compatible = "zmk,physical-layout";
display-name = "Default Layout";
transform = <&default_transform>;
kscan = <&kscan>;

// Edit this to define the positions and sizes of the keys, or remove it
// if your keyboard will not support ZMK Studio.
// https://zmk.dev/docs/development/hardware-integration/physical-layouts#optional-keys-property
keys // w h x y rot rx ry
joelspadin marked this conversation as resolved.
Show resolved Hide resolved
= <&key_physical_attrs 100 100 0 0 0 0 0>
, <&key_physical_attrs 100 100 100 0 0 0 0>
, <&key_physical_attrs 100 100 0 100 0 0 0>
, <&key_physical_attrs 100 100 100 100 0 0 0>
;
};
};
Loading