Renew repo

This commit is contained in:
HeavyDutySoul 2023-10-06 17:27:41 +03:00
parent ca5c9b4ae6
commit 63d3058465
49 changed files with 997 additions and 613 deletions

View file

@ -0,0 +1,11 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
set_property(GLOBAL APPEND PROPERTY extra_post_build_commands
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/../tools/uf2/utils/uf2conv.py
-c
-b 0x26000
-f 0xADA52840
-o ${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.uf2
${PROJECT_BINARY_DIR}/${CONFIG_KERNEL_BIN_NAME}.bin
)

View file

@ -0,0 +1,8 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_ENABLE_DCDC
bool "Enable DCDC mode"
select SOC_DCDC_NRF52X
default n
depends on BOARD_MDBT50Q

View file

@ -0,0 +1,9 @@
# Maker Diary nrf52840 M.2 board configuration
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
config BOARD_MDBT50Q
bool "mdbt50q"
depends on SOC_NRF52840_QIAA

View file

@ -0,0 +1,31 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
if BOARD_MDBT50Q
config BOARD
default "mdbt50q"
if USB
config USB_NRFX
default y
config USB_DEVICE_STACK
default y
endif # USB
config BT_CTLR
default BT
config ZMK_BLE
default y
config ZMK_USB
default n
config ZMK_SLEEP
default y
endif # BOARD_MDBT50Q

View file

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

View file

@ -0,0 +1,91 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
/ {
model = "Raytac mdbt50q module";
compatible = "raytac,mdbt50q";
chosen {
// zephyr,console = &uart0;
// zephyr,shell-uart = &uart0;
// zephyr,uart-mcumgr = &uart0;
// zephyr,bt-mon-uart = &uart0;
// zephyr,bt-c2h-uart = &uart0;
zephyr,code-partition = &code_partition;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
};
};
&adc {
status = "okay";
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&uart0 {
compatible = "nordic,nrf-uarte";
current-speed = <115200>;
// status = "okay";
};
&usbd {
compatible = "nordic,nrf-usbd";
status = "okay";
};
&flash0 {
/*
* For more information, see:
* http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
*/
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
sd_partition: partition@0 {
label = "softdevice";
reg = <0x00000000 0x00026000>;
};
code_partition: partition@26000 {
label = "code_partition";
reg = <0x00026000 0x000c6000>;
};
/*
* The flash starting at 0x000ec000 and ending at
* 0x000f3fff is reserved for use by the application.
*/
/*
* Storage partition will be used by FCB/LittleFS/NVS
* if enabled.
*/
storage_partition: partition@ec000 {
label = "storage";
reg = <0x000ec000 0x00008000>;
};
boot_partition: partition@f4000 {
label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>;
};
};
};

View file

@ -0,0 +1,15 @@
identifier: mdbt50q
name: Raytac mdbt50q module
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- adc
- usb_device
- ble
- ieee802154
- pwm
- watchdog

View file

@ -0,0 +1,10 @@
file_format: "1"
id: mdbt50q
name: mdbt50q Module
type: board
arch: arm
outputs:
- usb
- ble
url: https://raytac.com
exposes: [raytac_mdbt50q]

View file

@ -0,0 +1,38 @@
# Copyright (c) 2020 The ZMK Contributors
# SPDX-License-Identifier: MIT
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_MDBT50Q=y
# Enable MPU
CONFIG_ARM_MPU=y
# enable GPIO
CONFIG_GPIO=y
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
CONFIG_CLOCK_CONTROL_NRF=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
#CONFIG_SERIAL=y
#CONFIG_CONSOLE=y
#CONFIG_UART_CONSOLE=y
CONFIG_GPIO_AS_PINRESET=y
#CONFIG_BT_DEBUG_LOG=y
#CONFIG_LOG=y
#CONFIG_ZMK_LOG_LEVEL_DBG=y
#CONFIG_NVS_LOG_LEVEL_DBG=y
#CONFIG_USB=n
#CONFIG_HWINFO=y

View file

@ -1,12 +1,12 @@
config BOARD_ENABLE_DCDC config BOARD_ENABLE_DCDC
bool "Enable DCDC mode" bool "Enable DCDC mode"
select SOC_DCDC_NRF52X select SOC_DCDC_NRF52X
default y default y
depends on (BOARD_MIKOTO_520) depends on (BOARD_MIKOTO_520)
choice BOARD_MIKOTO_CHARGER_CURRENT choice BOARD_MIKOTO_CHARGER_CURRENT
prompt "Charge current to supply to attached batteries" prompt "Charge current to supply to attached batteries"
depends on (BOARD_MIKOTO_520) depends on (BOARD_MIKOTO_520)
config BOARD_MIKOTO_CHARGER_CURRENT_40MA config BOARD_MIKOTO_CHARGER_CURRENT_40MA
bool "40mA charge current, for battery capacity 40mAh or higher" bool "40mA charge current, for battery capacity 40mAh or higher"

View file

@ -4,5 +4,5 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
config BOARD_MIKOTO_520 config BOARD_MIKOTO_520
bool "mikoto_520" bool "mikoto_520"
depends on SOC_NRF52840_QIAA depends on SOC_NRF52840_QIAA

View file

@ -6,32 +6,32 @@
if BOARD_MIKOTO_520 if BOARD_MIKOTO_520
config BOARD config BOARD
default "mikoto" default "mikoto"
if USB if USB
config USB_NRFX config USB_NRFX
default y default y
config USB_DEVICE_STACK config USB_DEVICE_STACK
default y default y
endif # USB endif # USB
config BT_CTLR config BT_CTLR
default BT default BT
config ZMK_BLE config ZMK_BLE
default y default y
config ZMK_USB config ZMK_USB
default y default y
config PINMUX config PINMUX
default y default y
choice BOARD_MIKOTO_CHARGER_CURRENT choice BOARD_MIKOTO_CHARGER_CURRENT
default BOARD_MIKOTO_CHARGER_CURRENT_100MA default BOARD_MIKOTO_CHARGER_CURRENT_40MA
endchoice endchoice
endif # BOARD_MIKOTO_520 endif # BOARD_MIKOTO_520

View file

@ -6,50 +6,50 @@
/ { / {
pro_micro: connector { pro_micro: connector {
compatible = "arduino-pro-micro"; compatible = "arduino-pro-micro";
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-map-mask = <0xffffffff 0xffffffc0>; gpio-map-mask = <0xffffffff 0xffffffc0>;
gpio-map-pass-thru = <0 0x3f>; gpio-map-pass-thru = <0 0x3f>;
gpio-map gpio-map
= <0 0 &gpio0 4 0> /* D0 */ = <0 0 &gpio0 4 0> /* D0 */
, <1 0 &gpio0 8 0> /* D1 */ , <1 0 &gpio0 8 0> /* D1 */
, <2 0 &gpio0 17 0> /* D2 */ , <2 0 &gpio0 17 0> /* D2 */
, <3 0 &gpio0 20 0> /* D3 */ , <3 0 &gpio0 20 0> /* D3 */
, <4 0 &gpio0 22 0> /* D4/A6 */ , <4 0 &gpio0 22 0> /* D4/A6 */
, <5 0 &gpio0 24 0> /* D5 */ , <5 0 &gpio0 24 0> /* D5 */
, <6 0 &gpio1 0 0> /* D6/A7 */ , <6 0 &gpio1 8 0> /* D6/A7 */
, <7 0 &gpio1 2 0> /* D7 */ , <7 0 &gpio1 2 0> /* D7 */
, <8 0 &gpio1 4 0> /* D8/A8 */ , <8 0 &gpio1 4 0> /* D8/A8 */
, <9 0 &gpio1 6 0> /* D9/A9 */ , <9 0 &gpio1 6 0> /* D9/A9 */
, <10 0 &gpio0 9 0> /* D10/A10 */ , <10 0 &gpio0 9 0> /* D10/A10 */
, <16 0 &gpio0 10 0> /* D16 */ , <16 0 &gpio0 10 0> /* D16 */
, <14 0 &gpio1 13 0> /* D14 */ , <14 0 &gpio1 13 0> /* D14 */
, <15 0 &gpio0 2 0> /* D15 */ , <15 0 &gpio0 2 0> /* D15 */
, <18 0 &gpio0 29 0> /* D18/A0 */ , <18 0 &gpio0 29 0> /* D18/A0 */
, <19 0 &gpio0 31 0> /* D19/A1 */ , <19 0 &gpio0 31 0> /* D19/A1 */
, <20 0 &gpio0 25 0> /* D20/A2 */ , <20 0 &gpio0 25 0> /* D20/A2 */
, <21 0 &gpio0 11 0> /* D21/A3 */ , <21 0 &gpio0 11 0> /* D21/A3 */
; ;
}; };
pro_micro_a: connector_a { pro_micro_a: connector_a {
compatible = "arduino-pro-micro"; compatible = "arduino-pro-micro";
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-map-mask = <0xffffffff 0xffffffc0>; gpio-map-mask = <0xffffffff 0xffffffc0>;
gpio-map-pass-thru = <0 0x3f>; gpio-map-pass-thru = <0 0x3f>;
gpio-map gpio-map
= <0 0 &gpio0 29 0> /* D18/A0 */ = <0 0 &gpio0 29 0> /* D18/A0 */
, <1 0 &gpio0 31 0> /* D19/A1 */ , <1 0 &gpio0 31 0> /* D19/A1 */
, <2 0 &gpio0 25 0> /* D20/A2 */ , <2 0 &gpio0 25 0> /* D20/A2 */
, <3 0 &gpio0 11 0> /* D21/A3 */ , <3 0 &gpio0 11 0> /* D21/A3 */
, <6 0 &gpio0 22 0> /* D4/A6 */ , <6 0 &gpio0 22 0> /* D4/A6 */
, <7 0 &gpio1 0 0> /* D6/A7 */ , <7 0 &gpio1 0 0> /* D6/A7 */
, <8 0 &gpio1 4 0> /* D8/A8 */ , <8 0 &gpio1 4 0> /* D8/A8 */
, <9 0 &gpio1 6 0> /* D9/A9 */ , <9 0 &gpio1 6 0> /* D9/A9 */
, <10 0 &gpio0 9 0> /* D10/A10 */ , <10 0 &gpio0 9 0> /* D10/A10 */
; ;
}; };
}; };

View file

@ -1,39 +0,0 @@
/*
* Copyright (c) 2022 The ZMK Contributors
* SPDX-License-Identifier: MIT
*/
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_RX, 0, 4)>;
bias-pull-up;
};
group2 {
psels = <NRF_PSEL(UART_TX, 0, 8)>;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_RX, 0, 4)>,
<NRF_PSEL(UART_TX, 0, 8)>;
low-power-enable;
};
};
i2c0_default: i2c0_default {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 17)>,
<NRF_PSEL(TWIM_SCL, 0, 20)>;
};
};
i2c0_sleep: i2c0_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 17)>,
<NRF_PSEL(TWIM_SCL, 0, 20)>;
low-power-enable;
};
};
};

View file

@ -7,120 +7,116 @@
/dts-v1/; /dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi> #include <nordic/nrf52840_qiaa.dtsi>
#include "arduino_pro_micro_pins.dtsi" #include "arduino_pro_micro_pins.dtsi"
#include "mikoto_520-pinctrl.dtsi"
/ { / {
model = "mikoto"; model = "mikoto";
compatible = "zhiayang,mikoto"; compatible = "zhiayang,mikoto";
chosen { chosen {
zephyr,code-partition = &code_partition; zephyr,code-partition = &code_partition;
zephyr,sram = &sram0; zephyr,sram = &sram0;
zephyr,flash = &flash0; zephyr,flash = &flash0;
zephyr,console = &cdc_acm_uart; zephyr,console = &cdc_acm_uart;
zmk,battery = &vbatt; zmk,battery = &vbatt;
}; };
leds { leds {
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"; label = "Blue LED";
}; };
}; };
ext-power { ext-power {
compatible = "zmk,ext-power-generic"; compatible = "zmk,ext-power-generic";
label = "EXT_POWER"; 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"; label = "BATTERY";
io-channels = <&adc 1>; io-channels = <&adc 1>;
output-ohms = <10000000>; output-ohms = <10000000>;
full-ohms = <(10000000 + 4000000)>; full-ohms = <(10000000 + 4000000)>;
}; };
}; };
&adc { &adc {
status = "okay"; status = "okay";
}; };
&gpiote { &gpiote {
status = "okay"; status = "okay";
}; };
&gpio0 { &gpio0 {
status = "okay"; status = "okay";
}; };
&gpio1 { &gpio1 {
status = "okay"; status = "okay";
}; };
&i2c0 { &i2c0 {
compatible = "nordic,nrf-twi"; compatible = "nordic,nrf-twi";
pinctrl-0 = <&i2c0_default>; sda-pin = <17>;
pinctrl-1 = <&i2c0_sleep>; scl-pin = <20>;
pinctrl-names = "default", "sleep";
}; };
&uart0 { &uart0 {
compatible = "nordic,nrf-uarte"; compatible = "nordic,nrf-uarte";
current-speed = <115200>; tx-pin = <8>;
pinctrl-0 = <&uart0_default>; rx-pin = <4>;
pinctrl-1 = <&uart0_sleep>;
pinctrl-names = "default", "sleep";
}; };
&usbd { &usbd {
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"; label = "CDC_ACM_0";
}; };
}; };
&flash0 { &flash0 {
/* /*
* For more information, see: * For more information, see:
* http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html * http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
*/ */
partitions { partitions {
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
sd_partition: partition@0 { sd_partition: partition@0 {
label = "softdevice"; label = "mbr";
reg = <0x00000000 0x00026000>; reg = <0x00000000 0x00001000>;
}; };
code_partition: partition@26000 { code_partition: partition@1000 {
label = "code_partition"; label = "code_partition";
reg = <0x00026000 0x000c6000>; reg = <0x00001000 0x000d3000>;
}; };
/* /*
* The flash starting at 0x000ec000 and ending at * The flash starting at 0x000ec000 and ending at
* 0x000f3fff is reserved for use by the application. * 0x000f3fff is reserved for use by the application.
*/ */
/* /*
* Storage partition will be used by FCB/LittleFS/NVS * Storage partition will be used by FCB/LittleFS/NVS
* if enabled. * if enabled.
*/ */
storage_partition: partition@ec000 { storage_partition: partition@ec000 {
label = "storage"; label = "storage";
reg = <0x000ec000 0x00008000>; reg = <0x000ec000 0x00008000>;
}; };
boot_partition: partition@f4000 { boot_partition: partition@f4000 {
label = "adafruit_boot"; label = "adafruit_boot";
reg = <0x000f4000 0x0000c000>; reg = <0x000f4000 0x0000c000>;
}; };
}; };
}; };

View file

@ -7,8 +7,6 @@ CONFIG_BOARD_MIKOTO_520=y
# Enable MPU # Enable MPU
CONFIG_ARM_MPU=y CONFIG_ARM_MPU=y
CONFIG_PINCTRL=y
# enable GPIO # enable GPIO
CONFIG_GPIO=y CONFIG_GPIO=y

View file

@ -4,19 +4,19 @@
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
*/ */
#include <zephyr/kernel.h> #include <kernel.h>
#include <zephyr/device.h> #include <device.h>
#include <zephyr/init.h> #include <init.h>
#include <zephyr/drivers/gpio.h> #include <drivers/gpio.h>
#include <zephyr/sys/sys_io.h> #include <sys/sys_io.h>
#include <zephyr/devicetree.h> #include <devicetree.h>
static int pinmux_mikoto_init(const struct device *port) { static int pinmux_mikoto_init(const struct device *port) {
ARG_UNUSED(port); ARG_UNUSED(port);
#if CONFIG_BOARD_MIKOTO_520 #if CONFIG_BOARD_MIKOTO_520
const struct device *p0 = DEVICE_DT_GET(DT_NODELABEL(gpio0)); const struct device *p0 = device_get_binding("GPIO_0");
const struct device *p1 = DEVICE_DT_GET(DT_NODELABEL(gpio1)); const struct device *p1 = device_get_binding("GPIO_1");
#if CONFIG_BOARD_MIKOTO_CHARGER_CURRENT_40MA #if CONFIG_BOARD_MIKOTO_CHARGER_CURRENT_40MA
gpio_pin_configure(p0, 26, GPIO_INPUT | GPIO_PULL_DOWN); gpio_pin_configure(p0, 26, GPIO_INPUT | GPIO_PULL_DOWN);
gpio_pin_configure(p1, 15, GPIO_INPUT); gpio_pin_configure(p1, 15, GPIO_INPUT);

View file

@ -1,44 +1,44 @@
if SHIELD_CORNE_LEFT if SHIELD_CORNE_LEFT
config ZMK_KEYBOARD_NAME config ZMK_KEYBOARD_NAME
default "Corne" default "Corne"
config ZMK_SPLIT_ROLE_CENTRAL config ZMK_SPLIT_ROLE_CENTRAL
default y default y
endif endif
if SHIELD_CORNE_LEFT || SHIELD_CORNE_RIGHT if SHIELD_CORNE_LEFT || SHIELD_CORNE_RIGHT
config ZMK_SPLIT config ZMK_SPLIT
default y default y
if ZMK_DISPLAY if ZMK_DISPLAY
config I2C config I2C
default y default y
config SSD1306 config SSD1306
default y default y
config SSD1306_REVERSE_MODE config SSD1306_REVERSE_MODE
default y default y
endif # ZMK_DISPLAY endif # ZMK_DISPLAY
if LVGL if LVGL
config LV_Z_VDB_SIZE config LVGL_VDB_SIZE
default 64 default 64
config LV_Z_DPI config LVGL_DPI
default 148 default 148
config LV_Z_BITS_PER_PIXEL config LVGL_BITS_PER_PIXEL
default 1 default 1
choice LV_COLOR_DEPTH choice LVGL_COLOR_DEPTH
default LV_COLOR_DEPTH_1 default LVGL_COLOR_DEPTH_1
endchoice endchoice
endif # LVGL endif # LVGL

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
config SHIELD_CORNE_LEFT config SHIELD_CORNE_LEFT
def_bool $(shields_list_contains,corne_left) def_bool $(shields_list_contains,corne_left)
config SHIELD_CORNE_RIGHT config SHIELD_CORNE_RIGHT
def_bool $(shields_list_contains,corne_right) def_bool $(shields_list_contains,corne_right)

View file

@ -1,47 +1,33 @@
#include <dt-bindings/led/led.h> #include <dt-bindings/led/led.h>
&pinctrl { &spi1 {
spi3_default: spi3_default { compatible = "nordic,nrf-spim";
group1 { /* Cannot be used together with i2c0. */
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>; status = "okay";
}; mosi-pin = <6>;
}; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself.
sck-pin = <5>;
miso-pin = <7>;
spi3_sleep: spi3_sleep { led_strip: ws2812@0 {
group1 { compatible = "worldsemi,ws2812-spi";
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>; label = "SK6812mini";
low-power-enable;
};
};
};
&spi3 { /* SPI */
compatible = "nordic,nrf-spim"; reg = <0>; /* ignored, but necessary for SPI bindings */
status = "okay"; spi-max-frequency = <4000000>;
pinctrl-0 = <&spi3_default>; /* WS2812 */
pinctrl-1 = <&spi3_sleep>; chain-length = <6>; /* There are per-key RGB, but the first 6 are underglow */
pinctrl-names = "default", "sleep"; spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
led_strip: ws2812@0 { color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
compatible = "worldsemi,ws2812-spi"; };
label = "WS2812";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
}; };
/ { / {
chosen { chosen {
zmk,underglow = &led_strip; zmk,underglow = &led_strip;
}; };
}; };

View file

@ -1,47 +0,0 @@
#include <dt-bindings/led/led.h>
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
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";
label = "WS2812";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
};
/ {
chosen {
zmk,underglow = &led_strip;
};
};

View file

@ -7,77 +7,77 @@
#include <dt-bindings/zmk/matrix_transform.h> #include <dt-bindings/zmk/matrix_transform.h>
/ { / {
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 {
compatible = "zmk,matrix-transform"; compatible = "zmk,matrix-transform";
columns = <12>; columns = <12>;
rows = <4>; rows = <4>;
// | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 | // | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 |
// | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 | // | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 |
// | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 | // | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 | // | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = < map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>; >;
}; };
five_column_transform: keymap_transform_1 { five_column_transform: keymap_transform_1 {
compatible = "zmk,matrix-transform"; compatible = "zmk,matrix-transform";
columns = <10>; columns = <10>;
rows = <4>; rows = <4>;
// | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 | // | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 |
// | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 | // | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 |
// | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 | // | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 | // | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = < map = <
RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10)
RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10)
RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10)
RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8)
>; >;
}; };
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN"; label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
= <&pro_micro 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> = <&pro_micro 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
; ;
};
}; // TODO: per-key RGB node(s)?
// TODO: per-key RGB node(s)?
}; };
&pro_micro_i2c { &pro_micro_i2c {
status = "okay"; status = "okay";
oled: ssd1306@3c { oled: ssd1306@3c {
compatible = "solomon,ssd1306fb"; compatible = "solomon,ssd1306fb";
reg = <0x3c>; reg = <0x3c>;
label = "DISPLAY"; label = "DISPLAY";
width = <128>; width = <128>;
height = <32>; height = <32>;
segment-offset = <0>; segment-offset = <0>;
page-offset = <0>; page-offset = <0>;
display-offset = <0>; display-offset = <0>;
multiplex-ratio = <31>; multiplex-ratio = <31>;
segment-remap; segment-remap;
com-invdir; com-invdir;
com-sequential; com-sequential;
prechargep = <0x22>; prechargep = <0x22>;
}; };
}; };

View file

@ -35,7 +35,7 @@
&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 TAB &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSPC
&bt BT_CLR &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 &bt BT_CLR &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 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp LSHFT &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
&kp LGUI &trans &kp SPACE &kp RET &trans &kp RALT &kp LGUI &trans &kp SPACE &kp RET &trans &kp RALT
>; >;
}; };
@ -49,7 +49,7 @@
&kp TAB &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp CARET &kp AMPS &kp KP_MULTIPLY &kp LPAR &kp RPAR &kp BSPC &kp TAB &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp CARET &kp AMPS &kp KP_MULTIPLY &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 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 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 &kp LGUI &trans &kp SPACE &kp RET &trans &kp RALT
>; >;
}; };
}; };

View file

@ -7,12 +7,12 @@
#include "corne.dtsi" #include "corne.dtsi"
&kscan0 { &kscan0 {
col-gpios col-gpios
= <&pro_micro 21 GPIO_ACTIVE_HIGH> = <&pro_micro 21 GPIO_ACTIVE_HIGH>
, <&pro_micro 20 GPIO_ACTIVE_HIGH> , <&pro_micro 20 GPIO_ACTIVE_HIGH>
, <&pro_micro 19 GPIO_ACTIVE_HIGH> , <&pro_micro 19 GPIO_ACTIVE_HIGH>
, <&pro_micro 18 GPIO_ACTIVE_HIGH> , <&pro_micro 18 GPIO_ACTIVE_HIGH>
, <&pro_micro 15 GPIO_ACTIVE_HIGH> , <&pro_micro 15 GPIO_ACTIVE_HIGH>
, <&pro_micro 14 GPIO_ACTIVE_HIGH> , <&pro_micro 14 GPIO_ACTIVE_HIGH>
; ;
}; };

View file

@ -7,20 +7,16 @@
#include "corne.dtsi" #include "corne.dtsi"
&default_transform { &default_transform {
col-offset = <6>; col-offset = <6>;
};
&five_column_transform {
col-offset = <6>;
}; };
&kscan0 { &kscan0 {
col-gpios col-gpios
= <&pro_micro 14 GPIO_ACTIVE_HIGH> = <&pro_micro 14 GPIO_ACTIVE_HIGH>
, <&pro_micro 15 GPIO_ACTIVE_HIGH> , <&pro_micro 15 GPIO_ACTIVE_HIGH>
, <&pro_micro 18 GPIO_ACTIVE_HIGH> , <&pro_micro 18 GPIO_ACTIVE_HIGH>
, <&pro_micro 19 GPIO_ACTIVE_HIGH> , <&pro_micro 19 GPIO_ACTIVE_HIGH>
, <&pro_micro 20 GPIO_ACTIVE_HIGH> , <&pro_micro 20 GPIO_ACTIVE_HIGH>
, <&pro_micro 21 GPIO_ACTIVE_HIGH> , <&pro_micro 21 GPIO_ACTIVE_HIGH>
; ;
}; };

View file

@ -2,44 +2,44 @@
if SHIELD_LILY58_LEFT if SHIELD_LILY58_LEFT
config ZMK_KEYBOARD_NAME config ZMK_KEYBOARD_NAME
default "Lily58" default "Lily58"
config ZMK_SPLIT_ROLE_CENTRAL config ZMK_SPLIT_ROLE_CENTRAL
default y default y
endif endif
if SHIELD_LILY58_LEFT || SHIELD_LILY58_RIGHT if SHIELD_LILY58_LEFT || SHIELD_LILY58_RIGHT
config ZMK_SPLIT config ZMK_SPLIT
default y default y
if ZMK_DISPLAY if ZMK_DISPLAY
config I2C config I2C
default y default y
config SSD1306 config SSD1306
default y default y
config SSD1306_REVERSE_MODE config SSD1306_REVERSE_MODE
default y default y
endif # ZMK_DISPLAY endif # ZMK_DISPLAY
if LVGL if LVGL
config LV_Z_VDB_SIZE config LVGL_VDB_SIZE
default 64 default 64
config LV_Z_DPI config LVGL_DPI
default 148 default 148
config LV_Z_BITS_PER_PIXEL config LVGL_BITS_PER_PIXEL
default 1 default 1
choice LV_COLOR_DEPTH choice LVGL_COLOR_DEPTH
default LV_COLOR_DEPTH_1 default LVGL_COLOR_DEPTH_1
endchoice endchoice
endif # LVGL endif # LVGL

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
config SHIELD_LILY58_LEFT config SHIELD_LILY58_LEFT
def_bool $(shields_list_contains,lily58_left) def_bool $(shields_list_contains,lily58_left)
config SHIELD_LILY58_RIGHT config SHIELD_LILY58_RIGHT
def_bool $(shields_list_contains,lily58_right) def_bool $(shields_list_contains,lily58_right)

View file

@ -1,47 +1,37 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <dt-bindings/led/led.h> #include <dt-bindings/led/led.h>
&pinctrl { &spi1 {
spi3_default: spi3_default { compatible = "nordic,nrf-spim";
group1 { status = "okay";
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>; mosi-pin = <6>;
}; // Unused pins, needed for SPI definition, but not used by the ws2812 driver itself.
}; sck-pin = <5>;
miso-pin = <7>;
spi3_sleep: spi3_sleep { led_strip: ws2812@0 {
group1 { compatible = "worldsemi,ws2812-spi";
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>; label = "WS2812";
low-power-enable;
};
};
};
&spi3 { /* SPI */
compatible = "nordic,nrf-spim"; reg = <0>; /* ignored, but necessary for SPI bindings */
status = "okay"; spi-max-frequency = <4000000>;
pinctrl-0 = <&spi3_default>; /* WS2812 */
pinctrl-1 = <&spi3_sleep>; chain-length = <5>; /* number of LEDs */
pinctrl-names = "default", "sleep"; spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
led_strip: ws2812@0 { color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
compatible = "worldsemi,ws2812-spi"; };
label = "WS2812";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
}; };
/ { / {
chosen { chosen {
zmk,underglow = &led_strip; zmk,underglow = &led_strip;
}; };
}; };

View file

@ -1,47 +0,0 @@
#include <dt-bindings/led/led.h>
&pinctrl {
spi3_default: spi3_default {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
};
};
spi3_sleep: spi3_sleep {
group1 {
psels = <NRF_PSEL(SPIM_MOSI, 0, 6)>;
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";
label = "WS2812";
/* SPI */
reg = <0>; /* ignored, but necessary for SPI bindings */
spi-max-frequency = <4000000>;
/* WS2812 */
chain-length = <10>; /* arbitrary; change at will */
spi-one-frame = <0x70>;
spi-zero-frame = <0x40>;
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
};
};
/ {
chosen {
zmk,underglow = &led_strip;
};
};

View file

@ -1,6 +1,9 @@
# Uncomment to enable encoder CONFIG_ZMK_SLEEP=y
# CONFIG_EC11=y CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=1800000
# CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y CONFIG_ZMK_BATTERY_REPORT_INTERVAL=900
# Uncomment the following line to enable the Lily58 OLED Display
# CONFIG_ZMK_DISPLAY=y CONFIG_ZMK_USB_INIT_PRIORITY=10
CONFIG_ZMK_BLE_INIT_PRIORITY=90
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y

View file

@ -7,75 +7,41 @@
#include <dt-bindings/zmk/matrix_transform.h> #include <dt-bindings/zmk/matrix_transform.h>
/ { / {
chosen { chosen {
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 {
compatible = "zmk,matrix-transform"; compatible = "zmk,matrix-transform";
columns = <16>; columns = <16>;
rows = <5>; rows = <5>;
// | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 | | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | // | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 | | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 |
// | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 | | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | // | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 | | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 |
// | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 | | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | // | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 | | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 |
// | SW24 | SW23 | SW22 | SW21 | SW20 | SW19 | SW25 | | SW25 | SW19 | SW20 | SW21 | SW22 | SW23 | SW24 | // | SW24 | SW23 | SW22 | SW21 | SW20 | SW19 | SW25 | | SW25 | SW19 | SW20 | SW21 | SW22 | SW23 | SW24 |
// | SW29 | SW28 | SW27 | SW26 | | SW26 | SW27 | SW28 | SW29 | // | SW29 | SW28 | SW27 | SW26 | | SW26 | SW27 | SW28 | SW29 |
map = < map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11)
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11)
RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,7) RC(4,8) RC(4,9) RC(4,10) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,7) RC(4,8) RC(4,9) RC(4,10)
>; >;
}; };
kscan0: kscan { kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix"; compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN"; label = "KSCAN";
diode-direction = "col2row"; diode-direction = "col2row";
row-gpios row-gpios
= <&pro_micro 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> = <&pro_micro 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> , <&pro_micro 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
; ;
}; };
left_encoder: encoder_left {
compatible = "alps,ec11";
label = "LEFT_ENCODER";
a-gpios = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
b-gpios = <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
resolution = <4>;
};
sensors {
compatible = "zmk,keymap-sensors";
sensors = <&left_encoder>;
};
};
&pro_micro_i2c {
status = "okay";
oled: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = <0x3c>;
label = "DISPLAY";
width = <128>;
height = <32>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <31>;
segment-remap;
com-invdir;
com-sequential;
prechargep = <0x22>;
};
}; };

View file

@ -0,0 +1,56 @@
#define DFT 0
#define LWR 1
#define RSE 2
#define ADJ 3
#define Z_BOOT &bootloader
#define Z_BT_0 &bt BT_SEL 0
#define Z_BT_1 &bt BT_SEL 1
#define Z_BT_2 &bt BT_SEL 2
#define Z_BT_3 &bt BT_SEL 3
#define Z_BT_4 &bt BT_SEL 4
#define Z_BT_C &bt BT_CLR
#define Z_VUP &kp C_VOL_UP
#define Z_VDN &kp C_VOL_DN
#define Z_MUT &kp C_MUTE
#define CPW &caps_word
#define OUT_T &out OUT_TOG
#define OUT_U &out OUT_USB
#define OUT_B &out OUT_BLE
#define EP_T &ext_power EP_TOG
#define EP_ON &ext_power EP_ON
#define EP_OF &ext_power EP_OFF
#define ESCT &mt TILD ESC
#define FN1 &mt F1 N1
#define FN2 &mt F2 N2
#define FN3 &mt F3 N3
#define FN4 &mt F4 N4
#define FN5 &mt F5 N5
#define FN6 &mt F6 N6
#define FN7 &mt F7 N7
#define FN8 &mt F8 N8
#define FN9 &mt F9 N9
#define FN10 &mt F10 N0
#define FN11 &mt F11 MINUS
#define ______ &trans
#define XXXXXX &none
// Combo macro
#define COMBO(name, keypress, keypos) \
combo_##name { \
layers = <0 2>; \
timeout-ms = <50>; \
bindings = <keypress>; \
key-positions = <keypos>; \
};
// Macro macro
#define MACRO(name, keys) \
name: name##_macro { \
label = #name; \
compatible = "zmk,behavior-macro";\
#binding-cells = <0>; \
tap-ms = <1>; \
wait-ms = <1>; \
bindings = <keys>; \
};

View file

@ -7,64 +7,109 @@
#include <behaviors.dtsi> #include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h> #include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/bt.h> #include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/ext_power.h> #include <dt-bindings/zmk/outputs.h>
#include "lily58.h"
&kscan0 {
debounce-press-ms = <3>;
debounce-release-ms = <3>;
debounce-scan-period-ms = <10>;
};
&mt {
flavor = "tap-preferred";
tapping-term-ms = <400>;
quick-tap-ms = <200>;
};
&caps_word {
continue-list = <UNDER MINUS BSPC>;
};
/ { / {
keymap { keymap {
compatible = "zmk,keymap"; compatible = "zmk,keymap";
default_layer { default_layer {
// ------------------------------------------------------------------------------------------------------------ bindings = <
// | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
// | TAB | Q | W | E | R | T | | Y | U | I | O | P | - | // ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
// | CTRL | A | S | D | F | G | | H | J | K | L | ; | ' | ESCT FN1 FN2 FN3 FN4 FN5 FN6 FN7 FN8 FN9 FN10 FN11
// | SHIFT | Z | X | C | V | B | "[" | | "]" | N | M | , | . | / | SHIFT | // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
// | ALT | GUI | LOWER| SPACE | | ENTER | RAISE| BSPC | GUI | &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT
bindings = < // ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
&kp ESC &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp GRAVE &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 TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp MINUS // ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
&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 LPAR &kp RPAR &kp N &kp M &kp COMMA &kp DOT &kp SLASH &kp RSHFT
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp LBKT &kp RBKT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT // └────────┴────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴────────┤ ├────────┴──┬─────┴──┬─────┴──┬─────┴──┬─────┴────────┴────────┘
&kp LALT &kp LGUI &mo 1 &kp SPACE &kp RET &mo 2 &kp BSPC &kp RGUI &mo ADJ &kp LGUI &mo RSE &kp SPACE &kp ENTER &mo LWR &kp RALT &kp BKSP
>; // └────────┴────────┴────────┴───────────┘ └───────────┴────────┴────────┴────────┘
>;
};
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>; lower_layer {
bindings = <
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
&kp GRAVE &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp CARET &kp AMPS &kp STAR &kp LPRN &kp RPRN &kp UNDER
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
______ &kp AT &kp HASH &kp DLLR &kp CARET &kp STAR ______ ______ ______ ______ ______ ______
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
CPW &kp QMARK XXXXXX &kp LBKT &kp RBKT &kp COLN ______ ______ ______ ______ ______ ______
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
______ &kp UNDER &kp DQT &kp LPRN &kp RPRN &kp PIPE ______ ______ ______ ______ ______ ______ ______ ______
// └────────┴────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴────────┤ ├────────┴──┬─────┴──┬─────┴──┬─────┴──┬─────┴────────┴────────┘
______ ______ ______ ______ ______ ______ ______ ______
// └────────┴────────┴────────┴───────────┘ └───────────┴────────┴────────┴────────┘
>;
};
raise_layer {
bindings = <
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
______ XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX &kp PSCRN XXXXXX XXXXXX XXXXXX XXXXXX &kp EQL
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
______ ______ ______ ______ ______ ______ &kp INS &kp N7 &kp N8 &kp N9 XXXXXX &kp RBKT
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
______ ______ ______ ______ ______ ______ &kp DEL &kp N4 &kp N5 &kp N6 &kp LT &kp GT
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
______ ______ ______ ______ ______ ______ ______ ______ &kp N0 &kp N1 &kp N2 &kp N3 &kp DOT ______
// └────────┴────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴────────┤ ├────────┴──┬─────┴──┬─────┴──┬─────┴──┬─────┴────────┴────────┘
______ ______ ______ ______ ______ ______ ______ ______
// └────────┴────────┴────────┴───────────┘ └───────────┴────────┴────────┴────────┘
>;
};
adjust_layer {
bindings = <
// ┌──[0]───┬──[1]───┬──[2]───┬──[3]───┬──[4]───┬──[5]───┐ ┌──[6]───┬──[7]───┬──[8]───┬──[9]───┬──[10]──┬──[11]──┐
______ Z_BT_0 Z_BT_1 Z_BT_2 Z_BT_3 Z_BT_4 Z_VUP XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX
// ├──[12]──┼──[13]──┼──[14]──┼──[15]──┼──[16]──┼──[17]──┤ ├──[18]──┼──[19]──┼──[20]──┼──[21]──┼──[22]──┼──[23]──┤
______ ______ ______ ______ OUT_T Z_BT_C Z_VDN &kp HOME &kp UP &kp END &kp PGUP &kp BSLH
// ├──[24]──┼──[25]──┼──[26]──┼──[27]──┼──[28]──┼──[29]──┤ ├──[30]──┼──[31]──┼──[32]──┼──[33]──┼──[34]──┼──[35]──┤
______ ______ ______ ______ ______ ______ Z_MUT &kp LEFT &kp DOWN &kp RIGHT &kp PGDN ______
// ├──[36]──┼──[37]──┼──[38]──┼──[39]──┼──[40]──┼──[41]──┼──[52]──┐ ┌──[53]──┼──[42]──┼──[43]──┼──[44]──┼──[45]──┼──[46]──┼──[47]──┤
______ ______ ______ ______ &suspend Z_BOOT &vim_s &vim_q Z_BOOT &suspend ______ ______ ______ ______
// └────────┴────────┴─────┬──┴[48]─┬──┴[49]─┬──┴[50]─┬──┴──[51]──┤ ├──[54]──┴──┬─[55]┴──┬─[56]┴──┬─[57]┴──┬─────┴────────┴────────┘
______ ______ ______ ______ ______ ______ ______ ______
// └────────┴────────┴────────┴───────────┘ └───────────┴────────┴────────┴────────┘
>;
};
}; };
lower_layer { combos {
// ------------------------------------------------------------------------------------------------------------ compatible = "zmk,combos";
// | BTCLR | BT1 | BT2 | BT3 | BT4 | BT5 | | | | | | | | // layer toggle
// | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | COMBO(nlock, &tog RSE, 28 31)
// | ` | ! | @ | # | $ | % | | ^ | & | * | ( | ) | ~ | COMBO(caps, &kp CAPS, 25 34)
// | | | | | | | | | | | _ | + | { | } | "|" | // vim shortcuts
// | | | | | | | | | | };
bindings = <
&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans macros {
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 MACRO(vim_q, &kp COLON &kp Q &kp EXCL)
&kp GRAVE &kp EXCL &kp AT &kp HASH &kp DOLLAR &kp PRCNT &kp CARET &kp AMPS &kp KP_MULTIPLY &kp LPAR &kp RPAR &kp TILDE MACRO(vim_s, &kp COLON &kp W &kp Q)
&trans &ext_power EP_ON &ext_power EP_OFF &ext_power EP_TOG &trans &trans &trans &trans &trans &kp MINUS &kp KP_PLUS &kp LBRC &kp RBRC &kp PIPE MACRO(dir_up, &kp DOT &kp DOT &kp FSLH)
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
};
raise_layer {
// ------------------------------------------------------------------------------------------------------------
// | | | | | | | | | | | | | |
// | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
// | F1 | F2 | F3 | F4 | F5 | F6 | | | <- | v | ^ | -> | |
// | F7 | F8 | F9 | F10 | F11 | F12 | | | | + | - | = | [ | ] | \ |
// | | | | | | | | | |
bindings = <
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &trans
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &trans &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans
&kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &trans &trans &kp KP_PLUS &kp MINUS &kp EQUAL &kp LBKT &kp RBKT &kp BSLH
&trans &trans &trans &trans &trans &trans &trans &trans
>;
sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN>;
};
}; };
}; };

View file

@ -1,3 +1,9 @@
# Uncomment to enable encoder CONFIG_ZMK_SLEEP=y
# CONFIG_EC11=y CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=1800000
# CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y CONFIG_ZMK_BATTERY_REPORT_INTERVAL=900
CONFIG_ZMK_USB_INIT_PRIORITY=10
CONFIG_ZMK_BLE_INIT_PRIORITY=90
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y

View file

@ -7,16 +7,12 @@
#include "lily58.dtsi" #include "lily58.dtsi"
&kscan0 { &kscan0 {
col-gpios col-gpios
= <&pro_micro 19 GPIO_ACTIVE_HIGH> = <&pro_micro 19 GPIO_ACTIVE_HIGH>
, <&pro_micro 18 GPIO_ACTIVE_HIGH> , <&pro_micro 18 GPIO_ACTIVE_HIGH>
, <&pro_micro 15 GPIO_ACTIVE_HIGH> , <&pro_micro 15 GPIO_ACTIVE_HIGH>
, <&pro_micro 14 GPIO_ACTIVE_HIGH> , <&pro_micro 14 GPIO_ACTIVE_HIGH>
, <&pro_micro 16 GPIO_ACTIVE_HIGH> , <&pro_micro 16 GPIO_ACTIVE_HIGH>
, <&pro_micro 10 GPIO_ACTIVE_HIGH> , <&pro_micro 10 GPIO_ACTIVE_HIGH>
; ;
};
&left_encoder {
status = "okay";
}; };

View file

@ -1 +1,13 @@
CONFIG_ZMK_SLEEP=y
CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=1800000
CONFIG_ZMK_BATTERY_REPORT_INTERVAL=1800
CONFIG_ZMK_USB_INIT_PRIORITY=10
CONFIG_ZMK_BLE_INIT_PRIORITY=90
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=9
CONFIG_BT_PERIPHERAL_PREF_LATENCY=16
CONFIG_BT_BUF_ACL_TX_COUNT=32
CONFIG_BT_L2CAP_TX_BUF_COUNT=32

View file

@ -7,16 +7,16 @@
#include "lily58.dtsi" #include "lily58.dtsi"
&default_transform { &default_transform {
col-offset = <6>; col-offset = <6>;
}; };
&kscan0 { &kscan0 {
col-gpios col-gpios
= <&pro_micro 10 GPIO_ACTIVE_HIGH> = <&pro_micro 10 GPIO_ACTIVE_HIGH>
, <&pro_micro 16 GPIO_ACTIVE_HIGH> , <&pro_micro 16 GPIO_ACTIVE_HIGH>
, <&pro_micro 14 GPIO_ACTIVE_HIGH> , <&pro_micro 14 GPIO_ACTIVE_HIGH>
, <&pro_micro 15 GPIO_ACTIVE_HIGH> , <&pro_micro 15 GPIO_ACTIVE_HIGH>
, <&pro_micro 18 GPIO_ACTIVE_HIGH> , <&pro_micro 18 GPIO_ACTIVE_HIGH>
, <&pro_micro 19 GPIO_ACTIVE_HIGH> , <&pro_micro 19 GPIO_ACTIVE_HIGH>
; ;
}; };

View file

@ -0,0 +1,16 @@
if SHIELD_ORTHRUS_LEFT
config ZMK_KEYBOARD_NAME
default "Orthrus"
config ZMK_SPLIT_BLE_ROLE_CENTRAL
default y
endif
if SHIELD_ORTHRUS_LEFT || SHIELD_ORTHRUS_RIGHT
config ZMK_SPLIT
default y
endif

View file

@ -0,0 +1,8 @@
# Copyright (c) 2020 Pete Johanson
# SPDX-License-Identifier: MIT
config SHIELD_ORTHRUS_LEFT
def_bool $(shields_list_contains,orthrus_left)
config SHIELD_ORTHRUS_RIGHT
def_bool $(shields_list_contains,orthrus_right)

View file

View file

@ -0,0 +1,30 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include <dt-bindings/zmk/matrix_transform.h>
/ {
chosen {
zmk,matrix_transform = &default_transform;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <56>;
rows = <1>;
// | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 |
// | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 |
// | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 |
// | SW19 | SW20 | SW21 | | SW21 | SW20 | SW19 |
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,28) RC(0,29) RC(0,30) RC(0,31) RC(0,32) RC(0,33)
RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,34) RC(0,35) RC(0,36) RC(0,37) RC(0,38) RC(0,39)
RC(0,12) RC(0,13) RC(0,14) RC(0,15) RC(0,16) RC(0,17) RC(0,40) RC(0,41) RC(0,42) RC(0,43) RC(0,44) RC(0,45)
RC(0,18) RC(0,19) RC(0,20) RC(0,21) RC(0,22) RC(0,23) RC(0,46) RC(0,47) RC(0,48) RC(0,49) RC(0,50) RC(0,51)
RC(0,24) RC(0,25) RC(0,26) RC(0,27) RC(0,52) RC(0,53) RC(0,54) RC(0,55)
>;
};
};

View file

@ -0,0 +1,66 @@
/*
* 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>
&mt {
flavor = "tap-preferred";
tapping-term-ms = <400>;
quick-tap-ms = <200>;
};
#define DFT 0
#define LWR 1
#define RSE 2
#define ADJ 3
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
bindings = <
&mt F12 ESC &mt F1 N1 &mt F2 N2 &mt F3 N3 &mt F4 N4 &mt F5 N5 &mt F6 N6 &mt F7 N7 &mt F8 N8 &mt F9 N9 &mt F10 N0 &mt F11 MINUS
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBRC
&kp LGUI &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 SLASH &kp RSHFT
&mo ADJ &kp LCTRL &mo RSE &kp SPACE &kp ENTER &mo LWR &kp RALT &kp BKSP
>;
};
lower_layer {
bindings = <
&kp GRAVE &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp CARET &kp AMPS &kp STAR &kp LPRN &kp RPRN &kp UNDER
&kp TILD &kp AT &kp HASH &kp DLLR &kp CARET &kp STAR &trans &trans &trans &trans &trans &trans
&kp CAPS &kp QMARK &none &kp LBKT &kp RBKT &kp COLN &trans &trans &trans &trans &trans &trans
&trans &kp UNDER &kp DQT &kp LPRN &kp RPRN &kp PIPE &trans &trans &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans
>;
};
raise_layer {
bindings = <
&trans &none &none &none &none &none &kp PSCRN &none &none &none &none &kp EQL
&trans &trans &trans &trans &trans &trans &kp INS &kp N7 &kp N8 &kp N9 &trans &kp RBRC
&trans &trans &trans &trans &trans &trans &kp DEL &kp N4 &kp N5 &kp N6 &kp LT &kp GT
&trans &trans &trans &trans &trans &trans &kp N0 &kp N1 &kp N2 &kp N3 &kp DOT &trans
&trans &trans &trans &trans &trans &trans &trans &lt ADJ BKSP
>;
};
adjust_layer {
bindings = <
&trans &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &trans &trans &trans &trans &trans &trans
&trans &bt BT_PRV &bt BT_NXT &bt BT_CLR &trans &trans &trans &kp HOME &kp PGDN &kp PGUP &kp END &kp BSLH
&trans &trans &trans &trans &trans &trans &trans &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans
&trans &trans &trans &trans &reset &bootloader &bootloader &reset &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &trans &trans
>;
};
};
};

View file

@ -0,0 +1,11 @@
file_format: "1"
id: orthrus
name: Orthrus
type: shield
url: https://github.com/
requires: [mdbt50q]
features:
- keys
siblings:
- orthrus_left
- orthrus_right

View file

@ -0,0 +1,52 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include "orthrus.dtsi"
/ {
chosen {
zmk,kscan = &kscan0;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-direct";
label = "KSCAN";
input-gpios
= <&gpio1 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 23 #0 28
, <&gpio0 30 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 29 #1 29
, <&gpio0 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 0 #2 30
, <&gpio1 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 5 #3 31
, <&gpio0 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 9 #4 32
, <&gpio0 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 13 #5 33
, <&gpio1 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 22 #6 34
, <&gpio0 31 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 28 #7 35
, <&gpio0 27 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 30 #8 36
, <&gpio0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 4 #9 37
, <&gpio1 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 8 #10 38
, <&gpio0 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 14 #11 39
, <&gpio1 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 21 #12 40
, <&gpio0 29 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 25 #13 41
, <&gpio1 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 11 #14 42
, <&gpio0 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 3 #15 43
, <&gpio0 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 7 #16 44
, <&gpio0 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 15 #17 45
, <&gpio1 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 20 #18 46
, <&gpio1 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 24 #19 47
, <&gpio1 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 12 #20 48
, <&gpio0 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 2 #21 49
, <&gpio0 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 6 #22 50
, <&gpio0 17 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 16 #23 51
, <&gpio0 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 1 #24 52
, <&gpio0 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 10 #25 53
, <&gpio0 24 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 17 #26 54
, <&gpio1 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 18 #27 55
;
};
};
//&uart0 {
// tx-pin = <27>;
//};

View file

@ -0,0 +1,56 @@
/*
* Copyright (c) 2020 Pete Johanson
*
* SPDX-License-Identifier: MIT
*/
#include "orthrus.dtsi"
/ {
chosen {
zmk,kscan = &kscan0;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-direct";
label = "KSCAN";
input-gpios
= <&gpio0 30 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 29 #0 28
, <&gpio0 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 0 #1 29
, <&gpio0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 4 #2 30
, <&gpio0 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 9 #3 29
, <&gpio0 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 13 #4 30
, <&gpio0 24 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 17 #5 31
, <&gpio0 31 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 28 #6 32
, <&gpio0 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 1 #7 33
, <&gpio1 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 5 #8 34
, <&gpio0 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 10 #9 35
, <&gpio0 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 14 #10 36
, <&gpio1 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 18 #11 37
, <&gpio0 29 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 25 #12 38
, <&gpio0 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 2 #13 39
, <&gpio0 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 6 #14 40
, <&gpio1 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 11 #15 41
, <&gpio0 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 15 #16 42
, <&gpio1 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 19 #17 43
, <&gpio1 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 24 #18 44
, <&gpio0 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 3 #19 45
, <&gpio0 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 7 #20 46
, <&gpio1 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 12 #21 47
, <&gpio0 17 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 16 #22 48
, <&gpio1 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 20 #24 49
, <&gpio1 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 22 #25 50
, <&gpio1 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 23 #26 51
, <&gpio0 27 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 30 #27 52
, <&gpio1 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> // 8 #28 53
;
};
};
&default_transform {
col-offset = <28>;
};
//&uart0 {
// tx-pin = <27>;
//};

View file

@ -7,18 +7,24 @@
#include <dt-bindings/zmk/reset.h> #include <dt-bindings/zmk/reset.h>
/ { / {
behaviors { behaviors {
sys_reset: behavior_reset { reset: behavior_reset {
compatible = "zmk,behavior-reset"; compatible = "zmk,behavior-reset";
label = "SYSRESET"; label = "RESET";
#binding-cells = <0>; #binding-cells = <0>;
}; };
bootloader: behavior_reset_dfu { bootloader: behavior_reset_dfu {
compatible = "zmk,behavior-reset"; compatible = "zmk,behavior-reset";
label = "BOOTLOAD"; label = "BOOTLOAD";
type = <RST_UF2>; type = <RST_UF2>;
#binding-cells = <0>; #binding-cells = <0>;
}; };
suspend: behavior_reset_suspend {
compatible = "zmk,behavior-reset";
label = "SUSPEND";
type = <RST_SUSPEND>;
#binding-cells = <0>;
}; };
};
}; };

View file

@ -10,4 +10,6 @@
// AdaFruit nrf52 Bootloader Specific. See // AdaFruit nrf52 Bootloader Specific. See
// https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107 // https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/d6b28e66053eea467166f44875e3c7ec741cb471/src/main.c#L107
#define RST_UF2 0x57 #define RST_UF2 0x57
#define RST_OTA 0xA8
#define RST_SUSPEND 0xFE