Add combos of primary and secondary thumbs to emulate tertiary thumb

This commit is contained in:
Manna Harbour 2021-02-23 16:31:13 +11:00
parent a469ad4b46
commit 73b4484f63
6 changed files with 210 additions and 51 deletions

View File

@ -1,3 +1,6 @@
#include "../miryoku/split_3x6_3.h"
#define MIRYOKU_COMBO_TPS_ENABLE
#include "../miryoku/miryoku.dtsi"

View File

@ -911,6 +911,10 @@ layout is mapped onto keyboards with different physical layouts as a subset.
*** [[split_3x5_2.h]]
Combos of primary and secondary thumb keys emulate the missing tertiary thumb
key. To enable with other subset mappings for compatibility, add ~#define
MIRYOKU_COMBO_TPS_ENABLE~ to the keymap before the includes.
#+BEGIN_SRC C :noweb yes :padline no :tangle split_3x5_2.h
// <<header>>
@ -928,6 +932,11 @@ K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 \
K33 K34 K35 K36
#define MIRYOKU_SUPERMAP MIRYOKU_SUBMAP
#define MIRYOKU_COMBO_TPSL 30 31
#define MIRYOKU_COMBO_TPSR 32 33
#define MIRYOKU_COMBO_TPS_ENABLE
#+END_SRC
@ -950,6 +959,9 @@ K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 \
K32 K33 K34 K35 K36 K37
#define MIRYOKU_SUPERMAP MIRYOKU_SUBMAP
#define MIRYOKU_COMBO_TPSL 33 34
#define MIRYOKU_COMBO_TPSR 35 36
#+END_SRC
@ -981,6 +993,9 @@ XXX K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 XXX \
&kp LCTRL K10 K11 K12 K13 K14 K15 K16 K17 K18 K19 &kp RCTRL \
&kp LSHFT K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 &kp RSHFT \
K32 K33 K34 K35 K36 K37
#define MIRYOKU_COMBO_TPSL 37 38
#define MIRYOKU_COMBO_TPSR 39 40
#+END_SRC
@ -1057,6 +1072,9 @@ K20 K21 K22 K23 K24 &kp NUM_4 &kp NUM_3 K25 K26 K27 K28 K
bindings = <&kp>, <&kp>;
};
};
};
/ {
keymap {
compatible = "zmk,keymap";
BASE_layer {
@ -1096,32 +1114,32 @@ K20 K21 K22 K23 K24 &kp NUM_4 &kp NUM_3 K25 K26 K27 K28 K
bindings = <
#if defined MIRYOKU_ALPHAS_COLEMAK
MIRYOKU_SUPERMAP(
<<table-map-full(table=colemak)>>
)
<<table-map-full(table=colemak)>>
)
#elif defined MIRYOKU_ALPHAS_COLEMAKDH
MIRYOKU_SUPERMAP(
<<table-map-full(table=colemakdh)>>
)
<<table-map-full(table=colemakdh)>>
)
#elif defined MIRYOKU_ALPHAS_DVORAK
MIRYOKU_SUPERMAP(
<<table-map-full(table=dvorak)>>
)
MIRYOKU_SUPERMAP(
<<table-map-full(table=dvorak)>>
)
#elif defined MIRYOKU_ALPHAS_HALMAK
MIRYOKU_SUPERMAP(
<<table-map-full(table=halmak)>>
)
<<table-map-full(table=halmak)>>
)
#elif defined MIRYOKU_ALPHAS_WORKMAN
MIRYOKU_SUPERMAP(
<<table-map-full(table=workman)>>
)
<<table-map-full(table=workman)>>
)
#elif defined MIRYOKU_ALPHAS_QWERTY
MIRYOKU_SUPERMAP(
<<table-map-full(table=qwerty)>>
)
<<table-map-full(table=qwerty)>>
)
#else
MIRYOKU_SUPERMAP(
<<table-map-full(table=colemakdhm)>>
)
<<table-map-full(table=colemakdhm)>>
)
#endif
>;
};
@ -1194,6 +1212,68 @@ K20 K21 K22 K23 K24 &kp NUM_4 &kp NUM_3 K25 K26 K27 K28 K
};
};
};
#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 = <MIRYOKU_COMBO_TPSL>;
bindings = <&lt MEDR ESC>;
layers = <BASE>;
};
combo_tpsr_BASE {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <&lt FUNL DEL>;
layers = <BASE>;
};
combo_tpsr_MBO {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <U_NU>;
layers = <MBO>;
};
combo_tpsr_NAVR {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <&kp DEL>;
layers = <NAVR>;
};
combo_tpsr_MOUR {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <U_NU>;
layers = <MOUR>;
};
combo_tpsr_MEDR {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <&kp K_MUTE>;
layers = <MEDR>;
};
combo_tpsl_NSL {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSL>;
bindings = <&kp DOT>;
layers = <NSL>;
};
combo_tpsl_NSSL {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSL>;
bindings = <&kp LPAR>;
layers = <NSSL>;
};
combo_tpsl_FUNL {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSL>;
bindings = <&kp K_APP>;
layers = <FUNL>;
};
};
};
#endif
#+END_SRC

View File

@ -58,6 +58,9 @@
bindings = <&kp>, <&kp>;
};
};
};
/ {
keymap {
compatible = "zmk,keymap";
BASE_layer {
@ -118,53 +121,53 @@ U_NP, U_NP, &lt MEDR ESC, &lt NAVR SPC, &lt MOUR TAB, &lt NSSL R
bindings = <
#if defined MIRYOKU_ALPHAS_COLEMAK
MIRYOKU_SUPERMAP(
&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
)
&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_SUPERMAP(
&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
)
&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_SUPERMAP(
&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
)
MIRYOKU_SUPERMAP(
&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_SUPERMAP(
&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
)
&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_SUPERMAP(
&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
)
&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_SUPERMAP(
&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
)
&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_SUPERMAP(
&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
)
&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
>;
};
@ -267,3 +270,65 @@ U_NP, U_NP, &kp K_APP, &kp SPC, &kp TAB, U_NA, U_
};
};
};
#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 = <MIRYOKU_COMBO_TPSL>;
bindings = <&lt MEDR ESC>;
layers = <BASE>;
};
combo_tpsr_BASE {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <&lt FUNL DEL>;
layers = <BASE>;
};
combo_tpsr_MBO {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <U_NU>;
layers = <MBO>;
};
combo_tpsr_NAVR {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <&kp DEL>;
layers = <NAVR>;
};
combo_tpsr_MOUR {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <U_NU>;
layers = <MOUR>;
};
combo_tpsr_MEDR {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSR>;
bindings = <&kp K_MUTE>;
layers = <MEDR>;
};
combo_tpsl_NSL {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSL>;
bindings = <&kp DOT>;
layers = <NSL>;
};
combo_tpsl_NSSL {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSL>;
bindings = <&kp LPAR>;
layers = <NSSL>;
};
combo_tpsl_FUNL {
timeout-ms = <200>;
key-positions = <MIRYOKU_COMBO_TPSL>;
bindings = <&kp K_APP>;
layers = <FUNL>;
};
};
};
#endif

View File

@ -14,3 +14,8 @@ K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 \
K33 K34 K35 K36
#define MIRYOKU_SUPERMAP MIRYOKU_SUBMAP
#define MIRYOKU_COMBO_TPSL 30 31
#define MIRYOKU_COMBO_TPSR 32 33
#define MIRYOKU_COMBO_TPS_ENABLE

View File

@ -14,3 +14,6 @@ K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 \
K32 K33 K34 K35 K36 K37
#define MIRYOKU_SUPERMAP MIRYOKU_SUBMAP
#define MIRYOKU_COMBO_TPSL 33 34
#define MIRYOKU_COMBO_TPSR 35 36

View File

@ -23,3 +23,6 @@ XXX K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 XXX \
&kp LCTRL K10 K11 K12 K13 K14 K15 K16 K17 K18 K19 &kp RCTRL \
&kp LSHFT K20 K21 K22 K23 K24 K25 K26 K27 K28 K29 &kp RSHFT \
K32 K33 K34 K35 K36 K37
#define MIRYOKU_COMBO_TPSL 37 38
#define MIRYOKU_COMBO_TPSR 39 40