main
  1#include <behaviors/mouse_keys.dtsi>
  2#include <dt-bindings/zmk/mouse.h>
  3#include <behaviors.dtsi>
  4#include <dt-bindings/zmk/bt.h>
  5#include <dt-bindings/zmk/keys.h>
  6#include <dt-bindings/zmk/outputs.h>
  7
  8#include "constants.h"
  9#define HOST_OS LINUX
 10
 11#include "zmk-helpers/helper.h"
 12#include "zmk-helpers/unicode-chars/french.dtsi"
 13#include "combos.dtsi"
 14#include "leader.dtsi"
 15#include "numword.dtsi"
 16#include "hold-tap.dtsi"
 17#include "mod-morph.dtsi"
 18#include "mouse.dtsi"
 19
 20/*                KEY POSITIONS (Keyball44)
 21
 22  ╭──────────────────────────────╮ ╭──────────────────────────────╮
 23  │  0    1    2    3    4    5  │ │  6    7    8    9   10   11  │
 24  │ 12   13   14   15   16   17 │ │ 18   19   20   21   22   23  │
 25  │ 24   25   26   27   28   29 │ │ 30   31   32   33   34   35  │
 26  ╰────╮ 36   37   38   39   40 │ │ 41   42        43 ╭─────────╯
 27       ╰────────────────────────╯ ╰───────────────────╯
 28  Left thumb: 36=LGUI, 37=LALT, 38=ESC/MOU, 39=SPC, 40=TAB/NAV
 29  Right thumb: 41=ENTER, 42=BSPC/SYM, trackball, 43=DEL
 30*/
 31
 32&lt {
 33    tapping-term-ms = <240>;
 34    flavor = "balanced";
 35    quick-tap-ms = <150>;
 36};
 37
 38&mt {
 39    tapping-term-ms = <200>;
 40    flavor = "tap-preferred";
 41    quick-tap-ms = <150>;
 42};
 43
 44&caps_word { continue-list = <UNDERSCORE MINUS>; };
 45
 46/ {
 47    keymap {
 48        compatible = "zmk,keymap";
 49
 50        // 0: Bépo
 51        Bepo_layer {
 52            label = "Bépo";
 53            bindings = <
 54// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
 55     &kp TAB     &b_pipe     &kp EACUT   &p_amp      &kp O        &AGRA E        &car_excl   &kp V         &kp D         &kp L        &kp J        &kp Z
 56// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
 57  &smart_num NUM NUM &hml GL A &hml AL U &hml SL I  &cl_e_euro   &hyp_com_smc    &hmr HL C   &hmr CR T     &hmr SR S     &hmr AR R    &hmr GL N    &kp M
 58// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
 59     &kp GRAVE   &AGRA A     &kp Y       &kp X       &dot_col     &kp K          &sqt_qma    &kp Q         &kp G         &kp H        &kp F        &kp W
 60// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
 61         &kp LGUI &kp LALT  &lt MOU DEL  &kp SPACE   &lt NAV BSPC              &lt SYM RET  &kp AR                     &kp DEL
 62//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
 63            >;
 64        };
 65
 66        // 1: ErgoL
 67        ErgoL_layer {
 68            label = "ErgoL";
 69            bindings = <
 70// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
 71     &kp TAB     &kp Q       &kp C       &kp O       &kp P        &kp W          &kp J       &kp M         &kp D         &kp EXCL     &kp Y        &kp LBKT
 72// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
 73     &kp EQUAL   &hml GL A   &hml AL S   &hml SL E   &hml CL N    &kp F          &kp L       &hmr CR R     &hmr SR T     &hmr AR I    &hmr GL U    &kp SQT
 74// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
 75     &kp GRAVE   &kp Z       &kp X       &min_qma    &kp V        &kp B          &dot_col    &kp H         &kp G         &com_smc     &kp K        &kp RBKT
 76// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
 77          ___     ___         ___          ___         ___                         ___         ___                        ___
 78//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
 79            >;
 80        };
 81
 82        // 2: Qwerty
 83        Qwerty_layer {
 84            label = "QWRT";
 85            bindings = <
 86// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
 87     &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T          &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
 88// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
 89     &kp EQUAL   &hml GL A   &hml AL S   &hml SL D   &hml CL F    &kp G          &kp H       &hmr CR J     &hmr SR K     &hmr AR L   &hmr GL SEMI  &kp SQT
 90// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
 91     &kp GRAVE   &kp Z       &kp X       &kp C       &kp V        &kp B          &kp N       &kp M         &kp COMMA     &kp DOT      &kp FSLH     &kp RBKT
 92// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
 93          ___     ___         ___          ___         ___                         ___         ___                        ___
 94//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
 95            >;
 96        };
 97
 98        // 3: Accents
 99        Accents_layer {
100            label = "Acc";
101            bindings = <
102// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
103     XXX         &kp AE      &AIGU I     &AGRA I     &CIRC I      &TREM I        &TREM O     &CIRC O       &AGRA O       &AIGU O      XXX          &kp DQT
104// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
105     &kp GRAVE   &kp OE      &AIGU E     &AGRA E     &CIRC E      &TREM E        &TREM A     &CIRC A       &AGRA A       &AIGU A      &kp NTIL     &kp SQT
106// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
107     XXX         XXX         XXX         XXX         XXX          XXX            &TREM U     &CIRC U       &AGRA U       &AIGU U      &kp CDIL     &kp CARET
108// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
109          ___     ___         ___          ___         ___                         ___         ___                        ___
110//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
111            >;
112        };
113
114        // 4: Symbols
115        Symbols_layer {
116            label = "Sym";
117            bindings = <
118// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
119     &kp BSLH    &AGRA SPACE  &kp LT      &kp GT      &kp MINUS    &kp PIPE       &kp CARET   &kp LBRC      &kp RBRC      &kp DLLR     &CIRC SPACE  XXX
120// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
121     XXX         &kp EXCL &hml AL STAR &hml SL FSLH &hml CL EQUAL &kp AMPS       &kp HASH   &hmr CR LPAR  &hmr SR RPAR  &hmr AR SEMI  &TREM SPACE  XXX
122// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
123     XXX         &kp TILDE   &kp PLUS    &kp LBKT    &kp RBKT     &kp PRCNT      &kp AT      &kp COLON     &kp COMMA     &kp DOT      &AIGU SPACE  XXX
124// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
125          ___     ___         ___          ___         ___                         ___         ___                        ___
126//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
127            >;
128        };
129
130        // 5: Navigation
131        Nav_layer {
132            label = "Nav";
133            bindings = <
134// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
135    &out OUT_TOG XXX         XXX         XXX         XXX          &bt BT_CLR    &kp PRINTSCREEN &kp HOME   &kp UP        &kp END      &kp PG_UP    XXX
136// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
137     XXX         &kp GL      &kp C_PREV  &kp C_PP    &kp C_NEXT   XXX            XXX         &kp LEFT      &kp DOWN      &kp RIGHT    &kp PG_DN    XXX
138// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
139     XXX         &bt BT_PRV  &bt BT_NXT  XXX         XXX          XXX            XXX         XXX           XXX           XXX          XXX          XXX
140// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
141          ___     ___         ___          ___         ___                         ___         ___                        ___
142//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
143            >;
144        };
145
146        // 6: Numbers
147        Numbers_layer {
148            label = "Num";
149            bindings = <
150// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
151     XXX         &kp F1      &kp F2      &kp F3      &kp F4      &kp F5        &kp MATH_1_4 &kp N7        &kp N8       &kp N9        &kp STAR     &kp SLASH
152// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
153     XXX         &kp F6      &kp F7      &kp F8      &kp F9      &kp F10       &kp MATH_1_2 &kp N4        &kp N5       &kp N6        &kp MINUS    &kp PLUS
154// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
155     XXX         &kp F11     &kp F12     &kp F13     &kp F14     &kp F15       &kp MATH_3_4 &kp N1        &kp N2       &kp N3        &kp DOT      &kp COMMA
156// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
157          ___     ___         ___          ___         ___                         ___         ___                        &kp N0
158//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
159            >;
160        };
161
162        // 7: Mouse (auto-activated on trackball movement, 1000ms timeout)
163        // Trackball = cursor movement. This layer provides clicks and scroll.
164        Mouse_layer {
165            label = "Mouse";
166            bindings = <
167// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮ ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
168     XXX         XXX         XXX         &mwh_up     XXX          XXX            XXX         XXX           XXX           XXX          XXX          XXX
169// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
170     XXX         XXX         &mwh_lf     &mwh_dn     &mwh_rg      XXX            XXX         &mkp LCLK     &mkp RCLK     &mkp MCLK    XXX          XXX
171// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤ ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
172     XXX         XXX         XXX         XXX         XXX          XXX            XXX         XXX           XXX           XXX          XXX          XXX
173// ╰────╮──────┼───────────┼───────────┼────────────┼────────────╮            ╭───────────┼─────────────╮             ╭────────────╯
174          XXX     XXX         XXX        &mkp LCLK   &mkp RCLK                  &mkp LCLK   &mkp RCLK                  &mkp MCLK
175//      ╰───────┴──────────┴───────────┴────────────┴────────────╯            ╰───────────┴─────────────╯             ╰────────────╯
176            >;
177        };
178    };
179};
180
181/*
182Local Variables:
183mode: c
184End:
185*/