diff --git a/config/base.keymap b/config/base.keymap index c08bac3..85602f2 100644 --- a/config/base.keymap +++ b/config/base.keymap @@ -1,6 +1,5 @@ #include #include -#include #define XXX &none #define ___ &trans @@ -14,6 +13,10 @@ #define FN 4 #define UC 5 +#include "mouse.dtsi" +#include "unicode.dtsi" +#include "combos.dtsi" + /* create stubs if undefined */ #if !defined EXTRA_MID #define EXTRA_MID @@ -31,11 +34,11 @@ TODOs and ISSUES * tap-only combos not yet possible (#544), prevents rapid chaining of HRMs * &bootloader doesn't work with Planck_rev6 (#1086) * no global-quick-tap for combos - * mouse wheel keys not yet implemented (#319), using up/down for now * mod-taps getting stuck with heterogenous combo-terms (#986, #905) * sticky-hold swallows OS shift when typing quickly, using sticky-tap for now * native sleep key doesn't work with windows (#1077), using sleep-macro for now * no native unicode support (#232), using preprocessor workaround instead + * no native mouse keys (#319), using mouse PR #778 * mod-morph doesn't swallow mod (#686), using masked-mod PR #1114 */ @@ -56,9 +59,6 @@ TODOs and ISSUES /* root node */ / { - #include "unicode.dtsi" - #include "combos.dtsi" - macros { // Windows sleep key win_sleep: win_sleep { diff --git a/config/combos.dtsi b/config/combos.dtsi index 14886ef..f0fd1da 100644 --- a/config/combos.dtsi +++ b/config/combos.dtsi @@ -14,59 +14,60 @@ #define COMBO_TERM_V 30 #define COMBO(NAME, BINDINGS, KEYPOS, LAYERS, TERM) \ - combo_##NAME { \ - timeout-ms = ; \ - bindings = ; \ - key-positions = ; \ - layers = ; \ - }; + combo_##NAME { \ + timeout-ms = ; \ + bindings = ; \ + key-positions = ; \ + layers = ; \ + }; -combos { +/ { + combos { + compatible = "zmk,combos"; - compatible = "zmk,combos"; + /* Capsword */ + // COMBO(cpwrd, &caps_word, LM3 RM1, DEF NUM, COMBO_TERM_V) - /* Capsword */ - // COMBO(cpwrd, &caps_word, LM3 RM1, DEF NUM, COMBO_TERM_V) + /* Punctuation (horizontal left hand) */ + COMBO(num, &tog NUM, LT1 LT3, DEF NUM, COMBO_TERM_H) + COMBO(all, &kp LC(A), LT1 LT2, DEF NUM, COMBO_TERM_H) + COMBO(app, &kp LG(SPACE), LT2 LT3, DEF NUM, COMBO_TERM_H) - /* Punctuation (horizontal left hand) */ - COMBO(num, &tog NUM, LT1 LT3, DEF NUM, COMBO_TERM_H) - COMBO(all, &kp LC(A), LT1 LT2, DEF NUM, COMBO_TERM_H) - COMBO(app, &kp LG(SPACE), LT2 LT3, DEF NUM, COMBO_TERM_H) + COMBO(excl, &kp EXCL, LM1 LM2, DEF NUM, COMBO_TERM_H) + COMBO(qmark, &kp QMARK, LM2 LM3, DEF NUM, COMBO_TERM_H) - COMBO(excl, &kp EXCL, LM1 LM2, DEF NUM, COMBO_TERM_H) - COMBO(qmark, &kp QMARK, LM2 LM3, DEF NUM, COMBO_TERM_H) + COMBO(cut, &kp LC(X), LB1 LB3, DEF NUM, COMBO_TERM_H) + COMBO(copy, &kp LC(INS), LB1 LB2, DEF NUM, COMBO_TERM_H) + COMBO(paste, &kp LS(INS), LB2 LB3, DEF NUM, COMBO_TERM_H) - COMBO(cut, &kp LC(X), LB1 LB3, DEF NUM, COMBO_TERM_H) - COMBO(copy, &kp LC(INS), LB1 LB2, DEF NUM, COMBO_TERM_H) - COMBO(paste, &kp LS(INS), LB2 LB3, DEF NUM, COMBO_TERM_H) + /* Brackets (horizontal right hand) */ + COMBO(lbrc, &kp LBRC, RT1 RT2, DEF NUM, COMBO_TERM_H) + COMBO(rbrc, &kp RBRC, RT2 RT3, DEF NUM, COMBO_TERM_H) + COMBO(lpar, &kp LPAR, RM1 RM2, DEF NUM, COMBO_TERM_H) + COMBO(rpar, &kp RPAR, RM2 RM3, DEF NUM, COMBO_TERM_H) + COMBO(lbrk, &kp LBKT, RB1 RB2, DEF NUM, COMBO_TERM_H) + COMBO(rbrk, &kp RBKT, RB2 RB3, DEF NUM, COMBO_TERM_H) - /* Brackets (horizontal right hand) */ - COMBO(lbrc, &kp LBRC, RT1 RT2, DEF NUM, COMBO_TERM_H) - COMBO(rbrc, &kp RBRC, RT2 RT3, DEF NUM, COMBO_TERM_H) - COMBO(lpar, &kp LPAR, RM1 RM2, DEF NUM, COMBO_TERM_H) - COMBO(rpar, &kp RPAR, RM2 RM3, DEF NUM, COMBO_TERM_H) - COMBO(lbrk, &kp LBKT, RB1 RB2, DEF NUM, COMBO_TERM_H) - COMBO(rbrk, &kp RBKT, RB2 RB3, DEF NUM, COMBO_TERM_H) + /* Other symbols (vertical combos) */ + COMBO(at, &kp AT, LT1 LM1, DEF NUM, COMBO_TERM_V) + COMBO(hash, &kp HASH, LT2 LM2, DEF NUM, COMBO_TERM_V) + COMBO(dllr, &kp DLLR, LT3 LM3, DEF NUM, COMBO_TERM_V) + COMBO(prcnt, &kp PRCNT, LT4 LM4, DEF NUM, COMBO_TERM_V) - /* Other symbols (vertical combos) */ - COMBO(at, &kp AT, LT1 LM1, DEF NUM, COMBO_TERM_V) - COMBO(hash, &kp HASH, LT2 LM2, DEF NUM, COMBO_TERM_V) - COMBO(dllr, &kp DLLR, LT3 LM3, DEF NUM, COMBO_TERM_V) - COMBO(prcnt, &kp PRCNT, LT4 LM4, DEF NUM, COMBO_TERM_V) + COMBO(caret, &kp CARET, RT0 RM0, DEF NUM, COMBO_TERM_V) + COMBO(plus, &kp PLUS, RT1 RM1, DEF NUM, COMBO_TERM_V) + COMBO(star, &kp STAR, RT2 RM2, DEF NUM, COMBO_TERM_V) + COMBO(amps, &kp AMPS, RT3 RM3, DEF NUM, COMBO_TERM_V) - COMBO(caret, &kp CARET, RT0 RM0, DEF NUM, COMBO_TERM_V) - COMBO(plus, &kp PLUS, RT1 RM1, DEF NUM, COMBO_TERM_V) - COMBO(star, &kp STAR, RT2 RM2, DEF NUM, COMBO_TERM_V) - COMBO(amps, &kp AMPS, RT3 RM3, DEF NUM, COMBO_TERM_V) + COMBO(grave, &kp GRAVE, LM1 LB1, DEF NUM, COMBO_TERM_V) + COMBO(bslh, &kp BSLH, LM2 LB2, DEF NUM, COMBO_TERM_V) + COMBO(tilde, &kp TILDE, LM3 LB3, DEF NUM, COMBO_TERM_V) + COMBO(equal, &kp EQUAL, LM4 LB4, DEF NUM, COMBO_TERM_V) - COMBO(grave, &kp GRAVE, LM1 LB1, DEF NUM, COMBO_TERM_V) - COMBO(bslh, &kp BSLH, LM2 LB2, DEF NUM, COMBO_TERM_V) - COMBO(tilde, &kp TILDE, LM3 LB3, DEF NUM, COMBO_TERM_V) - COMBO(equal, &kp EQUAL, LM4 LB4, DEF NUM, COMBO_TERM_V) - - COMBO(under, &kp UNDER, RM0 RB0, DEF NUM, COMBO_TERM_V) - COMBO(minus, &kp MINUS, RM1 RB1, DEF NUM, COMBO_TERM_V) - COMBO(fslh, &kp FSLH, RM2 RB2, DEF NUM, COMBO_TERM_V) - COMBO(pipe, &kp PIPE, RM3 RB3, DEF NUM, COMBO_TERM_V) + COMBO(under, &kp UNDER, RM0 RB0, DEF NUM, COMBO_TERM_V) + COMBO(minus, &kp MINUS, RM1 RB1, DEF NUM, COMBO_TERM_V) + COMBO(fslh, &kp FSLH, RM2 RB2, DEF NUM, COMBO_TERM_V) + COMBO(pipe, &kp PIPE, RM3 RB3, DEF NUM, COMBO_TERM_V) + }; }; diff --git a/config/mouse.dtsi b/config/mouse.dtsi new file mode 100644 index 0000000..ce45fa4 --- /dev/null +++ b/config/mouse.dtsi @@ -0,0 +1,35 @@ +#include + +&mmv { + time-to-max-speed-ms = <1500>; // 300 + acceleration-exponent = <1>; + delay-ms = <0>; +}; + +&mwh { + time-to-max-speed-ms = <5000>; // 300 + acceleration-exponent = <1>; // 0 + delay-ms = <0>; +}; + +#define U_MOUSE_MOVE_MAX 1250 +#define U_MOUSE_SCROLL_MAX 100 + +#undef MOVE_UP +#undef MOVE_DOWN +#undef MOVE_LEFT +#undef MOVE_RIGHT +#define MOVE_UP MOVE_VERT(-U_MOUSE_MOVE_MAX) +#define MOVE_DOWN MOVE_VERT(U_MOUSE_MOVE_MAX) +#define MOVE_LEFT MOVE_HOR(-U_MOUSE_MOVE_MAX) +#define MOVE_RIGHT MOVE_HOR(U_MOUSE_MOVE_MAX) + +#undef SCROLL_UP +#undef SCROLL_DOWN +#undef SCROLL_LEFT +#undef SCROLL_RIGHT +#define SCROLL_UP SCROLL_VERT(U_MOUSE_SCROLL_MAX) +#define SCROLL_DOWN SCROLL_VERT(-U_MOUSE_SCROLL_MAX) +#define SCROLL_LEFT SCROLL_HOR(-U_MOUSE_SCROLL_MAX) +#define SCROLL_RIGHT SCROLL_HOR(U_MOUSE_SCROLL_MAX) + diff --git a/config/unicode.dtsi b/config/unicode.dtsi index 40815b0..c4c3469 100644 --- a/config/unicode.dtsi +++ b/config/unicode.dtsi @@ -38,32 +38,35 @@ UC_MODMORPH(uc_ ## NAME, &uc_lower_ ## NAME, &uc_upper_ ## NAME) /* User definitions */ -UNICODE_SINGLE( alpha, N0, N3, B, N1) -UNICODE_SINGLE( beta, N0, N3, B, N2) -UNICODE_PAIR( gamma, N0, N3, B, N3, N0, N3, N9, N3) -UNICODE_PAIR( delta, N0, N3, B, N4, N0, N3, N9, N4) -UNICODE_SINGLE( epsilon, N0, N3, F, N5) // varepsilon = 03B5 -UNICODE_SINGLE( zeta, N0, N3, B, N6) -UNICODE_SINGLE( eta, N0, N3, B, N7) -UNICODE_PAIR( theta, N0, N3, B, N8, N0, N3, N9, N8) -UNICODE_SINGLE( iota, N0, N3, B, N9) -UNICODE_SINGLE( kappa, N0, N3, B, A) -UNICODE_PAIR( lambda, N0, N3, B, B, N0, N3, N9, B) -UNICODE_SINGLE( mu, N0, N3, B, C) -UNICODE_SINGLE( nu, N0, N3, B, D) -UNICODE_PAIR( xi, N0, N3, B, E, N0, N3, N9, E) -UNICODE_PAIR( pi, N0, N3, C, N0, N0, N3, A, N0) -UNICODE_SINGLE( rho, N0, N3, C, N1) -UNICODE_PAIR( sigma, N0, N3, C, N3, N0, N3, A, N3) -UNICODE_SINGLE( tau, N0, N3, C, N4) -UNICODE_PAIR( upsilon, N0, N3, C, N5, N0, N3, A, N5) -UNICODE_PAIR( phi, N0, N3, C, N6, N0, N3, A, N6) // varphi = 03C6 -UNICODE_SINGLE( chi, N0, N3, C, N7) -UNICODE_PAIR( psi, N0, N3, C, N8, N0, N3, A, N8) -UNICODE_PAIR( omega, N0, N3, C, N9, N0, N3, A, N9) +/ { -UNICODE_PAIR( ae, N0, N0, E, N4, N0, N0, C, N4) -UNICODE_PAIR( oe, N0, N0, F, N6, N0, N0, D, N6) -UNICODE_PAIR( ue, N0, N0, F, C, N0, N0, D, C) -UNICODE_SINGLE( eszett, N0, N0, D, F) + UNICODE_SINGLE( alpha, N0, N3, B, N1) + UNICODE_SINGLE( beta, N0, N3, B, N2) + UNICODE_PAIR( gamma, N0, N3, B, N3, N0, N3, N9, N3) + UNICODE_PAIR( delta, N0, N3, B, N4, N0, N3, N9, N4) + UNICODE_SINGLE( epsilon, N0, N3, F, N5) // varepsilon = 03B5 + UNICODE_SINGLE( zeta, N0, N3, B, N6) + UNICODE_SINGLE( eta, N0, N3, B, N7) + UNICODE_PAIR( theta, N0, N3, B, N8, N0, N3, N9, N8) + UNICODE_SINGLE( iota, N0, N3, B, N9) + UNICODE_SINGLE( kappa, N0, N3, B, A) + UNICODE_PAIR( lambda, N0, N3, B, B, N0, N3, N9, B) + UNICODE_SINGLE( mu, N0, N3, B, C) + UNICODE_SINGLE( nu, N0, N3, B, D) + UNICODE_PAIR( xi, N0, N3, B, E, N0, N3, N9, E) + UNICODE_PAIR( pi, N0, N3, C, N0, N0, N3, A, N0) + UNICODE_SINGLE( rho, N0, N3, C, N1) + UNICODE_PAIR( sigma, N0, N3, C, N3, N0, N3, A, N3) + UNICODE_SINGLE( tau, N0, N3, C, N4) + UNICODE_PAIR( upsilon, N0, N3, C, N5, N0, N3, A, N5) + UNICODE_PAIR( phi, N0, N3, C, N6, N0, N3, A, N6) // varphi = 03C6 + UNICODE_SINGLE( chi, N0, N3, C, N7) + UNICODE_PAIR( psi, N0, N3, C, N8, N0, N3, A, N8) + UNICODE_PAIR( omega, N0, N3, C, N9, N0, N3, A, N9) + UNICODE_PAIR( ae, N0, N0, E, N4, N0, N0, C, N4) + UNICODE_PAIR( oe, N0, N0, F, N6, N0, N0, D, N6) + UNICODE_PAIR( ue, N0, N0, F, C, N0, N0, D, C) + UNICODE_SINGLE( eszett, N0, N0, D, F) + +};