diff --git a/app/boards/shields/dactyl/Kconfig.defconfig b/app/boards/shields/dactyl/Kconfig.defconfig new file mode 100644 index 00000000..e236e115 --- /dev/null +++ b/app/boards/shields/dactyl/Kconfig.defconfig @@ -0,0 +1,18 @@ +# Copyright (c) 2023 Matt Adereth +# SPDX-License-Identifier: MIT +if SHIELD_DACTYL_LEFT + +config ZMK_KEYBOARD_NAME + default "Dactyl" + +config ZMK_SPLIT_ROLE_CENTRAL + default y + +endif + +if SHIELD_DACTYL_LEFT || SHIELD_DACTYL_RIGHT + +config ZMK_SPLIT + default y + +endif diff --git a/app/boards/shields/dactyl/Kconfig.shield b/app/boards/shields/dactyl/Kconfig.shield new file mode 100644 index 00000000..fe18c002 --- /dev/null +++ b/app/boards/shields/dactyl/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2023 Matt Adereth +# SPDX-License-Identifier: MIT + +config SHIELD_DACTYL_LEFT + def_bool $(shields_list_contains,dactyl_left) + +config SHIELD_DACTYL_RIGHT + def_bool $(shields_list_contains,dactyl_right) diff --git a/app/boards/shields/dactyl/dactyl.conf b/app/boards/shields/dactyl/dactyl.conf new file mode 100644 index 00000000..974243c8 --- /dev/null +++ b/app/boards/shields/dactyl/dactyl.conf @@ -0,0 +1,6 @@ +# Uncomment the following lines to enable the Corne RGB Underglow +# CONFIG_ZMK_RGB_UNDERGLOW=y +# CONFIG_WS2812_STRIP=y + +# Uncomment the following line to enable the Corne OLED Display +# CONFIG_ZMK_DISPLAY=y diff --git a/app/boards/shields/dactyl/dactyl.dtsi b/app/boards/shields/dactyl/dactyl.dtsi new file mode 100644 index 00000000..bb352c18 --- /dev/null +++ b/app/boards/shields/dactyl/dactyl.dtsi @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * 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 = <6>; + +// | 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 | SW22 | SW23 | SW24 | | SW24 | SW23 | SW22 | SW21 | SW20 | SW19 | +// | SW25 | SW26 | SW27 | SW28 | SW29 | | SW29 | SW28 | SW27 | SW26 | SW25 | +// | SW32 | SW33 | | SW33 | SW32 | +// | SW30 | SW36 | SW34 | | SW34 | SW36 | SW30 | +// | SW35 | | SW35 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) RC(0,6) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) RC(1,6) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) RC(2,6) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) RC(3,6) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,10) RC(4,9) RC(4,8) RC(4,7) RC(4,6) + RC(5,1) RC(5,2) RC(5,8) RC(5,7) + RC(4,5) RC(5,5) RC(5,3) RC(5,9) RC(5,11) RC(4,11) + RC(5,4) RC(5,10) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + + row-gpios + = <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; +}; diff --git a/app/boards/shields/dactyl/dactyl.keymap b/app/boards/shields/dactyl/dactyl.keymap new file mode 100644 index 00000000..6cd9379d --- /dev/null +++ b/app/boards/shields/dactyl/dactyl.keymap @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + deafult_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | +// ------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | CAP | Q | W | E | R | T | | Y | U | I | O | P | \ | +// ------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | SFT | Z | X | C | V | B | | N | M | , | . | / | SFT | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | CTL | - | = | ← | → | | ↑ | ↓ | [ | ] | CTL | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ALT | GUI | | GUI | ALT | +// ----- ----- ----- ----- ----- ----- +// | | | HOM | | PG↑ | | | +// | BSP | SPC |----- -----| ENT | DEL | +// |(lt1)| | END | | PG↓ | |(lt2)| +// ----- ----- ----- ----- ----- ----- + 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 CAPS &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH + &kp TAB &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 RSHFT + &kp LCTRL &kp MINUS &kp EQUAL &kp LEFT &kp RIGHT &kp UP &kp DOWN &kp LBKT &kp RBKT &kp RCTRL + &kp LALT &kp LGUI &kp RGUI &kp LALT + < 1 BSPC &kp SPACE &kp HOME &kp PG_UP &kp ENT < 2 DEL + &kp END &kp PG_DN + >; + }; + + tkm_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | KP( | KP7 | KP8 | KP9 | KP) | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | SLK | INS | BRK | PSC | | | KP* | KP4 | KP5 | KP6 | KP+ | NLK | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | KP/ | KP1 | KP2 | KP3 | KP- | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | KP, | KP0 | KP. | KP↵ | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | ◌ | ◌ | +// ----- ----- ----- ----- ----- ----- +// | | | | | | | | +// | ◌ | |----- -----| SFT | mo3 | +// | | | | | CTL | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none &none &none + &none &none &none &none &none &none &kp KP_LPAR &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_RPAR &none + &none &kp SLCK &kp INS &kp PAUSE_BREAK &kp PSCRN &none &kp KP_ASTERISK &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_PLUS &kp KP_NUM + &none &none &none &none &none &none &kp KP_SLASH &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_MINUS &none + &none &none &none &none &none &kp KP_COMMA &kp KP_N0 &kp KP_DOT &kp KP_ENTER &none + &none &none &trans &trans + &trans &none &none &none &kp RSHFT &mo 3 + &none &kp RCTRL + >; + }; + + function_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | F4 | F3 | F2 | F1 | | | | F13 | F14 | F15 | F16 | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | F8 | F7 | F6 | F5 | | | | F17 | F18 | F19 | F20 | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | F12 | F11 | F10 | F9 | | | | F21 | F22 | F23 | F24 | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ◌ | ◌ | | | | +// ----- ----- ----- ----- ----- ----- +// | | | | | | | | +// | mo3 | SFT |----- -----| | ◌ | +// | | | CTL | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none &none &none + &none &kp F4 &kp F3 &kp F2 &kp F1 &none &none &kp F13 &kp F14 &kp F15 &kp F16 &none + &none &kp F8 &kp F7 &kp F6 &kp F5 &none &none &kp F17 &kp F18 &kp F19 &kp F20 &none + &none &kp F12 &kp F11 &kp F10 &kp F9 &none &none &kp F21 &kp F22 &kp F23 &kp F24 &none + &none &none &none &none &none &none &none &none &none &none + &trans &trans &none &none + &mo 3 &kp LSHFT &none &none &none &trans + &kp LCTRL &none + >; + }; + + system_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | VL+ | | BR+ | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BT5 | BT4 | BT3 | BT2 | BT1 | | | | VLm | mNT | mPP | mPV | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BTC | | | | | | | | VL- | | BR- | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | RST | BLR | | BLR | RST | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | +// ----- ----- ----- ----- ----- ----- +// | | | | | | | | +// | ◌ | |----- -----| | ◌ | +// | | | | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none &none &none + &none &none &none &none &none &none &none &kp C_VOL_UP &none &kp C_BRI_UP &none &none + &bt BT_SEL 5 &bt BT_SEL 4 &bt BT_SEL 3 &bt BT_SEL 2 &bt BT_SEL 1 &none &none &kp C_MUTE &kp C_NEXT &kp C_PP &kp C_PREV &none + &bt BT_CLR &none &none &none &none &none &none &kp C_VOL_DN &none &kp C_BRI_DN &none &none + &none &none &none &sys_reset &bootloader &bootloader &sys_reset &none &none &none + &none &none &none &none + &trans &none &none &none &none &trans + &none &none + >; + }; + }; +}; diff --git a/app/boards/shields/dactyl/dactyl.zmk.yml b/app/boards/shields/dactyl/dactyl.zmk.yml new file mode 100644 index 00000000..d0d0a4be --- /dev/null +++ b/app/boards/shields/dactyl/dactyl.zmk.yml @@ -0,0 +1,11 @@ +file_format: "1" +id: dactyl +name: Dactyl +type: shield +url: https://github.com/adereth/dactyl-keyboard +requires: [pro_micro] +features: + - keys +siblings: + - dactyl_left + - dactyl_right diff --git a/app/boards/shields/dactyl/dactyl_left.conf b/app/boards/shields/dactyl/dactyl_left.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl/dactyl_left.overlay b/app/boards/shields/dactyl/dactyl_left.overlay new file mode 100644 index 00000000..8e0c986d --- /dev/null +++ b/app/boards/shields/dactyl/dactyl_left.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl.dtsi" + +&kscan0 { + col-gpios + = <&pro_micro 4 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 9 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/dactyl/dactyl_right.conf b/app/boards/shields/dactyl/dactyl_right.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl/dactyl_right.overlay b/app/boards/shields/dactyl/dactyl_right.overlay new file mode 100644 index 00000000..4b0b0b8f --- /dev/null +++ b/app/boards/shields/dactyl/dactyl_right.overlay @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl.dtsi" + +&default_transform { + col-offset = <6>; +}; + +&kscan0 { + col-gpios + = <&pro_micro 9 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 4 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/dactyl_cc/Kconfig.defconfig b/app/boards/shields/dactyl_cc/Kconfig.defconfig new file mode 100644 index 00000000..ffa432ab --- /dev/null +++ b/app/boards/shields/dactyl_cc/Kconfig.defconfig @@ -0,0 +1,18 @@ +# Copyright (c) 2023 Matt Adereth +# SPDX-License-Identifier: MIT +if SHIELD_DACTYL_CC_LEFT + +config ZMK_KEYBOARD_NAME + default "Dactyl CC" + +config ZMK_SPLIT_ROLE_CENTRAL + default y + +endif + +if SHIELD_DACTYL_CC_LEFT || SHIELD_DACTYL_CC_RIGHT + +config ZMK_SPLIT + default y + +endif diff --git a/app/boards/shields/dactyl_cc/Kconfig.shield b/app/boards/shields/dactyl_cc/Kconfig.shield new file mode 100644 index 00000000..151c8dda --- /dev/null +++ b/app/boards/shields/dactyl_cc/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2023 Michael Johns +# SPDX-License-Identifier: MIT + +config SHIELD_DACTYL_CC_LEFT + def_bool $(shields_list_contains,dactyl_cc_left) + +config SHIELD_DACTYL_CC_RIGHT + def_bool $(shields_list_contains,dactyl_cc_right) diff --git a/app/boards/shields/dactyl_cc/dactyl_cc.conf b/app/boards/shields/dactyl_cc/dactyl_cc.conf new file mode 100644 index 00000000..974243c8 --- /dev/null +++ b/app/boards/shields/dactyl_cc/dactyl_cc.conf @@ -0,0 +1,6 @@ +# Uncomment the following lines to enable the Corne RGB Underglow +# CONFIG_ZMK_RGB_UNDERGLOW=y +# CONFIG_WS2812_STRIP=y + +# Uncomment the following line to enable the Corne OLED Display +# CONFIG_ZMK_DISPLAY=y diff --git a/app/boards/shields/dactyl_cc/dactyl_cc.dtsi b/app/boards/shields/dactyl_cc/dactyl_cc.dtsi new file mode 100644 index 00000000..97b56139 --- /dev/null +++ b/app/boards/shields/dactyl_cc/dactyl_cc.dtsi @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2023 Michael + Johns + * + * 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 = <6>; + +// | 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 | SW22 | SW23 | SW24 | | SW24 | SW23 | SW22 | SW21 | SW20 | SW19 | +// | SW26 | SW27 | SW28 | SW29 | | SW29 | SW28 | SW27 | SW26 | +// | SW32 | SW33 | | SW33 | SW32 | +// | SW30 | SW36 | SW34 | | SW34 | SW36 | SW30 | +// | SW35 | | SW35 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) RC(0,6) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) RC(1,6) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) RC(2,6) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) RC(3,6) + RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,10) RC(4,9) RC(4,8) RC(4,7) + RC(5,1) RC(5,2) RC(5,8) RC(5,7) + RC(4,5) RC(5,5) RC(5,3) RC(5,9) RC(5,11) RC(4,11) + RC(5,4) RC(5,10) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + + row-gpios + = <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; +}; diff --git a/app/boards/shields/dactyl_cc/dactyl_cc.keymap b/app/boards/shields/dactyl_cc/dactyl_cc.keymap new file mode 100644 index 00000000..8f7e6a2b --- /dev/null +++ b/app/boards/shields/dactyl_cc/dactyl_cc.keymap @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2023 Michael Johns + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + deafult_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | +// ------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | CAP | Q | W | E | R | T | | Y | U | I | O | P | \ | +// ------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | CTL | Z | X | C | V | B | | N | M | , | . | / | CTL | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | - | = | ← | → | | ↑ | ↓ | [ | ] | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ALT | GUI | | GUI | ALT | +// ----- ----- ----- ----- ----- ----- +// | | | HOM | | PG↑ | | | +// | BSP | SPC |----- -----| ENT | DEL | +// |(lt1)|(SFT)| END | | PG↓ |(SFT)|(lt2)| +// ----- ----- ----- ----- ----- ----- + 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 CAPS &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT + &kp LCTRL &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RCTRL + &kp MINUS &kp EQUAL &kp LEFT &kp RIGHT &kp UP &kp DOWN &kp LBKT &kp RBKT + &kp LALT &kp LGUI &kp RGUI &kp LALT + < 1 BSPC &mt LSHFT SPACE &kp HOME &kp PG_UP &mt RSHFT ENT < 2 DEL + &kp END &kp PG_DN + >; + }; + + tkm_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | KP( | KP7 | KP8 | KP9 | KP) | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | SLK | INS | BRK | PSC | | | KP* | KP4 | KP5 | KP6 | KP+ | NLK | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | KP/ | KP1 | KP2 | KP3 | KP- | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | KP, | KP0 | KP. | KP↵ | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | ◌ | ◌ | +// ----- ----- ----- ----- ----- ----- +// | | | | | | | | +// | ◌ | |----- -----| SFT | mo3 | +// | | | | | CTL | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none &none &none + &none &none &none &none &none &none &kp KP_LPAR &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_RPAR &none + &none &kp SLCK &kp INS &kp PAUSE_BREAK &kp PSCRN &none &kp KP_ASTERISK &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_PLUS &kp KP_NUM + &none &none &none &none &none &none &kp KP_SLASH &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_MINUS &none + &none &none &none &none &kp KP_COMMA &kp KP_N0 &kp KP_DOT &kp KP_ENTER + &none &none &trans &trans + &trans &none &none &none &kp RSHFT &mo 3 + &none &kp RCTRL + >; + }; + + function_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | F4 | F3 | F2 | F1 | | | | F13 | F14 | F15 | F16 | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | F8 | F7 | F6 | F5 | | | | F17 | F18 | F19 | F20 | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | F12 | F11 | F10 | F9 | | | | F21 | F22 | F23 | F24 | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ◌ | ◌ | | | | +// ----- ----- ----- ----- ----- ----- +// | | | | | | | | +// | mo3 | SFT |----- -----| | ◌ | +// | | | CTL | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none &none &none + &none &kp F4 &kp F3 &kp F2 &kp F1 &none &none &kp F13 &kp F14 &kp F15 &kp F16 &none + &none &kp F8 &kp F7 &kp F6 &kp F5 &none &none &kp F17 &kp F18 &kp F19 &kp F20 &none + &none &kp F12 &kp F11 &kp F10 &kp F9 &none &none &kp F21 &kp F22 &kp F23 &kp F24 &none + &none &none &none &none &none &none &none &none + &trans &trans &none &none + &mo 3 &kp LSHFT &none &none &none &trans + &kp LCTRL &none + >; + }; + + system_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | VL+ | | BR+ | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BT5 | BT4 | BT3 | BT2 | BT1 | | | | VLm | mNT | mPP | mPV | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BTC | | | | | | | | VL- | | BR- | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | RST | BLR | | BLR | RST | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | +// ----- ----- ----- ----- ----- ----- +// | | | | | | | | +// | ◌ | |----- -----| | ◌ | +// | | | | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none &none &none + &none &none &none &none &none &none &none &kp C_VOL_UP &none &kp C_BRI_UP &none &none + &bt BT_SEL 5 &bt BT_SEL 4 &bt BT_SEL 3 &bt BT_SEL 2 &bt BT_SEL 1 &none &none &kp C_MUTE &kp C_NEXT &kp C_PP &kp C_PREV &none + &bt BT_CLR &none &none &none &none &none &none &kp C_VOL_DN &none &kp C_BRI_DN &none &none + &none &none &sys_reset &bootloader &bootloader &sys_reset &none &none + &none &none &none &none + &trans &none &none &none &none &trans + &none &none + >; + }; + }; +}; diff --git a/app/boards/shields/dactyl_cc/dactyl_cc.zmk.yml b/app/boards/shields/dactyl_cc/dactyl_cc.zmk.yml new file mode 100644 index 00000000..86cb3449 --- /dev/null +++ b/app/boards/shields/dactyl_cc/dactyl_cc.zmk.yml @@ -0,0 +1,11 @@ +file_format: "1" +id: dactyl_cc +name: Dactyl CC +type: shield +url: https://github.com/mjohns/dactyl-cc +requires: [pro_micro] +features: + - keys +siblings: + - dactyl_cc_left + - dactyl_cc_right diff --git a/app/boards/shields/dactyl_cc/dactyl_cc_left.conf b/app/boards/shields/dactyl_cc/dactyl_cc_left.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl_cc/dactyl_cc_left.overlay b/app/boards/shields/dactyl_cc/dactyl_cc_left.overlay new file mode 100644 index 00000000..4a3a9100 --- /dev/null +++ b/app/boards/shields/dactyl_cc/dactyl_cc_left.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2023 Michael Johns + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl_cc.dtsi" + +&kscan0 { + col-gpios + = <&pro_micro 4 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 9 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/dactyl_cc/dactyl_cc_right.conf b/app/boards/shields/dactyl_cc/dactyl_cc_right.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl_cc/dactyl_cc_right.overlay b/app/boards/shields/dactyl_cc/dactyl_cc_right.overlay new file mode 100644 index 00000000..eac10a86 --- /dev/null +++ b/app/boards/shields/dactyl_cc/dactyl_cc_right.overlay @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 Michael Johns + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl_cc.dtsi" + +&default_transform { + col-offset = <6>; +}; + +&kscan0 { + col-gpios + = <&pro_micro 9 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 4 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/dactyl_lightcycle/Kconfig.defconfig b/app/boards/shields/dactyl_lightcycle/Kconfig.defconfig new file mode 100644 index 00000000..9cc9dc8e --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/Kconfig.defconfig @@ -0,0 +1,18 @@ +# Copyright (c) 2023 Matt Adereth +# SPDX-License-Identifier: MIT +if SHIELD_DACTYL_LIGHTCYCLE_LEFT + +config ZMK_KEYBOARD_NAME + default "Dactyl Lightcycle" + +config ZMK_SPLIT_ROLE_CENTRAL + default y + +endif + +if SHIELD_DACTYL_LIGHTCYCLE_LEFT || SHIELD_DACTYL_LIGHTCYCLE_RIGHT + +config ZMK_SPLIT + default y + +endif diff --git a/app/boards/shields/dactyl_lightcycle/Kconfig.shield b/app/boards/shields/dactyl_lightcycle/Kconfig.shield new file mode 100644 index 00000000..f030ec33 --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2023 Matthew Adereth +# SPDX-License-Identifier: MIT + +config SHIELD_DACTYL_LIGHTCYCLE_LEFT + def_bool $(shields_list_contains,dactyl_lightcycle_left) + +config SHIELD_DACTYL_LIGHTCYCLE_RIGHT + def_bool $(shields_list_contains,dactyl_lightcycle_right) diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.conf b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.conf new file mode 100644 index 00000000..974243c8 --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.conf @@ -0,0 +1,6 @@ +# Uncomment the following lines to enable the Corne RGB Underglow +# CONFIG_ZMK_RGB_UNDERGLOW=y +# CONFIG_WS2812_STRIP=y + +# Uncomment the following line to enable the Corne OLED Display +# CONFIG_ZMK_DISPLAY=y diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.dtsi b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.dtsi new file mode 100644 index 00000000..9a247bb2 --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.dtsi @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * 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 = <5>; + +// | 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 | SW22 | SW23 | | SW23 | SW22 | SW21 | SW20 | SW19 | +// | SW24 | SW30 | | SW30 | SW24 | +// | SW27 | SW28 | SW29 | | SW29 | SW28 | SW27 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) RC(0,6) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) RC(1,6) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) RC(2,6) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,10) RC(3,9) RC(3,8) RC(3,7) RC(3,6) + RC(3,5) RC(4,5) RC(4,11) RC(3,11) + RC(4,2) RC(4,3) RC(4,4) RC(4,10) RC(4,9) RC(4,8) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + + row-gpios + = <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; +}; diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.keymap b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.keymap new file mode 100644 index 00000000..18948314 --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.keymap @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + deafult_layer { +// ------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | +// ------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ALT | Z | X | C | V | B | | N | M | , | . | / | ALT | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | CTL | - | = | ← | → | | ↑ | ↓ | [ | ] | SFT | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// -----| BSP | GUI | | GUI | DEL |----- +// | | | | | | | | +// | HOM |----- ----- ----- -----| END | +// |(lt1)| SPC | SFT | | CTL | ENT |(lt2)| +// | | | | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &kp ESC &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH + &kp TAB &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT + &kp LALT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp LALT + &kp LCTRL &kp MINUS &kp EQUAL &kp LEFT &kp RIGHT &kp UP &kp DOWN &kp LBKT &kp RBKT &kp RSHFT + &kp BSPC &kp LGUI &kp RGUI &kp DEL + < 1 HOME &kp SPACE &kp LSHFT &kp RCTRL &kp ENT < 2 END + >; + }; + + lower_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// |scESC| | | | | | | KP( | KP7 | KP8 | KP9 | KP) |G_TB | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | CAP | SLK | INS | BRK | PSC | | | KP* | KP4 | KP5 | KP6 | KP+ | NLK | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ◌ | | |saTAB|aTAB | | | KP/ | KP1 | KP2 | KP3 | KP- | ◌ | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ◌ | | | | | | KP, | KP0 | KP. | KP↵ | ◌ | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// -----| | | | ◌ |C_BPC|----- +// | | | | | | | | +// | ◌ |----- ----- ----- -----| mo3 | +// | | | | | ◌ | SFT | | +// | | | | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &kp LS(LC(ESC)) &none &none &none &none &none &kp KP_LPAR &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_RPAR &kp LG(TAB) + &kp CAPS &kp SLCK &kp INS &kp PAUSE_BREAK &kp PSCRN &none &kp KP_ASTERISK &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_PLUS &kp KP_NUM + &trans &none &none &kp LS(LA(TAB)) &kp LA(TAB) &none &kp KP_SLASH &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_MINUS &trans + &trans &none &none &none &none &kp KP_COMMA &kp KP_N0 &kp KP_DOT &kp KP_ENTER &trans + &none &none &trans &trans + &trans &none &none &none &kp RSHFT &mo 3 + >; + }; + + raise_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ~ | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ◌ | ! | @ | # | $ | ( | | ) | % | ^ | & | * | ◌ | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ◌ | _ | + | |A_TAB| | PG↑ | PG↓ | { | } | ◌ | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// -----|C_DEL| ◌ | | | |----- +// | | | | | | | | +// | mo3 |----- ----- ----- -----| ◌ | +// | | CTL | ◌ | | | | | +// | | | | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 + &kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp TILDE + &trans &kp EXCL &kp AT &kp HASH &kp DLLR &kp LPAR &kp RPAR &kp PRCNT &kp CARET &kp AMPS &kp STAR &trans + &trans &kp UNDER &kp PLUS &none &kp LA(TAB) &kp PG_UP &kp PG_DN &kp LBRC &kp RBRC &trans + &kp LC(DEL) &trans &none &none + &mo 3 &kp LCTRL &trans &none &none &trans + >; + }; + + system_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | VL+ | | BR+ | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BT5 | BT4 | BT3 | BT2 | BT1 | | | | VLm | mNT | mPP | mPV | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BTC | | | | | | | | VL- | | BR- | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | RST | BLR | | BLR | RST | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// -----| | | | | |----- +// | | | | | | | | +// | ◌ |----- ----- ----- -----| ◌ | +// | | | | | | | | +// | | | | | | | | +// ----- ----- ----- ----- ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none &none &none + &none &none &none &none &none &none &none &kp C_VOL_UP &none &kp C_BRI_UP &none &none + &bt BT_SEL 5 &bt BT_SEL 4 &bt BT_SEL 3 &bt BT_SEL 2 &bt BT_SEL 1 &none &none &kp C_MUTE &kp C_NEXT &kp C_PP &kp C_PREV &none + &bt BT_CLR &none &none &none &none &none &none &kp C_VOL_DN &none &kp C_BRI_DN &none &none + &none &none &none &sys_reset &bootloader &bootloader &sys_reset &none &none &none + &none &none &none &none + &trans &none &none &none &none &trans + &none &none + >; + }; + }; +}; diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.zmk.yml b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.zmk.yml new file mode 100644 index 00000000..626d9db7 --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle.zmk.yml @@ -0,0 +1,11 @@ +file_format: "1" +id: dactyl_lightcycle +name: Dactyl Lightcycle +type: shield +url: https://github.com/adereth/dactyl-keyboard +requires: [pro_micro] +features: + - keys +siblings: + - dactyl_lightcycle_left + - dactyl_lightcycle_right diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_left.conf b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_left.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_left.overlay b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_left.overlay new file mode 100644 index 00000000..15828cef --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_left.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl_lightcycle.dtsi" + +&kscan0 { + col-gpios + = <&pro_micro 4 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 9 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_right.conf b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_right.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_right.overlay b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_right.overlay new file mode 100644 index 00000000..8b6a5a48 --- /dev/null +++ b/app/boards/shields/dactyl_lightcycle/dactyl_lightcycle_right.overlay @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl_lightcycle.dtsi" + +&default_transform { + col-offset = <6>; +}; + +&kscan0 { + col-gpios + = <&pro_micro 9 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 4 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/dactyl_tracer/Kconfig.defconfig b/app/boards/shields/dactyl_tracer/Kconfig.defconfig new file mode 100644 index 00000000..4e49dc84 --- /dev/null +++ b/app/boards/shields/dactyl_tracer/Kconfig.defconfig @@ -0,0 +1,18 @@ +# Copyright (c) 2023 Matt Adereth +# SPDX-License-Identifier: MIT +if SHIELD_DACTYL_TRACER_LEFT + +config ZMK_KEYBOARD_NAME + default "Dactyl Tracer" + +config ZMK_SPLIT_ROLE_CENTRAL + default y + +endif + +if SHIELD_DACTYL_TRACER_LEFT || SHIELD_DACTYL_TRACER_RIGHT + +config ZMK_SPLIT + default y + +endif diff --git a/app/boards/shields/dactyl_tracer/Kconfig.shield b/app/boards/shields/dactyl_tracer/Kconfig.shield new file mode 100644 index 00000000..f25e61d1 --- /dev/null +++ b/app/boards/shields/dactyl_tracer/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2023 Michael Johns +# SPDX-License-Identifier: MIT + +config SHIELD_DACTYL_TRACER_LEFT + def_bool $(shields_list_contains,dactyl_tracer_left) + +config SHIELD_DACTYL_TRACER_RIGHT + def_bool $(shields_list_contains,dactyl_tracer_right) diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer.conf b/app/boards/shields/dactyl_tracer/dactyl_tracer.conf new file mode 100644 index 00000000..974243c8 --- /dev/null +++ b/app/boards/shields/dactyl_tracer/dactyl_tracer.conf @@ -0,0 +1,6 @@ +# Uncomment the following lines to enable the Corne RGB Underglow +# CONFIG_ZMK_RGB_UNDERGLOW=y +# CONFIG_WS2812_STRIP=y + +# Uncomment the following line to enable the Corne OLED Display +# CONFIG_ZMK_DISPLAY=y diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer.dtsi b/app/boards/shields/dactyl_tracer/dactyl_tracer.dtsi new file mode 100644 index 00000000..741da921 --- /dev/null +++ b/app/boards/shields/dactyl_tracer/dactyl_tracer.dtsi @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2023 Michael Johns + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + zmk,matrix_transform = &default_transform; + }; + + default_transform: keymap_transform_0 { + compatible = "zmk,matrix-transform"; + columns = <10>; + rows = <5>; + +// | SW1 | SW2 | SW3 | SW4 | SW5 | | SW5 | SW4 | SW3 | SW2 | SW1 | +// | SW6 | SW7 | SW8 | SW9 | SW10 | | SW10 | SW9 | SW8 | SW7 | SW6 | +// | SW11 | SW12 | SW13 | SW14 | SW15 | | SW15 | SW14 | SW13 | SW12 | SW11 | +// | SW17 | SW18 | | SW18 | SW17 | +// | SW20 | | SW20 | +// | SW23 | SW19 | SW25 | | SW25 | SW19 | SW23 | +// | SW24 | | SW24 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,9) RC(0,8) RC(0,7) RC(0,6) RC(0,5) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,9) RC(1,8) RC(1,7) RC(1,6) RC(1,5) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,9) RC(2,8) RC(2,7) RC(2,6) RC(2,5) + RC(3,1) RC(3,2) RC(3,7) RC(3,6) + RC(3,4) RC(3,9) + RC(4,2) RC(3,3) RC(4,4) RC(4,9) RC(3,8) RC(4,7) + RC(4,3) RC(4,8) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + + row-gpios + = <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; +}; diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer.keymap b/app/boards/shields/dactyl_tracer/dactyl_tracer.keymap new file mode 100644 index 00000000..7f116f04 --- /dev/null +++ b/app/boards/shields/dactyl_tracer/dactyl_tracer.keymap @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2023 Michael Johns + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + deafult_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | Q | W | E | R | T | | Y | U | I | O | P | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | A(g)| S(a)| D(c)| F(s)| G | | H | J(s)| K(c)| L(a)| ;(g)| +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | Z | X | C | V | B | | N | M | , | . | ' | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ← | → | | ↑ | ↓ | +// ----- ----- ----- ----- ----- ----- +// | HOM | | END | +// ----- ----- ----- ----- ----- ----- +// | mo1 | SPC | DEL | | BSP | ENT | mo2 | +// ----- ----- ----- ----- ----- ----- +// | TAB | | ESC | +// ----- ----- + bindings = < + &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P + &mt LGUI A &mt LALT S &mt LCTRL D &mt LSHFT F &kp G &kp H &mt LSHFT J &mt LCTRL K &mt LALT L &mt LGUI SEMI + &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp SQT + &kp LEFT &kp RIGHT &kp UP &kp DOWN + &kp HOME &kp END + &mo1 &kp SPACE &kp DEL &kp BSPC &kp ENT &mo 2 + &kp TAB &kp ESC + >; + }; + + lower_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | ! | @ | # | $ | [ | | ] | % | ^ | & | * | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | "|" | ` | \ | ( | { | | } | ) | / | ? | ~ | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | - | + | | = | _ | +// ----- ----- ----- ----- ----- ----- +// | | | ALT | +// ----- ----- ----- ----- ----- ----- +// | ◌ | | | | CTL | SFT | mo3 | +// ----- ----- ----- ----- ----- ----- +// | | | GUI | +// ----- ----- + bindings = < + &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 + &kp EXCL &kp AT &kp HASH &kp DLLR &kp LBKT &kp RBKT &kp PRCNT &kp CARET &kp AMPS &kp STAR + &kp PIPE &kp GRAVE &kp FSLH &kp LPAR &kp LBRC &kp RBRC &kp RPAR &kp BSLH &kp QMARK &kp TILDE + &kp MINUS &kp PLUS &kp EQUAL &kp UNDER + &none &kp LALT + &trans &none &none &kp RCTRL &kp RSHFT &mo 3 + &none &kp RGUI + >; + }; + + raise_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | F11 | INS | BRK | PG↑ | PSC | | | VL+ | VLm | VL- | F12 | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | SLK | | PG↓ | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BR- | BR+ | |a+TB |sa+TB| +// ----- ----- ----- ----- ----- ----- +// | ALT | | | +// ----- ----- ----- ----- ----- ----- +// | mo3 | SFT | CTL | | | | ◌ | +// ----- ----- ----- ----- ----- ----- +// | GUI | | | +// ----- ----- + bindings = < + &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 + &kp F11 &kp INS &kp PAUSE_BREAK &kp PG_UP &kp PSCRN &none &kp C_VOL_UP &kp C_MUTE &kp C_VOL_DN &kp F12 + &none &kp SLCK &none &kp PG_DN &none &none &none &none &none &none + &kp C_BRI_DN &kp C_BRI_UP &kp LA(TAB) &kp LS(LA(TAB)) + &kp LALT &none + &mo 3 &kp LSHFT &kp LCTRL &none &none &trans + &kp LGUI &none + >; + }; + + system_layer { +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | | | | | | | | | | | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BT4 | BT3 | BT2 | BT1 | | | | mNT | mPP | mPV | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | BTC | | | BT5 | | | | mFF | | mRW | | +// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- +// | RST | BLR | | BLR | RST | +// ----- ----- ----- ----- ----- ----- +// | | | | +// ----- ----- ----- ----- ----- ----- +// | ◌ | | | | | | ◌ | +// ----- ----- ----- ----- ----- ----- +// | | | | +// ----- ----- + bindings = < + &none &none &none &none &none &none &none &none &none &none + &bt BT_SEL 4 &bt BT_SEL 3 &bt BT_SEL 2 &bt BT_SEL 1 &none &none &kp C_NEXT &kp C_PP &kp C_PREV &none + &bt BT_CLR &none &none &bt BT_SEL 5 &none &none &kp C_FF &none &kp C_RW &none + &sys_reset &bootloader &bootloader &sys_reset + &none &none + &trans &none &none &none &none &trans + &none &none + >; + }; + }; +}; diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer.zmk.yml b/app/boards/shields/dactyl_tracer/dactyl_tracer.zmk.yml new file mode 100644 index 00000000..36894b7d --- /dev/null +++ b/app/boards/shields/dactyl_tracer/dactyl_tracer.zmk.yml @@ -0,0 +1,11 @@ +file_format: "1" +id: dactyl_tracer +name: Dactyl Tracer +type: shield +url: https://github.com/mjohns/tracer +requires: [pro_micro] +features: + - keys +siblings: + - dactyl_tracer_left + - dactyl_tracer_right diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer_left.conf b/app/boards/shields/dactyl_tracer/dactyl_tracer_left.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer_left.overlay b/app/boards/shields/dactyl_tracer/dactyl_tracer_left.overlay new file mode 100644 index 00000000..c6208526 --- /dev/null +++ b/app/boards/shields/dactyl_tracer/dactyl_tracer_left.overlay @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl_tracer.dtsi" + +&kscan0 { + col-gpios + = <&pro_micro 5 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 9 GPIO_ACTIVE_HIGH> + ; +}; diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer_right.conf b/app/boards/shields/dactyl_tracer/dactyl_tracer_right.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/dactyl_tracer/dactyl_tracer_right.overlay b/app/boards/shields/dactyl_tracer/dactyl_tracer_right.overlay new file mode 100644 index 00000000..5492ef7c --- /dev/null +++ b/app/boards/shields/dactyl_tracer/dactyl_tracer_right.overlay @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2023 Matt Adereth + * + * SPDX-License-Identifier: MIT + */ + +#include "dactyl_tracer.dtsi" + +&default_transform { + col-offset = <5>; +}; + +&kscan0 { + col-gpios + = <&pro_micro 9 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + , <&pro_micro 5 GPIO_ACTIVE_HIGH> + ; +};