Spring cleaning

This commit is contained in:
urob 2023-04-01 21:59:45 -04:00
parent 78b1142e6f
commit eac04ad8c0
2 changed files with 111 additions and 109 deletions

View file

@ -19,7 +19,7 @@
#define UC 5 #define UC 5
#define MOUSE 6 #define MOUSE 6
#include "combos.dtsi" // must be sourced after layer-shortcuts #include "combos.dtsi" // requires layer aliases
#include "mouse.dtsi" #include "mouse.dtsi"
#include "extra_keys.h" #include "extra_keys.h"
@ -36,7 +36,7 @@
}; };
&sl { // sticky-layer config &sl { // sticky-layer config
ignore-modifiers; ignore-modifiers; // allow chording sticky mods & layers
}; };
&lt { // layer-tap config &lt { // layer-tap config
@ -47,9 +47,9 @@
/* Homerow mods */ /* 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_L LT0 LT1 LT2 LT3 LT4 LM0 LM1 LM2 LM3 LM4 LB0 LB1 LB2 LB3 LB4 // left hand
#define KEYS_R RT0 RT1 RT2 RT3 RT4 RM0 RM1 RM2 RM3 RM4 RB0 RB1 RB2 RB3 RB4 // right-hand keys #define KEYS_R RT0 RT1 RT2 RT3 RT4 RM0 RM1 RM2 RM3 RM4 RB0 RB1 RB2 RB3 RB4 // right hand
#define THUMBS LH2 LH1 LH0 RH0 RH1 RH2 // thumb keys #define THUMBS LH2 LH1 LH0 RH0 RH1 RH2 // thumbs
#define MAKE_HRM(NAME, HOLD, TAP, TRIGGER_POS) \ #define MAKE_HRM(NAME, HOLD, TAP, TRIGGER_POS) \
ZMK_BEHAVIOR(NAME, hold_tap, \ ZMK_BEHAVIOR(NAME, hold_tap, \
@ -94,25 +94,103 @@ ZMK_BEHAVIOR(mt_end, hold_tap, bindings = <&masked_end>, <&kp>; MT_CORE)
MASK_MODS(masked_home, (MOD_LCTL), &kp HOME) MASK_MODS(masked_home, (MOD_LCTL), &kp HOME)
MASK_MODS(masked_end, (MOD_LCTL), &kp END) MASK_MODS(masked_end, (MOD_LCTL), &kp END)
/* Custom behaviors */ /* Caps-word, num-word and smart-mouse */
// tap: sticky-shift | shift + tap/ double-tap: caps-word | hold: shift
ZMK_BEHAVIOR(smart_shft, mod_morph,
bindings = <&sk LSHFT>, <&caps_word>;
mods = <(MOD_LSFT)>;
)
&caps_word { // mods deactivate caps-word, requires PR #1441
/delete-property/ ignore-modifiers;
};
// tap: num-word | double-tap: sticky num-layer | hold: num-layer // tap: num-word | double-tap: sticky num-layer | hold: num-layer
ZMK_BEHAVIOR(num_dance, tap_dance, #define SMART_NUM &smart_num NUM 0
tapping-term-ms = <200>; ZMK_BEHAVIOR(smart_num, hold_tap,
bindings = <&num_word>, <&sl NUM>; // might want to reverse if rarely using more than 1 digit
)
ZMK_BEHAVIOR(num_layer_word, hold_tap,
flavor = "balanced"; flavor = "balanced";
tapping-term-ms = <200>; tapping-term-ms = <200>;
quick-tap-ms = <QUICK_TAP_MS>; quick-tap-ms = <QUICK_TAP_MS>;
bindings = <&mo>, <&num_dance>; bindings = <&mo>, <&num_dance>;
) )
#define NUM_WORD &num_layer_word NUM 0 ZMK_BEHAVIOR(num_dance, tap_dance,
tapping-term-ms = <200>;
bindings = <&num_word>, <&sl NUM>; // reverse this for sticky-num on single tap
)
&num_word { // num-word, requires PR #1441
layers = <NUM>;
};
// tap: sticky-shift | shift + tap/ double-tap: caps-word | hold: shift // smart-mouse, requires PR #1366
ZMK_BEHAVIOR(ss_cw, mod_morph, ZMK_BEHAVIOR(smart_mouse, tri_state,
bindings = <&sk LSHFT>, <&caps_word>; bindings = <&tog MOUSE>, <&none>, <&tog MOUSE>;
mods = <(MOD_LSFT)>; ignored-key-positions = <LT1 LT3 RT1 RT2 RT3 RM1 RM2 RM3 RH0 RH1>;
ignored-layers = <MOUSE>;
)
/* Custom behaviors */
// Alt+Tab swapper, requires PR #1366
ZMK_BEHAVIOR(swapper, tri_state,
bindings = <&kt LALT>, <&kp TAB>, <&kt LALT>;
ignored-key-positions = <LT2>;
)
// Sticky layer + sticky shift (workaround for issue #1421)
ZMK_BEHAVIOR(sls, sticky_key,
release-after-ms = <1000>;
bindings = <&uc_shift>;
ignore-modifiers;
)
ZMK_BEHAVIOR(uc_shift, macro,
wait-ms = <0>;
tap-ms = <1>;
bindings = <&macro_press &mo UC &kp LSHFT>
, <&macro_pause_for_release>
, <&macro_release &mo UC &kp LSHFT>;
)
// tap: comma | shift + tap: semicolon | ctrl + shift + tap: <
ZMK_BEHAVIOR(comma_morph, mod_morph,
mods = <(MOD_LSFT|MOD_RSFT)>;
bindings = <&kp COMMA>, <&comma_inner_morph>;
)
ZMK_BEHAVIOR(comma_inner_morph, mod_morph,
bindings = <&kp SEMICOLON>, <&kp LESS_THAN>;
mods = <(MOD_LCTL|MOD_RCTL)>;
)
// tap: dot | shift + tap: colon | ctrl + shift + tap: >
ZMK_BEHAVIOR(dot_morph, mod_morph,
bindings = <&kp DOT>, <&dot_inner_morph>;
mods = <(MOD_LSFT|MOD_RSFT)>;
)
ZMK_BEHAVIOR(dot_inner_morph, mod_morph,
bindings = <&kp COLON>, <&kp GREATER_THAN>;
mods = <(MOD_LCTL|MOD_RCTL)>;
)
// tap: qmark | shift + tap: excl
ZMK_BEHAVIOR(qexcl, mod_morph,
bindings = <&kp QMARK>, <&kp EXCL>;
mods = <(MOD_LSFT|MOD_RSFT)>;
)
// tap: space | shift + tap: dot -> space -> sticky shift | hold: activate layer
ZMK_BEHAVIOR(lt_spc, hold_tap,
flavor = "balanced";
tapping-term-ms = <200>;
quick-tap-ms = <QUICK_TAP_MS>;
bindings = <&mo>, <&spc_morph>;
)
ZMK_BEHAVIOR(spc_morph, mod_morph,
bindings = <&kp SPACE>, <&dot_spc>;
mods = <(MOD_LSFT|MOD_RSFT)>;
)
ZMK_BEHAVIOR(dot_spc, macro,
wait-ms = <0>;
tap-ms = <5>;
bindings = <&kp DOT &kp SPACE &sk LSHFT>;
) )
// tap: backspace | lshft + tap: delete | rshft + tap: shift-delete // tap: backspace | lshft + tap: delete | rshft + tap: shift-delete
@ -122,23 +200,6 @@ ZMK_BEHAVIOR(bs_del, mod_morph,
keep-mods = <MOD_RSFT>; keep-mods = <MOD_RSFT>;
) )
// tap: space | shift + 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 = <QUICK_TAP_MS>;
bindings = <&mo>, <&spc_morph>;
)
// tap: copy | double-tap: cut // tap: copy | double-tap: cut
ZMK_BEHAVIOR(copy_cut, tap_dance, ZMK_BEHAVIOR(copy_cut, tap_dance,
tapping-term-ms = <200>; tapping-term-ms = <200>;
@ -152,77 +213,15 @@ ZMK_BEHAVIOR(win_sleep, macro,
bindings = <&kp LG(X) &kp U &kp S>; 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 = <&macro_press &mo UC &kp LSHFT>
, <&macro_pause_for_release>
, <&macro_release &mo UC &kp LSHFT>;
)
ZMK_BEHAVIOR(sls, sticky_key,
release-after-ms = <1000>;
bindings = <&uc_shift>;
ignore-modifiers;
)
// tap: comma | shift + tap: semicolon | ctrl + shift + tap: <
ZMK_BEHAVIOR(comma_inner_morph, mod_morph,
bindings = <&kp SEMICOLON>, <&kp LESS_THAN>;
mods = <(MOD_LCTL|MOD_RCTL)>;
)
ZMK_BEHAVIOR(comma_morph, mod_morph,
mods = <(MOD_LSFT|MOD_RSFT)>;
bindings = <&kp COMMA>, <&comma_inner_morph>;
)
// tap: dot | shift + tap: colon | ctrl + shift + tap: >
ZMK_BEHAVIOR(dot_inner_morph, mod_morph,
bindings = <&kp COLON>, <&kp GREATER_THAN>;
mods = <(MOD_LCTL|MOD_RCTL)>;
)
ZMK_BEHAVIOR(dot_morph, mod_morph,
bindings = <&kp DOT>, <&dot_inner_morph>;
mods = <(MOD_LSFT|MOD_RSFT)>;
)
// tap: qmark | shift + tap: excl
ZMK_BEHAVIOR(qexcl, mod_morph,
bindings = <&kp QMARK>, <&kp EXCL>;
mods = <(MOD_LSFT|MOD_RSFT)>;
)
// Alt+Tab swapper, requires PR #1366
ZMK_BEHAVIOR(swap, tri_state,
bindings = <&kt LALT>, <&kp TAB>, <&kt LALT>;
ignored-key-positions = <LT2>;
)
// misc aliases // misc aliases
#define CANCEL &kp K_CANCEL // cancel caps-word, num-word and smart-mouse #define CANCEL &kp K_CANCEL // cancel caps-word, num-word and smart-mouse
#define DSK_PREV &hmr RSHFT LG(LC(LEFT)) // previous desktop #define DSK_PREV &hmr RSHFT LG(LC(LEFT)) // previous desktop
#define DSK_NEXT &hmr LALT LG(LC(RIGHT)) // next desktop #define DSK_NEXT &hmr LALT LG(LC(RIGHT)) // next desktop
#define VOL_DOWN &hmr LCTRL C_VOL_DN #define VOL_DOWN &hmr LCTRL C_VOL_DN
/* Caps-word, num-word and smart-mouse */
&caps_word { // mods deactivate caps-word, requires PR #1441
/delete-property/ ignore-modifiers;
};
&num_word { // num-word, requires PR #1441
layers = <NUM>;
};
ZMK_BEHAVIOR(smart_mouse, tri_state, // smart-mouse, requires PR #1366
bindings = <&tog MOUSE>, <&none>, <&tog MOUSE>;
ignored-key-positions = <LT1 LT3 RT1 RT2 RT3 RM1 RM2 RM3 RH0 RH1>;
ignored-layers = <MOUSE>;
)
/* Keymap */ /* Keymap */
ZMK_CONDITIONAL_LAYER(FN NUM, SYS) // FN + NUM --> SYS ZMK_CONDITIONAL_LAYER(FN NUM, SYS) // FN + NUM --> SYS
ZMK_LAYER(base, ZMK_LAYER(base,
//╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮ //╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮
@ -232,13 +231,13 @@ ZMK_LAYER(base,
//├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ //├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤
X_LB &kp Z &kp X &kp C &kp D &kp V X_MB &kp K &kp H &comma_morph &dot_morph &qexcl X_RB X_LB &kp Z &kp X &kp C &kp D &kp V X_MB &kp K &kp H &comma_morph &dot_morph &qexcl X_RB
//├──────┤ ╰─────────────┼─────────────┴─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┴───────────────────────────╯ ├──────┤ //├──────┤ ╰─────────────┼─────────────┴─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┴───────────────────────────╯ ├──────┤
X_LH &lt_spc NAV 0 &lt FN RET X_MH NUM_WORD &ss_cw X_RH X_LH &lt_spc NAV 0 &lt FN RET X_MH SMART_NUM &smart_shft X_RH
//╰──────╯ ╰─────────────┴─────────────╯ ╰──────╯ ╰─────────────┴─────────────╯ ╰──────╯ //╰──────╯ ╰─────────────┴─────────────╯ ╰──────╯ ╰─────────────┴─────────────╯ ╰──────╯
) )
ZMK_LAYER(nav, ZMK_LAYER(nav,
//╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮ //╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭──────╮
X_LT ___ ___ &kp LS(TAB) &swap ___ X_MT &kp PG_UP NAV_BSPC NAV_UP NAV_DEL ___ X_RT X_LT ___ ___ &kp LS(TAB) &swapper ___ X_MT &kp PG_UP NAV_BSPC NAV_UP NAV_DEL ___ X_RT
//├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ //├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤
X_LM &sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ X_MM &kp PG_DN NAV_LEFT NAV_DOWN NAV_RIGHT &kp RET X_RM X_LM &sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ X_MM &kp PG_DN NAV_LEFT NAV_DOWN NAV_RIGHT &kp RET X_RM
//├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ //├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤

View file

@ -9,21 +9,21 @@
// use global-quick-tap-ms for combos (requires PR 1387) // use global-quick-tap-ms for combos (requires PR 1387)
#undef COMBO_HOOK #undef COMBO_HOOK
#define COMBO_HOOK global-quick-tap-ms = <75>; #define COMBO_HOOK global-quick-tap-ms = <100>;
#define COMBO_TERM_FAST 20 #define COMBO_TERM_FAST 20
#define COMBO_TERM_SLOW 35 #define COMBO_TERM_SLOW 35
// make homerow combos tap-only (so mods can be chorded correctly) // make homerow combos tap-only (so HRMs can be chorded instantaneously)
#define HRC_TAB &hml LA(LCTRL) TAB #define HRC_TAB &hml LA(LCTRL) TAB
#define HRC_REPEAT &hml_repeat LS(LCTRL) 0 #define HRC_REPEAT &hml_repeat LS(LCTRL) 0
#define HRC_LPAR &hmr RS(LCTRL) LPAR #define HRC_LPAR &hmr RS(LCTRL) LPAR
#define HRC_RPAR &hmr LA(LCTRL) RPAR #define HRC_RPAR &hmr LA(LCTRL) RPAR
/* Punctuation (horizontal left hand) */ /* Horizontal combos - left hand */
ZMK_COMBO(esc, &kp ESC, LT3 LT2, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(esc, &kp ESC, LT3 LT2, DEF NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(ret, &kp RETURN, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(ret, &kp RETURN, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(mouse, &smart_mouse, LT3 LT1, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(mouse, &smart_mouse, LT3 LT1, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(tab, HRC_TAB, LM3 LM2, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(tab, HRC_TAB, LM3 LM2, DEF NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(repeat,HRC_REPEAT, LM2 LM1, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(repeat,HRC_REPEAT, LM2 LM1, DEF NAV NUM, COMBO_TERM_FAST)
@ -32,13 +32,15 @@ ZMK_COMBO(cut, &kp LC(X), LB3 LB1, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(copy, &kp LC(INS), LB3 LB2, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(copy, &kp LC(INS), LB3 LB2, DEF NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(paste, &kp LS(INS), LB2 LB1, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(paste, &kp LS(INS), LB2 LB1, DEF NAV NUM, COMBO_TERM_FAST)
/* Brackets (horizontal right hand) */ /* Horizontal combos - right hand */
ZMK_COMBO(bspc, &kp BSPC, RT1 RT2, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(bspc, &kp BSPC, RT1 RT2, DEF NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(del, &kp DEL, RT2 RT3, DEF NAV NUM, COMBO_TERM_FAST) ZMK_COMBO(del, &kp DEL, RT2 RT3, DEF NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(lpar, HRC_LPAR, RM1 RM2, DEF NUM, COMBO_TERM_FAST) ZMK_COMBO(lpar, HRC_LPAR, RM1 RM2, DEF NUM, COMBO_TERM_FAST)
ZMK_COMBO(rpar, HRC_RPAR, RM2 RM3, DEF NUM, COMBO_TERM_FAST) ZMK_COMBO(rpar, HRC_RPAR, RM2 RM3, DEF NUM, COMBO_TERM_FAST)
ZMK_COMBO(lt, &kp LT, RM1 RM2, NAV , COMBO_TERM_FAST) ZMK_COMBO(lt, &kp LT, RM1 RM2, NAV , COMBO_TERM_FAST)
ZMK_COMBO(gt, &kp GT, RM2 RM3, NAV , COMBO_TERM_FAST) ZMK_COMBO(gt, &kp GT, RM2 RM3, NAV , COMBO_TERM_FAST)
ZMK_COMBO(lbkt, &kp LBKT, RB1 RB2, DEF NUM, COMBO_TERM_FAST) ZMK_COMBO(lbkt, &kp LBKT, RB1 RB2, DEF NUM, COMBO_TERM_FAST)
ZMK_COMBO(rbkt, &kp RBKT, RB2 RB3, DEF NUM, COMBO_TERM_FAST) ZMK_COMBO(rbkt, &kp RBKT, RB2 RB3, DEF NUM, COMBO_TERM_FAST)
ZMK_COMBO(lbrc, &kp LBRC, RB1 RB2, NAV , COMBO_TERM_FAST) ZMK_COMBO(lbrc, &kp LBRC, RB1 RB2, NAV , COMBO_TERM_FAST)
@ -47,22 +49,23 @@ ZMK_COMBO(rbrc, &kp RBRC, RB2 RB3, NAV , COMBO_TERM_FAST)
ZMK_COMBO(grk, &sl UC, RT1 RT3, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(grk, &sl UC, RT1 RT3, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(cpgrk, &sls 0, RT1 RT2 RT3, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(cpgrk, &sls 0, RT1 RT2 RT3, DEF NAV NUM, COMBO_TERM_SLOW)
/* Other symbols (vertical combos) */ /* Vertical combos - left hand */
ZMK_COMBO(at, &kp AT, LT3 LM3, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(at, &kp AT, LT3 LM3, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(hash, &kp HASH, LT2 LM2, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(hash, &kp HASH, LT2 LM2, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(dllr, &kp DLLR, LT1 LM1, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(dllr, &kp DLLR, LT1 LM1, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(prcnt, &kp PRCNT, LT0 LM0, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(prcnt, &kp PRCNT, LT0 LM0, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(caret, &kp CARET, RT0 RM0, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(plus, &kp PLUS, RT1 RM1, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(star, &kp STAR, RT2 RM2, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(amps, &kp AMPS, RT3 RM3, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(grave, &kp GRAVE, LM3 LB3, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(grave, &kp GRAVE, LM3 LB3, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(bslh, &kp BSLH, LM2 LB2, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(bslh, &kp BSLH, LM2 LB2, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(equal, &kp EQUAL, LM1 LB1, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(equal, &kp EQUAL, LM1 LB1, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(tilde, &kp TILDE, LM0 LB0, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(tilde, &kp TILDE, LM0 LB0, DEF NAV NUM, COMBO_TERM_SLOW)
/* Vertical combos - right hand */
ZMK_COMBO(caret, &kp CARET, RT0 RM0, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(plus, &kp PLUS, RT1 RM1, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(star, &kp STAR, RT2 RM2, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(amps, &kp AMPS, RT3 RM3, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(under, &kp UNDER, RM0 RB0, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(under, &kp UNDER, RM0 RB0, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(minus, &kp MINUS, RM1 RB1, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(minus, &kp MINUS, RM1 RB1, DEF NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(fslh, &kp FSLH, RM2 RB2, DEF NAV NUM, COMBO_TERM_SLOW) ZMK_COMBO(fslh, &kp FSLH, RM2 RB2, DEF NAV NUM, COMBO_TERM_SLOW)