Skip to content

Commit

Permalink
First attempt
Browse files Browse the repository at this point in the history
  • Loading branch information
takikoo committed Dec 25, 2023
1 parent 4d53517 commit 5efee64
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 203 deletions.
123 changes: 60 additions & 63 deletions config/combos.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -5,77 +5,74 @@
│ 12 13 14 15 16 17 │ │ 18 19 20 21 22 23 │
│ 24 25 26 27 28 29 │ │ 30 31 32 33 34 35 │
╰───────────╮ 36 37 38 │ │ 39 40 41 ╭───────────╯
╰────────────╯ ╰────────────╯ */
╰────────────╯ ╰────────────╯
╭─────────────────────────╮ ╭─────────────────────────╮
│ LT5 LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 RT5 │
│ LM5 LM4 LM3 LM2 LM1 LM0 │ │ RM0 RM1 RM2 RM3 RM4 RM5 │
│ LB5 LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 RB5 │
╰───────────╮ LH2 LH1 LH0 │ │ RH0 RH1 RH2 ╭───────────╯
╰─────────────╯ ╰─────────────╯ */

compatible = "zmk,combos";
// use require-prior-idle-ms for combos
#undef COMBO_HOOK
#define COMBO_HOOK require-prior-idle-ms = <150>;

#define COMBO(NAME, BINDINGS, KEYPOS, LAYERS) \
combo_##NAME { \
timeout-ms = <50>; \
bindings = <BINDINGS>; \
key-positions = <KEYPOS>; \
layers = <LAYERS>; \
};
#define COMBO_TERM_FAST 18
#define COMBO_TERM_SLOW 30

/* Brackets */
COMBO(left_parenthesis, &kp SE_LPRN, 2 3, NUM)
COMBO(right_parenthesis, &kp SE_RPRN, 3 4, NUM)
COMBO(parentheses, &macro_parentheses, 2 3 4, NUM)
COMBO(left_bracket, &kp SE_LBRC, 14 15, NUM)
COMBO(right_bracket, &kp SE_RBRC, 15 16, NUM)
COMBO(brackets, &macro_brackets, 14 15 16, NUM)
COMBO(less_than, &kp SE_LABK, 26 27, NUM)
COMBO(greater_than, &kp SE_RABK, 27 28, NUM)
COMBO(ltgt, &macro_ltgt, 26 27 28, NUM)
// make homerow combos tap-only (so HRMs can be chorded instantaneously)
#define HRC_TAB &hml LA(LCTRL) TAB
#define HRC_REPEAT &hml_repeat LS(LCTRL) 0
#define HRC_LPAR &hmr_lpar_lt RS(LCTRL) 0
#define HRC_RPAR &hmr_rpar_gt LA(LCTRL) 0

/* Text processing */
COMBO(undo, &kp LC(Z), 25 26, QWERTY)
COMBO(cut, &kp LC(X), 26 28, QWERTY)
COMBO(copy, &kp LC(C), 26 27, QWERTY)
COMBO(paste, &kp LC(V), 26 27 28, QWERTY)
COMBO(select_all, &kp LC(A), 25 28, QWERTY)
COMBO(caps_word, &caps_word, 28 31, QWERTY)
COMBO(tonav, TONAV, 31 32, QWERTY)
/* Horizontal combos - left hand */
ZMK_COMBO(esc, &kp ESC, LT3 LT2, QWERTY NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(ret, &kp RETURN, LT2 LT1, QWERTY NAV NUM, COMBO_TERM_FAST)
//ZMK_COMBO(mouse, &smart_mouse, LT3 LT1, QWERTY NAV NUM, COMBO_TERM_FAST)

/* System */
//COMBO(power, &macro_power, 5 6, QWERTY)
//COMBO(menu_search, &kp LG(LS(SLASH)), 19 20 21, QWERTY)
//COMBO(spotlight, &kp LG(SPACE), 14 15 16, QWERTY)
//COMBO(mic_mute_left, &kp LG(BACKSLASH), 16 28, QWERTY)
//COMBO(mic_mute_right, &kp LG(BACKSLASH), 19 31, QWERTY)
ZMK_COMBO(tab, HRC_TAB, LM3 LM2, QWERTY NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(repeat,HRC_REPEAT, LM2 LM1, QWERTY NAV NUM, COMBO_TERM_FAST)

/* Window management */
COMBO(win_bk, &macro_back, 5 17, QWERTY)
COMBO(win_fw, &macro_forward, 6 18, QWERTY)
COMBO(win_tab_left, TAB_PREV, 4 16, QWERTY)
COMBO(win_tab_right, TAB_NEXT, 7 19, QWERTY)
ZMK_COMBO(cut, &kp LC(X), LB3 LB1, QWERTY NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(copy, &kp LC(INS), LB3 LB2, QWERTY NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(paste, &kp LS(INS), LB2 LB1, QWERTY NAV NUM, COMBO_TERM_FAST)

/* Window management */
//COMBO(tile_left, &kp LG(LS(LEFT)), 31 32, QWERTY)
//COMBO(tile_right, &kp LG(LS(RIGHT)), 32 33, QWERTY)
//COMBO(maximize, &kp LG(LS(UP)), 31 32 33, QWERTY)
//COMBO(center, &kp LG(LS(DOWN)), 31 33, QWERTY)
/* Horizontal combos - right hand */
ZMK_COMBO(bspc, &kp BSPC, RT1 RT2, QWERTY NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(del, &kp DEL, RT2 RT3, QWERTY NAV NUM, COMBO_TERM_FAST)

/* Media */
//COMBO(volup, &kp C_VOL_UP, 8 20, NAV)
//COMBO(voldown, &kp C_VOL_DN, 20 32, NAV)
//COMBO(playpause, &kp C_PLAY_PAUSE, 31 33, NAV)
//COMBO(prev, &kp C_PREV, 31 32, NAV)
//COMBO(next, &kp C_NEXT, 32 33, NAV)
ZMK_COMBO(lpar, HRC_LPAR, RM1 RM2, QWERTY NUM, COMBO_TERM_FAST)
ZMK_COMBO(rpar, HRC_RPAR, RM2 RM3, QWERTY NUM, COMBO_TERM_FAST)
ZMK_COMBO(lt, &kp SE_LABK, RM1 RM2, NAV , COMBO_TERM_FAST)
ZMK_COMBO(gt, &kp SE_RABK, RM2 RM3, NAV , COMBO_TERM_FAST)

//COMBO(at, &kp SE_AT, 1 2, RAISE)
//COMBO(hash, &kp SE_HASH, 3 15, RAISE)
//COMBO(dlr, &kp SE_DLR, 4 16, RAISE)
//COMBO(perc, &kp SE_PERC, 5 17, RAISE)
//COMBO(circ, &macro_circ, 6 18, LOWER)
//COMBO(amp, &kp SE_AMPR, 7 19, LOWER)
//COMBO(astr, &kp SE_ASTR, 8 20, LOWER)
//COMBO(bsls, &kp SE_BSLS, 9 21, LOWER)
//COMBO(tild, &macro_tild, 14 26, RAISE)
//COMBO(grv, &macro_grv, 15 27, RAISE)
//COMBO(bspc, &kp BSPC, 31 32, RAISE)
//COMBO(del, &kp DEL, 31 33, RAISE)
COMBO(col, &kp SE_COLN, 32 33, QWERTY)
ZMK_COMBO(lbkt, &kp SE_LBKT, RB1 RB2, QWERTY NUM, COMBO_TERM_FAST)
ZMK_COMBO(rbkt, &kp SE_RBKT, RB2 RB3, QWERTY NUM, COMBO_TERM_FAST)
ZMK_COMBO(lbrc, &kp SE_LBRC, RB1 RB2, NAV , COMBO_TERM_FAST)
ZMK_COMBO(rbrc, &kp SE_RBRC, RB2 RB3, NAV , COMBO_TERM_FAST)

/* Vertical combos - left hand */
ZMK_COMBO(at, &kp SE_AT, LT3 LM3, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(hash, &kp SE_HASH, LT2 LM2, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(dllr, &kp SE_DLR, LT1 LM1, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(prcnt, &kp SE_PERC, LT0 LM0, QWERTY NAV NUM, COMBO_TERM_SLOW)

ZMK_COMBO(grave, &kp SE_GRV, LM3 LB3, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(bslh, &kp SE_BSLS, LM2 LB2, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(equal, &kp SE_EQL, LM1 LB1, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(tilde, &kp SE_TILD, LM0 LB0, QWERTY NAV NUM, COMBO_TERM_SLOW)

/* Vertical combos - right hand */
ZMK_COMBO(caret, &kp SE_CIRC, RT0 RM0, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(plus, &kp SE_PLUS, RT1 RM1, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(star, &kp SE_ASTR, RT2 RM2, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(amps, &kp SE_AMPR, RT3 RM3, QWERTY NAV NUM, COMBO_TERM_SLOW)

ZMK_COMBO(under, &kp SE_UNDS, RM0 RB0, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(minus, &kp SE_MINS, RM1 RB1, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(fslh, &kp SE_SLSH, RM2 RB2, QWERTY NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(pipe, &kp SE_PIPE, RM3 RB3, QWERTY NAV NUM, COMBO_TERM_SLOW)

/* Game */
COMBO(vill, &macro_vill, 15 16, GAME)
ZMK_COMBO(vill, &m_vill, LM1 LM2, GAME , COMBO_TERM_FAST)
Loading

0 comments on commit 5efee64

Please sign in to comment.