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> + ; +};