main
  1// Leader key configuration for eyelash_corne
  2// Port of Moonlander leader sequences to ZMK
  3// Using zmk-leader-key module syntax
  4
  5/ {
  6    behaviors {
  7        leader: leader {
  8            compatible = "zmk,behavior-leader-key";
  9            #binding-cells = <0>;
 10
 11            // ====== LAYOUT SWITCHING ======
 12            // Leader + l + <key> for layout changes
 13
 14            bepo { sequence = <L B>; bindings = <&to 0>; };
 15            ergol { sequence = <L E>; bindings = <&to 1>; };
 16            qwerty { sequence = <L Q>; bindings = <&to 2>; };
 17
 18            // ====== DEVELOPMENT PATTERNS - GENERAL ======
 19            // Leader + c + <key> for code snippets
 20
 21            nil { sequence = <C N>; bindings = <&kp N &kp I &kp L>; };
 22
 23            // Note: Complex macros need to be defined as ZMK macros
 24            // For now, keeping simpler sequences
 25
 26            // ====== PERSONAL MACROS ======
 27            // Leader + m + <key> for personal macros
 28
 29            // These would need macro definitions for complex sequences
 30            // Keeping placeholders for now
 31
 32            // ====== APPLICATION SHORTCUTS ======
 33            // Leader + a + <key> for application launches (using niri keybindings)
 34
 35            fuzzel { sequence = <A D>; bindings = <&kp LG(D)>; };
 36            emacs { sequence = <A E>; bindings = <&kp LG(LS(RET))>; };
 37            terminal { sequence = <A T>; bindings = <&kp LG(RET)>; };
 38            emoji { sequence = <A J>; bindings = <&kp LG(LC(D))>; };
 39            clipboard { sequence = <A V>; bindings = <&kp LG(LC(V))>; };
 40            raffi { sequence = <A R>; bindings = <&kp LG(LS(D))>; };
 41        };
 42    };
 43
 44    // Macros for complex leader sequences
 45    macros {
 46        // Development patterns - General
 47        macro_go_err: macro_go_err {
 48            compatible = "zmk,behavior-macro";
 49            #binding-cells = <0>;
 50            bindings = <&kp I &kp F &kp SPACE &kp E &kp R &kp R &kp SPACE &kp EXCL &kp EQUAL &kp SPACE &kp N &kp I &kp L &kp SPACE &kp LBRC &kp RET &kp TAB>;
 51        };
 52
 53        macro_console_log: macro_console_log {
 54            compatible = "zmk,behavior-macro";
 55            #binding-cells = <0>;
 56            bindings = <&kp C &kp O &kp N &kp S &kp O &kp L &kp E &kp DOT &kp L &kp O &kp G &kp LPAR &kp RPAR &kp LEFT>;
 57        };
 58
 59        macro_fmt_println: macro_fmt_println {
 60            compatible = "zmk,behavior-macro";
 61            #binding-cells = <0>;
 62            bindings = <&kp F &kp M &kp T &kp DOT &kp P &kp R &kp I &kp N &kp T &kp L &kp N &kp LPAR &kp RPAR &kp LEFT>;
 63        };
 64
 65        macro_function: macro_function {
 66            compatible = "zmk,behavior-macro";
 67            #binding-cells = <0>;
 68            bindings = <&kp F &kp U &kp N &kp C &kp T &kp I &kp O &kp N &kp LPAR &kp RPAR &kp SPACE &kp LBRC &kp RBRC &kp LEFT &kp LEFT>;
 69        };
 70
 71        macro_arrow_fn: macro_arrow_fn {
 72            compatible = "zmk,behavior-macro";
 73            #binding-cells = <0>;
 74            bindings = <&kp LPAR &kp RPAR &kp SPACE &kp EQUAL &kp GT &kp SPACE &kp LBRC &kp RBRC &kp LEFT &kp LEFT>;
 75        };
 76
 77        // Python patterns
 78        macro_py_main: macro_py_main {
 79            compatible = "zmk,behavior-macro";
 80            #binding-cells = <0>;
 81            bindings = <&kp I &kp F &kp SPACE &kp UNDER &kp UNDER &kp N &kp A &kp M &kp E &kp UNDER &kp UNDER &kp SPACE &kp EQUAL &kp EQUAL &kp SPACE &kp DQT &kp UNDER &kp UNDER &kp M &kp A &kp I &kp N &kp UNDER &kp UNDER &kp DQT &kp COLON &kp RET &kp TAB>;
 82        };
 83
 84        macro_py_def: macro_py_def {
 85            compatible = "zmk,behavior-macro";
 86            #binding-cells = <0>;
 87            bindings = <&kp D &kp E &kp F &kp SPACE &kp LPAR &kp RPAR &kp COLON &kp RET &kp TAB>;
 88        };
 89
 90        macro_py_class: macro_py_class {
 91            compatible = "zmk,behavior-macro";
 92            #binding-cells = <0>;
 93            bindings = <&kp C &kp L &kp A &kp S &kp S &kp SPACE &kp COLON &kp RET &kp TAB>;
 94        };
 95
 96        macro_py_print: macro_py_print {
 97            compatible = "zmk,behavior-macro";
 98            #binding-cells = <0>;
 99            bindings = <&kp P &kp R &kp I &kp N &kp T &kp LPAR &kp F &kp DQT &kp DQT &kp RPAR &kp LEFT &kp LEFT>;
100        };
101
102        macro_py_try: macro_py_try {
103            compatible = "zmk,behavior-macro";
104            #binding-cells = <0>;
105            bindings = <&kp T &kp R &kp Y &kp COLON &kp RET &kp TAB &kp RET &kp E &kp X &kp C &kp E &kp P &kp T &kp SPACE &kp E &kp X &kp C &kp E &kp P &kp T &kp I &kp O &kp N &kp SPACE &kp A &kp S &kp SPACE &kp E &kp COLON &kp RET &kp TAB>;
106        };
107
108        macro_py_with: macro_py_with {
109            compatible = "zmk,behavior-macro";
110            #binding-cells = <0>;
111            bindings = <&kp W &kp I &kp T &kp H &kp SPACE &kp O &kp P &kp E &kp N &kp LPAR &kp DQT &kp DQT &kp COMMA &kp SPACE &kp DQT &kp R &kp DQT &kp RPAR &kp SPACE &kp A &kp S &kp SPACE &kp F &kp COLON &kp RET &kp TAB>;
112        };
113
114        // Emacs Lisp patterns
115        macro_el_defun: macro_el_defun {
116            compatible = "zmk,behavior-macro";
117            #binding-cells = <0>;
118            bindings = <&kp LPAR &kp D &kp E &kp F &kp U &kp N &kp SPACE &kp SPACE &kp LPAR &kp RPAR &kp RET>;
119        };
120
121        macro_el_interactive: macro_el_interactive {
122            compatible = "zmk,behavior-macro";
123            #binding-cells = <0>;
124            bindings = <&kp LPAR &kp I &kp N &kp T &kp E &kp R &kp A &kp C &kp T &kp I &kp V &kp E &kp RPAR>;
125        };
126
127        macro_el_let: macro_el_let {
128            compatible = "zmk,behavior-macro";
129            #binding-cells = <0>;
130            bindings = <&kp LPAR &kp L &kp E &kp T &kp SPACE &kp LPAR &kp LPAR>;
131        };
132
133        macro_el_setq: macro_el_setq {
134            compatible = "zmk,behavior-macro";
135            #binding-cells = <0>;
136            bindings = <&kp LPAR &kp S &kp E &kp T &kp Q &kp SPACE &kp SPACE &kp RPAR &kp LEFT &kp LEFT>;
137        };
138
139        macro_el_message: macro_el_message {
140            compatible = "zmk,behavior-macro";
141            #binding-cells = <0>;
142            bindings = <&kp LPAR &kp M &kp E &kp S &kp S &kp A &kp G &kp E &kp SPACE &kp DQT &kp DQT &kp RPAR &kp LEFT &kp LEFT>;
143        };
144
145        macro_el_require: macro_el_require {
146            compatible = "zmk,behavior-macro";
147            #binding-cells = <0>;
148            bindings = <&kp LPAR &kp R &kp E &kp Q &kp U &kp I &kp R &kp E &kp SPACE &kp SQT &kp RPAR &kp LEFT>;
149        };
150
151        // Nix patterns
152        macro_nix_fn: macro_nix_fn {
153            compatible = "zmk,behavior-macro";
154            #binding-cells = <0>;
155            bindings = <&kp LBRC &kp SPACE &kp P &kp K &kp G &kp S &kp COMMA &kp SPACE &kp DOT &kp DOT &kp DOT &kp SPACE &kp RBRC &kp COLON>;
156        };
157
158        macro_nix_let: macro_nix_let {
159            compatible = "zmk,behavior-macro";
160            #binding-cells = <0>;
161            bindings = <&kp L &kp E &kp T &kp RET &kp TAB &kp RET &kp I &kp N &kp RET>;
162        };
163
164        macro_nix_with: macro_nix_with {
165            compatible = "zmk,behavior-macro";
166            #binding-cells = <0>;
167            bindings = <&kp W &kp I &kp T &kp H &kp SPACE &kp P &kp K &kp G &kp S &kp SEMI &kp SPACE &kp LBKT &kp RET &kp TAB &kp RET &kp RBKT>;
168        };
169
170        macro_nix_inherit: macro_nix_inherit {
171            compatible = "zmk,behavior-macro";
172            #binding-cells = <0>;
173            bindings = <&kp I &kp N &kp H &kp E &kp R &kp I &kp T &kp SPACE &kp SEMI &kp LEFT &kp LEFT>;
174        };
175
176        macro_nix_build: macro_nix_build {
177            compatible = "zmk,behavior-macro";
178            #binding-cells = <0>;
179            bindings = <&kp B &kp U &kp I &kp L &kp D &kp I &kp N &kp P &kp U &kp T &kp S &kp SPACE &kp EQUAL &kp SPACE &kp LBKT &kp SPACE &kp RBKT &kp SEMI>;
180        };
181
182        macro_nix_script: macro_nix_script {
183            compatible = "zmk,behavior-macro";
184            #binding-cells = <0>;
185            bindings = <&kp P &kp K &kp G &kp S &kp DOT &kp W &kp R &kp I &kp T &kp E &kp S &kp H &kp E &kp L &kp L &kp S &kp C &kp R &kp I &kp P &kp T &kp B &kp I &kp N &kp SPACE &kp DQT &kp DQT &kp SPACE &kp SQT &kp SQT &kp RET &kp TAB &kp RET &kp SQT &kp SQT>;
186        };
187
188        // Import patterns
189        macro_import: macro_import {
190            compatible = "zmk,behavior-macro";
191            #binding-cells = <0>;
192            bindings = <&kp I &kp M &kp P &kp O &kp R &kp T &kp SPACE>;
193        };
194
195        macro_from_import: macro_from_import {
196            compatible = "zmk,behavior-macro";
197            #binding-cells = <0>;
198            bindings = <&kp F &kp R &kp O &kp M &kp SPACE &kp SPACE &kp I &kp M &kp P &kp O &kp R &kp T &kp SPACE>;
199        };
200
201        macro_nix_module: macro_nix_module {
202            compatible = "zmk,behavior-macro";
203            #binding-cells = <0>;
204            bindings = <&kp LBRC &kp SPACE &kp P &kp K &kp G &kp S &kp SPACE &kp RBRC &kp COLON &kp SPACE &kp LBRC &kp RET &kp TAB &kp RET &kp RBRC>;
205        };
206
207        macro_use_package: macro_use_package {
208            compatible = "zmk,behavior-macro";
209            #binding-cells = <0>;
210            bindings = <&kp LPAR &kp U &kp S &kp E &kp MINUS &kp P &kp A &kp C &kp K &kp A &kp G &kp E &kp SPACE &kp RET &kp TAB>;
211        };
212
213        // Personal macros
214        macro_email: macro_email {
215            compatible = "zmk,behavior-macro";
216            #binding-cells = <0>;
217            bindings = <&kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp AT &kp S &kp B &kp R &kp DOT &kp P &kp M>;
218        };
219
220        macro_git_sig: macro_git_sig {
221            compatible = "zmk,behavior-macro";
222            #binding-cells = <0>;
223            bindings = <&kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp SPACE &kp D &kp E &kp M &kp E &kp E &kp S &kp T &kp E &kp R &kp SPACE &kp LT &kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp AT &kp S &kp B &kp R &kp DOT &kp P &kp M &kp GT>;
224        };
225
226        macro_email_sig: macro_email_sig {
227            compatible = "zmk,behavior-macro";
228            #binding-cells = <0>;
229            bindings = <&kp MINUS &kp MINUS &kp RET &kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp SPACE &kp D &kp E &kp M &kp E &kp E &kp S &kp T &kp E &kp R &kp RET &kp V &kp I &kp N &kp C &kp E &kp N &kp T &kp AT &kp S &kp B &kp R &kp DOT &kp P &kp M>;
230        };
231    };
232};