165 lines
5.5 KiB
Plaintext
165 lines
5.5 KiB
Plaintext
/*
|
|
* Copyright (c) 2020 duckyb
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#include <behaviors.dtsi>
|
|
#include <dt-bindings/zmk/keys.h>
|
|
#include <dt-bindings/zmk/bt.h>
|
|
#include <dt-bindings/zmk/outputs.h>
|
|
|
|
// Layer definitions
|
|
#define BASE 0
|
|
#define SYM 1
|
|
#define EXT 2
|
|
#define FNC 3
|
|
#define SYM2 4
|
|
#define ACCENT 5
|
|
#define SETTINGS 6
|
|
// -----------------
|
|
|
|
&sk {
|
|
// don't release mods on other mods presses
|
|
ignore-modifiers;
|
|
};
|
|
|
|
|
|
/ {
|
|
behaviors {
|
|
// Enables holding the first mod-tap key
|
|
// by performing a tap-release-hold sequence.
|
|
// To use it: "&qt KEYCODE1 KEYCODE2"
|
|
qt: quick_tap {
|
|
compatible = "zmk,behavior-hold-tap";
|
|
label = "QUICK_TAP";
|
|
#binding-cells = <2>;
|
|
flavor = "hold-preferred";
|
|
tapping-term-ms = <200>;
|
|
quick-tap-ms = <200>;
|
|
bindings = <&kp>, <&kp>;
|
|
};
|
|
};
|
|
|
|
macros {
|
|
// sometimes my device thinks a modifier is being held down
|
|
// pressing all modifiers fixes it.
|
|
unstick: unstick {
|
|
label = "ZM_unstick";
|
|
compatible = "zmk,behavior-macro";
|
|
#binding-cells = <0>;
|
|
bindings = <&kp LSHIFT &kp RSHIFT &kp LCTRL &kp RCTRL &kp LALT &kp RALT &kp LGUI &kp RGUI>;
|
|
};
|
|
};
|
|
|
|
combos {
|
|
compatible = "zmk,combos";
|
|
// Escape key
|
|
combo_esc {
|
|
timeout-ms = <150>;
|
|
key-positions = <12 13 16 17>;
|
|
bindings = <&kp ESC>;
|
|
};
|
|
|
|
// IMPORTED FROM ZMK //
|
|
// both right thumb keys
|
|
combo_accent {
|
|
timeout-ms = <200>;
|
|
key-positions = <32 33>;
|
|
bindings = <&mo ACCENT>;
|
|
};
|
|
// internal-left & external-right thumb keys
|
|
combo_sym2 {
|
|
timeout-ms = <200>;
|
|
key-positions = <31 33>;
|
|
bindings = <&mo SYM2>;
|
|
};
|
|
// both left thumb keys
|
|
combo_settings {
|
|
timeout-ms = <200>;
|
|
key-positions = <30 31>;
|
|
bindings = <&mo SETTINGS>;
|
|
};
|
|
// left index & middle fingers (home-row)
|
|
// hold control & space for Adobe workflow
|
|
combo_ctrl_space {
|
|
timeout-ms = <200>;
|
|
key-positions = <12 13>;
|
|
bindings = <&kp LC(SPACE)>;
|
|
layers = <BASE>;
|
|
};
|
|
};
|
|
|
|
keymap {
|
|
compatible = "zmk,keymap";
|
|
default_layer {
|
|
bindings = <
|
|
&kp SQT &kp CMMA &kp DOT &kp P &kp Y &kp F &kp G &kp C &kp R &kp L &kp A &kp O < FUN E < NAV U &kp I &kp D < SYM H < NUM T &kp N &kp S
|
|
&kp SCLN &kp Q &kp J &kp K &kp X &kp B &kp M &kp W &kp V &kp Z &mt LALT TAB &mt LGUI SPC &mt LSHIFT RET &mt LCTRL BSPC
|
|
>;
|
|
};
|
|
|
|
nav_layer {
|
|
bindings = <
|
|
&bt BT_CLR &trans &trans &bootloader &sys_reset &trans &kp LBRC &kp RBRC &kp LPAR &kp RPAR
|
|
&bt BT_SEL 0 &trans &trans &trans &trans &kp LEFT &kp DOWN &kp UP &kp RIGHT &trans
|
|
&bt BT_SEL 1 &trans &trans &trans &trans &trans &kp LBKT &kp RBKT &IT_LESS &IT_GREAT
|
|
&trans &trans &trans &kp BSPC
|
|
>;
|
|
};
|
|
|
|
num_layer {
|
|
bindings = <
|
|
&trans &kp F7 &kp F8 &kp F9 &trans &trans &trans &trans &trans &trans
|
|
&kp DQT &kp F4 &kp F5 &kp F6 &kp EQUAL &trans &trans &trans &trans &trans
|
|
&kp GRAVE &kp F1 &kp F2 &kp F3 &kp BSLH &trans &trans &trans &trans &trans
|
|
&trans &trans &trans &trans
|
|
>;
|
|
};
|
|
|
|
sym_layer {
|
|
label = "Sym.";
|
|
bindings = <
|
|
&kp LS(Q) &kp LS(Z) &kp STAR &kp AMPS &trans &sys_reset &bootloader &trans &trans &trans
|
|
&kp DQT &kp CARET &kp PRCNT &kp DLLR &kp KP_PLUS &trans &trans &trans &trans &trans
|
|
&kp TILDE &kp HASH &kp AT &kp EXCL &kp PIPE &trans &trans &trans &trans &trans
|
|
&kp LPAR &kp RPAR &trans &trans
|
|
>;
|
|
};
|
|
|
|
|
|
// Numbers and high frequency symbols
|
|
sym_layer {
|
|
label = "Sym.";
|
|
bindings = <
|
|
&kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0
|
|
&kp IT_LESS &kp IT_USD &kp IT_LPAR &kp IT_LBRC &kp IT_LBKT &kp IT_EQL &kp IT_QUES &kp IT_SQUOT &kp IT_MINUS &kp IT_AST
|
|
&kp IT_GREAT &kp IT_PERC &kp IT_RPAR &kp IT_RBRC &kp IT_RBKT &kp IT_AT &kp IT_EXCL &kp IT_DQUOT &kp IT_PLUS &kp IT_FSLH
|
|
&mo FNC &mo SYM2 &trans &trans
|
|
>;
|
|
};
|
|
|
|
// Main modifiers and arrow keys
|
|
ext_layer {
|
|
label = "Mods";
|
|
bindings = <
|
|
&kp ESC &kp C_PREV &kp C_PP &kp C_NEXT &kp C_PAUSE &kp PG_UP &kp HOME &kp UP &kp END &kp CAPS
|
|
&sk LALT &sk LGUI &sk LSHIFT &sk LCTRL &kp RALT &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp DEL
|
|
&kp LC(Z) &kp LC(X) &kp LC(C) &kp TAB &kp LC(V) &kp LC(BSPC) &kp BSPC &trans &trans &trans
|
|
&trans &kp LCTRL &kp ENTER &mo FNC
|
|
>;
|
|
};
|
|
|
|
// Low frequency symbols.
|
|
symbols_2_layer {
|
|
label = "Sym.2";
|
|
bindings = <
|
|
&kp IT_CARET &kp IT_UNDER &kp IT_PND &kp IT_EUR &kp IT_HASH &none &none &none &none &none
|
|
&kp IT_BKTK &kp IT_TILDE &kp IT_BSLH &kp IT_PIPE &kp IT_AND &none &none &none &none &none
|
|
&none &none &kp IT_SECT &kp IT_CCED &kp IT_DEG &none &none &none &none &none
|
|
&none &none &none &none
|
|
>;
|
|
};
|
|
};
|
|
};
|