aboutsummaryrefslogtreecommitdiffstats
path: root/config/hanck_duo.keymap
blob: 732178443ab4a02c1b61830ef132da45f8d57add (plain)
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    &lt 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      &lt 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";
};

&lt {
  tapping-term-ms = <175>;
  flavor = "tap-preferred";
};