// https://github.com/manna-harbour/miryoku-zmk/ // -*- buffer-read-only: t -*- #include #include #include #include #include #define BASE 0 #define TAP 1 #define MBO 2 #define NAVR 3 #define MOUR 4 #define MEDR 5 #define NSL 6 #define NSSL 7 #define FUNL 8 #define U_NP &none // key is not present #define U_NA &none // present but not available for use #define U_NU &none // available but not used #if defined MIRYOKU_CLIPBOARD_FUN #define U_RDO &kp K_AGAIN #define U_PST &kp K_PASTE #define U_CPY &kp K_COPY #define U_CUT &kp K_CUT #define U_UND &kp K_UNDO #elif defined MIRYOKU_CLIPBOARD_MAC #define U_RDO &kp LS(LCMD(Z)) #define U_PST &kp LCMD(V) #define U_CPY &kp LCMD(C) #define U_CUT &kp LCMD(X) #define U_UND &kp LCMD(Z) #elif defined MIRYOKU_CLIPBOARD_WIN #define U_RDO &kp LC(Y) #define U_PST &kp LC(V) #define U_CPY &kp LC(C) #define U_CUT &kp LC(X) #define U_UND &kp LC(Z) #else #define U_RDO &kp K_AGAIN #define U_PST &kp LS(INS) #define U_CPY &kp LC(INS) #define U_CUT &kp LS(DEL) #define U_UND &kp K_UNDO #endif / { behaviors { hm: homerow_mods { compatible = "zmk,behavior-hold-tap"; label = "HOMEROW_MODS"; #binding-cells = <2>; tapping_term_ms = <200>; flavor = "tap-preferred"; bindings = <&kp>, <&kp>; }; }; }; / { keymap { compatible = "zmk,keymap"; BASE_layer { bindings = < #if defined MIRYOKU_ALPHAS_COLEMAK MIRYOKU_MAPPING( &kp Q, &kp W, &kp F, &kp P, &kp G, &kp J, &kp L, &kp U, &kp Y, &kp SQT, &hm LGUI A, &hm LALT R, &hm LCTRL S, &hm LSHFT T, &kp D, &kp H, &hm LSHFT N, &hm LCTRL E, &hm LALT I, &hm LGUI O, &kp Z, &hm RALT X, &kp C, &kp V, &kp B, &kp K, &kp M, &kp COMMA, &hm RALT DOT, &kp SLASH, U_NP, U_NP, < MEDR ESC, < NAVR SPC, < MOUR TAB, < NSSL RET, < NSL BSPC, < FUNL DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_COLEMAKDH MIRYOKU_MAPPING( &kp Q, &kp W, &kp F, &kp P, &kp B, &kp J, &kp L, &kp U, &kp Y, &kp SQT, &hm LGUI A, &hm LALT R, &hm LCTRL S, &hm LSHFT T, &kp G, &kp K, &hm LSHFT N, &hm LCTRL E, &hm LALT I, &hm LGUI O, &kp Z, &hm RALT X, &kp C, &kp D, &kp V, &kp M, &kp H, &kp COMMA, &hm RALT DOT, &kp SLASH, U_NP, U_NP, < MEDR ESC, < NAVR SPC, < MOUR TAB, < NSSL RET, < NSL BSPC, < FUNL DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_DVORAK MIRYOKU_MAPPING( &kp SQT, &kp COMMA, &kp DOT, &kp P, &kp Y, &kp F, &kp G, &kp C, &kp R, &kp L, &hm LGUI A, &hm LALT O, &hm LCTRL E, &hm LSHFT U, &kp I, &kp D, &hm LSHFT H, &hm LCTRL T, &hm LALT N, &hm LGUI S, &kp SLASH, &hm RALT Q, &kp J, &kp K, &kp X, &kp B, &kp M, &kp W, &hm RALT V, &kp Z, U_NP, U_NP, < MEDR ESC, < NAVR SPC, < MOUR TAB, < NSSL RET, < NSL BSPC, < FUNL DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_HALMAK MIRYOKU_MAPPING( &kp W, &kp L, &kp R, &kp B, &kp Z, &kp SQT, &kp Q, &kp U, &kp D, &kp J, &hm LGUI S, &hm LALT H, &hm LCTRL N, &hm LSHFT T, &kp COMMA, &kp DOT, &hm LSHFT A, &hm LCTRL E, &hm LALT O, &hm LGUI I, &kp F, &hm RALT M, &kp V, &kp C, &kp SLASH, &kp G, &kp P, &kp X, &hm RALT K, &kp Y, U_NP, U_NP, < MEDR ESC, < NAVR SPC, < MOUR TAB, < NSSL RET, < NSL BSPC, < FUNL DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_WORKMAN MIRYOKU_MAPPING( &kp Q, &kp D, &kp R, &kp W, &kp B, &kp J, &kp F, &kp U, &kp P, &kp SQT, &hm LGUI A, &hm LALT S, &hm LCTRL H, &hm LSHFT T, &kp G, &kp Y, &hm LSHFT N, &hm LCTRL E, &hm LALT O, &hm LGUI I, &kp Z, &hm RALT X, &kp M, &kp C, &kp V, &kp K, &kp L, &kp COMMA, &hm RALT DOT, &kp SLASH, U_NP, U_NP, < MEDR ESC, < NAVR SPC, < MOUR TAB, < NSSL RET, < NSL BSPC, < FUNL DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_QWERTY MIRYOKU_MAPPING( &kp Q, &kp W, &kp E, &kp R, &kp T, &kp Y, &kp U, &kp I, &kp O, &kp P, &hm LGUI A, &hm LALT S, &hm LCTRL D, &hm LSHFT F, &kp G, &kp H, &hm LSHFT J, &hm LCTRL K, &hm LALT L, &hm LGUI SQT, &kp Z, &hm RALT X, &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, &hm RALT DOT, &kp SLASH, U_NP, U_NP, < MEDR ESC, < NAVR SPC, < MOUR TAB, < NSSL RET, < NSL BSPC, < FUNL DEL, U_NP, U_NP ) #else MIRYOKU_MAPPING( &kp Q, &kp W, &kp F, &kp P, &kp B, &kp J, &kp L, &kp U, &kp Y, &kp SQT, &hm LGUI A, &hm LALT R, &hm LCTRL S, &hm LSHFT T, &kp G, &kp M, &hm LSHFT N, &hm LCTRL E, &hm LALT I, &hm LGUI O, &kp Z, &hm RALT X, &kp C, &kp D, &kp V, &kp K, &kp H, &kp COMMA, &hm RALT DOT, &kp SLASH, U_NP, U_NP, < MEDR ESC, < NAVR SPC, < MOUR TAB, < NSSL RET, < NSL BSPC, < FUNL DEL, U_NP, U_NP ) #endif >; }; TAP_layer { bindings = < #if defined MIRYOKU_ALPHAS_COLEMAK MIRYOKU_MAPPING_TAP( &kp Q, &kp W, &kp F, &kp P, &kp G, &kp J, &kp L, &kp U, &kp Y, &kp SQT, &kp A, &kp R, &kp S, &kp T, &kp D, &kp H, &kp N, &kp E, &kp I, &kp O, &kp Z, &kp X, &kp C, &kp V, &kp B, &kp K, &kp M, &kp COMMA, &kp DOT, &kp SLASH, U_NP, U_NP, &kp ESC, &kp SPC, &kp TAB, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_COLEMAKDH MIRYOKU_MAPPING_TAP( &kp Q, &kp W, &kp F, &kp P, &kp B, &kp J, &kp L, &kp U, &kp Y, &kp SQT, &kp A, &kp R, &kp S, &kp T, &kp G, &kp K, &kp N, &kp E, &kp I, &kp O, &kp Z, &kp X, &kp C, &kp D, &kp V, &kp M, &kp H, &kp COMMA, &kp DOT, &kp SLASH, U_NP, U_NP, &kp ESC, &kp SPC, &kp TAB, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_DVORAK MIRYOKU_MAPPING_TAP( &kp SQT, &kp COMMA, &kp DOT, &kp P, &kp Y, &kp F, &kp G, &kp C, &kp R, &kp L, &kp A, &kp O, &kp E, &kp U, &kp I, &kp D, &kp H, &kp T, &kp N, &kp S, &kp SLASH, &kp Q, &kp J, &kp K, &kp X, &kp B, &kp M, &kp W, &kp V, &kp Z, U_NP, U_NP, &kp ESC, &kp SPC, &kp TAB, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_HALMAK MIRYOKU_MAPPING_TAP( &kp W, &kp L, &kp R, &kp B, &kp Z, &kp SQT, &kp Q, &kp U, &kp D, &kp J, &kp S, &kp H, &kp N, &kp T, &kp COMMA, &kp DOT, &kp A, &kp E, &kp O, &kp I, &kp F, &kp M, &kp V, &kp C, &kp SLASH, &kp G, &kp P, &kp X, &kp K, &kp Y, U_NP, U_NP, &kp ESC, &kp SPC, &kp TAB, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_WORKMAN MIRYOKU_MAPPING_TAP( &kp Q, &kp D, &kp R, &kp W, &kp B, &kp J, &kp F, &kp U, &kp P, &kp SQT, &kp A, &kp S, &kp H, &kp T, &kp G, &kp Y, &kp N, &kp E, &kp O, &kp I, &kp Z, &kp X, &kp M, &kp C, &kp V, &kp K, &kp L, &kp COMMA, &kp DOT, &kp SLASH, U_NP, U_NP, &kp ESC, &kp SPC, &kp TAB, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #elif defined MIRYOKU_ALPHAS_QWERTY MIRYOKU_MAPPING_TAP( &kp Q, &kp W, &kp E, &kp R, &kp T, &kp Y, &kp U, &kp I, &kp O, &kp P, &kp A, &kp S, &kp D, &kp F, &kp G, &kp H, &kp J, &kp K, &kp L, &kp SQT, &kp Z, &kp X, &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, &kp DOT, &kp SLASH, U_NP, U_NP, &kp ESC, &kp SPC, &kp TAB, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #else MIRYOKU_MAPPING_TAP( &kp Q, &kp W, &kp F, &kp P, &kp B, &kp J, &kp L, &kp U, &kp Y, &kp SQT, &kp A, &kp R, &kp S, &kp T, &kp G, &kp M, &kp N, &kp E, &kp I, &kp O, &kp Z, &kp X, &kp C, &kp D, &kp V, &kp K, &kp H, &kp COMMA, &kp DOT, &kp SLASH, U_NP, U_NP, &kp ESC, &kp SPC, &kp TAB, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #endif >; }; MBO_layer { bindings = < MIRYOKU_MAPPING( &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, &trans, U_NP, U_NP, &trans, &trans, &trans, &kp KP_SLASH, U_NU, U_NU, U_NP, U_NP ) >; }; NAVR_layer { bindings = < #if defined MIRYOKU_NAV_VI MIRYOKU_MAPPING( &bootloader, &tog TAP, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, &kp LGUI, &kp LALT, &kp LCTRL, &kp LSHFT, U_NA, &kp LEFT, &kp DOWN, &kp UP, &kp RIGHT, &kp CAPS, U_NA, &kp RALT, U_NA, U_NA, U_NA, &kp HOME, &kp PG_DN, &kp PG_UP, &kp END, &kp INS, U_NP, U_NP, U_NA, U_NA, U_NA, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #else MIRYOKU_MAPPING( &bootloader, &tog TAP, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, &kp LGUI, &kp LALT, &kp LCTRL, &kp LSHFT, U_NA, &kp CAPS, &kp LEFT, &kp DOWN, &kp UP, &kp RIGHT, U_NA, &kp RALT, U_NA, U_NA, U_NA, &kp INS, &kp HOME, &kp PG_DN, &kp PG_UP, &kp END, U_NP, U_NP, U_NA, U_NA, U_NA, &kp RET, &kp BSPC, &kp DEL, U_NP, U_NP ) #endif >; }; MOUR_layer { bindings = < #if defined MIRYOKU_NAV_VI MIRYOKU_MAPPING( &bootloader, &tog TAP, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, &kp LGUI, &kp LALT, &kp LCTRL, &kp LSHFT, U_NA, &kp KP_N4, &kp KP_N2, &kp KP_N8, &kp KP_N6, U_NU, U_NA, &kp RALT, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, U_NP, U_NP, U_NA, U_NA, U_NA, &kp KP_SLASH, U_NU, U_NU, U_NP, U_NP ) #else MIRYOKU_MAPPING( &bootloader, &tog TAP, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, &kp LGUI, &kp LALT, &kp LCTRL, &kp LSHFT, U_NA, U_NU, &kp KP_N4, &kp KP_N2, &kp KP_N8, &kp KP_N6, U_NA, &kp RALT, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, U_NP, U_NP, U_NA, U_NA, U_NA, &kp KP_SLASH, U_NU, U_NU, U_NP, U_NP ) #endif >; }; MEDR_layer { bindings = < #if defined MIRYOKU_NAV_VI MIRYOKU_MAPPING( &bootloader, &tog TAP, U_NA, U_NA, U_NA, &rgb_ug RGB_EFF, &rgb_ug RGB_HUI, &rgb_ug RGB_SAI, &rgb_ug RGB_BRI, &rgb_ug RGB_TOG, &kp LGUI, &kp LALT, &kp LCTRL, &kp LSHFT, U_NA, &kp C_PREV, &kp C_VOL_DN, &kp C_VOL_UP, &kp C_NEXT, &out OUT_TOG, U_NA, &kp RALT, U_NA, U_NA, U_NA, &bt BT_SEL 0, &bt BT_SEL 1, &bt BT_SEL 2, &bt BT_SEL 3, &bt BT_CLR, U_NP, U_NP, U_NA, U_NA, U_NA, &kp C_STOP, &kp C_PP, &kp C_MUTE, U_NP, U_NP ) #else MIRYOKU_MAPPING( &bootloader, &tog TAP, U_NA, U_NA, U_NA, &rgb_ug RGB_TOG, &rgb_ug RGB_EFF, &rgb_ug RGB_HUI, &rgb_ug RGB_SAI, &rgb_ug RGB_BRI, &kp LGUI, &kp LALT, &kp LCTRL, &kp LSHFT, U_NA, &out OUT_TOG, &kp C_PREV, &kp C_VOL_DN, &kp C_VOL_UP, &kp C_NEXT, U_NA, &kp RALT, U_NA, U_NA, U_NA, &bt BT_CLR, &bt BT_SEL 0, &bt BT_SEL 1, &bt BT_SEL 2, &bt BT_SEL 3, U_NP, U_NP, U_NA, U_NA, U_NA, &kp C_STOP, &kp C_PP, &kp C_MUTE, U_NP, U_NP ) #endif >; }; NSL_layer { bindings = < MIRYOKU_MAPPING( &kp LBKT, &kp NUM_7, &kp NUM_8, &kp NUM_9, &kp RBKT, U_NA, U_NA, U_NA, &tog TAP, &bootloader, &kp SEMI, &kp NUM_4, &kp NUM_5, &kp NUM_6, &kp EQL, U_NA, &kp LSHFT, &kp LCTRL, &kp LALT, &kp LGUI, &kp GRAVE, &kp NUM_1, &kp NUM_2, &kp NUM_3, &kp BSLH, U_NA, U_NA, U_NA, &kp RALT, U_NA, U_NP, U_NP, &kp DOT, &kp NUM_0, &kp MINUS, U_NA, U_NA, U_NA, U_NP, U_NP ) >; }; NSSL_layer { bindings = < MIRYOKU_MAPPING( &kp LBRC, &kp AMPS, &kp ASTRK, &kp LPAR, &kp RBRC, U_NA, U_NA, U_NA, &tog TAP, &bootloader, &kp COLON, &kp DLLR, &kp PRCT, &kp CRRT, &kp PLUS, U_NA, &kp LSHFT, &kp LCTRL, &kp LALT, &kp LGUI, &kp TILDE, &kp EXCL, &kp AT, &kp HASH, &kp PIPE, U_NA, U_NA, U_NA, &kp RALT, U_NA, U_NP, U_NP, &kp LPAR, &kp RPAR, &kp UNDER, U_NA, U_NA, U_NA, U_NP, U_NP ) >; }; FUNL_layer { bindings = < MIRYOKU_MAPPING( &kp F12, &kp F7, &kp F8, &kp F9, &kp PSCRN, U_NA, U_NA, U_NA, &tog TAP, &bootloader, &kp F11, &kp F4, &kp F5, &kp F6, &kp SLCK, U_NA, &kp LSHFT, &kp LCTRL, &kp LALT, &kp LGUI, &kp F10, &kp F1, &kp F2, &kp F3, &kp PAUSE_BREAK, U_NA, U_NA, U_NA, &kp RALT, U_NA, U_NP, U_NP, &kp K_APP, &kp SPC, &kp TAB, U_NA, U_NA, U_NA, U_NP, U_NP ) >; }; }; }; #if defined (MIRYOKU_COMBO_TPS_ENABLE) && defined (MIRYOKU_COMBO_TPSL) && defined (MIRYOKU_COMBO_TPSR) / { combos { compatible = "zmk,combos"; combo_tpsl_BASE { timeout-ms = <200>; key-positions = ; bindings = << MEDR ESC>; layers = ; }; combo_tpsr_BASE { timeout-ms = <200>; key-positions = ; bindings = << FUNL DEL>; layers = ; }; combo_tpsr_MBO { timeout-ms = <200>; key-positions = ; bindings = ; layers = ; }; combo_tpsr_NAVR { timeout-ms = <200>; key-positions = ; bindings = <&kp DEL>; layers = ; }; combo_tpsr_MOUR { timeout-ms = <200>; key-positions = ; bindings = ; layers = ; }; combo_tpsr_MEDR { timeout-ms = <200>; key-positions = ; bindings = <&kp K_MUTE>; layers = ; }; combo_tpsl_NSL { timeout-ms = <200>; key-positions = ; bindings = <&kp DOT>; layers = ; }; combo_tpsl_NSSL { timeout-ms = <200>; key-positions = ; bindings = <&kp LPAR>; layers = ; }; combo_tpsl_FUNL { timeout-ms = <200>; key-positions = ; bindings = <&kp K_APP>; layers = ; }; }; }; #endif