From a78706fefdebc85b9039924e7388bfd8443bdec8 Mon Sep 17 00:00:00 2001 From: Hajime Suzuki Date: Tue, 30 Mar 2021 11:54:03 +0200 Subject: [PATCH] feat(shields): Add let's split shield --- .github/workflows/build.yml | 2 + .../shields/lets_split/Kconfig.defconfig | 26 ++++++++++++ app/boards/shields/lets_split/Kconfig.shield | 8 ++++ app/boards/shields/lets_split/README.md | 3 ++ app/boards/shields/lets_split/lets_split.dtsi | 32 ++++++++++++++ .../shields/lets_split/lets_split.keymap | 42 +++++++++++++++++++ .../lets_split/lets_split_left.overlay | 25 +++++++++++ .../lets_split/lets_split_right.overlay | 30 +++++++++++++ 8 files changed, 168 insertions(+) create mode 100644 app/boards/shields/lets_split/Kconfig.defconfig create mode 100644 app/boards/shields/lets_split/Kconfig.shield create mode 100644 app/boards/shields/lets_split/README.md create mode 100644 app/boards/shields/lets_split/lets_split.dtsi create mode 100644 app/boards/shields/lets_split/lets_split.keymap create mode 100644 app/boards/shields/lets_split/lets_split_left.overlay create mode 100644 app/boards/shields/lets_split/lets_split_right.overlay diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7011283..7c61f3d7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,6 +42,8 @@ jobs: - jorne_right - kyria_left - kyria_right + - lets_split_left + - lets_split_right - lily58_left - lily58_right - microdox_left diff --git a/app/boards/shields/lets_split/Kconfig.defconfig b/app/boards/shields/lets_split/Kconfig.defconfig new file mode 100644 index 00000000..aec82553 --- /dev/null +++ b/app/boards/shields/lets_split/Kconfig.defconfig @@ -0,0 +1,26 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +if SHIELD_LETS_SPLIT_LEFT + +config ZMK_KEYBOARD_NAME + default "LS_Left" + +config ZMK_SPLIT_BLE_ROLE_CENTRAL + default y + +endif + +if SHIELD_LETS_SPLIT_RIGHT + +config ZMK_KEYBOARD_NAME + default "LS_Right" + +endif + +if SHIELD_LETS_SPLIT_LEFT || SHIELD_LETS_SPLIT_RIGHT + +config ZMK_SPLIT + default y + +endif diff --git a/app/boards/shields/lets_split/Kconfig.shield b/app/boards/shields/lets_split/Kconfig.shield new file mode 100644 index 00000000..01863175 --- /dev/null +++ b/app/boards/shields/lets_split/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2020 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config SHIELD_LETS_SPLIT_LEFT + def_bool $(shields_list_contains,lets_split_left) + +config SHIELD_LETS_SPLIT_RIGHT + def_bool $(shields_list_contains,lets_split_right) diff --git a/app/boards/shields/lets_split/README.md b/app/boards/shields/lets_split/README.md new file mode 100644 index 00000000..16c53f17 --- /dev/null +++ b/app/boards/shields/lets_split/README.md @@ -0,0 +1,3 @@ +# Let's split shield + +Both controllers are placed top up. For the left keyboard, the controller is on the left side when you look at the bottom of the PCB, and on the right for the right side. diff --git a/app/boards/shields/lets_split/lets_split.dtsi b/app/boards/shields/lets_split/lets_split.dtsi new file mode 100644 index 00000000..05e8972b --- /dev/null +++ b/app/boards/shields/lets_split/lets_split.dtsi @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <12>; + rows = <4>; + 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(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(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7) RC(3,8) RC(3,9) RC(3,10) RC(3,11) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + diode-direction = "col2row"; + }; +}; diff --git a/app/boards/shields/lets_split/lets_split.keymap b/app/boards/shields/lets_split/lets_split.keymap new file mode 100644 index 00000000..27ea316c --- /dev/null +++ b/app/boards/shields/lets_split/lets_split.keymap @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + default_layer { + // | TAB | Q | W | E | R | T | | Y | U | I | O | P | BSPC | + // | ESC | A | S | D | F | G | | H | J | K | L | ; | ' | + // | SHIFT | Z | X | C | V | B | | N | M | , | . | / | RET | + // | none | LGUI | LALT | LCTL | NUMS | SPACE| |SPACE| BSPC | LEFT | DOWN | UP | RIGHT | + + 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 ESC &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 BSLH &kp RET + &none &kp LGUI &kp LALT &kp LCTRL &mo 1 &kp SPACE &kp SPACE &kp BSPC &kp LEFT &kp DOWN &kp UP &kp RIGHT + >; + }; + nums_layer { + // | | | | | | | | | | | | | | + // | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + // | | | | | | | | | | | | | | + // | | | | | | | | | | | | | | + // | | | | | | | | | | | | | | + + bindings = < + &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans + &trans &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &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 + >; + }; + + }; +}; diff --git a/app/boards/shields/lets_split/lets_split_left.overlay b/app/boards/shields/lets_split/lets_split_left.overlay new file mode 100644 index 00000000..681bc95e --- /dev/null +++ b/app/boards/shields/lets_split/lets_split_left.overlay @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include "lets_split.dtsi" + +&kscan0 { + row-gpios + = <&pro_micro_d 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + col-gpios + = <&pro_micro_d 10 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 16 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 15 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/lets_split/lets_split_right.overlay b/app/boards/shields/lets_split/lets_split_right.overlay new file mode 100644 index 00000000..17d63a83 --- /dev/null +++ b/app/boards/shields/lets_split/lets_split_right.overlay @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include "lets_split.dtsi" + +&default_transform { + col-offset = <6>; +}; + +&kscan0 { + + row-gpios + = <&pro_micro_d 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + col-gpios + = <&pro_micro_d 4 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 5 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 6 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 7 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 8 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 9 GPIO_ACTIVE_HIGH> + ; +};