Personal configuration
This commit is contained in:
parent
094e904fa6
commit
4f1baef8c3
2 changed files with 285 additions and 17 deletions
98
config/combos.dtsi
Normal file
98
config/combos.dtsi
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
/* KEY POSITIONS
|
||||||
|
|
||||||
|
╭────────────────────╮ ╭────────╮ ╭────────────────────╮
|
||||||
|
│ 0 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 │
|
||||||
|
╰────────────────────╯ ╰────────╯ ╰────────────────────╯ */
|
||||||
|
|
||||||
|
compatible = "zmk,combos";
|
||||||
|
|
||||||
|
#define COMBO(NAME, BINDINGS, KEYPOS, LAYERS, TERM) \
|
||||||
|
combo_##NAME { \
|
||||||
|
timeout-ms = <TERM>; \
|
||||||
|
bindings = <BINDINGS>; \
|
||||||
|
key-positions = <KEYPOS>; \
|
||||||
|
layers = <LAYERS>; \
|
||||||
|
};
|
||||||
|
|
||||||
|
#define COMBO_TERM_H 30
|
||||||
|
#define COMBO_TERM_V 40
|
||||||
|
|
||||||
|
#define LT0 0
|
||||||
|
#define LT1 1
|
||||||
|
#define LT2 2
|
||||||
|
#define LT3 3
|
||||||
|
#define LT4 4
|
||||||
|
#define RT0 7
|
||||||
|
#define RT1 8
|
||||||
|
#define RT2 9
|
||||||
|
#define RT3 10
|
||||||
|
#define RT4 11
|
||||||
|
|
||||||
|
#define LM0 12
|
||||||
|
#define LM1 13
|
||||||
|
#define LM2 14
|
||||||
|
#define LM3 15
|
||||||
|
#define LM4 16
|
||||||
|
#define RM0 19
|
||||||
|
#define RM1 20
|
||||||
|
#define RM2 21
|
||||||
|
#define RM3 22
|
||||||
|
#define RM4 23
|
||||||
|
|
||||||
|
#define LB0 24
|
||||||
|
#define LB1 25
|
||||||
|
#define LB2 26
|
||||||
|
#define LB3 27
|
||||||
|
#define LB4 28
|
||||||
|
#define RB0 31
|
||||||
|
#define RB1 32
|
||||||
|
#define RB2 33
|
||||||
|
#define RB3 34
|
||||||
|
#define RB4 35
|
||||||
|
|
||||||
|
/* Capsword */
|
||||||
|
COMBO(cpwrd, &caps_word, LM3 RM1, DEF NUM, COMBO_TERM_H)
|
||||||
|
|
||||||
|
/* Punctuation (horizontal left hand) */
|
||||||
|
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(cut, &kp LC(X), RB1 RB3, DEF NUM, COMBO_TERM_H)
|
||||||
|
COMBO(copy, &kp LC(INS), RB1 RB2, DEF NUM, COMBO_TERM_H)
|
||||||
|
COMBO(paste, &kp LS(INS), 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)
|
||||||
|
|
||||||
|
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(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)
|
||||||
|
|
|
@ -1,22 +1,192 @@
|
||||||
#include <behaviors.dtsi>
|
#include <behaviors.dtsi>
|
||||||
#include <dt-bindings/zmk/keys.h>
|
#include <dt-bindings/zmk/keys.h>
|
||||||
|
|
||||||
/ {
|
#define XXX &none
|
||||||
keymap {
|
#define ___ &trans
|
||||||
compatible = "zmk,keymap";
|
#define DSK_PREV &kp LG(LC(LEFT))
|
||||||
|
#define DSK_NEXT &kp LG(LC(RIGHT))
|
||||||
|
|
||||||
default_layer {
|
#define DEF 0
|
||||||
// -----------------------------------------------------------------------------------------
|
#define NAV 1
|
||||||
// | TAB | Q | W | E | R | T | Y | U | I | O | P | BSPC |
|
#define SYS 2
|
||||||
// | ESC | A | S | D | F | G | H | J | K | L | ; | ' |
|
#define NUM 3
|
||||||
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | RET |
|
#define FUN 4
|
||||||
// | FN | LGUI | LALT | LCTL | LOWR | SPACE | RAIS | LARW | DARW | UARW | RARW |
|
#define GRK 5
|
||||||
bindings = <
|
|
||||||
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp DEL
|
#define LHK 0 1 2 3 4 12 13 14 15 16 24 25 26 27 28 // left-hand keys
|
||||||
&kp ESC &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
|
#define RHK 7 8 9 10 11 19 20 21 22 23 31 32 33 34 35 // right-hand keys
|
||||||
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp BSLH &kp RET
|
#define THK 38 39 40 43 44 45 // thumb keys
|
||||||
&trans &kp LGUI &kp LALT &kp LCTRL &trans &trans &kp SPACE &trans &kp LEFT &kp DOWN &kp UP &kp RIGHT
|
|
||||||
>;
|
/ {
|
||||||
};
|
|
||||||
};
|
combos {
|
||||||
|
#include "combos.dtsi"
|
||||||
|
};
|
||||||
|
|
||||||
|
macros {
|
||||||
|
//
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// * add unicode layer, trigger with mod-tap on D and H
|
||||||
|
// * set up repeat key
|
||||||
|
// * combos with global-quick-tab?
|
||||||
|
// * debug mod-taps
|
||||||
|
// * why does &bootloader not work?
|
||||||
|
// * fix flashing issue: "Invalid DFU suffix signature"
|
||||||
|
|
||||||
|
|
||||||
|
behaviors {
|
||||||
|
|
||||||
|
// HRM left hand
|
||||||
|
hml: left_hand_positional_hold_tap {
|
||||||
|
compatible = "zmk,behavior-hold-tap";
|
||||||
|
label = "LEFT_POSITIONAL_HOLD_TAP";
|
||||||
|
#binding-cells = <2>;
|
||||||
|
flavor = "balanced";
|
||||||
|
tapping-term-ms = <180>;
|
||||||
|
quick-tap-ms = <125>;
|
||||||
|
global-quick-tap;
|
||||||
|
bindings = <&kp>, <&kp>;
|
||||||
|
hold-trigger-key-positions = <RHK THK>;
|
||||||
|
};
|
||||||
|
|
||||||
|
// HRM right hand
|
||||||
|
hmr: right_hand_positional_hold_tap {
|
||||||
|
compatible = "zmk,behavior-hold-tap";
|
||||||
|
label = "RIGHT_POSITIONAL_HOLD_TAP";
|
||||||
|
#binding-cells = <2>;
|
||||||
|
flavor = "balanced";
|
||||||
|
tapping-term-ms = <180>;
|
||||||
|
quick-tap-ms = <125>;
|
||||||
|
global-quick-tap;
|
||||||
|
bindings = <&kp>, <&kp>;
|
||||||
|
hold-trigger-key-positions = <LHK THK>;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Layer on Hold + sticky tap on tap --- currently not used
|
||||||
|
lst: layer_sticky_tap {
|
||||||
|
compatible = "zmk,behavior-hold-tap";
|
||||||
|
label = "LAYER_STICKY_TAP";
|
||||||
|
#binding-cells = <2>;
|
||||||
|
tapping-term-ms = <175>;
|
||||||
|
quick_tap_ms = <0>;
|
||||||
|
flavor = "tap-preferred";
|
||||||
|
bindings = <&mo>, <&sk>;
|
||||||
|
};
|
||||||
|
|
||||||
|
// mod-morph shift + backspace into delete
|
||||||
|
bsdel: backspace_del {
|
||||||
|
compatible = "zmk,behavior-mod-morph";
|
||||||
|
label = "BSPC_DEL";
|
||||||
|
#binding-cells = <0>;
|
||||||
|
bindings = <&kp BSPC>, <&kp DEL>;
|
||||||
|
mods = <MOD_LSFT>;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Layer change + backspace/del key
|
||||||
|
lt_bspc: layer_tap_backspace_del {
|
||||||
|
compatible = "zmk,behavior-hold-tap";
|
||||||
|
label = "LT_BT";
|
||||||
|
#binding-cells = <2>; // TODO: can we get rid of superfluous 2nd arg?
|
||||||
|
tapping-term-ms = <150>;
|
||||||
|
flavor = "tap-preferred";
|
||||||
|
bindings = <&mo>, <&bsdel>;
|
||||||
|
};
|
||||||
|
|
||||||
|
// sticky key with quick release (fixes double capitalization when rolling keys)
|
||||||
|
skq: sticky_key_quick_release {
|
||||||
|
compatible = "zmk,behavior-sticky-key";
|
||||||
|
label = "STICKY_KEY_QUICK_RELEASE";
|
||||||
|
#binding-cells = <1>;
|
||||||
|
bindings = <&kp>;
|
||||||
|
release-after-ms = <1000>;
|
||||||
|
quick-release;
|
||||||
|
};
|
||||||
|
|
||||||
|
// sticky shift, double tap activates caps word
|
||||||
|
ss_cw: sticky_shift_capsword {
|
||||||
|
compatible = "zmk,behavior-tap-dance";
|
||||||
|
label = "STICKY_SHIFT_CAPSWORD";
|
||||||
|
#binding-cells = <0>;
|
||||||
|
tapping-term-ms = <200>;
|
||||||
|
bindings = <&skq LSHFT>, <&caps_word>, <&none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap {
|
||||||
|
compatible = "zmk,keymap";
|
||||||
|
|
||||||
|
default_layer {
|
||||||
|
bindings = <
|
||||||
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
||||||
|
&kp Q &kp W &kp F &kp P &kp B XXX XXX &kp J &kp L &kp U &kp Y &kp SQT
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
&hml LGUI A &hml LALT R &hml LCTRL S &hml LSHFT T &kp G XXX XXX &kp M &hmr LSHFT N &hmr LCTRL E &hmr LALT I &hmr LGUI O
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
&kp Z &kp X &kp C &kp D &kp V XXX XXX &kp K &kp H &kp COMMA &kp DOT &kp SEMI
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
XXX &kp LGUI < SYS ESC < NAV SPACE &kp TAB XXX XXX < NUM RET &ss_cw <_bspc FUN 0 &kp DOWN &kp UP
|
||||||
|
// ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯ ╰─────────────┴─────────────╯ ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
nav_layer {
|
||||||
|
bindings = <
|
||||||
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
||||||
|
___ ___ ___ ___ ___ &tog NUM XXX &kp PG_UP &kp HOME &kp UP &kp END &kp INS
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
&sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ XXX XXX &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp DEL
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
___ ___ ___ ___ ___ XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
___ ___ ___ ___ ___ XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯ ╰─────────────┴─────────────╯ ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
sys_layer {
|
||||||
|
bindings = <
|
||||||
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
||||||
|
&kp LG(GRAVE) ___ ___ ___ &bootloader XXX XXX ___ &kp C_PREV &kp C_VOL_UP &kp C_NEXT &kp C_SLEEP
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
___ ___ ___ ___ ___ XXX XXX ___ DSK_PREV &kp C_VOL_DN DSK_NEXT ___
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
___ ___ ___ ___ ___ XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
___ ___ ___ ___ ___ XXX XXX &kp C_MUTE &kp C_PP ___ ___ ___
|
||||||
|
// ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯ ╰─────────────┴─────────────╯ ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
num_layer {
|
||||||
|
bindings = <
|
||||||
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
||||||
|
&kp ESC &kp N7 &kp N8 &kp N9 &kp STAR &tog NUM XXX ___ ___ ___ ___ ___
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
&kp RET &kp N4 &kp N5 &kp N6 &kp PLUS XXX XXX ___ &sk LSHFT &sk LCTRL &sk LALT &sk LGUI
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
&kp TAB &kp N1 &kp N2 &kp N3 &kp FSLH XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
___ ___ &kp DOT &kp N0 &kp MINUS XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯ ╰─────────────┴─────────────╯ ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
fun_layer {
|
||||||
|
bindings = <
|
||||||
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
||||||
|
&kp F12 &kp F7 &kp F8 &kp F9 ___ XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
&kp F11 &kp F4 &kp F5 &kp F6 ___ XXX XXX ___ &sk LSHFT &sk LCTRL &sk LALT &sk LGUI
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
&kp F10 &kp F1 &kp F2 &kp F3 ___ XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
||||||
|
___ ___ &kp F10 &kp F11 &kp F12 XXX XXX ___ ___ ___ ___ ___
|
||||||
|
// ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯ ╰─────────────┴─────────────╯ ╰─────────────┴─────────────┴─────────────┴─────────────┴─────────────╯
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue