From 6a93d5da5530ed24f991a94d2350227395c97dba Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Mon, 7 Feb 2022 10:58:03 -0800 Subject: [PATCH] feat(shields): Add Breeze Add a shield definition for the Breeze split keyboard from Afternoon labs. This is for the standard breeze variant, with the arrow keys present on the right half but not the left. Definition is based in part on an abandoned PR by @devries: https://github.com/zmkfirmware/zmk/pull/735 Signed-off-by: Idan Gazit Co-authored-by: devriesp Signed-off-by: Idan Gazit --- app/boards/shields/breeze/Kconfig.defconfig | 17 +++++ app/boards/shields/breeze/Kconfig.shield | 8 +++ app/boards/shields/breeze/breeze.conf | 0 app/boards/shields/breeze/breeze.dtsi | 50 ++++++++++++++ app/boards/shields/breeze/breeze.keymap | 67 +++++++++++++++++++ app/boards/shields/breeze/breeze.zmk.yml | 12 ++++ app/boards/shields/breeze/breeze_left.conf | 0 app/boards/shields/breeze/breeze_left.overlay | 18 +++++ app/boards/shields/breeze/breeze_right.conf | 0 .../shields/breeze/breeze_right.overlay | 21 ++++++ 10 files changed, 193 insertions(+) create mode 100644 app/boards/shields/breeze/Kconfig.defconfig create mode 100644 app/boards/shields/breeze/Kconfig.shield create mode 100644 app/boards/shields/breeze/breeze.conf create mode 100644 app/boards/shields/breeze/breeze.dtsi create mode 100644 app/boards/shields/breeze/breeze.keymap create mode 100644 app/boards/shields/breeze/breeze.zmk.yml create mode 100644 app/boards/shields/breeze/breeze_left.conf create mode 100644 app/boards/shields/breeze/breeze_left.overlay create mode 100644 app/boards/shields/breeze/breeze_right.conf create mode 100644 app/boards/shields/breeze/breeze_right.overlay diff --git a/app/boards/shields/breeze/Kconfig.defconfig b/app/boards/shields/breeze/Kconfig.defconfig new file mode 100644 index 00000000..321d44c9 --- /dev/null +++ b/app/boards/shields/breeze/Kconfig.defconfig @@ -0,0 +1,17 @@ + +if SHIELD_BREEZE_LEFT + +config ZMK_KEYBOARD_NAME + default "Breeze" + +config ZMK_SPLIT_BLE_ROLE_CENTRAL + default y + +endif + +if SHIELD_BREEZE_LEFT || SHIELD_BREEZE_RIGHT + +config ZMK_SPLIT + default y + +endif diff --git a/app/boards/shields/breeze/Kconfig.shield b/app/boards/shields/breeze/Kconfig.shield new file mode 100644 index 00000000..7e34bb66 --- /dev/null +++ b/app/boards/shields/breeze/Kconfig.shield @@ -0,0 +1,8 @@ +# Copyright (c) 2022 The ZMK Contributors +# SPDX-License-Identifier: MIT + +config SHIELD_BREEZE_LEFT + def_bool $(shields_list_contains,breeze_left) + +config SHIELD_BREEZE_RIGHT + def_bool $(shields_list_contains,breeze_right) \ No newline at end of file diff --git a/app/boards/shields/breeze/breeze.conf b/app/boards/shields/breeze/breeze.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/breeze/breeze.dtsi b/app/boards/shields/breeze/breeze.dtsi new file mode 100644 index 00000000..18e357b3 --- /dev/null +++ b/app/boards/shields/breeze/breeze.dtsi @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2022 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 = <9>; + rows = <10>; +// | SW6 | SW5 | SW4 | SW3 | SW2 | SW1 | | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | MC1 | MC2 | MC3 | +// | SW12 | SW11 | SW10 | SW9 | SW8 | SW7 | | SW7 | SW8 | SW9 | SW10 | SW11 | SW12 | MC4 | MC5 | MC6 | +// | SW18 | SW17 | SW16 | SW15 | SW14 | SW13 | | SW13 | SW14 | SW15 | SW16 | SW17 | SW18 | | ↑ | | +// | SW24 | SW23 | SW22 | SW21 | SW20 | SW19 | | SW19 | SW20 | SW21 | SW22 | SW23 | SW24 | ← | ↓ | → | +// | TC4 | TC3 | TC2 | TC1 | | TC1 | TC2 | TC3 | TC4 | + map = < +RC(0,5) RC(0,4) RC(0,3) RC(0,2) RC(0,1) RC(0,0) RC(5,0) RC(5,1) RC(5,2) RC(5,3) RC(5,4) RC(5,5) RC(5,6) RC(5,7) RC(5,8) +RC(1,5) RC(1,4) RC(1,3) RC(1,2) RC(1,1) RC(1,0) RC(6,0) RC(6,1) RC(6,2) RC(6,3) RC(6,4) RC(6,5) RC(6,6) RC(6,7) RC(6,8) +RC(2,5) RC(2,4) RC(2,3) RC(2,2) RC(2,1) RC(2,0) RC(7,0) RC(7,1) RC(7,2) RC(7,3) RC(7,4) RC(7,5) RC(7,7) +RC(3,5) RC(3,4) RC(3,3) RC(3,2) RC(3,1) RC(3,0) RC(8,0) RC(8,1) RC(8,2) RC(8,3) RC(8,4) RC(8,5) RC(8,6) RC(8,7) RC(8,8) + RC(4,3) RC(4,2) RC(4,1) RC(4,0) RC(9,0) RC(9,1) RC(9,2) RC(9,3) + >; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + col-gpios + = <&pro_micro 16 GPIO_ACTIVE_HIGH> + , <&pro_micro 2 GPIO_ACTIVE_HIGH> + , <&pro_micro 3 GPIO_ACTIVE_HIGH> + , <&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/breeze/breeze.keymap b/app/boards/shields/breeze/breeze.keymap new file mode 100644 index 00000000..63724283 --- /dev/null +++ b/app/boards/shields/breeze/breeze.keymap @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + +// Ref: https://zmkfirmware.dev/docs/codes/ + +// ---------------------------------------------------------------------------------------------------------------------------------- +// | ESC/~ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BSPC | | = | HOME | PGUP | +// | TAB | Q | W | E | R | T | | Y | U | I | O | P | [ | | ] | END | PGDN | +// | CTRL | A | S | D | F | G | | H | J | K | L | ; | ENTER | | | UP | | +// | SHIFT | Z | X | C | V | B | | N | M | , | . | / | ' | | L | DN | R | +// | CTRL | GUI | ALT | SPACE | | ENTER | BSPC | mo(2) | mo(1) | + bindings = < +&gresc &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSPC &kp EQUAL &kp HOME &kp PG_UP +&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp LBKT &kp RBKT &kp END &kp PG_DN +&kp LCTRL &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp RET &kp UP +&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp APOS &kp LEFT &kp DOWN &kp RIGHT + &kp LCTRL &kp LGUI &kp LALT &kp SPACE &kp RET &kp BSPC &mo 2 &mo 1 + >; + }; + + layer1 { +// ---------------------------------------------------------------------------------------------------------------------------------- +// | BTCLR | BT1 | BT2 | BT3 | BT4 | BT5 | | | | | | | | | | | | +// | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | | Mute | Play | +// | ` | ! | @ | # | $ | % | | ^ | & | * | ( | ) | ~ | | | Vol+ | | +// | | | | | | | | | _ | + | { | } | "|" | | Prev | Vol- | Next | +// | | | | | | | | | | + 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 &trans &trans &trans +&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &trans &kp C_MUTE &kp C_PLAY_PAUSE +&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 &kp C_VOL_UP +&trans &ext_power EP_ON &ext_power EP_OFF &ext_power EP_TOG &trans &trans &trans &kp MINUS &kp KP_PLUS &kp LBRC &kp RBRC &kp PIPE &kp C_PREV &kp C_VOL_DN &kp C_NEXT + &trans &trans &trans &trans &trans &trans &trans &trans + >; + }; + + layer2 { +// ---------------------------------------------------------------------------------------------------------------------------------- +// | | | | | | | | | | | | | | | | | | +// | ` | 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 &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 &trans &trans &trans +&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &trans &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans &trans +&kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12 &kp KP_PLUS &kp MINUS &kp EQUAL &kp LBKT &kp RBKT &kp BSLH &trans &trans &trans + &trans &trans &trans &trans &trans &trans &trans &trans + >; + }; + }; +}; \ No newline at end of file diff --git a/app/boards/shields/breeze/breeze.zmk.yml b/app/boards/shields/breeze/breeze.zmk.yml new file mode 100644 index 00000000..2c402820 --- /dev/null +++ b/app/boards/shields/breeze/breeze.zmk.yml @@ -0,0 +1,12 @@ +file_format: "1" +id: breeze +name: Breeze +type: shield +url: https://afternoonlabs.com/breeze/ +requires: + - pro_micro +features: + - keys +siblings: + - breeze_left + - breeze_right diff --git a/app/boards/shields/breeze/breeze_left.conf b/app/boards/shields/breeze/breeze_left.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/breeze/breeze_left.overlay b/app/boards/shields/breeze/breeze_left.overlay new file mode 100644 index 00000000..b615c178 --- /dev/null +++ b/app/boards/shields/breeze/breeze_left.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include "breeze.dtsi" + +&kscan0 { + row-gpios + = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&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)> + ; + +}; \ No newline at end of file diff --git a/app/boards/shields/breeze/breeze_right.conf b/app/boards/shields/breeze/breeze_right.conf new file mode 100644 index 00000000..e69de29b diff --git a/app/boards/shields/breeze/breeze_right.overlay b/app/boards/shields/breeze/breeze_right.overlay new file mode 100644 index 00000000..115ebfdd --- /dev/null +++ b/app/boards/shields/breeze/breeze_right.overlay @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include "breeze.dtsi" + +&default_transform { + row-offset = <5>; +}; + +&kscan0 { + row-gpios + = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&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)> + ; +}; \ No newline at end of file