/* * Copyright (c) 2020 The ZMK Contributors * SPDX-License-Identifier: MIT */ #include #include #include #include /* Layers */ #define DEF_L 0 #define NAV_L 1 #define SYM_L 2 #define NUM_L 3 /* Behavior Settings */ &caps_word { continue-list = ; }; &sk { release-after-ms = <60000>; }; / { 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(q, &kp Q, 1 2, DEF_L) COMBO(z, &kp Z, 20 21, DEF_L) COMBO(forward_slash, &kp FSLH, 19 20, DEF_L) /* Brackets */ COMBO(left_bracket, &kp LBKT, 0 9, DEF_L SYM_L NUM_L) COMBO(right_bracket, &kp RBKT, 7 16, DEF_L SYM_L NUM_L) COMBO(left_parenthesis, &kp LPAR, 1 10, DEF_L SYM_L NUM_L) COMBO(right_parenthesis, &kp RPAR, 6 15, DEF_L SYM_L NUM_L) COMBO(left_brace, &kp LBRC, 2 11, DEF_L SYM_L NUM_L) COMBO(right_brace, &kp RBRC, 5 14, DEF_L SYM_L NUM_L) COMBO(less_than, &kp LT, 3 12, DEF_L SYM_L NUM_L) COMBO(grather_than, &kp GT, 4 13, DEF_L SYM_L NUM_L) /* Convenience */ COMBO(lshift, &sk LSHFT, 9 10, DEF_L) COMBO(rshift, &sk RSHFT, 15 16, DEF_L) COMBO(quote, &kp DQT, 6 7, DEF_L) COMBO(del_word, &kp LC(BSPC), 22 24, DEF_L) COMBO(caps_lock, &kp CAPS, 0 7, DEF_L) COMBO(caps_word, &caps_word, 1 6, DEF_L) COMBO(esc, &kp ESC, 9 19, DEF_L) COMBO(ent, &kp ENTER, 16 24, DEF_L) COMBO(stab, &kp LS(TAB), 10 11, DEF_L) COMBO(tab, &kp TAB, 14 15, DEF_L) COMBO(select_all, &kp LC(A), 19 20, NAV_L) }; keymap { compatible = "zmk,keymap"; default_layer { bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp C &kp G &kp D &kp K &kp J &kp L &kp U &kp Y &kp R &kp S &kp T &kp H &kp P &kp V &kp N &kp A &kp I &kp O &kp X &kp B &kp W &kp F &kp M &kp COMMA &kp DOT &kp SQT // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &sl NAV_L &kp SPACE < NUM_L E &sl SYM_L // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; nav_layer { label = "Nav"; bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &none &kp LC(O) &kp HOME &kp LS(LA(UARW)) &kp PG_UP &kp HOME &kp UARW &kp END &sk LGUI &sk LALT &sk LCTRL &sk LSHFT &kp LS(LA(DARW)) &kp PG_DN &kp LARW &kp DARW &kp UARW &kp INS &kp LC(Z) &kp LC(X) &kp LC(C) &kp LC(V) &none &kp LS(TAB) &key_repeat &kp DEL // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &trans &trans &kp BSPC &kp DEL // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; sym_layer { label = "Sym"; bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp AMPS &kp ASTRK &kp BSLH &kp PLUS &none &none &none &none &kp COLON &kp DLLR &kp PRCNT &kp CARET &kp EQUAL &none &sk LSHFT &sk LCTRL &sk LALT &sk LGUI &kp SEMI &kp EXCL &kp AT &kp POUND &kp LT &kp PIPE &kp GT &none // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &kp UNDER &kp MINUS &trans &trans // ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯ >; }; num_layer { label = "Num"; bindings = < // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp N7 &kp N4 &kp N3 &kp PLUS &kp K &kp W &kp B &kp G &kp GRAVE &kp N2 &kp N1 &kp N0 &kp EQUAL &kp J &sk LSHFT &sk LCTRL &sk LALT &sk LGUI &kp TILDE &kp N8 &kp N6 &kp N5 &kp D &none &none &kp Y // ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯ &kp N9 &kp MINUS &trans &trans // ╰─────────────┴─────────────╯ ╰─────────────┴───────────── >; }; }; };