forked from nickfaraco/zmk-config
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcombos.dtsi
63 lines (60 loc) · 2.46 KB
/
combos.dtsi
1
2
3
4
5
6
7
8
9
10
11
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/* KEY POSITIONS
╭─────────────────────╮ ╭─────────────────────╮
│ 00 01 02 03 04 │ │ 05 06 07 08 09 │
│ 10 11 12 13 14 │ │ 15 16 17 18 19 │
│ 20 21 22 23 24 │ │ 25 26 27 28 29 │
╰───────╮ 30 31 32 │ │ 33 34 35 ╭───────╯
╰─────────────╯ ╰─────────────╯ */
#define ALL 0xff
#define COMBO_TAB_MS 25
// use global-quick-tap-ms for combos (requires PR 1387)
#define COMBO_HOOK global-quick-tap-ms = <75>;
// just for drawing purposes
#ifndef DUMMY_KEEB
#define DUMMY_KEEB 0
#endif
/ {
combos {
compatible = "zmk,combos";
#define CONCAT2(x, y) x ## y
#define CONCAT(x, y) CONCAT2(x, y)
#define COMBO(name, pos, k, l) CONCAT(combo_, name) { key-positions = <pos>; bindings = <k>; layers = <l>; timeout-ms = <COMBO_TAB_MS>; };
// missing letters
#if ALPHA_23332 || ALPHA_13332 || DUMMY_KEEB
COMBO(q, 1 3, &kp Q, BASE)
COMBO(z, 2 3, &kp Z, BASE)
#if ALPHA_13332 || DUMMY_KEEB
COMBO(v, 1 2, &kp V, BASE)
COMBO(quote, 8 18, &single_to_doublequote , BASE)
#endif
#endif
// left-hand side combos
// COMBO(quit, 1 2, &kp LG(Q), BASE)
// COMBO(cltab, 2 3, &kp LG(W), BASE)
COMBO(esc, 11 12, &kp ESCAPE, BASE)
COMBO(tab, 12 13, &kp TAB, BASE)
COMBO(copy, 21 22, &kp LG(C), BASE)
COMBO(paste, 22 23, &kp LG(V), BASE)
COMBO(cut, 21 22 23, &kp LG(X), BASE)
COMBO(undo, 10 11, &kp LG(Z), BASE)
COMBO(redo, 13 14, &kp LG(LS(Z)), BASE)
// right-hand side combos
// COMBO(ret, 16 17 18, &kp RET, BASE)
// parenthesis combos
COMBO(lpar, 16 17, &kp LPAR, BASE SYM NUM)
COMBO(rpar, 17 18, &kp RPAR, BASE SYM NUM)
// brackets combos
COMBO(lbkt, 26 27, &kp LBKT, BASE SYM NUM)
COMBO(rbkt, 27 28, &kp RBKT, BASE SYM NUM)
// braces combos
// COMBO(lbrc, 26 27, &kp LBRC, BASE NUM)
// COMBO(rbrc, 27 28, &kp RBRC, BASE NUM)
// delete actions
COMBO(bspc, 6 7, &kp BSPC, BASE NAV NUM)
COMBO(del, 7 8, &kp DEL, BASE NAV NUM)
COMBO(del_word, 6 7 8, &kp LA(BSPC), BASE NUM)
COMBO(del_line, 6 7 8, &kp LG(BSPC), NAV)
// lock layer
COMBO(lock, 0 9 32 33, &tog LOCKL, BASE)
};
};