206 lines
12 KiB
Text
206 lines
12 KiB
Text
/*
|
|
* Copyright (c) 2020 The ZMK Contributors
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#include <behaviors.dtsi>
|
|
#include <dt-bindings/zmk/keys.h>
|
|
#include <dt-bindings/zmk/bt.h>
|
|
|
|
|
|
/* Layers */
|
|
#define DEF_L 0
|
|
#define NAV_L 1
|
|
#define UPP_L 2
|
|
#define SYM_L 3
|
|
#define NUM_L 4
|
|
|
|
/* Behavior Settings */
|
|
&caps_word {
|
|
continue-list = <UNDERSCORE MINUS BACKSPACE>;
|
|
};
|
|
|
|
&sk {
|
|
release-after-ms = <60000>;
|
|
};
|
|
|
|
/ {
|
|
ZMK_MACRO(mo_nav,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings
|
|
= <¯o_tap &kp K_CANCEL>
|
|
, <¯o_press &mo NAV_L>
|
|
, <¯o_pause_for_release>
|
|
, <¯o_release &mo NAV_L>;)
|
|
|
|
ZMK_MACRO(mo_upp,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings
|
|
= <¯o_tap &kp K_CANCEL>
|
|
, <¯o_press &mo UPP_L>
|
|
, <¯o_pause_for_release>
|
|
, <¯o_release &mo UPP_L>;)
|
|
ZMK_MACRO(leq,
|
|
wait-ms = <30>;
|
|
tap-ms = <40>;
|
|
bindings = <&kp LT &kp EQUAL>;)
|
|
|
|
ZMK_MACRO(eq,
|
|
wait-ms = <30>;
|
|
tap-ms = <40>;
|
|
bindings = <&kp EQUAL &kp EQUAL>;)
|
|
|
|
ZMK_MACRO(geq,
|
|
wait-ms = <30>;
|
|
tap-ms = <40>;
|
|
bindings = <&kp GT &kp EQUAL>;)
|
|
|
|
ZMK_MACRO(neq,
|
|
wait-ms = <30>;
|
|
tap-ms = <40>;
|
|
bindings = <&kp EXCL &kp EQUAL>;)
|
|
|
|
ZMK_MACRO(arrow,
|
|
wait-ms = <30>;
|
|
tap-ms = <40>;
|
|
bindings = <&kp MINUS &kp GT>;)
|
|
|
|
ZMK_MACRO(mo_sym,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings
|
|
= <¯o_tap &kp K_CANCEL>
|
|
, <¯o_press &mo SYM_L>
|
|
, <¯o_pause_for_release>
|
|
, <¯o_release &mo SYM_L>;)
|
|
|
|
combos {
|
|
compatible = "zmk,combos";
|
|
|
|
#define COMBO(NAME, BINDINGS, KEYPOS, LAYERS) \
|
|
combo_##NAME { \
|
|
bindings = <BINDINGS>; \
|
|
key-positions = <KEYPOS>; \
|
|
layers = <LAYERS>; \
|
|
};
|
|
|
|
/* 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 ╭───────────╯
|
|
╰────────╯ ╰────────╯ */
|
|
|
|
/* Letters */
|
|
COMBO(lower_v, &kp V, 20 21, DEF_L)
|
|
COMBO(lower_x, &kp X, 22 23, DEF_L)
|
|
COMBO(lower_z, &kp Z, 23 24, DEF_L)
|
|
COMBO(forward_slash, &kp FSLH, 19 20, DEF_L)
|
|
COMBO(upper_v, &kp LS(V), 20 21, UPP_L)
|
|
COMBO(upper_x, &kp LS(X), 22 23, UPP_L)
|
|
COMBO(upper_z, &kp LS(Z), 23 24, UPP_L)
|
|
COMBO(question_mark, &kp LS(FSLH), 19 20, UPP_L)
|
|
|
|
/* Brackets */
|
|
COMBO(left_bracket, &kp LBKT, 0 9, DEF_L UPP_L SYM_L NUM_L)
|
|
COMBO(right_bracket, &kp RBKT, 7 16, DEF_L UPP_L SYM_L NUM_L)
|
|
COMBO(left_parenthesis, &kp LPAR, 1 10, DEF_L UPP_L SYM_L NUM_L)
|
|
COMBO(right_parenthesis, &kp RPAR, 6 15, DEF_L UPP_L SYM_L NUM_L)
|
|
COMBO(left_brace, &kp LBRC, 2 11, DEF_L UPP_L SYM_L NUM_L)
|
|
COMBO(right_brace, &kp RBRC, 5 14, DEF_L UPP_L SYM_L NUM_L)
|
|
|
|
/* Convenience */
|
|
COMBO(esc, &kp ESC, 1 2, DEF_L)
|
|
COMBO(ent, &kp ENTER, 15 16, DEF_L)
|
|
COMBO(del, &kp DEL, 4 5, DEF_L)
|
|
COMBO(tab, &kp TAB, 9 10, DEF_L)
|
|
COMBO(select_all, &kp LC(A), 19 20, NAV_L)
|
|
|
|
|
|
COMBO(geq, &geq, 0 2, DEF_L)
|
|
COMBO(leq, &leq, 19 21, DEF_L)
|
|
COMBO(eq, &eq, 9 11, DEF_L)
|
|
COMBO(arrow, &arrow, 14 16, DEF_L)
|
|
};
|
|
|
|
conditional_layers {
|
|
compatible = "zmk,conditional-layers";
|
|
tri_layer {
|
|
if-layers = <UPP_L SYM_L>;
|
|
then-layer = <NUM_L>;
|
|
};
|
|
};
|
|
|
|
keymap {
|
|
compatible = "zmk,keymap";
|
|
|
|
default_layer {
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp P &kp U &kp O &kp K &kp B &kp D &kp R &kp F
|
|
&kp W &kp I &kp E &kp A &kp DOT &kp G &kp T &kp N &kp S &kp H
|
|
&kp J &kp Y &kp QUOT &kp COMMA &kp M &kp L &kp C &kp Q
|
|
// ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯
|
|
&mo_nav &kp SPACE &mo_upp &mo_sym
|
|
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
|
|
|
|
>;
|
|
};
|
|
|
|
nav_layer {
|
|
label = "Nav";
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp F2 &kp F3 &kp F4 &bt BT_NXT &kp PG_UP &kp HOME &kp ENTER &kp END
|
|
&sk LGUI &sk LALT &sk LCTRL &sk LSHFT &kp LC(Z) &kp PG_DN &kp LARW &kp DARW &kp UARW &kp RARW
|
|
&kp F1 &kp LC(X) &kp LC(C) &kp LC(V) &kp TAB &kp LS(TAB) &key_repeat &caps_word
|
|
// ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯
|
|
&trans &trans &kp BSPC &kp DEL
|
|
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
|
|
>;
|
|
};
|
|
|
|
upper_layer {
|
|
label = "Upp";
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp LS(P) &kp LS(U) &kp LS(O) &kp LS(K) &kp LS(B) &kp LS(D) &kp LS(R) &kp LS(F)
|
|
&kp LS(W) &kp LS(I) &kp LS(E) &kp LS(A) &kp GT &kp LS(G) &kp LS(T) &kp LS(N) &kp LS(S) &kp LS(H)
|
|
&kp LS(J) &kp LS(Y) &kp DQT &kp LT &kp LS(M) &kp LS(L) &kp LS(C) &kp LS(Q)
|
|
// ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯
|
|
&trans &kp LS(SPACE) &trans &trans
|
|
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
|
|
>;
|
|
};
|
|
|
|
sym_layer {
|
|
label = "Sym";
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp AMPS &kp ASTRK &kp BSLH &kp PLUS &kp CARET &kp AMPS &kp SEMI &kp COLON
|
|
&kp COLON &kp DLLR &kp PRCNT &kp CARET &kp EQUAL &none &sk LSHFT &sk LCTRL &sk LALT &sk LGUI
|
|
&kp SEMI &kp EXCL &kp AT &kp POUND &kp PIPE &kp LT &kp GT &kp DQT
|
|
// ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯
|
|
&kp MINUS &kp UNDER &trans &trans
|
|
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
|
|
>;
|
|
};
|
|
|
|
num_layer {
|
|
label = "Num";
|
|
bindings = <
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp N7 &kp N4 &kp N3 &none &kp W &kp G &kp J &kp K
|
|
&kp SEMI &kp N2 &kp N1 &kp N0 &kp EQUAL &kp B &sk LSHFT &sk LCTRL &sk LALT &sk LGUI
|
|
&kp GRAVE &kp N8 &kp N6 &kp N5 &kp F12 &kp COMMA &kp DOT &kp F10
|
|
// ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯
|
|
&kp N9 &kp MINUS &trans &trans
|
|
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
|
|
>;
|
|
};
|
|
};
|
|
};
|