/* * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ #include #include /* Layers */ #define DEF_L 0 #define NAV_L 1 #define UPP_L 2 #define SYM_L 3 #define NUM_L 4 /* Behavior Settings */ &caps_word { continue-list = ; }; &sk { release-after-ms = <60000>; }; / { behaviors { // A hold-tap that activates without delay (like `&mo`) mo_tap: mo_with_tap { compatible = "zmk,behavior-hold-tap"; label = "MO_WITH_TAP"; #binding-cells = <2>; tapping_term_ms = <0>; retro-tap; flavor = "hold-preferred"; bindings = <&mo>, <&kp>; }; #define MO(LAYER) &mo_tap LAYER F24 hm: homerow_mods { compatible = "zmk,behavior-hold-tap"; label = "HOMEROW_MODS"; #binding-cells = <2>; tapping-term-ms = <150>; quick-tap-ms = <0>; flavor = "tap-preferred"; bindings = <&kp>, <&kp>; }; }; combos { compatible = "zmk,combos"; #define COMBO(NAME, BINDINGS, KEYPOS, LAYERS) \ combo_##NAME { \ bindings = ; \ key-positions = ; \ layers = ; \ }; /* KEY POSITIONS ╭────────────────────╮ ╭────────────────────╮ │ 0 1 2 3 4 │ │ 5 6 7 8 9 │ │ 10 11 12 13 14 │ │ 15 16 17 18 19 │ │ 20 21 22 │ │ 23 24 25 │ ╰───────────╮ 26 27 │ │ 28 29 ╭───────────╯ ╰────────╯ ╰────────╯ */ /* Letters */ COMBO(lower_v, &kp V, 1 2, DEF_L) COMBO(lower_x, &kp X, 1 3, DEF_L) COMBO(lower_z, &kp Z, 20 21, DEF_L) COMBO(forward_slash, &kp FSLH, 2 3, DEF_L) COMBO(upper_v, &kp LS(V), 1 2, UPP_L) COMBO(upper_x, &kp LS(X), 1 3, UPP_L) COMBO(upper_z, &kp LS(Z), 20 21, UPP_L) COMBO(question_mark, &kp LS(FSLH), 2 3, UPP_L) /* Brackets */ COMBO(left_bracket, &kp LBKT, 1 11, DEF_L UPP_L SYM_L NUM_L) COMBO(right_bracket, &kp RBKT, 8 18, DEF_L UPP_L SYM_L NUM_L) COMBO(left_parenthesis, &kp LPAR, 2 12, DEF_L UPP_L SYM_L NUM_L) COMBO(right_parenthesis, &kp RPAR, 7 17, DEF_L UPP_L SYM_L NUM_L) COMBO(left_brace, &kp LBRC, 3 13, DEF_L UPP_L SYM_L NUM_L) COMBO(right_brace, &kp RBRC, 6 16, DEF_L UPP_L SYM_L NUM_L) /* Convenience */ COMBO(esc, &kp ESC, 3 4, DEF_L) COMBO(del, &kp DEL, 13 14, DEF_L) COMBO(select_all, &kp LC(A), 5 6, NAV_L) }; keymap { compatible = "zmk,keymap"; default_layer { bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp J &kp P &kp U &kp O &kp K &kp B &kp D &kp R &kp F &kp Q &hm LGUI W &hm LALT I &hm LCTRL E &hm LSHFT A &kp DOT &kp G &hm RSHFT T &hm RCTRL N &hm LALT S &hm RGUI H &hm RALT Y &kp QUOT &kp COMMA &kp M &kp L &hm RALT C // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ < NAV_L SPACE &kp TAB < SYM_L ENTER < NUM_L BSPC // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; nav_layer { label = "Nav"; bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp K_REDO &kp K_PASTE &kp K_COPY &kp K_CUT &kp K_UNDO &sk LGUI &sk LALT &sk LSHFT &sk LCTRL &kp LC(Z) &kp CAPS &kp LARW &kp DARW &kp UARW &kp RARW &kp LC(X) &kp LC(C) &kp LC(V) &kp HOME &kp PG_DN &kp PG_UP // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &trans &trans &kp ENTER &kp BSPC // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; upper_layer { label = "Upp"; bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp LS(W) &kp LS(F) &kp LS(M) &kp LS(P) &kp LS(G) &kp LS(K) &kp LS(U) &kp LS(O) &kp LS(Y) &kp DQT &kp LS(R) &kp LS(S) &kp LS(N) &kp LS(T) &kp LS(B) &kp LS(J) &kp LS(A) &kp LS(E) &kp LS(I) &kp LS(H) &kp LS(C) &kp LS(L) &kp LS(D) &kp LS(X) &kp LT &kp GT // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &trans &kp LS(SPACE) &trans &trans // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; sym_layer { label = "Sym"; bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp COLON &kp AMPS &kp STAR &kp LPAR &kp PLUS &kp CARET &kp AMPS &kp SEMI &kp COLON &kp DQT &kp TILDE &kp DLLR &kp PRCNT &kp CARET &kp PIPE &kp BSLH &sk LCTRL &sk LSHFT &sk LALT &sk LGUI &kp EXCL &kp AT &kp POUND &kp PIPE &kp LT &kp GT // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &trans &kp UNDER &trans &trans // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; num_layer { label = "Num"; bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp SEMI &kp N7 &kp N8 &kp N9 &kp EQUAL &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp GRAVE &kp N4 &kp N5 &kp N6 &kp BSLH &kp F11 &sk LCTRL &sk LSHFT &sk LALT &sk LGUI &kp N1 &kp N2 &kp N3 &kp F12 &kp COMMA &kp DOT // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &kp N0 &kp MINUS &trans &trans // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; }; };