209 lines
19 KiB
Text
209 lines
19 KiB
Text
#include <behaviors.dtsi>
|
|
#include <dt-bindings/zmk/keys.h>
|
|
|
|
#define XXX &none
|
|
#define ___ &trans
|
|
#define DSK_PREV &kp LG(LC(LEFT))
|
|
#define DSK_NEXT &kp LG(LC(RIGHT))
|
|
|
|
#define DEF 0
|
|
#define NAV 1
|
|
#define SYS 2
|
|
#define NUM 3
|
|
#define FUN 4
|
|
#define GRK 5
|
|
|
|
/* hold-trigger-key-positions */
|
|
#define LHK LT0 LT1 LT2 LT3 LT4 LM0 LM1 LM2 LM3 LM4 LB0 LB1 LB2 LB3 LB4 // left-hand keys
|
|
#define RHK RT0 RT1 RT2 RT3 RT4 RM0 RM1 RM2 RM3 RM4 RB0 RB1 RB2 RB3 RB4 // right-hand keys
|
|
#define THK LH0 LH1 LH2 RH0 RH1 RH2 // thumb keys
|
|
|
|
/* empty place holder if not on planck */
|
|
#if !defined EXTRA_MID
|
|
#define EXTRA_MID
|
|
#endif
|
|
#if !defined EXTRA_BOT_L
|
|
#define EXTRA_BOT_L
|
|
#endif
|
|
#if !defined EXTRA_BOT_R
|
|
#define EXTRA_BOT_R
|
|
#endif
|
|
|
|
/ {
|
|
|
|
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, see #986
|
|
// * why does &bootloader not work?
|
|
// * fix flashing issue: "Invalid DFU suffix signature"
|
|
// * workaoround shift-del bug https://github.com/zmkfirmware/zmk/issues/683
|
|
// * better timing for mod-taps on thumbs
|
|
// * allow for double backspace hold --> repeated backspace
|
|
// * sleep not working, can use macro LG(X), U, S
|
|
// * mouse wheel
|
|
|
|
|
|
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 EXTRA_MID &kp J &kp L &kp U &kp Y &kp SQT
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&hml LGUI A &hml LALT R &hml LCTRL S &hml LSHFT T &kp G EXTRA_MID &kp M &hmr LSHFT N &hmr LCTRL E &hmr LALT I &hmr LGUI O
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp Z &kp X &kp C &kp D &kp V EXTRA_MID &kp K &kp H &kp COMMA &kp DOT &kp SEMI
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
EXTRA_BOT_L < SYS ESC < NAV SPACE &kp TAB EXTRA_MID < NUM RET &ss_cw <_bspc FUN 0 EXTRA_BOT_R
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
nav_layer {
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
___ ___ ___ ___ ___ EXTRA_MID &kp PG_UP &kp HOME &kp UP &kp END &kp INS
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ EXTRA_MID &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp DEL
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
___ ___ ___ ___ ___ EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
EXTRA_BOT_L ___ ___ ___ EXTRA_MID ___ ___ ___ EXTRA_BOT_R
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
sys_layer {
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp LG(GRAVE) ___ ___ ___ &bootloader EXTRA_MID ___ &kp C_PREV &kp C_VOL_UP &kp C_NEXT &kp C_SLEEP_MODE
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
___ ___ ___ ___ ___ EXTRA_MID ___ DSK_PREV &kp C_VOL_DN DSK_NEXT ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
___ ___ ___ ___ ___ EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
EXTRA_BOT_L ___ ___ ___ EXTRA_MID &kp C_MUTE &kp C_PP ___ EXTRA_BOT_R
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
num_layer {
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp ESC &kp N7 &kp N8 &kp N9 &kp STAR EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp RET &kp N4 &kp N5 &kp N6 &kp PLUS EXTRA_MID ___ &sk LSHFT &sk LCTRL &sk LALT &sk LGUI
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp TAB &kp N1 &kp N2 &kp N3 &kp FSLH EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
EXTRA_BOT_L &kp DOT &kp N0 &kp MINUS EXTRA_MID ___ ___ ___ EXTRA_BOT_R
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
fun_layer {
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp F12 &kp F7 &kp F8 &kp F9 ___ EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp F11 &kp F4 &kp F5 &kp F6 ___ EXTRA_MID ___ &sk LSHFT &sk LCTRL &sk LALT &sk LGUI
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp F10 &kp F1 &kp F2 &kp F3 ___ EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
EXTRA_BOT_L &kp F10 &kp F11 &kp F12 EXTRA_MID ___ ___ ___ EXTRA_BOT_R
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
};
|
|
};
|