mirror of
https://github.com/CrispyPin/zmk-config.git
synced 2024-09-19 22:26:19 +02:00
269 lines
9.6 KiB
Text
269 lines
9.6 KiB
Text
#include <behaviors.dtsi>
|
||
#include <dt-bindings/zmk/keys.h>
|
||
#include <dt-bindings/zmk/bt.h>
|
||
|
||
#define HOST_OS 1
|
||
#include "../../../../zmk-nodefree-config/helper.h"
|
||
|
||
|
||
ZMK_UNICODE_PAIR(L_ae, N0, N0, E, N4, N0, N0, C, N4) // åÅ
|
||
ZMK_UNICODE_PAIR(L_ao, N0, N0, E, N5, N0, N0, C, N5) // äÄ
|
||
ZMK_UNICODE_PAIR(L_oe, N0, N0, F, N6, N0, N0, D, N6) // öÖ
|
||
ZMK_UNICODE_PAIR(L_euro, N2, N0, A, C, N0, N0, B, N0) // euro sign and degree symbol €, °
|
||
ZMK_UNICODE_PAIR(L_multi_o, A , N6, N6, E, F, F, F, D ) // multiocular o, unicode error ꙮ, <20>
|
||
// box parts
|
||
ZMK_UNICODE_SINGLE(L_box_rd, N2, N5, N0, F ) // ┏
|
||
ZMK_UNICODE_SINGLE(L_box_rdl, N2, N5, N3, N3) // ┳
|
||
ZMK_UNICODE_SINGLE(L_box_dl, N2, N5, N1, N3) // ┓
|
||
ZMK_UNICODE_SINGLE(L_box_urd, N2, N5, N2, N3) // ┣
|
||
ZMK_UNICODE_SINGLE(L_box_urdl, N2, N5, N4, B ) // ╋
|
||
ZMK_UNICODE_SINGLE(L_box_udl, N2, N5, N2, B ) // ┫
|
||
ZMK_UNICODE_SINGLE(L_box_ur, N2, N5, N1, N7) // ┗
|
||
ZMK_UNICODE_SINGLE(L_box_url, N2, N5, N3, B ) // ┻
|
||
ZMK_UNICODE_SINGLE(L_box_ul, N2, N5, N1, B ) // ┛
|
||
ZMK_UNICODE_SINGLE(L_box_h, N2, N5, N0, N1) // ━
|
||
ZMK_UNICODE_SINGLE(L_box_v, N2, N5, N0, N3) // ┃
|
||
ZMK_UNICODE_SINGLE(L_box_spc, N3, N0, N0, N0) // ' '
|
||
// blocks
|
||
ZMK_UNICODE_SINGLE(L_block_u, N2, N5, N8, N0) // ▀
|
||
ZMK_UNICODE_SINGLE(L_block_d, N2, N5, N8, N4) // ▄
|
||
ZMK_UNICODE_SINGLE(L_block , N2, N5, N8, N8) // █
|
||
// arrows
|
||
ZMK_UNICODE_SINGLE(L_arr_l, N2, N1, N9, N0) // ←
|
||
ZMK_UNICODE_SINGLE(L_arr_u, N2, N1, N9, N1) // ↑
|
||
ZMK_UNICODE_SINGLE(L_arr_r, N2, N1, N9, N2) // →
|
||
ZMK_UNICODE_SINGLE(L_arr_d, N2, N1, N9, N3) // ↓
|
||
|
||
// switch to Windows-mode (using WinCompose)
|
||
#undef OS_UNICODE_LEAD
|
||
#undef OS_UNICODE_TRAIL
|
||
#define OS_UNICODE_LEAD ¯o_tap &kp RALT &kp U // WinCompose sequence
|
||
#define OS_UNICODE_TRAIL ¯o_tap &kp RET
|
||
|
||
ZMK_UNICODE_PAIR(W_ae, N0, N0, E, N4, N0, N0, C, N4)
|
||
ZMK_UNICODE_PAIR(W_ao, N0, N0, E, N5, N0, N0, C, N5)
|
||
ZMK_UNICODE_PAIR(W_oe, N0, N0, F, N6, N0, N0, D, N6)
|
||
ZMK_UNICODE_PAIR(W_euro, N2, N0, A, C, N0, N0, B, N0) // euro sign and degree symbol
|
||
ZMK_UNICODE_PAIR(W_multi_o, A, N6, N6, E, F, F, F, D ) // multiocular o
|
||
// box parts
|
||
ZMK_UNICODE_SINGLE(W_box_rd, N2, N5, N0, F ) // ┏
|
||
ZMK_UNICODE_SINGLE(W_box_rdl, N2, N5, N3, N3) // ┳
|
||
ZMK_UNICODE_SINGLE(W_box_dl, N2, N5, N1, N3) // ┓
|
||
ZMK_UNICODE_SINGLE(W_box_urd, N2, N5, N2, N3) // ┣
|
||
ZMK_UNICODE_SINGLE(W_box_urdl, N2, N5, N4, B ) // ╋
|
||
ZMK_UNICODE_SINGLE(W_box_udl, N2, N5, N2, B ) // ┫
|
||
ZMK_UNICODE_SINGLE(W_box_ur, N2, N5, N1, N7) // ┗
|
||
ZMK_UNICODE_SINGLE(W_box_url, N2, N5, N3, B ) // ┻
|
||
ZMK_UNICODE_SINGLE(W_box_ul, N2, N5, N1, B ) // ┛
|
||
ZMK_UNICODE_SINGLE(W_box_h, N2, N5, N0, N1) // ━
|
||
ZMK_UNICODE_SINGLE(W_box_v, N2, N5, N0, N3) // ┃
|
||
ZMK_UNICODE_SINGLE(W_box_spc, N3, N0, N0, N0) // ' '
|
||
// blocks
|
||
ZMK_UNICODE_SINGLE(W_block_u, N2, N5, N8, N0) // ▀
|
||
ZMK_UNICODE_SINGLE(W_block_d, N2, N5, N8, N4) // ▄
|
||
ZMK_UNICODE_SINGLE(W_block , N2, N5, N8, N8) // █
|
||
// arrows
|
||
ZMK_UNICODE_SINGLE(W_arr_l, N2, N1, N9, N0) // ←
|
||
ZMK_UNICODE_SINGLE(W_arr_u, N2, N1, N9, N1) // ↑
|
||
ZMK_UNICODE_SINGLE(W_arr_r, N2, N1, N9, N2) // →
|
||
ZMK_UNICODE_SINGLE(W_arr_d, N2, N1, N9, N3) // ↓
|
||
|
||
|
||
|
||
#define BASE 0
|
||
#define SYM 1
|
||
#define NAV 2
|
||
#define META 3
|
||
#define TOKI 4
|
||
#define GAME 5
|
||
#define WINDOWS 6
|
||
#define W_UNI 7
|
||
#define LEFT_COMPACT 8
|
||
#define LEFT_COMPACT_KEYS 9
|
||
#define LEFT_COMPACT_NUM 10
|
||
#define EXTRA_UNICODE 11
|
||
#define EXTRA_UNICODE_WINDOWS 12
|
||
|
||
/ {
|
||
conditional_layers {
|
||
compatible = "zmk,conditional-layers";
|
||
windows_unicode {
|
||
if-layers = <SYM WINDOWS>;
|
||
then-layer = <W_UNI>;
|
||
};
|
||
windows_password {
|
||
if-layers = <EXTRA_UNICODE WINDOWS>;
|
||
then-layer = <EXTRA_UNICODE_WINDOWS>;
|
||
};
|
||
meta_layer {
|
||
if-layers = <SYM NAV>;
|
||
then-layer = <META>;
|
||
};
|
||
};
|
||
};
|
||
|
||
/ {
|
||
combos {
|
||
compatible = "zmk,combos";
|
||
toggle_left_compact {
|
||
timeout-ms = <50>;
|
||
key-positions = <2 3>;
|
||
bindings = <&tog LEFT_COMPACT>;
|
||
};
|
||
};
|
||
};
|
||
|
||
/ {
|
||
behaviors {
|
||
esctab: shift_esc_tab {
|
||
compatible = "zmk,behavior-mod-morph";
|
||
label = "esc_tab";
|
||
#binding-cells = <0>;
|
||
bindings = <&kp ESC>, <&kp TAB>;
|
||
mods = <(MOD_LSFT)>;
|
||
};
|
||
escape: fancy_esc_key {
|
||
// activate esc-tab macro if not holding ctrl, this allows ctrl-shift-esc but turns shift-esc into tab
|
||
compatible = "zmk,behavior-mod-morph";
|
||
label = "esc";
|
||
#binding-cells = <0>;
|
||
bindings = <&esctab>, <&kp ESC>;
|
||
mods = <(MOD_LCTL)>;
|
||
keep-mods = <(MOD_LCTL)>;
|
||
};
|
||
layerleft: layer_left {
|
||
compatible = "zmk,behavior-mod-morph";
|
||
label = "shift_extra";
|
||
#binding-cells = <0>;
|
||
bindings = <&mo LEFT_COMPACT_KEYS>, <&mo LEFT_COMPACT_NUM>;
|
||
mods = <(MOD_LSFT)>;
|
||
};
|
||
gqt: global-quick-tap {
|
||
compatible = "zmk,behavior-hold-tap";
|
||
label = "GLOBAL_QUICK_TAP";
|
||
#binding-cells = <2>;
|
||
flavor = "tap-preferred";
|
||
tapping-term-ms = <200>;
|
||
quick-tap-ms = <125>;
|
||
global-quick-tap;
|
||
bindings = <&kp>, <&kp>;
|
||
};
|
||
};
|
||
};
|
||
|
||
/ {
|
||
keymap {
|
||
compatible = "zmk,keymap";
|
||
l_base {
|
||
bindings = <
|
||
&escape &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp BACKSPACE
|
||
&kp A &kp R &kp S &kp T &kp G &kp M &kp N &kp E &kp I &kp O
|
||
&kp LCTRL &kp X &kp C &kp D &kp V &kp K &kp H &kp Z &kp Q &kp LALT
|
||
&kp SPACE &kp LSHIFT &kp LWIN &mo NAV &mo SYM &kp RET
|
||
>;
|
||
};
|
||
// numbers + symbols + non english letters
|
||
l_sym {
|
||
bindings = <
|
||
&kp TAB &kp GRAVE &kp LBKT &kp RBKT &L_euro &L_multi_o &L_ao &L_ae &L_oe &kp DEL
|
||
&kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0
|
||
&trans &kp SQT &kp SLASH &kp BSLH &kp EQUAL &kp MINUS &kp SEMI &kp COMMA &kp DOT &trans
|
||
&trans &trans &trans &trans &trans &trans
|
||
>;
|
||
};
|
||
// F keys + navigation
|
||
l_nav {
|
||
bindings = <
|
||
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp PG_UP &kp HOME &kp UP &kp END &kp PSCRN
|
||
&kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp K_CMENU
|
||
&trans &kp F11 &kp F12 &kp F13 &kp F14 &kp F15 &kp F16 &kp F17 &kp F18 &trans
|
||
&kp SPACE &trans &trans &trans &trans &trans
|
||
>;
|
||
};
|
||
// media + bluetooth + layer toggles + numpad
|
||
l_meta {
|
||
bindings = <
|
||
&kp C_VOL_DN &kp C_VOL_UP &tog WINDOWS &tog GAME &tog TOKI &kp KP_MULTIPLY &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_PLUS
|
||
&kp C_PREV &kp C_NEXT &tog LEFT_COMPACT &kp C_PLAY &tog EXTRA_UNICODE &kp KP_DIVIDE &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_N0
|
||
&trans &none &bt BT_SEL 0 &bt BT_NXT &bt BT_CLR &kp KP_DOT &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_MINUS
|
||
&trans &trans &trans &trans &trans &kp KP_ENTER
|
||
>;
|
||
};
|
||
// toki pona
|
||
l_toki {
|
||
bindings = <
|
||
&trans &kp P &kp W &kp U &none &tog TOKI &kp E &kp S &kp J &trans
|
||
&kp N &kp L &kp I &kp A &none &none &kp O &kp T &kp M &kp K
|
||
&trans &none &kp QMARK &kp EXCL &none &none &kp DOT &kp COMMA &none &none
|
||
&trans &none &trans &none &trans &trans
|
||
>;
|
||
};
|
||
// game compatibility / half qwerty
|
||
l_game {
|
||
bindings = <
|
||
&kp ESC &kp Q &kp W &kp E &kp R &none &none &kp UP &none &kp BSPC
|
||
&kp LSHFT &kp A &kp S &kp D &kp F &none &kp LEFT &kp DOWN &kp RIGHT &none
|
||
&kp LCTRL &kp Z &kp X &kp C &kp V &none &none &none &none &none
|
||
&kp LALT &kp SPACE &tog GAME &tog GAME &none &kp RET
|
||
>;
|
||
};
|
||
// dummy layer for enabling windows unicode macros
|
||
l_windows {
|
||
bindings = <
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans
|
||
>;
|
||
};
|
||
l_W_unicode {
|
||
bindings = <
|
||
&trans &trans &trans &trans &W_euro &W_multi_o &W_ao &W_ae &W_oe &trans
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans
|
||
>;
|
||
};
|
||
l_left_compact {
|
||
bindings = <
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
|
||
&trans &trans &layerleft &trans &trans &trans
|
||
>;
|
||
};
|
||
l_left_compact_keys {
|
||
bindings = <
|
||
&kp BSPC &kp Y &kp U &kp L &kp J &trans &trans &trans &trans &trans
|
||
&kp O &kp I &kp E &kp N &kp M &trans &trans &trans &trans &trans
|
||
&kp LALT &kp Q &kp Z &kp H &kp K &trans &trans &trans &trans &trans
|
||
&kp SPACE &mo LEFT_COMPACT_NUM &trans &trans &trans &trans
|
||
>;
|
||
};
|
||
l_left_compact_num {
|
||
bindings = <
|
||
&kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &trans &trans &trans &trans &trans
|
||
&kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &trans &trans &trans &trans &trans
|
||
&trans &kp F1 &kp F2 &kp F3 &kp F4 &trans &trans &trans &trans &trans
|
||
&trans &trans &trans &trans &trans &trans
|
||
>;
|
||
};
|
||
l_extra_unicode {
|
||
bindings = <
|
||
&none &L_arr_u &none &L_block_u &none &L_box_spc &L_box_rd &L_box_rdl &L_box_dl &none
|
||
&L_arr_l &L_arr_d &L_arr_r &L_block &none &L_box_v &L_box_urd &L_box_urdl &L_box_udl &none
|
||
&none &none &none &L_block_d &none &L_box_h &L_box_ur &L_box_url &L_box_ul &none
|
||
&kp SPACE &none &tog EXTRA_UNICODE &none &none &none &none
|
||
>;
|
||
};
|
||
l_extra_unicode_windows {
|
||
bindings = <
|
||
&none &W_arr_u &none &W_block_u &none &W_box_spc &W_box_rd &W_box_rdl &W_box_dl &none
|
||
&W_arr_l &W_arr_d &W_arr_r &W_block &none &W_box_v &W_box_urd &W_box_urdl &W_box_udl &none
|
||
&none &none &none &W_block_d &none &W_box_h &W_box_ur &W_box_url &W_box_ul &none
|
||
&kp SPACE &none &tog EXTRA_UNICODE &none &none &none &none
|
||
>;
|
||
};
|
||
|
||
};
|
||
};
|