#include #include #include #include #include #define ZMK_POINTING_DEFAULT_SCRL_VAL 20 // default: 10 #include #define COLEMAK 0 #define QWERTY 1 #define WASD 2 #define SYM 3 #define NAV 4 #define ADJUST 5 // additional caps word keys &caps_word { continue-list = ; }; // mouse scroll speed &msc { acceleration-exponent = <0>; time-to-max-speed-ms = <0>; delay-ms = <0>; }; / { behaviors { lthp: layer_tap_hold_preferred { compatible = "zmk,behavior-hold-tap"; #binding-cells = <2>; flavor = "hold-preferred"; tapping-term-ms = <200>; bindings = <&mo>, <&kp>; }; mthp: mod_tap_hold_preferred { compatible = "zmk,behavior-hold-tap"; #binding-cells = <2>; flavor = "hold-preferred"; tapping-term-ms = <200>; bindings = <&kp>, <&kp>; }; inc_dec_msc: sensor_rotation_scroll { compatible = "zmk,behavior-sensor-rotate-var"; #sensor-binding-cells = <2>; bindings = <&msc>, <&msc>; tap-ms = <200>; }; }; macros { // undead ` ud_grave: ud_grave { compatible = "zmk,behavior-macro"; #binding-cells = <0>; wait-ms = <10>; tap-ms = <10>; bindings = <&kp GRAVE &kp SPACE>; }; // undead ~ ud_tilde: ud_tilde { compatible = "zmk,behavior-macro"; #binding-cells = <0>; wait-ms = <10>; tap-ms = <10>; bindings = <&kp TILDE &kp SPACE>; }; // undead ^ ud_caret: ud_caret { compatible = "zmk,behavior-macro"; #binding-cells = <0>; wait-ms = <10>; tap-ms = <10>; bindings = <&kp CARET &kp SPACE>; }; // undead ' ud_sqt: ud_sqt { compatible = "zmk,behavior-macro"; #binding-cells = <0>; wait-ms = <10>; tap-ms = <10>; bindings = <&kp SQT &kp SPACE>; }; // undead " ud_dqt: ud_dqt { compatible = "zmk,behavior-macro"; #binding-cells = <0>; wait-ms = <10>; tap-ms = <10>; bindings = <&kp LS(SQT) &kp SPACE>; }; // ascii arrow -> asc_arr: asc_arr { compatible = "zmk,behavior-macro"; #binding-cells = <0>; wait-ms = <10>; tap-ms = <10>; bindings = <&kp MINUS &kp LS(DOT)>; }; // ctrl + shift ctrl_shft: ctrl_shft { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <¯o_press &kp LCTRL &kp LSHFT> , <¯o_pause_for_release> , <¯o_release &kp LCTRL &kp LSHFT> ; }; }; combos { compatible = "zmk,combos"; gm_capsword { bindings = <&caps_word>; // caps on G+M key-positions = <28 29>; }; sticky_adjust { bindings = <&sl ADJUST>; // sticky adjust layer on LALT+RALT key-positions = <51 56>; }; }; keymap { compatible = "zmk,keymap"; colemak_layer { display-name = "Colemak"; bindings = < &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp TAB &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &ud_sqt &kp RC(RA(F13)) &kp ESC &kp LCTRL &kp A &kp R &kp S &kp T &kp G &kp M &kp N &kp E &kp I &kp O &kp BSPC &kp RC(RA(F13)) &mt LSHFT LBRC &kp Z &kp X &kp C &kp D &kp V &kp C_MUTE &kp C_PP &kp K &kp H &kp COMMA &kp DOT &kp DEL &mt RSHFT RBRC &kp LGUI &kp LALT <hp SYM ESC &kp SPACE &kp ENTER < NAV ESC &kp RALT &ctrl_shft >; sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_msc SCRL_DOWN SCRL_UP>; }; qwerty_layer { display-name = "QWERTY"; bindings = < &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 &trans &trans &trans &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &trans &trans &trans &kp Z &kp X &kp C &kp V &kp B &trans &trans &kp N &kp M &kp COMMA &kp DOT &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>; }; gaming_layer { display-name = "WASD"; bindings = < &kp TILDE &kp N1 &kp N2 &kp N3 &kp N4 &trans &trans &trans &trans &trans &kp ESC &kp N5 &kp Q &kp W &kp E &kp R &trans &trans &trans &trans &trans &trans &trans &kp TAB &kp LCTRL &kp A &kp S &kp D &kp F &trans &trans &trans &trans &trans &trans &trans &kp M &kp LSHIFT &kp Z &kp X &kp C &kp V &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>; }; // left mod sym_layer { display-name = "Symbols"; bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &trans &none &kp BSLH &kp PRCNT &kp DLLR &kp RA(LS(S)) &none &kp PIPE &ud_caret &kp SLASH &kp RA(N5) &kp F11 &trans &trans &none &kp LPAR &kp RPAR &kp COLON &asc_arr &none &ud_dqt &kp UNDER &kp LBKT &kp RBKT &kp F12 &trans &trans &none &ud_grave &kp AT &kp AMPS &kp RC(RA(F14)) &trans &trans &none &kp HASH &kp QMARK &kp EXCL &trans &trans &trans &trans &trans &trans &trans &kp LGUI &trans &trans >; sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>; }; // right mod nav_layer { display-name = "Num/Nav"; bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &trans &kp MINUS &kp N7 &kp N8 &kp N9 &kp STAR &kp INS &kp HOME &kp END &kp PSCRN &none &trans &trans &trans &kp DOT &kp N1 &kp N2 &kp N3 &kp EQUAL &kp LEFT &kp DOWN &kp UP &kp RIGHT &kp SEMI &trans &trans &trans &ud_tilde &kp N4 &kp N5 &kp N6 &kp PLUS &trans &trans &kp PAUSE_BREAK &kp PG_DN &kp PG_UP &none &trans &trans &trans &mt LALT MINUS &mt LGUI N0 &trans &trans &trans &trans &trans >; sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp C_PREV C_NEXT>; }; adjust_layer { display-name = "Adjust"; bindings = < &none &none &none &none &sys_reset &sys_reset &studio_unlock &none &none &none &none &to QWERTY &none &to WASD &ext_power EP_ON &none &none &none &none &none &none &none &none &none &bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &none &none &out OUT_TOG &none &none &none &none &none &none &to COLEMAK &none &none &trans &trans &none &none &none &none &none &none &trans &trans &trans &trans &trans &trans &trans &trans >; sensor-bindings = <&inc_dec_kp C_VOL_DN C_VOL_UP &inc_dec_kp PG_DN PG_UP>; }; // reserved extra layer for zmk studio extra1 { status = "reserved"; }; }; };