aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJosh Johnson <[email protected]>2021-11-30 04:39:46 +1100
committerGitHub <[email protected]>2021-11-29 11:39:46 -0600
commit66f90dae3a46095330ef057c413baffbb56ce2fa (patch)
tree7a4524bfdaa2654d86f0e90719dca706560da6bd
parentb9a35c6ae7e86de637a96bd9f76b362915f309a0 (diff)
downloadzmk-66f90dae3a46095330ef057c413baffbb56ce2fa.tar.gz
zmk-66f90dae3a46095330ef057c413baffbb56ce2fa.zip
feat(shield) Add Chalice support (#1022)
* add chalice * add split bs transform * Update app/boards/shields/chalice/chalice.zmk.yml Co-authored-by: Nick Winans <[email protected]> Co-authored-by: Nick Winans <[email protected]>
-rw-r--r--app/boards/shields/chalice/Kconfig.defconfig9
-rw-r--r--app/boards/shields/chalice/Kconfig.shield5
-rw-r--r--app/boards/shields/chalice/boards/nice_nano.overlay28
-rw-r--r--app/boards/shields/chalice/boards/nice_nano_v2.overlay28
-rw-r--r--app/boards/shields/chalice/chalice.conf3
-rw-r--r--app/boards/shields/chalice/chalice.keymap39
-rw-r--r--app/boards/shields/chalice/chalice.overlay73
-rw-r--r--app/boards/shields/chalice/chalice.zmk.yml9
8 files changed, 194 insertions, 0 deletions
diff --git a/app/boards/shields/chalice/Kconfig.defconfig b/app/boards/shields/chalice/Kconfig.defconfig
new file mode 100644
index 0000000000..9987a79a21
--- /dev/null
+++ b/app/boards/shields/chalice/Kconfig.defconfig
@@ -0,0 +1,9 @@
+# Copyright (c) 2021 The ZMK Contributors
+# SPDX-License-Identifier: MIT
+
+if SHIELD_CHALICE
+
+config ZMK_KEYBOARD_NAME
+ default "Chalice"
+
+endif
diff --git a/app/boards/shields/chalice/Kconfig.shield b/app/boards/shields/chalice/Kconfig.shield
new file mode 100644
index 0000000000..bd03bf7609
--- /dev/null
+++ b/app/boards/shields/chalice/Kconfig.shield
@@ -0,0 +1,5 @@
+# Copyright (c) 2021 The ZMK Contributors
+# SPDX-License-Identifier: MIT
+
+config SHIELD_CHALICE
+ def_bool $(shields_list_contains,chalice)
diff --git a/app/boards/shields/chalice/boards/nice_nano.overlay b/app/boards/shields/chalice/boards/nice_nano.overlay
new file mode 100644
index 0000000000..21e28515d8
--- /dev/null
+++ b/app/boards/shields/chalice/boards/nice_nano.overlay
@@ -0,0 +1,28 @@
+&spi1 {
+ compatible = "nordic,nrf-spim";
+ 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>;
+
+ 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 = <14>; /* arbitrary; change at will */
+ spi-one-frame = <0x70>;
+ spi-zero-frame = <0x40>;
+ };
+};
+
+/ {
+ chosen {
+ zmk,underglow = &led_strip;
+ };
+};
diff --git a/app/boards/shields/chalice/boards/nice_nano_v2.overlay b/app/boards/shields/chalice/boards/nice_nano_v2.overlay
new file mode 100644
index 0000000000..21e28515d8
--- /dev/null
+++ b/app/boards/shields/chalice/boards/nice_nano_v2.overlay
@@ -0,0 +1,28 @@
+&spi1 {
+ compatible = "nordic,nrf-spim";
+ 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>;
+
+ 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 = <14>; /* arbitrary; change at will */
+ spi-one-frame = <0x70>;
+ spi-zero-frame = <0x40>;
+ };
+};
+
+/ {
+ chosen {
+ zmk,underglow = &led_strip;
+ };
+};
diff --git a/app/boards/shields/chalice/chalice.conf b/app/boards/shields/chalice/chalice.conf
new file mode 100644
index 0000000000..da64225682
--- /dev/null
+++ b/app/boards/shields/chalice/chalice.conf
@@ -0,0 +1,3 @@
+# Uncomment the following lines to enable RGB underglow
+# CONFIG_ZMK_RGB_UNDERGLOW=y
+# CONFIG_WS2812_STRIP=y \ No newline at end of file
diff --git a/app/boards/shields/chalice/chalice.keymap b/app/boards/shields/chalice/chalice.keymap
new file mode 100644
index 0000000000..cba93d035e
--- /dev/null
+++ b/app/boards/shields/chalice/chalice.keymap
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/keys.h>
+#include <dt-bindings/zmk/bt.h>
+#include <dt-bindings/zmk/rgb.h>
+#include <dt-bindings/zmk/outputs.h>
+
+/ {
+ keymap {
+ compatible = "zmk,keymap";
+
+ default_layer {
+
+ bindings = <
+ &kp ESC &kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS &kp EQUAL &kp BSPC
+ &kp INSERT &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 BSLH
+ &kp DELETE &kp CAPS &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT &kp ENTER
+ &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp B &kp N &kp M &kp COMMA &kp DOT &kp SLASH &kp RSHFT &kp UP
+ &kp LCTRL &kp LALT &kp SPACE &mo 1 &kp SPACE &kp RALT &kp RCTRL &kp LEFT &kp DOWN &kp RIGHT
+ >;
+ };
+
+ function_layer {
+
+ bindings = <
+ &bootloader &out OUT_TOG &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
+ &trans &bt BT_CLR &rgb_ug RGB_TOG &rgb_ug RGB_HUD &rgb_ug RGB_HUI &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
+ &trans &bt BT_SEL 0 &rgb_ug RGB_EFF &rgb_ug RGB_SAD &rgb_ug RGB_SAI &trans &trans &trans &trans &trans &trans &trans &trans &trans
+ &bt BT_SEL 1 &rgb_ug RGB_EFR &rgb_ug RGB_BRD &rgb_ug RGB_BRI &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp PG_UP
+ &bt BT_SEL 2 &trans &trans &trans &trans &trans &trans &kp HOME &kp PG_DN &kp END
+ >;
+ };
+ };
+};
diff --git a/app/boards/shields/chalice/chalice.overlay b/app/boards/shields/chalice/chalice.overlay
new file mode 100644
index 0000000000..34cbd34ea3
--- /dev/null
+++ b/app/boards/shields/chalice/chalice.overlay
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2021 The ZMK Contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#include <dt-bindings/zmk/matrix_transform.h>
+
+/ {
+ chosen {
+ zmk,kscan = &kscan0;
+ zmk,matrix_transform = &default_transform;
+ };
+
+
+ default_transform: keymap_transform_0 {
+ compatible = "zmk,matrix-transform";
+ columns = <7>;
+ rows = <10>;
+
+ map = <
+ RC(0,0) RC(1,0) RC(0,1) RC(1,1) RC(0,2) RC(1,2) RC(0,3) RC(1,3) RC(0,4) RC(1,4) RC(0,5) RC(1,5) RC(0,6) RC(1,6) RC(4,6)
+ RC(2,0) RC(3,0) RC(2,1) RC(3,1) RC(2,2) RC(3,2) RC(2,3) RC(3,3) RC(2,4) RC(3,4) RC(2,5) RC(3,5) RC(2,6) RC(3,6) RC(5,6)
+ RC(4,0) RC(5,0) RC(4,1) RC(5,1) RC(4,2) RC(5,2) RC(4,3) RC(5,3) RC(4,4) RC(5,4) RC(4,5) RC(5,5) RC(6,6) RC(7,6)
+ RC(6,0) RC(7,0) RC(6,1) RC(7,1) RC(6,2) RC(7,2) RC(6,3) RC(7,3) RC(6,4) RC(7,4) RC(6,5) RC(7,5) RC(8,6) RC(9,6)
+ RC(8,0) RC(9,1) RC(8,2) RC(9,2) RC(8,3) RC(9,3) RC(8,4) RC(9,4) RC(8,5) RC(9,5)
+ >;
+ };
+
+ splitbs_transform: keymap_transform_1 {
+ compatible = "zmk,matrix-transform";
+ columns = <7>;
+ rows = <10>;
+
+ map = <
+ RC(0,0) RC(1,0) RC(0,1) RC(1,1) RC(0,2) RC(1,2) RC(0,3) RC(1,3) RC(0,4) RC(1,4) RC(0,5) RC(1,5) RC(0,6) RC(1,6) RC(4,6) RC(8,1)
+ RC(2,0) RC(3,0) RC(2,1) RC(3,1) RC(2,2) RC(3,2) RC(2,3) RC(3,3) RC(2,4) RC(3,4) RC(2,5) RC(3,5) RC(2,6) RC(3,6) RC(5,6)
+ RC(4,0) RC(5,0) RC(4,1) RC(5,1) RC(4,2) RC(5,2) RC(4,3) RC(5,3) RC(4,4) RC(5,4) RC(4,5) RC(5,5) RC(6,6) RC(7,6)
+ RC(6,0) RC(7,0) RC(6,1) RC(7,1) RC(6,2) RC(7,2) RC(6,3) RC(7,3) RC(6,4) RC(7,4) RC(6,5) RC(7,5) RC(8,6) RC(9,6)
+ RC(8,0) RC(9,1) RC(8,2) RC(9,2) RC(8,3) RC(9,3) RC(8,4) RC(9,4) RC(8,5) RC(9,5)
+ >;
+ };
+
+
+ kscan0: kscan_0 {
+ compatible = "zmk,kscan-gpio-matrix";
+ label = "KSCAN";
+ diode-direction = "col2row";
+
+ col-gpios
+ = <&pro_micro 18 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 5 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 15 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 0 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 7 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 14 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 6 GPIO_ACTIVE_HIGH>
+ ;
+
+ row-gpios
+ = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 19 (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 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ , <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
+ ;
+ };
+};
diff --git a/app/boards/shields/chalice/chalice.zmk.yml b/app/boards/shields/chalice/chalice.zmk.yml
new file mode 100644
index 0000000000..a284dbe578
--- /dev/null
+++ b/app/boards/shields/chalice/chalice.zmk.yml
@@ -0,0 +1,9 @@
+file_format: "1"
+id: chalice
+name: Chalice
+type: shield
+url: https://customkbd.com/products/chalice-pre-order
+requires: [pro_micro]
+features:
+ - keys
+ - underglow