From fbd7d44821eba158ab99cd3bf01cb2a144942241 Mon Sep 17 00:00:00 2001 From: Jonni Liljamo Date: Tue, 18 Nov 2025 18:39:07 +0200 Subject: [PATCH] feat(lily58): migrated old to here, semi-working --- config/lily58.conf | 4 ++ config/lily58.dtsi | 22 ++++++++++ config/lily58.keymap | 83 ++++++++++++++++++++++++++++++++++++ flake.nix | 4 ++ patches/001-lily58-pin.patch | 49 +++++++++++++++++++++ 5 files changed, 162 insertions(+) create mode 100644 config/lily58.conf create mode 100644 config/lily58.dtsi create mode 100644 config/lily58.keymap create mode 100644 patches/001-lily58-pin.patch diff --git a/config/lily58.conf b/config/lily58.conf new file mode 100644 index 0000000..a409717 --- /dev/null +++ b/config/lily58.conf @@ -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 diff --git a/config/lily58.dtsi b/config/lily58.dtsi new file mode 100644 index 0000000..fdb070b --- /dev/null +++ b/config/lily58.dtsi @@ -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>; + }; +}; + diff --git a/config/lily58.keymap b/config/lily58.keymap new file mode 100644 index 0000000..7544f72 --- /dev/null +++ b/config/lily58.keymap @@ -0,0 +1,83 @@ +#include +#include +#include +#include + +/ { + 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 + >; + }; + }; +}; diff --git a/flake.nix b/flake.nix index 5516435..fa883d9 100644 --- a/flake.nix +++ b/flake.nix @@ -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; diff --git a/patches/001-lily58-pin.patch b/patches/001-lily58-pin.patch new file mode 100644 index 0000000..94a5a15 --- /dev/null +++ b/patches/001-lily58-pin.patch @@ -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> -- 2.44.1