#define ASM(letter) \ hu##letter: hu##letter { \ compatible = "zmk,behavior-hold-tap"; \ label = ZMK_MACRO_STRINGIFY(hu##letter); \ #binding-cells = <2>; \ flavor = "tap-preferred"; \ tapping-term-ms = ; \ quick-tap-ms = ; \ bindings = <&ASB##letter>, <&none>; \ }; \ \ asmm##letter: asmm##letter { \ compatible = "zmk,behavior-mod-morph"; \ label = ZMK_MACRO_STRINGIFY(asmm##letter); \ #binding-cells = <0>; \ bindings = <&ASM##letter>, <&as LS(##letter) ##letter>; \ mods = <(MOD_LSFT|MOD_RSFT|MOD_LCTL|MOD_RCTL|MOD_LALT|MOD_RALT|MOD_LGUI|MOD_RGUI)>; \ }; \ \ ASM##letter: ASM##letter { \ compatible = "zmk,behavior-macro"; \ label = ZMK_MACRO_STRINGIFY(ASM##letter); \ #binding-cells = <0>; \ tap-ms = <1>; \ wait-ms = <1>; \ bindings = \ <¯o_tap &kp letter>, \ <¯o_press &hu##letter 0 0>, \ <¯o_pause_for_release>, \ <¯o_release &hu##letter 0 0> \ ; \ }; \ \ ASB##letter: ASB##letter { \ compatible = "zmk,behavior-macro"; \ label = ZMK_MACRO_STRINGIFY(ASB##letter); \ #binding-cells = <0>; \ tap-ms = <1>; \ wait-ms = <1>; \ bindings = \ <¯o_tap &kp BSPC>, \ <¯o_press &kp LS(letter)>, \ <¯o_pause_for_release>, \ <¯o_release &kp LS(letter)> \ ; \ }; #define ASMR(letter) \ hu##letter: hu##letter { \ compatible = "zmk,behavior-hold-tap"; \ label = ZMK_MACRO_STRINGIFY(hu##letter); \ #binding-cells = <2>; \ flavor = "tap-preferred"; \ tapping-term-ms = ; \ quick-tap-ms = ; \ bindings = <&ASB##letter>, <&none>; \ }; \ \ asmm##letter: asmm##letter { \ compatible = "zmk,behavior-mod-morph"; \ label = ZMK_MACRO_STRINGIFY(asmm##letter); \ #binding-cells = <0>; \ bindings = <&ASM##letter>, <&as LS(##letter) ##letter>; \ mods = <(MOD_LSFT|MOD_RSFT|MOD_LCTL|MOD_RCTL|MOD_LALT|MOD_RALT|MOD_LGUI|MOD_RGUI)>; \ }; \ \ ASM##letter: ASM##letter { \ compatible = "zmk,behavior-macro"; \ label = ZMK_MACRO_STRINGIFY(ASM##letter); \ #binding-cells = <0>; \ tap-ms = <1>; \ wait-ms = <1>; \ bindings = \ <¯o_tap &kp letter>, \ <¯o_press &hu##letter 0 0>, \ <¯o_pause_for_release>, \ <¯o_release &hu##letter 0 0> \ ; \ }; \ \ ASB##letter: ASB##letter { \ compatible = "zmk,behavior-macro"; \ label = ZMK_MACRO_STRINGIFY(ASB##letter); \ #binding-cells = <0>; \ tap-ms = <1>; \ wait-ms = <1>; \ bindings = \ <¯o_tap &kp BSPC>, \ <¯o_press &kp LS(letter)>, \ <¯o_pause_for_release>, \ <¯o_release &kp LS(letter)> \ ; \ }; #define ASMP(letter) \ hu##letter: hu##letter { \ compatible = "zmk,behavior-hold-tap"; \ label = ZMK_MACRO_STRINGIFY(hu##letter); \ #binding-cells = <2>; \ flavor = "tap-preferred"; \ tapping-term-ms = ; \ quick-tap-ms = ; \ bindings = <&ASB##letter>, <&none>; \ }; \ \ asmm##letter: asmm##letter { \ compatible = "zmk,behavior-mod-morph"; \ label = ZMK_MACRO_STRINGIFY(asmm##letter); \ #binding-cells = <0>; \ bindings = <&ASM##letter>, <&as LS(##letter) ##letter>; \ mods = <(MOD_LSFT|MOD_RSFT|MOD_LCTL|MOD_RCTL|MOD_LALT|MOD_RALT|MOD_LGUI|MOD_RGUI)>; \ }; \ \ ASM##letter: ASM##letter { \ compatible = "zmk,behavior-macro"; \ label = ZMK_MACRO_STRINGIFY(ASM##letter); \ #binding-cells = <0>; \ tap-ms = <1>; \ wait-ms = <1>; \ bindings = \ <¯o_tap &kp letter>, \ <¯o_press &hu##letter 0 0>, \ <¯o_pause_for_release>, \ <¯o_release &hu##letter 0 0> \ ; \ }; \ \ ASB##letter: ASB##letter { \ compatible = "zmk,behavior-macro"; \ label = ZMK_MACRO_STRINGIFY(ASB##letter); \ #binding-cells = <0>; \ tap-ms = <1>; \ wait-ms = <1>; \ bindings = \ <¯o_tap &kp BSPC>, \ <¯o_press &kp LS(letter)>, \ <¯o_pause_for_release>, \ <¯o_release &kp LS(letter)> \ ; \ }; #define AS(keycode) &asmm##keycode #define ASR(keycode) &ASMR##keycode #define ASP(keycode) &ASMP##keycode #define ASB(keycode) &as LS(keycode) keycode #define ASBR(keycode) &asr LS(keycode) keycode #define ASBP(keycode) &asp LS(keycode) keycode ASMP(A) ASM(B) ASM(C) ASM(D) ASM(E) ASM(F) ASM(G) ASM(H) ASMR(I) ASM(J) ASM(K) ASM(L) ASM(M) ASM(N) ASMP(O) ASM(P) ASMP(Q) ASMR(R) ASM(S) ASM(T) ASM(U) ASM(V) ASMR(W) ASMR(X) ASMR(Y) ASMP(Z) ASM(SEMI) ASM(CMMA) ASMP(SLASH) ASM(BSLH) ASM(MINUS) ASMP(QUOT) ASMR(DOT) ASM(GRAVE) ASM(LBKT) ASM(RBKT) ASM(EQUAL) ASM(UP) ASM(LEFT) ASM(DOWN) ASM(RIGHT) ASM(INSERT) ASM(PG_UP) ASM(PG_DN) ASM(HOME) ASM(END) ASM(N0) ASM(N1) ASM(N2) ASM(N3) ASM(N4) ASM(N5) ASM(N6) ASM(N7) ASM(N8) ASM(N9) ASM(F1) ASM(F2) ASM(F3) ASM(F4) ASM(F5) ASM(F6) ASM(F7) ASM(F8) ASM(F9) ASM(F10) ASM(F11) ASM(F12)