/* ISSUES, WORKAROUNDS and a "ZMK-WISHLIST" * no tap-only combos (#544), prevents rapid chording of HRMs on combo positions * &bootloader doesn't work with Planck_rev6 (#1086) * sticky-hold swallows OS shift when typing quickly, using sticky-tap for now * native sleep key doesn't work with windows (#1077), using sleep-macro for now * invalid DFU suffix signature warning when flashing with dfu-util * todo: num_word: momentary shift to number layer, auto-cancel on everything that's not a number */ #include #include #include "../zmk-nodefree-config/helper.h" #include "../zmk-nodefree-config/international_chars/greek.dtsi" #include "../zmk-nodefree-config/international_chars/german.dtsi" // make a 36 keys layout unless EXTRA-keys are defined in parent .keymap file #if !defined EXTRA_MID #define EXTRA_MID #endif #if !defined EXTRA_BOT_L #define EXTRA_BOT_L #endif #if !defined EXTRA_BOT_R #define EXTRA_BOT_R #endif #define XXX &none #define ___ &trans #define DSK_PREV &kp LG(LC(LEFT)) // previous desktop on windows #define DSK_NEXT &kp LG(LC(RIGHT)) // next " " " #define CANCEL &kp K_CANCEL // cancels caps-word and does nothing else #define DEF 0 #define NAV 1 #define SYS 2 #define NUM 3 #define FN 4 #define UC 5 #include "combos.dtsi" // source after layer shortcuts #include "mouse.dtsi" #define QUICK_TAP_MS 175 &sk { // sticky key config release-after-ms = <600>; // release after 0.6s quick-release; // no double capitalization when rolling keys }; &sl { // sticky layer config ignore-modifiers; // no double capitalization when rolling keys }; < { // layer tap config flavor = "balanced"; tapping-term-ms = <200>; quick-tap-ms = ; // double-tap + hold repeats tap-key }; &caps_word { // caps-word config /delete-property/ ignore-modifiers; // mods deactivate caps word, requires PR #1422 }; /* homerow mods */ #define KEYS_L LT0 LT1 LT2 LT3 LT4 LM0 LM1 LM2 LM3 LM4 LB0 LB1 LB2 LB3 LB4 // left-hand keys #define KEYS_R RT0 RT1 RT2 RT3 RT4 RM0 RM1 RM2 RM3 RM4 RB0 RB1 RB2 RB3 RB4 // right-hand keys #define THUMBS LH2 LH1 LH0 RH0 RH1 RH2 // thumb keys ZMK_BEHAVIOR(hml, hold_tap, // left-hand HRMs flavor = "balanced"; tapping-term-ms = <280>; quick-tap-ms = ; global-quick-tap-ms = <150>; bindings = <&kp>, <&kp>; hold-trigger-key-positions = ; hold-trigger-on-release; // requires PR #1423 ) ZMK_BEHAVIOR(hmr, hold_tap, // right-hand HRMs flavor = "balanced"; tapping-term-ms = <280>; quick-tap-ms = ; global-quick-tap-ms = <150>; bindings = <&kp>, <&kp>; hold-trigger-key-positions = ; hold-trigger-on-release; // requires PR #1423 ) /* custom keys and macros */ // tap: sticky shift | double tap: capsword | triple tap: cancel capsword // ZMK_BEHAVIOR(ss_cw, tap_dance, // tapping-term-ms = <200>; // bindings = <&sk LSHFT>, <&caps_word>, ; // ) // tap: sticky-shift | lshft + tap: caps-word | hold: shift ZMK_BEHAVIOR(ss_cw, mod_morph, bindings = <&sk LSHFT>, <&caps_word>; mods = <(MOD_LSFT)>; ) // tap: backspace | lshft + tap: delete | rshft + tap: shift-delete | hold: num layer ZMK_BEHAVIOR(bs_del_num, mod_morph, bindings = << NUM BSPC>, <&kp DEL>; mods = <(MOD_LSFT|MOD_RSFT)>; masked-mods = ; // requires PR #1412 ) // tap: space | space + tap: dot -> space -> sticky shift | hold: activate layer ZMK_BEHAVIOR(dot_spc, macro, wait-ms = <0>; tap-ms = <5>; bindings = <&kp DOT &kp SPACE &sk LSHFT>; ) ZMK_BEHAVIOR(spc_morph, mod_morph, bindings = <&kp SPACE>, <&dot_spc>; mods = <(MOD_LSFT|MOD_RSFT)>; ) ZMK_BEHAVIOR(lt_spc, hold_tap, flavor = "balanced"; tapping-term-ms = <200>; quick-tap-ms = ; bindings = <&mo>, <&spc_morph>; ) // Windows sleep key ZMK_BEHAVIOR(win_sleep, macro, wait-ms = <100>; tap-ms = <5>; bindings = <&kp LG(X) &kp U &kp S>; ) // Sticky layer + sticky shift (workaround for issue #1421) ZMK_BEHAVIOR(uc_shift, macro, wait-ms = <0>; tap-ms = <1>; bindings = <¯o_press &mo UC &kp LSHFT> , <¯o_pause_for_release> , <¯o_release &mo UC &kp LSHFT>; ) ZMK_BEHAVIOR(sls, sticky_key, release-after-ms = <1000>; bindings = <&uc_shift>; ignore-modifiers; ) /* keymap */ ZMK_LAYER(default_layer, // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp Q &kp W &kp F &kp P &kp B EXTRA_MID &kp J &kp L &kp U &kp Y &kp SQT // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &hml LGUI A &hml LALT R &hml LCTRL S &hml LSHFT T &kp G EXTRA_MID &kp M &hmr RSHFT N &hmr LCTRL E &hmr LALT I &hmr LGUI O // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &kp Z &kp X &kp C &kp D &kp V EXTRA_MID &kp K &kp H &kp COMMA &kp DOT &kp SEMI // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ EXTRA_BOT_L < SYS ESC <_spc NAV 0 < UC TAB EXTRA_MID < FN RET &ss_cw &bs_del_num EXTRA_BOT_R // ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ) ZMK_LAYER(nav_layer, // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ___ ___ ___ ___ ___ EXTRA_MID &kp PG_UP &kp HOME &kp UP &kp END &kp INS // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ EXTRA_MID &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp DEL // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ___ ___ ___ ___ ___ EXTRA_MID ___ &kp LC(X) &kp LC(INS) &kp LS(INS) ___ // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ EXTRA_BOT_L ___ ___ ___ EXTRA_MID ___ ___ ___ EXTRA_BOT_R // ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ) ZMK_LAYER(sys_layer, // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp LG(GRAVE) ___ ___ &reset &bootloader EXTRA_MID ___ &kp C_PREV &kp C_VOL_UP &kp C_NEXT &win_sleep // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ EXTRA_MID ___ DSK_PREV &kp C_VOL_DN DSK_NEXT ___ // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ___ ___ ___ ___ ___ EXTRA_MID ___ ___ ___ ___ ___ // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ EXTRA_BOT_L ___ ___ ___ EXTRA_MID &kp C_MUTE &kp C_PP ___ EXTRA_BOT_R // ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ) ZMK_LAYER(num_layer, // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp ESC &kp N7 &kp N8 &kp N9 ___ EXTRA_MID ___ ___ ___ ___ ___ // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &kp TAB &kp N4 &kp N5 &kp N6 &kp DOT EXTRA_MID ___ &sk RSHFT &sk LCTRL &sk LALT &sk LGUI // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ___ &kp N1 &kp N2 &kp N3 &kp COMMA EXTRA_MID ___ ___ ___ ___ ___ // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ EXTRA_BOT_L ___ ___ &kp N0 EXTRA_MID ___ ___ ___ EXTRA_BOT_R // ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ) ZMK_LAYER(fn_layer, // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ &kp F12 &kp F7 &kp F8 &kp F9 ___ EXTRA_MID ___ ___ ___ ___ ___ // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &kp F11 &kp F4 &kp F5 &kp F6 ___ EXTRA_MID ___ &sk RSHFT &sk LCTRL &sk LALT &sk LGUI // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &kp F10 &kp F1 &kp F2 &kp F3 ___ EXTRA_MID ___ ___ ___ ___ ___ // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ EXTRA_BOT_L ___ ___ ___ EXTRA_MID ___ ___ ___ EXTRA_BOT_R // ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ) ZMK_LAYER(uc_layer, // ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ___ &el_omega &el_phi &el_pi &el_beta EXTRA_MID ___ &el_lambda &el_upsilon &el_psi &de_eszett // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &el_alpha &el_rho &el_sigma &el_tau &el_gamma EXTRA_MID &el_mu &el_nu &el_epsilon &el_iota &el_omikron // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ &el_zeta &el_xi &el_chi &el_delta &el_theta EXTRA_MID &el_kappa &el_eta &de_ae &de_oe &de_ue // ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ EXTRA_BOT_L ___ ___ ___ EXTRA_MID ___ ___ ___ EXTRA_BOT_R // ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯ )