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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#include <behaviors.dtsi>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/ext_power.h>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/mouse.h>
#include <zmk-helpers/key-labels/4x12.h>
/*
LT5 LT4 LT3 LT2 LT1 LT0 RT0 RT1 RT2 RT3 RT4 RT5
LM5 LM4 LM3 LM2 LM1 LM0 RM0 RM1 RM2 RM3 RM4 RM5
LB5 LB4 LB3 LB2 LB1 LB0 RB0 RB1 RB2 RB3 RB4 RB5
LH5 LH4 LH3 LH2 LH1 LH0 RH0 RH1 RH2 RH3 RH4 RH5
*/
// layers
#define default 0
#define lower 1
#define upper 2
#define adjust 3
#define nav 4
#define num 5
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
bindings = <
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH
&kp ESC &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI < nav RET
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT
&kp LCTRL &kp LGUI &kp LALT &kp LSHFT &mo lower &kp SPACE < num SPACE &mo upper &kp RSHFT &kp RALT &kp K_APP &kp RCTRL
>;
};
lower_layer {
bindings = <
&kp TILDE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH
&kp GRAVE &kp EXCL &kp AT &kp HASH &kp DOLLAR &kp PRCNT &kp CARET &kp AMPS &kp STAR &kp LPAR &kp RPAR &kp PIPE
&trans &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp PLUS &kp MINUS &kp EQUAL &kp LBKT &kp RBKT &trans
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp RGUI &trans
>;
};
upper_layer {
bindings = <
&none &none &none &none &none &none &none &none &none &none &none &none
&none &none &none &none &none &none &none &none &none &none &none &none
&trans &none &none &none &none &none &mkp LCLK &mkp MCLK &mkp RCLK &mkp MB4 &mkp MB5 &trans
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
>;
};
adjust_layer {
bindings = <
&bt BT_CLR &none &none &none &none &none &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &none
&none &none &none &kp C_VOL_UP &kp C_VOL_DN &kp C_MUTE &kp C_BRI_MIN &kp C_BRI_DN &kp C_BRI_UP &kp C_BRI_MAX &none &none
&none &none &none &none &none &bootloader &bootloader &none &none &none &none &none
&trans &trans &trans &trans &trans &sys_reset &sys_reset &trans &trans &trans &kp RGUI &trans
>;
};
nav_layer {
bindings = <
&none &none &none &none &none &none &kp K_BACK &kp PG_DN &kp PG_UP &kp K_FORWARD &none &none
&none &none &none &none &none &none &kp LEFT &kp DOWN &kp UP &kp RIGHT &none &none
&trans &none &none &none &none &none &none &none &none &none &none &trans
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp RGUI &trans
>;
};
num_layer {
bindings = <
&none &kp F12 &kp F9 &kp F8 &kp F7 &none &kp FSLH &kp N7 &kp N8 &kp N9 &kp MINUS &kp BSPC
&none &kp F11 &kp F6 &kp F5 &kp F4 &none &kp STAR &kp N4 &kp N5 &kp N6 &kp PLUS &kp RET
&kp LSHFT &kp F10 &kp F3 &kp F2 &kp F1 &none &kp EQUAL &kp N1 &kp N2 &kp N3 &none &kp RSHFT
&kp LCTRL &kp LGUI &kp LALT &kp LSHFT &mo lower &trans &kp SPACE &kp N0 &kp N0 &kp DOT &none &kp RCTRL
>;
};
};
};
/ {
conditional_layers {
compatible = "zmk,conditional-layers";
tri_layer {
if-layers = <1 2>;
then-layer = <3>;
};
};
};
/ {
behaviors {
lpar_lt: lpar_lt { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp LPAR>, <&kp LT >; mods = <(MOD_LSFT|MOD_RSFT)>; };
rpar_gt: rpar_gt { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp RPAR>, <&kp GT >; mods = <(MOD_LSFT|MOD_RSFT)>; };
/omit-if-no-ref/ td_reset: td_reset {
compatible = "zmk,behavior-tap-dance";
#binding-cells = <0>;
tapping-term-ms = <175>;
bindings = <&sys_reset>, <&bootloader>;
};
};
};
#define COMBO2(k1,k2,a) combo_##k1##k2 { timeout-ms = <42>; key-positions = <k1 k2>; bindings = <a>; };
#define COMBO3(k1,k2,k3,a) combo_##k1##k2##k3 { timeout-ms = <42>; key-positions = <k1 k2 k3>; bindings = <a>; };
/ {
combos {
compatible = "zmk,combos";
// horizontal combos
COMBO2(LB3,LB2,&kp LC(INS)) COMBO2(LB2,LB1,&kp LS(INS))
COMBO2(RT1,RT2,&kp BSPC) COMBO2(RT2,RT3,&kp DEL)
COMBO2(RM1,RM2,&lpar_lt) COMBO2(RM2,RM3,&rpar_gt) COMBO2(RM3,RM4,&kp SQT)
COMBO2(RB1,RB2,&kp LBKT) COMBO2(RB2,RB3,&kp RBKT)
COMBO3(RT5,RT4,RT3,&kp PRINTSCREEN)
// vertical combos
COMBO2(LT5,LM5,&kp GRAVE) COMBO2(LT4,LM4,&kp EXCL ) COMBO2(LT3,LM3,&kp AT ) COMBO2(LT2,LM2,&kp HASH ) COMBO2(LT1,LM1,&kp DLLR ) COMBO2(LT0,LM0,&kp PRCNT)
COMBO2(LM3,LB3,&kp GRAVE) COMBO2(LM2,LB2,&kp BSLH ) COMBO2(LM1,LB1,&kp EQUAL) COMBO2(LM0,LB0,&kp TILDE)
COMBO2(RT0,RM0,&kp CARET) COMBO2(RT1,RM1,&kp PLUS ) COMBO2(RT2,RM2,&kp STAR ) COMBO2(RT3,RM3,&kp AMPS ) COMBO2(RT4,RM4,&kp SQT )
COMBO2(RM0,RB0,&kp UNDER) COMBO2(RM1,RB1,&kp MINUS) COMBO2(RM2,RB2,&kp FSLH ) COMBO2(RM3,RB3,&kp PIPE ) COMBO2(RM4,RB4,&kp EXCL )
COMBO3(LT5,LM5,LB5,&td_reset)
COMBO3(RT5,RM5,RB5,&td_reset)
};
};
&mt {
tapping-term-ms = <175>;
flavor = "tap-preferred";
};
< {
tapping-term-ms = <175>;
flavor = "tap-preferred";
};
|