update flea keymap

This commit is contained in:
Glen 2022-04-07 09:39:20 -04:00
parent cda595ba24
commit 9f96c17339

View file

@ -1,456 +1,175 @@
/*
* Copyright (c) 2020 The ZMK Contributors
* SPDX-License-Identifier: MIT
*
* This is a Colemak 28 keymap for the Flea keyboard.
* Last edited by James White, December 6, 2021.
*/
#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/bt.h>
&kscan0 {
debounce-period = <10>;
};
/* Layers */
#define DEF_L 0
#define NUM_L 1
#define NAV_L 2
#define NAV_L 1
#define UPP_L 2
#define SYM_L 3
#define NUM_L 4
&sl {
release-after-ms = <5000>;
quick-release;
/* Behavior Settings */
&caps_word {
continue-list = <UNDERSCORE MINUS BACKSPACE>;
};
&sk {
release-after-ms = <10000>;
release-after-ms = <60000>;
};
/ {
behaviors {
sq: sticky_key_quick_release {
compatible = "zmk,behavior-sticky-key";
label = "sticky key quick release";
#binding-cells = <1>;
bindings = <&kp>;
release-after-ms = <10000>;
quick-release;
};
nl: not_so_sticky_layer {
compatible = "zmk,behavior-hold-tap";
label = "not so sticky layer";
#binding-cells = <2>;
tapping_term_ms = <200>;
flavor = "tap-preferred";
bindings = <&mo>, <&sl>;
};
nk: not_so_sticky_key {
compatible = "zmk,behavior-hold-tap";
label = "not so sticky key";
#binding-cells = <2>;
tapping_term_ms = <200>;
flavor = "tap-preferred";
bindings = <&kp>, <&sk>;
};
nq: not_so_sticky_quick_release {
compatible = "zmk,behavior-hold-tap";
label = "not so sticky quick release";
#binding-cells = <2>;
tapping_term_ms = <200>;
flavor = "tap-preferred";
bindings = <&kp>, <&sq>;
};
bm: bottom_row_mods {
compatible = "zmk,behavior-hold-tap";
label = "bottom row mods";
#binding-cells = <2>;
tapping_term_ms = <240>;
quick_tap_ms = <180>;
flavor = "tap-preferred";
bindings = <&kp>, <&kp>;
};
f111: f_one_eleven {
compatible = "zmk,behavior-mod-morph";
label = "F1 F11";
#binding-cells = <0>;
bindings = <&kp F1>, <&kp F11>;
mods = <(MOD_RALT)>;
};
f212: f_two_twelve {
compatible = "zmk,behavior-mod-morph";
label = "F2 F12";
#binding-cells = <0>;
bindings = <&kp F2>, <&kp F12>;
mods = <(MOD_RALT)>;
};
f313: f_three_thirteen {
compatible = "zmk,behavior-mod-morph";
label = "F3 F13";
#binding-cells = <0>;
bindings = <&kp F3>, <&kp F13>;
mods = <(MOD_RALT)>;
};
f414: f_four_fourteen {
compatible = "zmk,behavior-mod-morph";
label = "F4 F14";
#binding-cells = <0>;
bindings = <&kp F4>, <&kp F14>;
mods = <(MOD_RALT)>;
};
f515: f_five_fifteen {
compatible = "zmk,behavior-mod-morph";
label = "F5 F15";
#binding-cells = <0>;
bindings = <&kp F5>, <&kp F15>;
mods = <(MOD_RALT)>;
};
f616: f_six_sixteen {
compatible = "zmk,behavior-mod-morph";
label = "F6 F16";
#binding-cells = <0>;
bindings = <&kp F6>, <&kp F16>;
mods = <(MOD_RALT)>;
};
f717: f_seven_seventeen {
compatible = "zmk,behavior-mod-morph";
label = "F7 F17";
#binding-cells = <0>;
bindings = <&kp F7>, <&kp F17>;
mods = <(MOD_RALT)>;
};
f818: f_eight_eighteen {
compatible = "zmk,behavior-mod-morph";
label = "F8 F18";
#binding-cells = <0>;
bindings = <&kp F8>, <&kp F18>;
mods = <(MOD_RALT)>;
};
f919: f_nine_nineteen {
compatible = "zmk,behavior-mod-morph";
label = "F9 F19";
#binding-cells = <0>;
bindings = <&kp F9>, <&kp F19>;
mods = <(MOD_RALT)>;
};
f1020: f_ten_twenty {
compatible = "zmk,behavior-mod-morph";
label = "F10 F20";
#binding-cells = <0>;
bindings = <&kp F10>, <&kp F20>;
mods = <(MOD_RALT)>;
};
};
ZMK_MACRO(mo_nav,
wait-ms = <0>;
tap-ms = <0>;
bindings
= <&macro_tap &kp K_CANCEL>
, <&macro_press &mo NAV_L>
, <&macro_pause_for_release>
, <&macro_release &mo NAV_L>;)
ZMK_MACRO(mo_upp,
wait-ms = <0>;
tap-ms = <0>;
bindings
= <&macro_tap &kp K_CANCEL>
, <&macro_press &mo UPP_L>
, <&macro_pause_for_release>
, <&macro_release &mo UPP_L>;)
ZMK_MACRO(mo_sym,
wait-ms = <0>;
tap-ms = <0>;
bindings
= <&macro_tap &kp K_CANCEL>
, <&macro_press &mo SYM_L>
, <&macro_pause_for_release>
, <&macro_release &mo SYM_L>;)
combos {
compatible = "zmk,combos";
combo_left_brace {
timeout-ms = <25>;
key-positions = <0 1>;
layers = <0>;
bindings = <&kp LBRC>;
};
combo_right_brace {
timeout-ms = <25>;
key-positions = <1 2>;
layers = <0>;
bindings = <&kp RBRC>;
};
combo_underscore {
timeout-ms = <25>;
key-positions = <2 3>;
layers = <0>;
bindings = <&kp UNDER>;
};
combo_left_parenthesis {
timeout-ms = <25>;
key-positions = <9 10>;
layers = <0>;
bindings = <&kp LPAR>;
};
combo_right_parenthesis {
timeout-ms = <25>;
key-positions = <10 11>;
layers = <0>;
bindings = <&kp RPAR>;
};
combo_minus {
timeout-ms = <25>;
key-positions = <11 12>;
layers = <0>;
bindings = <&kp MINUS>;
};
combo_grave {
timeout-ms = <25>;
key-positions = <18 19>;
layers = <0>;
bindings = <&kp GRAVE>;
};
combo_left_bracket {
timeout-ms = <25>;
key-positions = <19 20>;
layers = <0>;
bindings = <&kp LBKT>;
};
combo_right_bracket {
timeout-ms = <25>;
key-positions = <20 21>;
layers = <0>;
bindings = <&kp RBKT>;
};
combo_plus {
timeout-ms = <25>;
key-positions = <4 5>;
layers = <0>;
bindings = <&kp PLUS>;
};
combo_semicolon {
timeout-ms = <25>;
key-positions = <5 6>;
layers = <0>;
bindings = <&kp SEMI>;
};
combo_colon {
timeout-ms = <25>;
key-positions = <6 7>;
layers = <0>;
bindings = <&kp COLON>;
};
combo_equal {
timeout-ms = <25>;
key-positions = <13 14>;
layers = <0>;
bindings = <&kp EQUAL>;
};
combo_comma {
timeout-ms = <25>;
key-positions = <14 15>;
layers = <0>;
bindings = <&kp COMMA>;
};
combo_dot {
timeout-ms = <25>;
key-positions = <15 16>;
layers = <0>;
bindings = <&kp DOT>;
};
combo_apostrophe {
timeout-ms = <25>;
key-positions = <22 23>;
layers = <0>;
bindings = <&kp APOS>;
};
combo_forward_slash {
timeout-ms = <25>;
key-positions = <23 24>;
layers = <0>;
bindings = <&kp SLASH>;
};
combo_backslash {
timeout-ms = <25>;
key-positions = <24 25>;
layers = <0>;
bindings = <&kp BSLH>;
};
combo_f_one {
timeout-ms = <25>;
key-positions = <8 18>;
layers = <1 2>;
bindings = <&f111>;
};
combo_f_two {
timeout-ms = <25>;
key-positions = <0 9>;
layers = <1>;
bindings = <&f212>;
};
combo_f_three {
timeout-ms = <25>;
key-positions = <1 10>;
layers = <1 2>;
bindings = <&f313>;
};
combo_f_four {
timeout-ms = <25>;
key-positions = <2 11>;
layers = <1 2>;
bindings = <&f414>;
};
combo_f_five {
timeout-ms = <25>;
key-positions = <3 12>;
layers = <1 2>;
bindings = <&f515>;
};
combo_f_six {
timeout-ms = <25>;
key-positions = <4 13>;
layers = <1 2>;
bindings = <&f616>;
};
combo_f_seven {
timeout-ms = <25>;
key-positions = <5 14>;
layers = <1 2>;
bindings = <&f717>;
};
combo_f_eight {
timeout-ms = <25>;
key-positions = <6 15>;
layers = <1 2>;
bindings = <&f818>;
};
combo_f_nine {
timeout-ms = <25>;
key-positions = <7 16>;
layers = <1 2>;
bindings = <&f919>;
};
combo_f_ten {
timeout-ms = <25>;
key-positions = <17 25>;
layers = <1 2>;
bindings = <&f1020>;
};
combo_mute {
timeout-ms = <25>;
key-positions = <9 19>;
layers = <1 2>;
bindings = <&kp C_MUTE>;
};
combo_vol_down {
timeout-ms = <25>;
key-positions = <10 20>;
layers = <1 2>;
bindings = <&kp C_VOLUME_DOWN>;
};
combo_vol_up {
timeout-ms = <25>;
key-positions = <11 21>;
layers = <1 2>;
bindings = <&kp C_VOLUME_UP>;
};
combo_media_play_pause {
timeout-ms = <25>;
key-positions = <14 22>;
layers = <1 2>;
bindings = <&kp C_PLAY_PAUSE>;
};
combo_media_prev {
timeout-ms = <25>;
key-positions = <15 23>;
layers = <1 2>;
bindings = <&kp C_PREV>;
};
combo_media_next {
timeout-ms = <25>;
key-positions = <16 24>;
layers = <1 2>;
bindings = <&kp C_NEXT>;
};
combo_ctl_sft_tab {
timeout-ms = <25>;
key-positions = <0 1 2>;
layers = <0>;
bindings = <&kp LC(LS(TAB))>;
};
combo_alt_sft_tab {
timeout-ms = <25>;
key-positions = <9 10 11>;
layers = <0>;
bindings = <&kp LA(LS(TAB))>;
};
combo_gui_sft_tab {
timeout-ms = <25>;
key-positions = <19 20 21>;
layers = <0>;
bindings = <&kp LG(LS(TAB))>;
};
combo_ctl_tab {
timeout-ms = <25>;
key-positions = <5 6 7>;
layers = <0>;
bindings = <&kp LC(TAB)>;
};
combo_alt_tab {
timeout-ms = <25>;
key-positions = <14 15 16>;
layers = <0>;
bindings = <&kp LA(TAB)>;
};
combo_gui_tab {
timeout-ms = <25>;
key-positions = <22 23 24>;
layers = <0>;
bindings = <&kp LG(TAB)>;
};
combo_toggle_number_layer {
timeout-ms = <25>;
key-positions = <8 9 10 11>;
layers = <0 1>;
bindings = <&tog NUM_L>;
};
combo_toggle_navigation_layer {
timeout-ms = <25>;
key-positions = <14 15 16 17>;
layers = <0 2>;
bindings = <&tog NAV_L>;
};
combo_cancel_stickies_left {
timeout-ms = <25>;
key-positions = <8 9 10 11>;
layers = <2>;
bindings = <&kp F21>;
};
combo_cancel_stickies_right {
timeout-ms = <25>;
key-positions = <14 15 16 17>;
layers = <1>;
bindings = <&kp F21>;
};
combo_printscreen {
timeout-ms = <25>;
key-positions = <27 28>;
bindings = <&kp PSCRN>;
#define COMBO(NAME, BINDINGS, KEYPOS, LAYERS) \
combo_##NAME { \
bindings = <BINDINGS>; \
key-positions = <KEYPOS>; \
layers = <LAYERS>; \
};
/* KEY POSITIONS
╭────────────────────╮ ╭────────────────────╮
│ 0 1 2 3 │ │ 18 17 16 15 │
│ 4 5 6 7 8 │ │ 23 22 21 20 19 │
│ 9 10 11 12 │ │ 27 26 25 24 │
╰───────────╮ 13 14 │ │ 29 28 ╭───────────╯
╰────────╯ ╰────────╯ */
/* Letters */
COMBO(lower_v, &kp V, 11 12, DEF_L)
COMBO(lower_x, &kp X, 27 26, DEF_L)
COMBO(lower_z, &kp Z, 26 25, DEF_L)
COMBO(forward_slash, &kp FSLH, 10 11, DEF_L)
COMBO(upper_v, &kp LS(V), 11 12, UPP_L)
COMBO(upper_x, &kp LS(X), 27 26, UPP_L)
COMBO(upper_z, &kp LS(Z), 26 25, UPP_L)
COMBO(question_mark, &kp LS(FSLH), 10 11, UPP_L)
/* Brackets */
COMBO(left_bracket, &kp LBKT, 0 5, DEF_L UPP_L SYM_L NUM_L)
COMBO(right_bracket, &kp RBKT, 15 20, DEF_L UPP_L SYM_L NUM_L)
COMBO(left_parenthesis, &kp LPAR, 1 6, DEF_L UPP_L SYM_L NUM_L)
COMBO(right_parenthesis, &kp RPAR, 16 21, DEF_L UPP_L SYM_L NUM_L)
COMBO(left_brace, &kp LBRC, 2 7, DEF_L UPP_L SYM_L NUM_L)
COMBO(right_brace, &kp RBRC, 17 22, DEF_L UPP_L SYM_L NUM_L)
/* Convenience */
COMBO(esc, &kp ESC, 1 2, DEF_L)
COMBO(del, &kp DEL, 23 22, DEF_L)
COMBO(tab, &kp TAB, 7 8, DEF_L)
COMBO(select_all, &kp LC(A), 11 12, NAV_L)
};
conditional_layers {
compatible = "zmk,conditional-layers";
tri_layer {
if-layers = <UPP_L SYM_L>;
then-layer = <NUM_L>;
};
};
};
#define SL(KEY) &nl KEY KEY
#define SK(KEY) &nk KEY KEY
#define SQ(KEY) &nq KEY KEY
#define BMG(KEY) &bm LGUI KEY
#define CAPSWORD &caps_word
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
bindings = <
&kp J &kp W &kp M &kp G &kp P &kp F &kp U &kp Y
&kp A &kp R &kp S &kp T &kp V &kp B &kp N &kp E &kp I &kp O
BMG(Q) &kp L &kp C &kp D &kp H &kp Z &kp K BMG(X)
SL(NAV_L) &kp SPACE &kp BSPC SL(NUM_L)
>;
};
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
&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
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
num_layer {
label = "Num";
bindings = <
&kp N7 &kp N8 &kp N9 &kp ASTRK &trans CAPSWORD &trans &trans
&kp MINUS &kp N4 &kp N5 &kp N6 &kp SLASH &trans SQ(LSHFT) SK(LCTRL) SK(LALT) SK(LGUI)
&kp PLUS &kp N1 &kp N2 &kp N3 SQ(RSHFT) SK(RCTRL) SK(RALT) SK(RGUI)
&lt NAV_L DOT &kp N0 &trans &trans
>;
};
nav_layer {
label = "Nav";
bindings = <
&trans &trans CAPSWORD &trans &kp PG_UP &kp HOME &kp UARW &kp END
SK(LGUI) SK(LALT) SK(LCTRL) SQ(LSHFT) &trans &kp PG_DN &kp LARW &kp DARW &kp RARW &kp LC(Z)
SK(RGUI) SK(RALT) SK(RCTRL) SQ(RSHFT) &kp ESC &kp TAB &kp RET &kp LS(INS)
&trans &trans &kp BSPC &lt NUM_L DEL
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
&kp F2 &kp F3 &kp F4 &kp F5 &kp PG_UP &kp HOME &kp UARW &kp END
&sk LGUI &sk LALT &sk LCTRL &sk LSHFT &kp LC(Z) &kp PG_DN &kp LARW &kp ENTER &kp RARW &kp ESC
&kp F1 &kp LC(X) &kp LC(C) &kp LC(V) &kp TAB &kp DARW &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 &none &none &kp CARET &kp AMPS &kp SEMI &kp COLON
&kp COLON &kp DLLR &kp PRCNT &kp CARET &kp PLUS &kp BSLH &sk LSHFT &sk LCTRL &sk LALT &sk LGUI
&none &kp EXCL &kp AT &kp POUND &kp PIPE &kp LT &kp GT &kp DQT
// ╰─────────────┴─────────────┴─────────────╮ ╭─────────────┴─────────────┴─────────────╯
&trans &kp UNDER &trans &trans
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
>;
};
num_layer {
label = "Num";
bindings = <
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
&kp N7 &kp N4 &kp N3 &none &kp F6 &kp F7 &kp F8 &kp F9
&kp SEMI &kp N2 &kp N1 &kp N0 &kp EQUAL &kp F11 &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
// ╰─────────────┴─────────────╯ ╰─────────────┴─────────────╯
>;
};
};
};