-
Notifications
You must be signed in to change notification settings - Fork 89
/
cradio.keymap
121 lines (101 loc) · 11.9 KB
/
cradio.keymap
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
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include "zmk-helpers/helper.h"
#include "zmk-helpers/key-labels/34.h"
#include "zmk-helpers/unicode-chars/german.dtsi"
#define ___ &trans
#define DEF 0
#define NAV 1
#define NUM 2
#define GER 3
/* Timeless homerow mods */
// https://github.com/urob/zmk-config/tree/main#timeless-homerow-mods
#define KEYS_L LT0 LT1 LT2 LT3 LT4 LM0 LM1 LM2 LM3 LM4 LB0 LB1 LB2 LB3 LB4 // left hand
#define KEYS_R RT0 RT1 RT2 RT3 RT4 RM0 RM1 RM2 RM3 RM4 RB0 RB1 RB2 RB3 RB4 // right hand
#define THUMBS LH1 LH0 RH0 RH1 // thumbs
ZMK_HOLD_TAP(hml,
flavor = "balanced";
tapping-term-ms = <280>;
require-prior-idle-ms = <150>;
hold-trigger-key-positions = <KEYS_R THUMBS>;
hold-trigger-on-release;
bindings = <&kp>, <&kp>;
)
ZMK_HOLD_TAP(hmr,
flavor = "balanced";
tapping-term-ms = <280>;
require-prior-idle-ms = <150>;
hold-trigger-key-positions = <KEYS_L THUMBS>;
hold-trigger-on-release;
bindings = <&kp>, <&kp>;
)
/* Custom behaviors */
// tap: copy | double-tap: cut
ZMK_TAP_DANCE(copy_cut,
tapping-term-ms = <200>;
bindings = <&kp LC(INS)>, <&kp LC(X)>;
)
// tap: backspace | shift + tap: delete | hold: num layer
ZMK_MOD_MORPH(bs_del_num,
bindings = << NUM BSPC>, <&kp DEL>;
mods = <(MOD_LSFT|MOD_RSFT)>;
)
// windows sleep macro
ZMK_MACRO(win_sleep,
wait-ms = <100>;
tap-ms = <5>;
bindings = <&kp LG(X) &kp U &kp S>;
)
// euro sign
ZMK_UNICODE_SINGLE(euro_sign, N2, N0, A, C) // €
// replace a/o/u/s with German umlauts when NAV and NUM are held jointly
ZMK_CONDITIONAL_LAYER(ger, NAV NUM, GER)
// combos
ZMK_COMBO(sleep, &win_sleep, RT3 RT4, NAV) // put Windows to sleep, only active on NAV layer
ZMK_COMBO(copy_cut, ©_cut, LB2 LB3, ALL) // copy on tap, cut on double-tap, active on all layers
ZMK_COMBO(paste, &kp LS(INS), LB1 LB2, ALL) // paste, active on all layers
/* Keymap */
ZMK_LAYER(default_layer,
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
&kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp SQT
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
&hml LGUI A &hml LALT R &hml LCTRL S &hml LSHFT T &kp G &kp M &hmr RSHFT N &hmr LCTRL E &hmr LALT I &hmr LGUI O
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
&kp Z &kp X &kp C &kp D &kp V &kp K &kp H &kp COMMA &kp DOT &kp SEMI
// ╰─────────────────────────────────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────────────────────────────────╯
< NAV SPACE &kp RET &bs_del_num &sk LSHFT
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
ZMK_LAYER(nav_layer,
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
___ ___ ___ ___ ___ &kp PG_UP &kp HOME &kp UP &kp END ___
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
&sk LGUI &sk LALT &sk LCTRL &sk LSHFT ___ &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT ___
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
___ ___ ___ ___ ___ ___ ___ ___ ___ ___
// ╰─────────────────────────────────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────────────────────────────────╯
___ ___ ___ ___
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
ZMK_LAYER(num_layer,
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
&kp ESC &kp N7 &kp N8 &kp N9 ___ ___ ___ ___ ___ ___
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
&kp TAB &kp N4 &kp N5 &kp N6 ___ ___ &sk RSHFT &sk LCTRL &sk LALT &sk LGUI
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
___ &kp N1 &kp N2 &kp N3 ___ ___ ___ ___ ___ ___
// ╰─────────────────────────────────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────────────────────────────────╯
&kp N0 ___ ___ ___
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)
ZMK_LAYER(german_layer,
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
___ ___ ___ ___ ___ ___ ___ &de_ue ___ ___
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
&de_ae ___ &de_eszett ___ ___ ___ ___ &euro_sign ___ &de_oe
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
___ ___ ___ ___ ___ ___ ___ ___ ___ ___
// ╰─────────────────────────────────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────────────────────────────────╯
___ ___ ___ ___
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
)