235 lines
23 KiB
Text
235 lines
23 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 CANCEL &kp K_CANCEL // cancels caps_word and does nothing else
|
|
|
|
#define DEF 0
|
|
#define NAV 1
|
|
#define SYS 2
|
|
#define NUM 3
|
|
#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
|
|
#endif
|
|
#if !defined EXTRA_BOT_L
|
|
#define EXTRA_BOT_L
|
|
#endif
|
|
#if !defined EXTRA_BOT_R
|
|
#define EXTRA_BOT_R
|
|
#endif
|
|
|
|
/*
|
|
TODOs and ISSUES
|
|
* invalid DFU suffix signature warning when flashing with dfu-util
|
|
* 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
|
|
* 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
|
|
*/
|
|
|
|
/* sticky key config */
|
|
&sk {
|
|
release-after-ms = <550>; // release after 0.55s
|
|
quick-release; // no double capitalization when rolling keys
|
|
};
|
|
|
|
/* layer tap config */
|
|
< {
|
|
flavor = "balanced";
|
|
tapping-term-ms = <200>;
|
|
quick-tap-ms = <175>; // double-tap + hold repeats tap-key
|
|
// global-quick-tap;
|
|
};
|
|
|
|
/* root node */
|
|
/ {
|
|
|
|
macros {
|
|
// Windows sleep key
|
|
win_sleep: win_sleep {
|
|
wait-ms = <50>;
|
|
tap-ms = <5>;
|
|
compatible = "zmk,behavior-macro";
|
|
label = "WIN_SLEEP_KEY";
|
|
#binding-cells = <0>;
|
|
bindings = <&kp LG(X) &kp U &kp S>;
|
|
};
|
|
|
|
// Make sticky shift cancel capsword. Alternatively: mod-morph ss_cw into CANCEL
|
|
// to cancel capsword without triggering sticky-shift when capsword is active.
|
|
sticky_shift: sticky_shift {
|
|
wait-ms = <0>;
|
|
tap-ms = <1>;
|
|
compatible = "zmk,behavior-macro";
|
|
label = "STICKY_SHIFT_CANCEL_CAPSWORD";
|
|
#binding-cells = <0>;
|
|
bindings = <¯o_tap CANCEL> // cancel caps_word;
|
|
, <¯o_press &sk LSHFT> // then tap sticky-shift and hold
|
|
, <¯o_pause_for_release> // until key release to enable
|
|
, <¯o_release &sk LSHFT>; // holding shift
|
|
};
|
|
};
|
|
|
|
behaviors {
|
|
|
|
/* homerow mods */
|
|
|
|
#define LHM LM0 LM1 LM2 LM3 // left-hand HRMs
|
|
#define RHM RM1 RM2 RM3 RM4 // right-hand HRMs
|
|
#define LHK LT0 LT1 LT2 LT3 LT4 LHM LM4 LB0 LB1 LB2 LB3 LB4 // left-hand keys
|
|
#define RHK RT0 RT1 RT2 RT3 RT4 RM0 RHM RB0 RB1 RB2 RB3 RB4 // right-hand keys
|
|
#define THK LH0 LH1 LH2 RH0 RH1 RH2 // thumb keys
|
|
|
|
hml: left_hand_home_row_mods {
|
|
compatible = "zmk,behavior-hold-tap";
|
|
label = "LEFT_HOME_ROW_MODS";
|
|
#binding-cells = <2>;
|
|
flavor = "balanced";
|
|
tapping-term-ms = <280>;
|
|
quick-tap-ms = <125>;
|
|
global-quick-tap;
|
|
bindings = <&kp>, <&kp>;
|
|
hold-trigger-key-positions = <LHM RHK THK>; // include left-hand HRMs for mod-chaining
|
|
};
|
|
|
|
hmr: right_hand_home_row_mods {
|
|
compatible = "zmk,behavior-hold-tap";
|
|
label = "RIGHT_HOME_ROW_MODS";
|
|
#binding-cells = <2>;
|
|
flavor = "balanced";
|
|
tapping-term-ms = <280>;
|
|
quick-tap-ms = <125>;
|
|
global-quick-tap;
|
|
bindings = <&kp>, <&kp>;
|
|
hold-trigger-key-positions = <RHM LHK THK>; // include right-hand HRMs for mod-chaining
|
|
};
|
|
|
|
/* custom keys */
|
|
|
|
// tap: backspace | lshft + tap: delete | rshft + tap: shift-delete | hold: num layer
|
|
bs_del_num: backspace_del_num {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "BSPC_DEL_NUM";
|
|
#binding-cells = <0>;
|
|
bindings = << NUM BSPC>, <&kp DEL>;
|
|
mods = <(MOD_LSFT|MOD_RSFT)>;
|
|
masked_mods = <MOD_LSFT>; // requires PR #1114
|
|
};
|
|
|
|
// tap: sticky shift | double tap: capsword | triple tap: cancel capsword
|
|
ss_cw: sticky_shift_capsword {
|
|
compatible = "zmk,behavior-tap-dance";
|
|
label = "STICKY_SHIFT_CAPSWORD";
|
|
#binding-cells = <0>;
|
|
tapping-term-ms = <200>;
|
|
bindings = <&sticky_shift>, <&caps_word>, <CANCEL>;
|
|
};
|
|
|
|
};
|
|
|
|
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 RSHFT 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 < UC ESC < NAV SPACE < SYS TAB EXTRA_MID < FN RET &ss_cw &bs_del_num 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 ___ &kp LC(X) &kp LC(INS) &kp LS(INS) ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
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 &win_sleep
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ 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 TAB &kp N4 &kp N5 &kp N6 &kp PLUS EXTRA_MID ___ &sk RSHFT &sk LCTRL &sk LALT &sk LGUI
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp RET &kp N1 &kp N2 &kp N3 &kp FSLH EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
EXTRA_BOT_L &kp DOT &kp N0 &kp MINUS EXTRA_MID ___ ___ ___ EXTRA_BOT_R
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
fn_layer {
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp F12 &kp F7 &kp F8 &kp F9 ___ EXTRA_MID ___ ___ ___ ___ ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp F11 &kp F4 &kp F5 &kp F6 ___ EXTRA_MID ___ &sk RSHFT &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
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
uc_layer {
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
___ &uc_omega &uc_phi &uc_pi &uc_beta EXTRA_MID ___ &uc_lambda &uc_upsilon &uc_psi &uc_eszett
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&uc_alpha &uc_rho &uc_sigma &uc_tau &uc_gamma EXTRA_MID &uc_mu &uc_nu &uc_epsilon &uc_iota ___
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&uc_zeta &uc_xi &uc_chi &uc_delta &uc_theta EXTRA_MID &uc_kappa &uc_eta &uc_ae &uc_oe &uc_ue
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
EXTRA_BOT_L ___ ___ ___ EXTRA_MID ___ ___ ___ EXTRA_BOT_R
|
|
// ╰─────────────╯ ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────╯ ╰─────────────┴─────────────┴─────────────╯ ╰─────────────╯
|
|
>;
|
|
};
|
|
|
|
};
|
|
};
|
|
|