Add biantin keyboard

This commit is contained in:
Martin Pander
2026-02-27 22:59:31 +01:00
parent 1eb175cb47
commit 264f0ec8bd
23 changed files with 1144 additions and 0 deletions

View File

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

View File

@@ -0,0 +1,10 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_PIANTOR_PRO_BT_LEFT
bool "Piantor Pro BT Left"
depends on SOC_NRF52840_QIAA
config BOARD_PIANTOR_PRO_BT_RIGHT
bool "Piantor Pro BT Right"
depends on SOC_NRF52840_QIAA

View File

@@ -0,0 +1,41 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
if BOARD_PIANTOR_PRO_BT_LEFT
config ZMK_KEYBOARD_NAME
default "Piantor Pro BT"
config ZMK_SPLIT_ROLE_CENTRAL
default y
endif # BOARD_PIANTOR_PRO_BT_LEFT
if BOARD_PIANTOR_PRO_BT_LEFT || BOARD_PIANTOR_PRO_BT_RIGHT
config BOARD
default "piantor_pro_bt"
config ZMK_SPLIT
default y
if USB
config USB_NRFX
default y
config USB_DEVICE_STACK
default y
endif # USB
config BT_CTLR
default BT
config I2C
default y
config ZMK_MAX17048
default y
endif # BOARD_PIANTOR_PRO_BT_LEFT || BOARD_PIANTOR_PRO_BT_RIGHT

View File

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

View File

@@ -0,0 +1,120 @@
#include <physical_layouts.dtsi>
/ {
piantor_position_map {
compatible = "zmk,physical-layout-position-map";
complete;
default_map: six_col {
physical-layout = <&default_layout>;
positions
= < 0 1 2 3 4 5 6 7 8 9 10 11>
, <12 13 14 15 16 17 18 19 20 21 22 23>
, <24 25 26 27 28 29 30 31 32 33 34 35>
, < 36 37 38 39 40 41 >;
};
five_col_map: five_col {
physical-layout = <&five_col_layout>;
positions
= <41 0 1 2 3 4 5 6 7 8 9 40>
, <39 10 11 12 13 14 15 16 17 18 19 38>
, <37 20 21 22 23 24 25 26 27 28 29 36>
, < 30 31 32 33 34 35 >;
};
};
};
/ {
default_layout: default_layout {
compatible = "zmk,physical-layout";
display-name = "Default Layout";
keys // w h x y rot rx ry
= <&key_physical_attrs 100 100 0 100 0 0 0>
, <&key_physical_attrs 100 100 100 100 0 0 0>
, <&key_physical_attrs 100 100 200 25 0 0 0>
, <&key_physical_attrs 100 100 300 0 0 0 0>
, <&key_physical_attrs 100 100 400 25 0 0 0>
, <&key_physical_attrs 100 100 500 35 0 0 0>
, <&key_physical_attrs 100 100 950 35 0 0 0>
, <&key_physical_attrs 100 100 1050 25 0 0 0>
, <&key_physical_attrs 100 100 1150 0 0 0 0>
, <&key_physical_attrs 100 100 1250 25 0 0 0>
, <&key_physical_attrs 100 100 1350 100 0 0 0>
, <&key_physical_attrs 100 100 1450 100 0 0 0>
, <&key_physical_attrs 100 100 0 200 0 0 0>
, <&key_physical_attrs 100 100 100 200 0 0 0>
, <&key_physical_attrs 100 100 200 125 0 0 0>
, <&key_physical_attrs 100 100 300 100 0 0 0>
, <&key_physical_attrs 100 100 400 125 0 0 0>
, <&key_physical_attrs 100 100 500 135 0 0 0>
, <&key_physical_attrs 100 100 950 135 0 0 0>
, <&key_physical_attrs 100 100 1050 125 0 0 0>
, <&key_physical_attrs 100 100 1150 100 0 0 0>
, <&key_physical_attrs 100 100 1250 125 0 0 0>
, <&key_physical_attrs 100 100 1350 200 0 0 0>
, <&key_physical_attrs 100 100 1450 200 0 0 0>
, <&key_physical_attrs 100 100 0 300 0 0 0>
, <&key_physical_attrs 100 100 100 300 0 0 0>
, <&key_physical_attrs 100 100 200 225 0 0 0>
, <&key_physical_attrs 100 100 300 200 0 0 0>
, <&key_physical_attrs 100 100 400 225 0 0 0>
, <&key_physical_attrs 100 100 500 235 0 0 0>
, <&key_physical_attrs 100 100 950 235 0 0 0>
, <&key_physical_attrs 100 100 1050 225 0 0 0>
, <&key_physical_attrs 100 100 1150 200 0 0 0>
, <&key_physical_attrs 100 100 1250 225 0 0 0>
, <&key_physical_attrs 100 100 1350 300 0 0 0>
, <&key_physical_attrs 100 100 1450 300 0 0 0>
, <&key_physical_attrs 100 100 380 360 (-500) 360 350>
, <&key_physical_attrs 100 100 510 350 500 500 350>
, <&key_physical_attrs 100 100 645 370 1500 650 350>
, <&key_physical_attrs 100 100 810 389 (-1500) 825 350>
, <&key_physical_attrs 100 100 945 360 (-500) 950 350>
, <&key_physical_attrs 100 100 1075 350 500 1075 350>
;
};
five_col_layout: five_col_layout {
compatible = "zmk,physical-layout";
display-name = "5-Col Layout";
keys // w h x y rot rx ry
= <&key_physical_attrs 100 100 0 100 0 0 0>
, <&key_physical_attrs 100 100 100 25 0 0 0>
, <&key_physical_attrs 100 100 200 0 0 0 0>
, <&key_physical_attrs 100 100 300 25 0 0 0>
, <&key_physical_attrs 100 100 400 35 0 0 0>
, <&key_physical_attrs 100 100 850 35 0 0 0>
, <&key_physical_attrs 100 100 950 25 0 0 0>
, <&key_physical_attrs 100 100 1050 0 0 0 0>
, <&key_physical_attrs 100 100 1150 25 0 0 0>
, <&key_physical_attrs 100 100 1250 100 0 0 0>
, <&key_physical_attrs 100 100 0 200 0 0 0>
, <&key_physical_attrs 100 100 100 125 0 0 0>
, <&key_physical_attrs 100 100 200 100 0 0 0>
, <&key_physical_attrs 100 100 300 125 0 0 0>
, <&key_physical_attrs 100 100 400 135 0 0 0>
, <&key_physical_attrs 100 100 850 135 0 0 0>
, <&key_physical_attrs 100 100 950 125 0 0 0>
, <&key_physical_attrs 100 100 1050 100 0 0 0>
, <&key_physical_attrs 100 100 1150 125 0 0 0>
, <&key_physical_attrs 100 100 1250 200 0 0 0>
, <&key_physical_attrs 100 100 0 300 0 0 0>
, <&key_physical_attrs 100 100 100 225 0 0 0>
, <&key_physical_attrs 100 100 200 200 0 0 0>
, <&key_physical_attrs 100 100 300 225 0 0 0>
, <&key_physical_attrs 100 100 400 235 0 0 0>
, <&key_physical_attrs 100 100 850 235 0 0 0>
, <&key_physical_attrs 100 100 950 225 0 0 0>
, <&key_physical_attrs 100 100 1050 200 0 0 0>
, <&key_physical_attrs 100 100 1150 225 0 0 0>
, <&key_physical_attrs 100 100 1250 300 0 0 0>
, <&key_physical_attrs 100 100 280 360 (-500) 260 350>
, <&key_physical_attrs 100 100 410 350 500 400 350>
, <&key_physical_attrs 100 100 545 370 1500 550 350>
, <&key_physical_attrs 100 100 710 389 (-1500) 725 350>
, <&key_physical_attrs 100 100 845 360 (-500) 850 350>
, <&key_physical_attrs 100 100 975 350 500 975 350>
;
};
};

View File

@@ -0,0 +1,158 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include <dt-bindings/zmk/matrix_transform.h>
#include "piantor_pro_bt-layouts.dtsi"
&default_layout {
transform = <&default_transform>;
};
&five_col_layout {
transform = <&five_col_transform>;
};
/ {
chosen {
zephyr,code-partition = &code_partition;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zmk,kscan = &kscan0;
zmk,battery = &fuelgauge;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <42>;
rows = <1>;
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,21) RC(0,22) RC(0,23) RC(0,24) RC(0,25) RC(0,26)
RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,27) RC(0,28) RC(0,29) RC(0,30) RC(0,31) RC(0,32)
RC(0,12) RC(0,13) RC(0,14) RC(0,15) RC(0,16) RC(0,17) RC(0,33) RC(0,34) RC(0,35) RC(0,36) RC(0,37) RC(0,38)
RC(0,18) RC(0,19) RC(0,20) RC(0,39) RC(0,40) RC(0,41)
>;
};
five_col_transform: keymap_transform_1 {
compatible = "zmk,matrix-transform";
columns = <36>;
rows = <1>;
map = <
RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,21) RC(0,22) RC(0,23) RC(0,24) RC(0,25)
RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,27) RC(0,28) RC(0,29) RC(0,30) RC(0,31)
RC(0,13) RC(0,14) RC(0,15) RC(0,16) RC(0,17) RC(0,33) RC(0,34) RC(0,35) RC(0,36) RC(0,37)
RC(0,18) RC(0,19) RC(0,20) RC(0,39) RC(0,40) RC(0,41)
>;
};
// Node name must match original "EXT_POWER" label to preserve user settings.
EXT_POWER {
compatible = "zmk,ext-power-generic";
control-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
init-delay-ms = <50>;
};
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
zephyr_udc0: &usbd {
status = "okay";
};
&pinctrl {
spi0_default: spi0_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 17)>,
<NRF_PSEL(SPIM_MOSI, 0, 20)>,
<NRF_PSEL(SPIM_MISO, 0, 25)>;
};
};
spi0_sleep: spi0_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 17)>,
<NRF_PSEL(SPIM_MOSI, 0, 20)>,
<NRF_PSEL(SPIM_MISO, 0, 25)>;
low-power-enable;
};
};
i2c1_default: i2c1_default {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 4)>,
<NRF_PSEL(TWIM_SCL, 0, 12)>;
};
};
i2c1_sleep: i2c1_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 4)>,
<NRF_PSEL(TWIM_SCL, 0, 12)>;
low-power-enable;
};
};
};
nice_view_spi: &spi0 {
compatible = "nordic,nrf-spim";
pinctrl-0 = <&spi0_default>;
pinctrl-1 = <&spi0_sleep>;
pinctrl-names = "default", "sleep";
cs-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
};
&i2c1 {
status = "okay";
compatible = "nordic,nrf-twim";
pinctrl-0 = <&i2c1_default>;
pinctrl-1 = <&i2c1_sleep>;
pinctrl-names = "default", "sleep";
clock-frequency = <100000>;
fuelgauge: max17048@36 {
compatible = "zmk,maxim-max17048";
reg = <0x36>;
};
};
&flash0 {
/*
* For more information, see:
* http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
*/
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>;
};
code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>;
};
storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>;
};
boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>;
};
};
};

View File

@@ -0,0 +1,127 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/rgb.h>
/ {
chosen {
zmk,physical-layout = &default_layout;
};
};
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
display-name = "QWERTY";
// --------------------------------------------------------------------------------
// | TAB | Q | W | E | R | T | Y | U | I | O | P | BSPC |
// | CTRL | A | S | D | F | G | H | J | K | L | ; | ' |
// | SHFT | Z | X | C | V | B | N | M | , | . | / | ESC |
// | GUI | LWR | SPC | ENT | RSE | ALT |
bindings = <
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSPC
&kp LCTRL &kp A &kp S &kp D &kp F &kp G &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 N &kp M &kp COMMA &kp DOT &kp FSLH &kp ESC
&kp LGUI &mo 1 &kp SPACE &kp RET &mo 2 &kp RALT
>;
};
lower_layer {
display-name = "NUMBER";
// -----------------------------------------------------------------------------------------
// | TAB | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSPC |
// | CTRL | BT1 | BT2 | BT3 | BT4 | BT5 | LFT | DWN | UP | RGT | | |
// | SHFT | BTCR| RGB | RST | BOOT| Unlock| | | | | | |
// | GUI | | SPC | ENT | | ALT |
bindings = <
&kp TAB &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSPC
&kp LCTRL &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans &trans
&kp LSHFT &bt BT_CLR &rgb_ug RGB_TOG &sys_reset &bootloader &studio_unlock &trans &trans &trans &trans &trans &trans
&kp LGUI &trans &kp SPACE &kp LGUI &trans &kp SPACE
>;
};
raise_layer {
display-name = "SYMBOL";
// -----------------------------------------------------------------------------------------
// | TAB | ! | @ | # | $ | % | ^ | & | * | ( | ) | BSPC |
// | CTRL | | | | | | - | = | [ | ] | \ | ` |
// | SHFT | | | | | | _ | + | { | } | "|" | ~ |
// | GUI | | SPC | ENT | | ALT |
bindings = <
&kp TAB &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp CARET &kp AMPS &kp ASTRK &kp LPAR &kp RPAR &kp BSPC
&kp LCTRL &trans &trans &trans &trans &trans &kp MINUS &kp EQUAL &kp LBKT &kp RBKT &kp BSLH &kp GRAVE
&kp LSHFT &trans &trans &trans &trans &trans &kp UNDER &kp PLUS &kp LBRC &kp RBRC &kp PIPE &kp TILDE
&kp LGUI &trans &kp SPACE &kp RET &trans &kp RALT
>;
};
extra_layer_1 {
display-name = "EXTRA 1";
bindings = <
&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
&trans &trans &trans &trans &trans &trans
>;
};
extra_layer_2 {
display-name = "EXTRA 2";
bindings = <
&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
&trans &trans &trans &trans &trans &trans
>;
};
extra_layer_3 {
display-name = "EXTRA 3";
bindings = <
&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
&trans &trans &trans &trans &trans &trans
>;
};
extra_layer_4 {
display-name = "EXTRA 4";
bindings = <
&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
&trans &trans &trans &trans &trans &trans
>;
};
extra_layer_5 {
display-name = "EXTRA 5";
bindings = <
&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
&trans &trans &trans &trans &trans &trans
>;
};
extra_layer_6 {
display-name = "EXTRA 6";
bindings = <
&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
&trans &trans &trans &trans &trans &trans
>;
};
};
};

View File

@@ -0,0 +1,15 @@
identifier: piantor_pro_bt
name: Piantor Pro BT
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- adc
- usb_device
- ble
- ieee802154
- pwm
- watchdog

View File

@@ -0,0 +1,16 @@
file_format: "1"
id: piantor_pro_bt
name: Piantor Pro BT
type: board
arch: arm
features:
- keys
- underglow
- studio
outputs:
- usb
- ble
url: https://keebart.com/products/piantor-wireless
siblings:
- piantor_pro_bt_left
- piantor_pro_bt_right

View File

@@ -0,0 +1,85 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include "piantor_pro_bt.dtsi"
#include <dt-bindings/led/led.h>
/ {
model = "piantor_pro_bt_left";
compatible = "piantor_pro_bt_left";
chosen {
zmk,underglow = &led_strip;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-direct";
wakeup-source;
input-gpios
= <&gpio0 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 29 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 31 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 24 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 30 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 28 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
;
};
};
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 26)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 26)>;
low-power-enable;
};
};
};
&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>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <21>; /* 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

@@ -0,0 +1,48 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_PIANTOR_PRO_BT_LEFT=y
# Enable deep sleep
CONFIG_ZMK_SLEEP=y
# Enable MPU
CONFIG_ARM_MPU=y
# Enable GPIO
CONFIG_GPIO=y
CONFIG_USE_DT_CODE_PARTITION=y
CONFIG_BUILD_OUTPUT_UF2=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=y
# Enable I2C
CONFIG_I2C=y
CONFIG_I2C_NRFX=y
CONFIG_PINCTRL=y
# Enable RGB underglow
CONFIG_WS2812_STRIP=y
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_BRT_MAX=20
CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=200
CONFIG_ZMK_RGB_UNDERGLOW_SAT_START=98
# Windows Battery Reporting Fix
CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=n
# Enable ZMK Studio (alpha)
CONFIG_ZMK_STUDIO=y
# Improved connection stability
CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y

View File

@@ -0,0 +1,93 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include "piantor_pro_bt.dtsi"
#include <dt-bindings/led/led.h>
/ {
model = "piantor_pro_bt_right";
compatible = "piantor_pro_bt_right";
chosen {
zmk,underglow = &led_strip;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-direct";
wakeup-source;
input-gpios
= <&gpio0 29 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 31 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 30 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 24 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 22 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio1 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
, <&gpio0 28 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>
;
};
};
&default_transform {
col-offset = <21>;
};
&five_col_transform {
col-offset = <21>;
};
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 26)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 26)>;
low-power-enable;
};
};
};
&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>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <21>; /* 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

@@ -0,0 +1,45 @@
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_PIANTOR_PRO_BT_RIGHT=y
# Enable deep sleep
CONFIG_ZMK_SLEEP=y
# Enable MPU
CONFIG_ARM_MPU=y
# Enable GPIO
CONFIG_GPIO=y
CONFIG_USE_DT_CODE_PARTITION=y
CONFIG_BUILD_OUTPUT_UF2=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_ZMK_USB=y
CONFIG_ZMK_BLE=y
# Enable I2C
CONFIG_I2C=y
CONFIG_I2C_NRFX=y
CONFIG_PINCTRL=y
# Enable RGB underglow
CONFIG_WS2812_STRIP=y
CONFIG_ZMK_RGB_UNDERGLOW=y
CONFIG_ZMK_RGB_UNDERGLOW_BRT_MAX=20
CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=200
CONFIG_ZMK_RGB_UNDERGLOW_SAT_START=98
# Windows Battery Reporting Fix
CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=n
# Improved connection stability
CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y