From 91c8402942eddded632b61521494ad5b02164aa2 Mon Sep 17 00:00:00 2001 From: Manna Harbour <51143715+manna-harbour@users.noreply.github.com> Date: Wed, 26 Oct 2022 16:16:05 +1100 Subject: [PATCH] Add MIRYOKU_KLUDGE_TAPDELAY --- .../build-example-xmk-native_posix_64.yml | 1 + miryoku/miryoku.dtsi | 19 +-- miryoku/miryoku.h | 6 + .../miryoku_layer_alternatives.h | 120 +++++++++--------- miryoku/miryoku_behaviors.dtsi | 23 ++++ miryoku/miryoku_behaviors.h | 7 + miryoku/miryoku_kludge_tapdelay.dtsi | 11 ++ miryoku/miryoku_kludge_tapdelay.h | 80 ++++++++++++ readme.org | 32 ++++- 9 files changed, 222 insertions(+), 77 deletions(-) create mode 100644 miryoku/miryoku_behaviors.dtsi create mode 100644 miryoku/miryoku_behaviors.h create mode 100644 miryoku/miryoku_kludge_tapdelay.dtsi create mode 100644 miryoku/miryoku_kludge_tapdelay.h diff --git a/.github/workflows/build-example-xmk-native_posix_64.yml b/.github/workflows/build-example-xmk-native_posix_64.yml index d11a086..5afad2a 100644 --- a/.github/workflows/build-example-xmk-native_posix_64.yml +++ b/.github/workflows/build-example-xmk-native_posix_64.yml @@ -9,4 +9,5 @@ jobs: secrets: inherit with: board: '["native_posix_64"]' + custom_config: '["#define MIRYOKU_KLUDGE_TAPDELAY"]' branches: '["zmkfirmware/zmk/main petejohanson/zmk/shell/tap-command"]' diff --git a/miryoku/miryoku.dtsi b/miryoku/miryoku.dtsi index 8d2b48a..682612f 100644 --- a/miryoku/miryoku.dtsi +++ b/miryoku/miryoku.dtsi @@ -23,19 +23,6 @@ MIRYOKU_LAYER_LIST }; }; -/ { - behaviors { - hm: homerow_mods { - compatible = "zmk,behavior-hold-tap"; - label = "HOMEROW_MODS"; - #binding-cells = <2>; - tapping_term_ms = ; - flavor = "tap-preferred"; - bindings = <&kp>, <&kp>; - }; - }; -}; - #include "miryoku_shift_functions.dtsi" #include "miryoku_double_tap_guard.dtsi" @@ -57,3 +44,9 @@ MIRYOKU_LAYER_LIST #if defined (MIRYOKU_KLUDGE_BOTTOMROWCOMBOS) #include "miryoku_kludge_bottomrowcombos.dtsi" #endif + +#if defined (MIRYOKU_KLUDGE_TAPDELAY) + #include "miryoku_kludge_tapdelay.dtsi" +#else + #include "miryoku_behaviors.dtsi" +#endif diff --git a/miryoku/miryoku.h b/miryoku/miryoku.h index 9900597..40c03e2 100644 --- a/miryoku/miryoku.h +++ b/miryoku/miryoku.h @@ -24,3 +24,9 @@ #else #include "miryoku_mousekeys.h" #endif + +#if defined (MIRYOKU_KLUDGE_TAPDELAY) + #include "miryoku_kludge_tapdelay.h" +#else + #include "miryoku_behaviors.h" +#endif diff --git a/miryoku/miryoku_babel/miryoku_layer_alternatives.h b/miryoku/miryoku_babel/miryoku_layer_alternatives.h index b0cbf95..618c798 100644 --- a/miryoku/miryoku_babel/miryoku_layer_alternatives.h +++ b/miryoku/miryoku_babel/miryoku_layer_alternatives.h @@ -8,123 +8,123 @@ #define MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \ &kp A, &kp Z, &kp E, &kp R, &kp T, &kp Y, &kp U, &kp I, &kp O, &kp P, \ -&hm LGUI Q, &hm LALT S, &hm LCTRL D, &hm LSHFT F, &kp G, &kp H, &hm LSHFT J, &hm LCTRL K, &hm LALT L, &hm LGUI M, \ -< U_BUTTON W, &hm RALT X, &kp C, &kp V, &kp B, &kp N, &kp COMMA, &kp DOT, &hm RALT SLASH, < U_BUTTON SQT, \ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, Q), U_MT(LALT, S), U_MT(LCTRL, D), U_MT(LSHFT, F), &kp G, &kp H, U_MT(LSHFT, J), U_MT(LCTRL, K), U_MT(LALT, L), U_MT(LGUI, M), \ +U_LT(U_BUTTON, W), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp N, &kp COMMA, &kp DOT, U_MT(RALT, SLASH), U_LT(U_BUTTON, SQT),\ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \ &kp Q, &kp H, &kp O, &kp U, &kp X, &kp G, &kp C, &kp R, &kp F, &kp Z, \ -&hm LGUI Y, &hm LALT I, &hm LCTRL E, &hm LSHFT A, &kp DOT, &kp D, &hm LSHFT S, &hm LCTRL T, &hm LALT N, &hm LGUI B, \ -< U_BUTTON J, &hm RALT SLASH, &kp COMMA, &kp K, &kp SQT, &kp W, &kp M, &kp L, &hm RALT P, < U_BUTTON V, \ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, Y), U_MT(LALT, I), U_MT(LCTRL, E), U_MT(LSHFT, A), &kp DOT, &kp D, U_MT(LSHFT, S), U_MT(LCTRL, T), U_MT(LALT, N), U_MT(LGUI, B), \ +U_LT(U_BUTTON, J), U_MT(RALT, SLASH), &kp COMMA, &kp K, &kp SQT, &kp W, &kp M, &kp L, U_MT(RALT, P), U_LT(U_BUTTON, V), \ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp V, &kp B, &kp K, &kp M, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), &kp D, &kp H, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp K, &kp M, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp D, &kp V, &kp K, &kp H, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), &kp G, &kp M, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp D, &kp V, &kp K, &kp H, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp D, &kp V, &kp M, &kp H, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), &kp G, &kp K, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp D, &kp V, &kp M, &kp H, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \ &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, \ -< U_BUTTON SLASH,&hm RALT Q, &kp J, &kp K, &kp X, &kp B, &kp M, &kp W, &hm RALT V, < U_BUTTON Z, \ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, O), U_MT(LCTRL, E), U_MT(LSHFT, U), &kp I, &kp D, U_MT(LSHFT, H), U_MT(LCTRL, T), U_MT(LALT, N), U_MT(LGUI, S), \ +U_LT(U_BUTTON, SLASH),U_MT(RALT, Q), &kp J, &kp K, &kp X, &kp B, &kp M, &kp W, U_MT(RALT, V), U_LT(U_BUTTON, Z), \ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \ &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, \ -< U_BUTTON F, &hm RALT M, &kp V, &kp C, &kp SLASH, &kp G, &kp P, &kp X, &hm RALT K, < U_BUTTON Y, \ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, S), U_MT(LALT, H), U_MT(LCTRL, N), U_MT(LSHFT, T), &kp COMMA, &kp DOT, U_MT(LSHFT, A), U_MT(LCTRL, E), U_MT(LALT, O), U_MT(LGUI, I), \ +U_LT(U_BUTTON, F), U_MT(RALT, M), &kp V, &kp C, &kp SLASH, &kp G, &kp P, &kp X, U_MT(RALT, K), U_LT(U_BUTTON, Y), \ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp M, &kp C, &kp V, &kp K, &kp L, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, S), U_MT(LCTRL, H), U_MT(LSHFT, T), &kp G, &kp Y, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, O), U_MT(LGUI, I), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp M, &kp C, &kp V, &kp K, &kp L, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, S), U_MT(LCTRL, D), U_MT(LSHFT, F), &kp G, &kp H, U_MT(LSHFT, J), U_MT(LCTRL, K), U_MT(LALT, L), U_MT(LGUI, SQT), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \ &kp Q, &kp W, &kp E, &kp R, &kp T, &kp Z, &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, \ -< U_BUTTON Y, &hm RALT X, &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_FUN DEL, < U_NUM BSPC, < U_SYM RET, < U_MOUSE TAB, < U_NAV SPC, < U_MEDIA ESC, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, S), U_MT(LCTRL, D), U_MT(LSHFT, F), &kp G, &kp H, U_MT(LSHFT, J), U_MT(LCTRL, K), U_MT(LALT, L), U_MT(LGUI, SQT), \ +U_LT(U_BUTTON, Y), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_FUN, DEL), U_LT(U_NUM, BSPC), U_LT(U_SYM, RET), U_LT(U_MOUSE, TAB),U_LT(U_NAV, SPC), U_LT(U_MEDIA, ESC),U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_AZERTY \ &kp A, &kp Z, &kp E, &kp R, &kp T, &kp Y, &kp U, &kp I, &kp O, &kp P, \ -&hm LGUI Q, &hm LALT S, &hm LCTRL D, &hm LSHFT F, &kp G, &kp H, &hm LSHFT J, &hm LCTRL K, &hm LALT L, &hm LGUI M, \ -< U_BUTTON W, &hm RALT X, &kp C, &kp V, &kp B, &kp N, &kp COMMA, &kp DOT, &hm RALT SLASH, < U_BUTTON SQT, \ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, Q), U_MT(LALT, S), U_MT(LCTRL, D), U_MT(LSHFT, F), &kp G, &kp H, U_MT(LSHFT, J), U_MT(LCTRL, K), U_MT(LALT, L), U_MT(LGUI, M), \ +U_LT(U_BUTTON, W), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp N, &kp COMMA, &kp DOT, U_MT(RALT, SLASH), U_LT(U_BUTTON, SQT),\ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \ &kp Q, &kp H, &kp O, &kp U, &kp X, &kp G, &kp C, &kp R, &kp F, &kp Z, \ -&hm LGUI Y, &hm LALT I, &hm LCTRL E, &hm LSHFT A, &kp DOT, &kp D, &hm LSHFT S, &hm LCTRL T, &hm LALT N, &hm LGUI B, \ -< U_BUTTON J, &hm RALT SLASH, &kp COMMA, &kp K, &kp SQT, &kp W, &kp M, &kp L, &hm RALT P, < U_BUTTON V, \ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, Y), U_MT(LALT, I), U_MT(LCTRL, E), U_MT(LSHFT, A), &kp DOT, &kp D, U_MT(LSHFT, S), U_MT(LCTRL, T), U_MT(LALT, N), U_MT(LGUI, B), \ +U_LT(U_BUTTON, J), U_MT(RALT, SLASH), &kp COMMA, &kp K, &kp SQT, &kp W, &kp M, &kp L, U_MT(RALT, P), U_LT(U_BUTTON, V), \ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp V, &kp B, &kp K, &kp M, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), &kp D, &kp H, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp K, &kp M, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp D, &kp V, &kp K, &kp H, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), &kp G, &kp M, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp D, &kp V, &kp K, &kp H, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp D, &kp V, &kp M, &kp H, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, R), U_MT(LCTRL, S), U_MT(LSHFT, T), &kp G, &kp K, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, I), U_MT(LGUI, O), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp D, &kp V, &kp M, &kp H, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_DVORAK \ &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, \ -< U_BUTTON SLASH,&hm RALT Q, &kp J, &kp K, &kp X, &kp B, &kp M, &kp W, &hm RALT V, < U_BUTTON Z, \ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, O), U_MT(LCTRL, E), U_MT(LSHFT, U), &kp I, &kp D, U_MT(LSHFT, H), U_MT(LCTRL, T), U_MT(LALT, N), U_MT(LGUI, S), \ +U_LT(U_BUTTON, SLASH),U_MT(RALT, Q), &kp J, &kp K, &kp X, &kp B, &kp M, &kp W, U_MT(RALT, V), U_LT(U_BUTTON, Z), \ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_HALMAK \ &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, \ -< U_BUTTON F, &hm RALT M, &kp V, &kp C, &kp SLASH, &kp G, &kp P, &kp X, &hm RALT K, < U_BUTTON Y, \ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, S), U_MT(LALT, H), U_MT(LCTRL, N), U_MT(LSHFT, T), &kp COMMA, &kp DOT, U_MT(LSHFT, A), U_MT(LCTRL, E), U_MT(LALT, O), U_MT(LGUI, I), \ +U_LT(U_BUTTON, F), U_MT(RALT, M), &kp V, &kp C, &kp SLASH, &kp G, &kp P, &kp X, U_MT(RALT, K), U_LT(U_BUTTON, Y), \ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp M, &kp C, &kp V, &kp K, &kp L, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, S), U_MT(LCTRL, H), U_MT(LSHFT, T), &kp G, &kp Y, U_MT(LSHFT, N), U_MT(LCTRL, E), U_MT(LALT, O), U_MT(LGUI, I), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp M, &kp C, &kp V, &kp K, &kp L, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_QWERTY \ &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, \ -< U_BUTTON Z, &hm RALT X, &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, S), U_MT(LCTRL, D), U_MT(LSHFT, F), &kp G, &kp H, U_MT(LSHFT, J), U_MT(LCTRL, K), U_MT(LALT, L), U_MT(LGUI, SQT), \ +U_LT(U_BUTTON, Z), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \ &kp Q, &kp W, &kp E, &kp R, &kp T, &kp Z, &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, \ -< U_BUTTON Y, &hm RALT X, &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, &hm RALT DOT, < U_BUTTON SLASH,\ -U_NP, U_NP, < U_MEDIA ESC, < U_NAV SPC, < U_MOUSE TAB, < U_SYM RET, < U_NUM BSPC, < U_FUN DEL, U_NP, U_NP +U_MT(LGUI, A), U_MT(LALT, S), U_MT(LCTRL, D), U_MT(LSHFT, F), &kp G, &kp H, U_MT(LSHFT, J), U_MT(LCTRL, K), U_MT(LALT, L), U_MT(LGUI, SQT), \ +U_LT(U_BUTTON, Y), U_MT(RALT, X), &kp C, &kp V, &kp B, &kp N, &kp M, &kp COMMA, U_MT(RALT, DOT), U_LT(U_BUTTON, SLASH),\ +U_NP, U_NP, U_LT(U_MEDIA, ESC),U_LT(U_NAV, SPC), U_LT(U_MOUSE, TAB),U_LT(U_SYM, RET), U_LT(U_NUM, BSPC), U_LT(U_FUN, DEL), U_NP, U_NP #define MIRYOKU_ALTERNATIVES_TAP_AZERTY_FLIP \ diff --git a/miryoku/miryoku_behaviors.dtsi b/miryoku/miryoku_behaviors.dtsi new file mode 100644 index 0000000..bd80890 --- /dev/null +++ b/miryoku/miryoku_behaviors.dtsi @@ -0,0 +1,23 @@ +// Copyright 2022 Manna Harbour +// https://github.com/manna-harbour/miryoku + +/ { + behaviors { + u_mt: u_mt { + compatible = "zmk,behavior-hold-tap"; + label = "u_mt"; + #binding-cells = <2>; + tapping_term_ms = ; + flavor = "tap-preferred"; + bindings = <&kp>, <&kp>; + }; + u_lt: u_lt { + compatible = "zmk,behavior-hold-tap"; + label = "u_lt"; + #binding-cells = <2>; + tapping_term_ms = ; + flavor = "tap-preferred"; + bindings = <&mo>, <&kp>; + }; + }; +}; diff --git a/miryoku/miryoku_behaviors.h b/miryoku/miryoku_behaviors.h new file mode 100644 index 0000000..392e8af --- /dev/null +++ b/miryoku/miryoku_behaviors.h @@ -0,0 +1,7 @@ +// Copyright 2022 Manna Harbour +// https://github.com/manna-harbour/miryoku + +#pragma once + +#define U_MT(MOD, TAP) &u_mt MOD TAP +#define U_LT(LAYER, TAP) &u_lt LAYER TAP diff --git a/miryoku/miryoku_kludge_tapdelay.dtsi b/miryoku/miryoku_kludge_tapdelay.dtsi new file mode 100644 index 0000000..601bd36 --- /dev/null +++ b/miryoku/miryoku_kludge_tapdelay.dtsi @@ -0,0 +1,11 @@ +// Copyright 2022 Manna Harbour +// https://github.com/manna-harbour/miryoku + +#define MIRYOKU_X(CODE, EMPTY) \ +MIRYOKU_TAPDELAY_TAP(CODE##EMPTY) \ +MIRYOKU_TAPDELAY_MT(CODE##EMPTY) \ +MIRYOKU_TAPDELAY_LT(CODE##EMPTY) + +MIRYOKU_TAPDELAY_LIST + +#undef MIRYOKU_X diff --git a/miryoku/miryoku_kludge_tapdelay.h b/miryoku/miryoku_kludge_tapdelay.h new file mode 100644 index 0000000..939f891 --- /dev/null +++ b/miryoku/miryoku_kludge_tapdelay.h @@ -0,0 +1,80 @@ +// Copyright 2022 Manna Harbour +// https://github.com/manna-harbour/miryoku + +#pragma once + +#define MIRYOKU_TAPDELAY_TAP(CODE) \ +/ { \ + macros { \ + ZMK_MACRO(u_tapdelay_tap_##CODE, bindings = <¯o_press &kp CODE>, <¯o_release &kp CODE>;) \ + }; \ +}; + +#define MIRYOKU_TAPDELAY_MT(CODE) \ +/ { \ + behaviors { \ + u_tapdelay_mt_##CODE: u_tapdelay_mt_##CODE { \ + compatible = "zmk,behavior-hold-tap"; \ + label = U_STRINGIFY(u_tapdelay_mt_##CODE); \ + #binding-cells = <2>; \ + tapping_term_ms = ; \ + flavor = "tap-preferred"; \ + bindings = <&kp>, <&u_tapdelay_tap_##CODE>; \ + }; \ + }; \ +}; + +#define MIRYOKU_TAPDELAY_LT(CODE) \ +/ { \ + behaviors { \ + u_tapdelay_lt_##CODE: u_tapdelay_lt_##CODE { \ + compatible = "zmk,behavior-hold-tap"; \ + label = U_STRINGIFY(u_tapdelay_lt_##CODE); \ + #binding-cells = <2>; \ + tapping_term_ms = ; \ + flavor = "tap-preferred"; \ + bindings = <&mo>, <&u_tapdelay_tap_##CODE>; \ + }; \ + }; \ +}; + +#define U_MT(MOD, TAP) &u_tapdelay_mt_##TAP MOD 0 +#define U_LT(LAYER, TAP) &u_tapdelay_lt_##TAP LAYER 0 + +#define MIRYOKU_TAPDELAY_LIST \ +MIRYOKU_X(A,) \ +MIRYOKU_X(B,) \ +MIRYOKU_X(C,) \ +MIRYOKU_X(D,) \ +MIRYOKU_X(E,) \ +MIRYOKU_X(F,) \ +MIRYOKU_X(G,) \ +MIRYOKU_X(H,) \ +MIRYOKU_X(I,) \ +MIRYOKU_X(J,) \ +MIRYOKU_X(K,) \ +MIRYOKU_X(L,) \ +MIRYOKU_X(M,) \ +MIRYOKU_X(N,) \ +MIRYOKU_X(O,) \ +MIRYOKU_X(P,) \ +MIRYOKU_X(Q,) \ +MIRYOKU_X(R,) \ +MIRYOKU_X(S,) \ +MIRYOKU_X(T,) \ +MIRYOKU_X(U,) \ +MIRYOKU_X(V,) \ +MIRYOKU_X(W,) \ +MIRYOKU_X(X,) \ +MIRYOKU_X(Y,) \ +MIRYOKU_X(Z,) \ +MIRYOKU_X(SQT,) \ +MIRYOKU_X(COMMA,) \ +MIRYOKU_X(DOT,) \ +MIRYOKU_X(SLASH,) \ +MIRYOKU_X(ESC,) \ +MIRYOKU_X(SPC,) \ +MIRYOKU_X(TAB,) \ +MIRYOKU_X(RET,) \ +MIRYOKU_X(BSPC,) \ +MIRYOKU_X(DEL,) diff --git a/readme.org b/readme.org index 7a4943a..89a9f63 100644 --- a/readme.org +++ b/readme.org @@ -19,7 +19,16 @@ Workflow builds can be customised by copying and editing one of the [[#build-exa The [[#keyboard-keymaps][keyboard keymaps]] are composed of the config file, a [[#mapping-macros][mapping]] for the physical layout, and the [[#miryoku-keymap][Miryoku keymap]]. -[[#additional-and-experimental-features][Additional and Experimental Features]] include [[#caps-word][caps word]], [[#customisation][customisation]], [[#double-tap-boot][double tap boot]], [[#key-emulation-combos][key emulation combos]], [[#mouse-keys][mouse keys]], [[#suspend][suspend]], and [[#𝑥MK][𝑥MK]]. Open [[#issues][issues]] are also noted. +[[#additional-and-experimental-features][Additional and Experimental Features]] include +[[#caps-word][caps word]], +[[#customisation][customisation]], +[[#double-tap-boot][double tap boot]], +[[#key-emulation-combos][key emulation combos]], +[[#mouse-keys][mouse keys]], +[[#suspend][suspend]], +[[#tap-delay][tap delay]], +and [[#𝑥MK][𝑥MK]]. +Open [[#issues][issues]] are also noted. ** Building @@ -498,15 +507,30 @@ For [[#local-builds][local builds]], add ~#define MIRYOKU_KLUDGE_SUSPEND~ to the For [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~#define MIRYOKU_KLUDGE_SUSPEND~ with the ~custom_config~ option, and ~zmkfirmware/zmk/main manna-harbour/zmk/suspend-test~ with the ~branches~ option. For workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-suspend.yml][Build Example suspend]] workflow. +*** Tap Delay + +Adds a delay between press and release of hold-tap taps, as a work around for https://github.com/zmkfirmware/zmk/issues/1444. + +For [[#local-builds][local builds]], add ~#define MIRYOKU_KLUDGE_TAPDELAY~ to the [[#config-file][config file]]. For [[#workflow-builds][workflow builds]], use ~#define MIRYOKU_KLUDGE_TAPDELAY~ with the ~custom_config~ option. + + *** 𝑥MK Use Miryoku ZMK with any keyboard with [[https://github.com/manna-harbour/xmk][𝑥MK]]. -For [[#local-builds][local builds]] first merge https://github.com/zmkfirmware/zmk/pull/1318. For the ~xmk~ shield, add https://github.com/manna-harbour/xmk/tree/main/zmk/boards/shields/xmk as ~config/boards/shields/xmk~, and build with shield ~xmk~ and the appropriate board. For the ~native_posix_64~ board, build with board ~native_posix_64~. -For [[#workflow-builds][workflow builds]] for the ~xmk~ shield, use the Build Example 𝑥MK xmk workflow, or use the Build Inputs workflow with shield ~xmk~, the appropriate board, and branches ~zmkfirmware/zmk/main petejohanson/zmk/shell/tap-command~. For workflow builds for the ~native_posix_64~ board, use the Build Example 𝑥MK native_posix_64 workflow, or use the Build Inputs workflow with board ~native_posix_64~ and branches ~zmkfirmware/zmk/main petejohanson/zmk/shell/tap-command~. +**** xmk Shield -Also see [[https://github.com/manna-harbour/miryoku_kmonad][Miryoku KMonad]]. +For [[#local-builds][local builds]] first merge https://github.com/zmkfirmware/zmk/pull/1318. Add https://github.com/manna-harbour/xmk/tree/main/zmk/boards/shields/xmk as ~config/boards/shields/xmk~. Build with shield ~xmk~ and the appropriate board. + +For [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~xmk~ with the ~shield~ option, the appropriate board with the ~board~ option, and ~zmkfirmware/zmk/main petejohanson/zmk/shell/tap-command~ with the ~branches~ option. For workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-xmk-xmk.yml][Build Example 𝑥MK xmk]] workflow. + + +**** native_posix_64 Board + +For [[#local-builds][local builds]] first merge https://github.com/zmkfirmware/zmk/pull/1318. Add ~#define MIRYOKU_KLUDGE_TAPDELAY~ to the config file. Build with board ~native_posix_64~. + +For [[#workflow-builds][workflow builds]] using the [[#build-inputs][Build Inputs]] workflow, use ~native_posix_64~ with the ~board~ option, ~#define MIRYOKU_KLUDGE_TAPDELAY~ with the ~custom_config~ option, and ~zmkfirmware/zmk/main petejohanson/zmk/shell/tap-command~ with the ~branches~ option. For workflow builds using [[#build-examples][Build Example]] workflows, see the [[.github/workflows/build-example-xmk-native_posix_64.yml][Build Example 𝑥MK native_posix_64]] workflow. ** Issues