/* * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ #include #include #include #include #define QUICK_TAP_MS 125 #define TAPPING_TERM_MS 150 #define SLOW_TAPPING_TERM_MS 350 #define IDLE_TIMEOUT_MS 5000 #define REQ_IDLE_MS 150 < { // Layer toggle flavor = "tap-preferred"; tapping-term-ms = ; quick-tap-ms = ; }; &sk { // Sticky keys settings, One Shot Keys [QMK] release-after-ms = ; quick-release; }; &caps_word { // Allow caps word to continue even when minus or underscore are pressed. // Also prevent mod presses from cancelling caps word. continue-list = < UNDERSCORE MINUS LCTRL LALT LGUI LSHFT RCTRL RALT RGUI RSHFT BACKSPACE >; /delete-property/ ignore-modifiers; }; / { behaviors { hml: homerow_mods_left { compatible = "zmk,behavior-hold-tap"; label = "HOMEROW_MODS_LEFT_HAND"; bindings = <&kp>, <&kp>; #binding-cells = <2>; tapping-term-ms = ; quick-tap-ms = ; flavor = "balanced"; require-prior-idle-ms = ; hold-trigger-key-positions = <5 6 7 8 9 19 18 17 16 15 34 25 26 35 27 28 29 37 36>; hold-trigger-on-release; }; hmr: homerow_mods_right { compatible = "zmk,behavior-hold-tap"; label = "HOMEROW_MODS_RIGHT_HAND"; bindings = <&kp>, <&kp>; #binding-cells = <2>; tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; hold-trigger-key-positions = <0 1 2 3 4 14 13 12 11 10 11 12 13 14 20 21 22 23 24 30 31 32 33>; flavor = "balanced"; hold-trigger-on-release; }; ss_cw: shift_capsword { compatible = "zmk,behavior-tap-dance"; label = "SHIFT_CAPSWORD"; #binding-cells = <0>; bindings = <&sk LEFT_SHIFT>, <&caps_word>; tapping-term-ms = ; }; cln_scln_td: cln_scln_td { compatible = "zmk,behavior-tap-dance"; label = "CLN_SCLN_TD"; #binding-cells = <0>; bindings = <&kp COLON>, <&kp SEMICOLON>; }; }; keymap { compatible = "zmk,keymap"; base { bindings = < &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp ESCAPE &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp RBKT &kp BSPC &kp LSHIFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp PERIOD &kp FSLH &kp ENTER &mo 1 &mo 2 &kp SPACE &none &mo 3 &none >; }; // For the german keyboard layout special_char { bindings = < &kp GRAVE &kp EQUAL &none &none &none &kp LS(N5) &kp LS(N7) &kp RA(N7) &kp RA(N0) &kp RA(RBKT) &kp TAB &none &kp LS(N2) &kp LS(MINUS) &kp LS(N1) &none &kp LS(N6) &kp LS(N0) &kp LS(N8) &kp LS(N9) &kp BSLH &kp DEL &kp LSHIFT &kp NUBS &kp LS(NUBS) &none &none &none &kp RA(NUBS) &kp LS(N4) &kp RA(N8) &kp RA(N9) &kp RA(MINUS) &kp ENTER &trans &none &none &none &none &none >; }; num_fun { bindings = < &kp F9 &kp F10 &kp F11 &kp F12 &none &none &kp N7 &kp N8 &kp N9 &none &kp TAB &kp F5 &kp F6 &kp F7 &kp F8 &none &none &kp N4 &kp N5 &kp N6 &kp RBKT &kp DEL &kp LSHIFT &kp F1 &kp F2 &kp F3 &kp F4 &none &kp N0 &kp N1 &kp N2 &kp N3 &kp FSLH &kp ENTER &none &trans &none &none &none &kp N0 >; }; nav_umlaut { bindings = < &none &none &none &none &none &none &kp LBKT &none &kp SEMI &none &kp TAB &kp SQT &kp MINUS &none &none &none &kp LEFT &kp DOWN &kp UP &kp RIGHT &none &kp DEL &kp LSHIFT &none &none &none &none &none &none &none &none &none &none &kp ENTER &none &trans &none &none &none &none >; }; }; combos { compatible = "zmk,combos"; // left home row combos combo_LSHIFT { key-positions = <13 14>; bindings = <&sk LSHIFT>; timeout-ms = <50>; slow-release; }; combo_LCTRL { key-positions = <12 14>; bindings = <&sk LCTRL>; timeout-ms = <50>; slow-release; }; combo_LMETA { key-positions = <12 13>; bindings = <&sk LMETA>; timeout-ms = <50>; slow-release; }; combo_LALT { key-positions = <11 14>; bindings = <&sk LALT>; timeout-ms = <50>; slow-release; }; // right home row combos combo_RSHIFT { key-positions = <17 18>; bindings = <&sk RSHIFT>; timeout-ms = <50>; slow-release; }; combo_RCTRL { key-positions = <17 19>; bindings = <&sk RCTRL>; timeout-ms = <50>; slow-release; }; combo_RMETA { key-positions = <18 19>; bindings = <&sk RMETA>; timeout-ms = <50>; slow-release; }; combo_RALT { key-positions = <17 20>; bindings = <&sk RALT>; timeout-ms = <50>; slow-release; }; }; };