/* * Copyright (c) 2020 duckyb * * SPDX-License-Identifier: MIT */ #include #include #include #include // Layer definitions #define BASE 0 #define SYM 1 #define EXT 2 #define FNC 3 #define SYM2 4 #define ACCENT 5 #define SETTINGS 6 // ----------------- &sk { // don't release mods on other mods presses ignore-modifiers; }; / { behaviors { // Enables holding the first mod-tap key // by performing a tap-release-hold sequence. // To use it: "&qt KEYCODE1 KEYCODE2" qt: quick_tap { compatible = "zmk,behavior-hold-tap"; label = "QUICK_TAP"; #binding-cells = <2>; flavor = "hold-preferred"; tapping-term-ms = <200>; quick-tap-ms = <200>; bindings = <&kp>, <&kp>; }; }; macros { // sometimes my device thinks a modifier is being held down // pressing all modifiers fixes it. unstick: unstick { label = "ZM_unstick"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LSHIFT &kp RSHIFT &kp LCTRL &kp RCTRL &kp LALT &kp RALT &kp LGUI &kp RGUI>; }; }; combos { compatible = "zmk,combos"; // Escape key combo_esc { timeout-ms = <150>; key-positions = <12 13 16 17>; bindings = <&kp ESC>; }; // IMPORTED FROM ZMK // // both right thumb keys combo_accent { timeout-ms = <200>; key-positions = <32 33>; bindings = <&mo ACCENT>; }; // internal-left & external-right thumb keys combo_sym2 { timeout-ms = <200>; key-positions = <31 33>; bindings = <&mo SYM2>; }; // both left thumb keys combo_settings { timeout-ms = <200>; key-positions = <30 31>; bindings = <&mo SETTINGS>; }; // left index & middle fingers (home-row) // hold control & space for Adobe workflow combo_ctrl_space { timeout-ms = <200>; key-positions = <12 13>; bindings = <&kp LC(SPACE)>; layers = ; }; }; keymap { compatible = "zmk,keymap"; default_layer { bindings = < &kp SQT &kp CMMA &kp DOT &kp P &kp Y &kp F &kp G &kp C &kp R &kp L &kp A &kp O < FUN E < NAV U &kp I &kp D < SYM H < NUM T &kp N &kp S &kp SCLN &kp Q &kp J &kp K &kp X &kp B &kp M &kp W &kp V &kp Z &mt LALT TAB &mt LGUI SPC &mt LSHIFT RET &mt LCTRL BSPC >; }; nav_layer { bindings = < &bt BT_CLR &trans &trans &bootloader &sys_reset &trans &kp LBRC &kp RBRC &kp LPAR &kp RPAR &bt BT_SEL 0 &trans &trans &trans &trans &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans &bt BT_SEL 1 &trans &trans &trans &trans &trans &kp LBKT &kp RBKT &IT_LESS &IT_GREAT &trans &trans &trans &kp BSPC >; }; num_layer { bindings = < &trans &kp F7 &kp F8 &kp F9 &trans &trans &trans &trans &trans &trans &kp DQT &kp F4 &kp F5 &kp F6 &kp EQUAL &trans &trans &trans &trans &trans &kp GRAVE &kp F1 &kp F2 &kp F3 &kp BSLH &trans &trans &trans &trans &trans &trans &trans &trans &trans >; }; sym_layer { label = "Sym."; bindings = < &kp LS(Q) &kp LS(Z) &kp STAR &kp AMPS &trans &sys_reset &bootloader &trans &trans &trans &kp DQT &kp CARET &kp PRCNT &kp DLLR &kp KP_PLUS &trans &trans &trans &trans &trans &kp TILDE &kp HASH &kp AT &kp EXCL &kp PIPE &trans &trans &trans &trans &trans &kp LPAR &kp RPAR &trans &trans >; }; // Numbers and high frequency symbols sym_layer { label = "Sym."; bindings = < &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp IT_LESS &kp IT_USD &kp IT_LPAR &kp IT_LBRC &kp IT_LBKT &kp IT_EQL &kp IT_QUES &kp IT_SQUOT &kp IT_MINUS &kp IT_AST &kp IT_GREAT &kp IT_PERC &kp IT_RPAR &kp IT_RBRC &kp IT_RBKT &kp IT_AT &kp IT_EXCL &kp IT_DQUOT &kp IT_PLUS &kp IT_FSLH &mo FNC &mo SYM2 &trans &trans >; }; // Main modifiers and arrow keys ext_layer { label = "Mods"; bindings = < &kp ESC &kp C_PREV &kp C_PP &kp C_NEXT &kp C_PAUSE &kp PG_UP &kp HOME &kp UP &kp END &kp CAPS &sk LALT &sk LGUI &sk LSHIFT &sk LCTRL &kp RALT &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp DEL &kp LC(Z) &kp LC(X) &kp LC(C) &kp TAB &kp LC(V) &kp LC(BSPC) &kp BSPC &trans &trans &trans &trans &kp LCTRL &kp ENTER &mo FNC >; }; // Low frequency symbols. symbols_2_layer { label = "Sym.2"; bindings = < &kp IT_CARET &kp IT_UNDER &kp IT_PND &kp IT_EUR &kp IT_HASH &none &none &none &none &none &kp IT_BKTK &kp IT_TILDE &kp IT_BSLH &kp IT_PIPE &kp IT_AND &none &none &none &none &none &none &none &kp IT_SECT &kp IT_CCED &kp IT_DEG &none &none &none &none &none &none &none &none &none >; }; }; };