Skip to content

Commit

Permalink
feat: refactoring combos
Browse files Browse the repository at this point in the history
Using urob's combo symbol layout and using a separate combo file to clean up.
  • Loading branch information
bsag committed Dec 3, 2023
1 parent 5496af7 commit 8285cde
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 36 deletions.
60 changes: 60 additions & 0 deletions config/combos.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/* --------------------------------- combos --------------------------------- */
/*
╭────────────────────┬────────────────────╮ ╭─────────────────────┬─────────────────────╮
│ 0 1 2 3 4 │ 5 6 7 8 9 │ │ LT4 LT3 LT2 LT1 LT0 │ RT0 RT1 RT2 RT3 RT4 │
│ 10 11 12 13 14 │ 15 16 17 18 19 │ │ LM4 LM3 LM2 LM1 LM0 │ RM0 RM1 RM2 RM3 RM4 │
20 21 22 23 24 25 │ 26 27 28 29 30 31 LB5 LB4 LB3 LB2 LB1 LB0 │ RB0 RB1 RB2 RB3 RB4 RB5
╰───────╮ 32 33 34 │ 35 36 37 ╭───────╯ ╰───────╮ LH2 LH1 LH0 │ RH0 RH1 RH2 ╭───────╯
╰────────────┴────────────╯ ╰─────────────┴─────────────╯ */


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

#define COMBO_TERM_FAST 18
#define COMBO_TERM_SLOW 30

// Make sure that home row combos are tap only so that you can chord HRMs
// #define HRC_LPAR &hmr_lpar RS(RGUI) 0
// #define HRC_RPAR &hmr_rpar LA(RGUI) 0

// Left hand vertical combos //
// Between top and home row
ZMK_COMBO(at, &kp AT, LT3 LM3, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(hash, &kp HASH, LT2 LM2, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(dllr, &kp DLLR, LT1 LM1, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(prcnt, &kp PRCNT, LT0 LM0, BASE NAV NUM, COMBO_TERM_SLOW)

// Between home and bottom row
ZMK_COMBO(grave, &kp GRAVE, LM3 LB3, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(bslh, &kp BSLH, LM2 LB2, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(equal, &kp EQUAL, LM1 LB1, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(tilde, &kp TILDE, LM0 LB0, BASE NAV NUM, COMBO_TERM_SLOW)

// Horizontal combos
ZMK_COMBO(esc, &kp ESC, LM3 LM1, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(cut, &kp LG(X), LB3 LB1, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(copy, &kp LG(C), LB3 LB2, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(paste, &kp LG(V), LB2 LB1, BASE NAV NUM, COMBO_TERM_FAST)

// Right hand vertical combos
// Between top and home row
ZMK_COMBO(caret, &kp CARET, RT0 RM0, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(plus, &kp PLUS, RT1 RM1, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(star, &kp STAR, RT2 RM2, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(amps, &kp AMPS, RT3 RM3, BASE NAV NUM, COMBO_TERM_SLOW)

// Between home and bottom row
ZMK_COMBO(under, &kp UNDER, RM0 RB0, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(minus, &kp MINUS, RM1 RB1, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(fslh, &kp FSLH, RM2 RB2, BASE NAV NUM, COMBO_TERM_SLOW)
ZMK_COMBO(pipe, &kp PIPE, RM3 RB3, BASE NAV NUM, COMBO_TERM_SLOW)

// Horizontal combos
ZMK_COMBO(lbkt, &kp LBKT, RT1 RT2, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(rbkt, &kp RBKT, RT2 RT3, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(lpar, &kp LPAR, RM1 RM2, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(rpar, &kp RPAR, RM2 RM3, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(lbrc, &kp LBRC, RB1 RB2, BASE NAV NUM, COMBO_TERM_FAST)
ZMK_COMBO(rbrc, &kp RBRC, RB2 RB3, BASE NAV NUM, COMBO_TERM_FAST)
43 changes: 7 additions & 36 deletions config/totem.keymap
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#define FUN 4
#define UTIL 5

#include "combos.dtsi"

#define S_UNDO &kp LG(Z)
#define S_CUT &kp LG(X)
#define S_COPY &kp LG(C)
Expand Down Expand Up @@ -82,8 +84,10 @@
MAKE_HRM(hml, &kp, &kp, KEYS_R THUMBS) // left-hand HRMs
MAKE_HRM(hmr, &kp, &kp, KEYS_L THUMBS) // right-hand HRMs

// MAKE_HRM(hmr_lpar_lt, &kp, &lpar_lt, KEYS_L THUMBS) // " " " "
// MAKE_HRM(hmr_rpar_gt, &kp, &rpar_gt, KEYS_L THUMBS) // " " " "
// special HRMs for the right meh key, as it involves a modmorph
MAKE_HRM(hmr_meh, &kp, &comma_morph, KEYS_L, THUMBS)
// MAKE_HRM(hmr_lpar, &kp, &lpar, KEYS_L THUMBS) // " " " "
// MAKE_HRM(hmr_rpar, &kp, &rpar, KEYS_L THUMBS) // " " " "

// mod_morph keys
// tap: qmark | shift + tap: excl
Expand Down Expand Up @@ -113,47 +117,14 @@ ZMK_BEHAVIOR(dot_inner_morph, mod_morph,
)

/ {
combos {
compatible = "zmk,combos";
combo_capsword {
timeout-ms = <50>;
key-positions = <13 16>;
bindings = <&caps_word>;
};
combo_lparen {
timeout-ms = <50>;
key-positions = <12 13>;
bindings = <&kp LPAR>;
};
combo_rparen {
timeout-ms = <50>;
key-positions = <16 17>;
bindings = <&kp RPAR>;
};
combo_esc {
timeout-ms = <50>;
key-positions = <11 13>;
bindings = <&kp ESC>;
};
combo_slsh {
timeout-ms = <50>;
key-positions = <17 28>;
bindings = <&kp FSLH>;
};
combo_blsh {
timeout-ms = <50>;
key-positions = <12 23>;
bindings = <&kp BSLH>;
};
};
// TODO: Add hyper key as HRM
keymap {
compatible = "zmk,keymap";
default_layer { // ColemakDHm
bindings = <
&kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp APOS
&hml LCTRL A &hml LALT R &hml LGUI S &hml LSHFT T &kp G &kp M &hmr RSHFT N &hmr RGUI E &hmr LALT I &hmr RCTRL O
PTAB &kp Z &kp X &hml MEH C &hml HYP D &kp V &kp K &hmr HYP H &comma_morph &dot_morph &qexcl NTAB
PTAB &kp Z &kp X &hml MEH C &hml HYP D &kp V &kp K &hmr HYP H &hmr_meh MEH &dot_morph &qexcl NTAB
&lt UTIL TAB &lt NAV SPACE &sk LSHFT &lt SYM RET &lt NUM BSPC &lt FUN DEL
>;
};
Expand Down

0 comments on commit 8285cde

Please sign in to comment.