diff --git a/config/autoshift.dtsi b/config/autoshift.dtsi new file mode 100644 index 0000000..b1a3345 --- /dev/null +++ b/config/autoshift.dtsi @@ -0,0 +1,217 @@ +#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) diff --git a/config/flea.keymap b/config/flea.keymap index 5391081..2f8baf6 100644 --- a/config/flea.keymap +++ b/config/flea.keymap @@ -6,6 +6,7 @@ #include #include #include +#include "autoshift.dtsi" /* Layers */ @@ -23,7 +24,41 @@ &sk { release-after-ms = <60000>; }; +as: auto_shift { + compatible = "zmk,behavior-hold-tap"; + label = "AUTO_SHIFT"; + #binding-cells = <2>; + tapping-term-ms = ; + quick-tap-ms = ; + flavor = "tap-preferred"; + bindings = <&kp>, <&kp>; + +}; + +asr: auto_shift_ring { + + compatible = "zmk,behavior-hold-tap"; + label = "AUTO_SHIFT_RING"; + #binding-cells = <2>; + tapping-term-ms = ; + quick-tap-ms = ; + flavor = "tap-preferred"; + bindings = <&kp>, <&kp>; + +}; + +asp: auto_shift_pinky { + + compatible = "zmk,behavior-hold-tap"; + label = "AUTO_SHIFT_PINKY"; + #binding-cells = <2>; + tapping-term-ms = ; + quick-tap-ms = ; + flavor = "tap-preferred"; + bindings = <&kp>, <&kp>; + +}; / { ZMK_MACRO(mo_nav, wait-ms = <0>; @@ -125,7 +160,7 @@ bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp F2 &kp F3 &kp F4 &kp F5 &kp PG_UP &kp HOME &kp UARW &kp END - &sk LGUI &sk LALT &sk LCTRL &sk LSHFT &kp LC(Z) &kp PG_DN &kp LARW &kp ENTER &kp RARW &kp ESC + &sk LGUI &sk LALT &sk LCTRL &sk LSHFT &kp LC(Z) &kp PG_DN &kp LARW &kp DARW &kp UARW &kp RARW &kp F1 &kp LC(X) &kp LC(C) &kp LC(V) &kp TAB &kp DARW &key_repeat &caps_word // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &trans &trans &kp BSPC &kp DEL