+71
-10
config/urchin.keymap
+71
-10
config/urchin.keymap
···
9
9
#include <dt-bindings/zmk/bt.h>
10
10
#include <dt-bindings/zmk/outputs.h>
11
11
12
+
#include "zmk-helpers/helper.h"
13
+
#include "zmk-helpers/key-labels/42.h"
14
+
#include <dt-bindings/zmk/keys.h>
15
+
16
+
#define QUICK_TAP_MS 175
17
+
12
18
// Layer definitions
13
19
#define BASE 0
14
20
#define SYM 1
15
21
#define EXT 2
16
22
#define FNC 3
17
-
#define SETTINGS 6
23
+
#define SETTINGS 4
24
+
25
+
/* Homerow mods */
26
+
27
+
#define HM_TAPPING_TERM 300
28
+
#define HM_TAPPING_TERM_FAST 200
29
+
#define HM_PRIOR_IDLE 150
30
+
31
+
#define KEYS_L LT0 LT1 LT2 LT3 LT4 LM0 LM1 LM2 LM3 LM4 LB0 LB1 LB2 LB3 LB4 // left hand
32
+
#define KEYS_R RT0 RT1 RT2 RT3 RT4 RM0 RM1 RM2 RM3 RM4 RB0 RB1 RB2 RB3 RB4 // right hand
33
+
#define KEYS_T LH1 LH0 RH0 RH1 // thumbs on 34 keys
34
+
18
35
// -----------------
19
36
20
37
&sk {
···
23
40
};
24
41
25
42
26
-
&mt {
43
+
&mt { // mode-tap config
27
44
flavor = "tap-preferred";
28
45
tapping_term_ms = <200>;
29
46
quick_tap_ms = <75>;
30
47
};
31
48
49
+
< { // layer-tap config
50
+
flavor = "balanced";
51
+
tapping-term-ms = <200>;
52
+
quick-tap-ms = <QUICK_TAP_MS>;
53
+
};
32
54
33
55
/ {
34
56
behaviors {
57
+
// Positional Homerow mods
58
+
// Homerow mods that prevent accidental activations when rolling keys,
59
+
// such as when typing `st` or `ne` on colemak-dh layouts or `as` on
60
+
// qwerty.
61
+
//
62
+
// Works by only allowing a mod to activate within tapping-term if
63
+
// it's on the opposite side of the keyboard or on the same side thumb
64
+
// keys.
65
+
66
+
// Further optimization using urob's timerless homerow mods method:
67
+
// https://github.com/urob/zmk-config#timeless-homerow-mods
68
+
hml: homerow_mods_left {
69
+
compatible = "zmk,behavior-hold-tap";
70
+
#binding-cells = <2>;
71
+
bindings = <&kp>, <&kp>;
72
+
73
+
flavor = "balanced";
74
+
tapping-term-ms = <HM_TAPPING_TERM>;
75
+
quick-tap-ms = <175>; // repeat on tap-into-hold
76
+
require-prior-idle-ms = <HM_PRIOR_IDLE>;
77
+
78
+
hold-trigger-key-positions = <KEYS_R KEYS_T>;
79
+
hold-trigger-on-release;
80
+
};
81
+
82
+
hmr: homerow_mods_right {
83
+
compatible = "zmk,behavior-hold-tap";
84
+
#binding-cells = <2>;
85
+
bindings = <&kp>, <&kp>;
86
+
87
+
flavor = "balanced";
88
+
tapping-term-ms = <HM_TAPPING_TERM>;
89
+
quick-tap-ms = <175>;
90
+
require-prior-idle-ms = <HM_PRIOR_IDLE>;
91
+
92
+
hold-trigger-key-positions = <KEYS_L KEYS_T>;
93
+
hold-trigger-on-release;
94
+
};
95
+
35
96
// Enables holding the first mod-tap key
36
97
// by performing a tap-release-hold sequence.
37
98
// To use it: "&qt KEYCODE1 KEYCODE2"
···
83
144
default_layer {
84
145
label = "Base";
85
146
bindings = <
86
-
&kp DOT &kp COMMA &kp DOT &kp P &kp Y &kp F &kp G &kp C &kp R &kp L
87
-
&kp A &kp O &kp E &kp U &kp I &kp D &kp H &kp T &kp N &kp S
88
-
&kp SCLN &kp Q &kp J &kp K &kp X &kp B &kp M &kp W &kp V &kp Z
89
-
&mt LALT SPC &mt LGUI TAB &mt LSHIFT RET &mt LCTRL BSPC
147
+
&kp DOT &kp COMMA &kp DOT &kp P &kp Y &kp F &kp G &kp C &kp R &kp L
148
+
&hml LCTRL A &hml LALT O &hml LSHIFT E &hml LGUI U &kp I &kp D &hmr RGUI H &hmr RSHIFT T &hmr RALT N &hmr RCTRL S
149
+
&kp SCLN &kp Q &kp J &kp K &kp X &kp B &kp M &kp W &kp V &kp Z
150
+
&mt LALT SPC &mt LGUI TAB &mt LSHIFT RET &mt LCTRL BSPC
90
151
>;
91
152
};
92
153
···
94
155
sym_layer {
95
156
label = "Sym.";
96
157
bindings = <
97
-
&kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0
98
-
&none &none &none &none &none &none &none &none &none &none
99
-
&none &none &none &none &none &none &none &none &none &none
100
-
&mo FNC &none &trans &trans
158
+
&none &none &none &none &none &none &kp N7 &kp N8 &kp N9 &none
159
+
&none &none &none &none &none &none &kp N4 &kp N5 &kp N6 &none
160
+
&none &none &none &none &none &kp N0 &kp N1 &kp N2 &kp N3 &none
161
+
&mo FNC &none &trans &trans
101
162
>;
102
163
};
103
164
+8
config/west.yml
+8
config/west.yml
···
6
6
# kyek / duckyb
7
7
- name: duckyb
8
8
url-base: https://github.com/duckyb
9
+
- name: urob
10
+
url-base: https://github.com/urob
9
11
projects:
10
12
- name: zmk
11
13
remote: zmkfirmware
···
13
15
import: app/west.yml
14
16
- name: urchin-zmk-module
15
17
remote: duckyb
18
+
revision: main
19
+
- name: zmk-helpers
20
+
remote: urob
21
+
revision: main
22
+
- name: zmk-auto-layer
23
+
remote: urob
16
24
revision: main
17
25
self:
18
26
path: config