A config/lily58.conf => config/lily58.conf +4 -0
@@ 0,0 1,4 @@
+CONFIG_ZMK_DISPLAY=y
+CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE=y
+CONFIG_ZMK_WIDGET_WPM_STATUS=y
+#CONFIG_ZMK_WIDGET_BONGO_CAT=y
A config/lily58.dtsi => config/lily58.dtsi +22 -0
@@ 0,0 1,22 @@
+&i2c0 {
+ status = "okay";
+ sda-pin = <5>;
+ scl-pin = <6>;
+
+ oled: ssd1306@3c {
+ compatible = "solomon,ssd1306fb";
+ reg = <0x3c>;
+ label = "DISPLAY";
+ width = <128>;
+ height = <32>;
+ segment-offset = <0>;
+ page-offset = <0>;
+ display-offset = <0>;
+ multiplex-ratio = <31>;
+ segment-remap;
+ com-invdir;
+ com-sequential;
+ prechargep = <0x22>;
+ };
+};
+
A config/lily58.keymap => config/lily58.keymap +83 -0
@@ 0,0 1,83 @@
+#include <behaviors.dtsi>
+#include <dt-bindings/zmk/bt.h>
+#include <dt-bindings/zmk/keys.h>
+#include <dt-bindings/zmk/outputs.h>
+
+/ {
+ behaviors {
+ td0: tap_dance_0 {
+ compatible = "zmk,behavior-tap-dance";
+ #binding-cells = <0>;
+ tapping-term-ms = <200>;
+ bindings = <&kp LBKT>, <&kp LBRC>, <&kp C_PREV>;
+ };
+
+ td1: tap_dance_1 {
+ compatible = "zmk,behavior-tap-dance";
+ #binding-cells = <0>;
+ tapping-term-ms = <200>;
+ bindings = <&kp RBKT>, <&kp RBRC>, <&kp C_NEXT>;
+ };
+
+ tilesc: tilde_escape {
+ compatible = "zmk,behavior-mod-morph";
+ #binding-cells = <0>;
+ bindings = <&kp ESC>, <&kp TILDE>;
+
+ mods = <(MOD_LSFT|MOD_RSFT)>;
+ };
+ };
+
+ combos {
+ compatible = "zmk,combos";
+
+ toggle_qwerty {
+ bindings = <&tog 1>;
+ key-positions = <42 43>;
+ };
+ };
+
+ keymap {
+ compatible = "zmk,keymap";
+
+ dvorak_default {
+ bindings = <
+&tilesc &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp EQUAL
+&kp TAB &kp SQT &kp COMMA &kp DOT &kp P &kp Y &kp F &kp G &kp C &kp R &kp L &kp FSLH
+&kp LCTRL &kp A &kp O &kp E &kp U &kp I &kp D &kp H &kp T &kp N &kp S &kp MINUS
+&kp LSHFT &kp SEMI &kp Q &kp J &kp K &kp X &td0 &td1 &kp B &kp M &kp W &kp V &kp Z &kp RSHIFT
+ &kp LALT &kp LGUI &kp SPACE &mo 3 &mo 2 &kp BACKSPACE &kp ENTER &kp RALT
+ >;
+ };
+
+ qwerty_sticky {
+ bindings = <
+&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
+&trans &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp MINUS
+&trans &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
+&trans &kp Z &kp X &kp C &kp V &kp B &trans &trans &kp N &kp M &kp COMMA &kp DOT &kp FSLH &trans
+ &trans &trans &trans &trans &trans &trans &trans &trans
+ >;
+ };
+
+ lower_layer {
+ bindings = <
+&bt BT_CLR &bt BT_PRV &bt BT_NXT &none &none &out OUT_TOG &none &none &none &none &none &none
+&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12
+&none &none &none &none &none &none &none &kp INSERT &kp HOME &kp PAGE_UP &none &none
+&none &none &none &none &none &none &none &none &none &kp DELETE &kp END &kp PAGE_DOWN &none &none
+ &none &none &none &none &none &none &none &none
+ >;
+ };
+
+ raise_layer {
+ bindings = <
+&none &none &none &none &none &none &none &none &none &none &none &none
+&kp F13 &kp F14 &kp F15 &kp F16 &kp F17 &kp F18 &none &none &none &none &none &none
+&kp F19 &kp F20 &kp F21 &kp F22 &kp F23 &kp F24 &kp LEFT &kp DOWN &kp UP &kp RIGHT &none &none
+&kp LEFT_SHIFT &none &none &none &none &none &none &kp BSLH &none &none &none &none &none &none
+ &none &none &none &none &none &none &none &none
+ >;
+ };
+ };
+};
M flake.nix => flake.nix +4 -0
@@ 24,6 24,10 @@
zephyrDepsHash = "sha256-1dTCIVovLZ+13o26S/CzT8gtdf5Bzw9e+1e8plDorOA=";
+ postConfigure = ''
+ patch -d ../zmk/ -p1 < ${./patches/001-lily58-pin.patch}
+ '';
+
meta = {
description = "ZMK firmware";
license = nixpkgs.lib.licenses.mit;
A patches/001-lily58-pin.patch => patches/001-lily58-pin.patch +49 -0
@@ 0,0 1,49 @@
+diff --git a/app/boards/shields/lily58/lily58.dtsi b/app/boards/shields/lily58/lily58.dtsi
+index 195ab2b7..4e067bd2 100644
+--- a/app/boards/shields/lily58/lily58.dtsi
++++ b/app/boards/shields/lily58/lily58.dtsi
+@@ -47,19 +47,6 @@ RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(4,5) RC(4,6) RC(3,6) RC(3,7)
+ ;
+
+ };
+-
+- left_encoder: encoder_left {
+- compatible = "alps,ec11";
+- a-gpios = <&pro_micro 21 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
+- b-gpios = <&pro_micro 20 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
+- steps = <80>;
+- };
+-
+- sensors: sensors {
+- compatible = "zmk,keymap-sensors";
+- sensors = <&left_encoder>;
+- triggers-per-rotation = <20>;
+- };
+ };
+
+ &kata0510_lily58_layout {
+diff --git a/app/boards/shields/lily58/lily58_left.overlay b/app/boards/shields/lily58/lily58_left.overlay
+index b95332d9..0f388796 100644
+--- a/app/boards/shields/lily58/lily58_left.overlay
++++ b/app/boards/shields/lily58/lily58_left.overlay
+@@ -16,7 +16,3 @@
+ , <&pro_micro 10 GPIO_ACTIVE_HIGH>
+ ;
+ };
+-
+-&left_encoder {
+- status = "okay";
+-};
+diff --git a/app/boards/shields/lily58/lily58_right.overlay b/app/boards/shields/lily58/lily58_right.overlay
+index 15820ad2..503e51ff 100644
+--- a/app/boards/shields/lily58/lily58_right.overlay
++++ b/app/boards/shields/lily58/lily58_right.overlay
+@@ -13,7 +13,7 @@
+ &kscan0 {
+ col-gpios
+ = <&pro_micro 10 GPIO_ACTIVE_HIGH>
+- , <&pro_micro 16 GPIO_ACTIVE_HIGH>
++ , <&pro_micro 21 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 14 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 15 GPIO_ACTIVE_HIGH>
+ , <&pro_micro 18 GPIO_ACTIVE_HIGH>