510 lines
16 KiB
Plaintext
510 lines
16 KiB
Plaintext
/*
|
|
* Copyright (c) 2020 The ZMK Contributors
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#include <behaviors.dtsi>
|
|
#include <dt-bindings/zmk/keys.h>
|
|
#include <dt-bindings/zmk/bt.h>
|
|
|
|
// layers definition
|
|
#define DEFAULT 0
|
|
#define SYMBOLE 1
|
|
#define NAVIGATION 2
|
|
#define FUNCTION 3
|
|
|
|
/* ======
|
|
* MACROS
|
|
* ======
|
|
*/
|
|
|
|
/ {
|
|
macros {
|
|
// ['] or ["] followed by a space for QWERTY intl
|
|
ZMK_MACRO(apostrophe,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp SQT &kp SPACE>;
|
|
)
|
|
// [`] or [~] followed by a space for QWERTY intl
|
|
ZMK_MACRO(tilde,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp GRAVE &kp SPACE>;
|
|
)
|
|
// [^] followed by a space for QWERTY intl
|
|
ZMK_MACRO(chapeau,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp CARET &kp SPACE>;
|
|
)
|
|
// [é]
|
|
ZMK_MACRO(macroeaigumin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp SQT &kp E>;
|
|
)
|
|
// [É]
|
|
ZMK_MACRO(macroeaigumaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp SQT>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp E>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [è]
|
|
ZMK_MACRO(macroegravemin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp GRAVE &kp E>;
|
|
)
|
|
// [È]
|
|
ZMK_MACRO(macroegravemaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp GRAVE>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp E>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [ê]
|
|
ZMK_MACRO(macroecirconmin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp CARET &kp E>;
|
|
)
|
|
// [Ê]
|
|
ZMK_MACRO(macroecirconmaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp CARET>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp E>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [ë]
|
|
ZMK_MACRO(macronoelmin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp SQT>,
|
|
<¯o_release &kp LSHFT>,
|
|
<¯o_tap &kp E>;
|
|
)
|
|
// [Ë]
|
|
ZMK_MACRO(macronoelmaj,
|
|
wait-ms = <100>;
|
|
tap-ms = <100>;
|
|
bindings = <¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp SQT>,
|
|
<¯o_tap &kp E>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [ç] [Ç]
|
|
ZMK_MACRO(macrocdille,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <¯o_press &kp RALT>,
|
|
<¯o_tap &kp COMMA>,
|
|
<¯o_release &kp RALT>;
|
|
)
|
|
// [à]
|
|
ZMK_MACRO(macroagravmin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp GRAVE &kp A>;
|
|
)
|
|
// [À]
|
|
ZMK_MACRO(macroagravmaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp GRAVE>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp A>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [â]
|
|
ZMK_MACRO(macroacircmin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp CARET &kp A>;
|
|
)
|
|
// [Â]
|
|
ZMK_MACRO(macroacircmaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp CARET>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp A>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [î]
|
|
ZMK_MACRO(macroicircmin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp CARET &kp I>;
|
|
)
|
|
// [Î]
|
|
ZMK_MACRO(macroicircmaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp CARET>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp I>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [ï]
|
|
ZMK_MACRO(macroitremamin,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp SQT>,
|
|
<¯o_release &kp LSHFT>,
|
|
<¯o_tap &kp I>;
|
|
)
|
|
// [Ï]
|
|
ZMK_MACRO(macroitremamaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp SQT>,
|
|
<¯o_tap &kp I>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [ô]
|
|
ZMK_MACRO(macroocircmin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp CARET &kp O>;
|
|
)
|
|
// [Ô]
|
|
ZMK_MACRO(macroocircmaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp CARET>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp O>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [ù]
|
|
ZMK_MACRO(macrougravemin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp GRAVE &kp U>;
|
|
)
|
|
// [Ù]
|
|
ZMK_MACRO(macrougravemaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp GRAVE>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp U>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// [û]
|
|
ZMK_MACRO(macroucircmin,
|
|
wait-ms = <0>;
|
|
tap-ms = <0>;
|
|
bindings = <&kp CARET &kp U>;
|
|
)
|
|
// [Û]
|
|
ZMK_MACRO(macroucircmaj,
|
|
wait-ms = <40>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_tap &kp CARET>,
|
|
<¯o_press &kp LSHFT>,
|
|
<¯o_tap &kp U>,
|
|
<¯o_release &kp LSHFT>;
|
|
)
|
|
// Ctrl + Alt + Del
|
|
ZMK_MACRO(macroctrlaltdel,
|
|
wait-ms = <100>;
|
|
tap-ms = <40>;
|
|
bindings = <¯o_press &kp LCTRL>,
|
|
<¯o_press &kp LALT>,
|
|
<¯o_press &kp DEL>,
|
|
<¯o_release &kp LCTRL>,
|
|
<¯o_release &kp LALT>,
|
|
<¯o_release &kp DEL>;
|
|
)
|
|
};
|
|
/* ======
|
|
* MODTAP
|
|
* ======
|
|
*/
|
|
|
|
|
|
behaviors {
|
|
// quick tap for home raw ALT with quick-tab to prevent accident activation
|
|
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>;
|
|
};
|
|
// call macro apostrophe ['] and ["] or if hold call LGUI
|
|
apo: apo {
|
|
compatible = "zmk,behavior-hold-tap";
|
|
label = "APO";
|
|
#binding-cells = <2>;
|
|
flavor = "tap-preferred";
|
|
tapping-term-ms = <200>;
|
|
quick-tap-ms = <125>;
|
|
global-quick-tap;
|
|
bindings = <&kp>, <&apostrophe>;
|
|
};
|
|
|
|
/* ========
|
|
* MODMORPH
|
|
* ========
|
|
*/
|
|
// [:] [;] inversion
|
|
column_invert: column_invert {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "COLUMNINVERT";
|
|
#binding-cells = <0>;
|
|
bindings = <&kp COLON>, <&kp SEMI>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
// [é] [É]
|
|
e_aigu: e_aigu {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "EAIGU";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oeaigumin>, <¯oeaigumaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
e_grave: e_grave {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "EGRAVE";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oegravemin>, <¯oegravemaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
e_circ: e_circ {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "ECIRC";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oecirconmin>, <¯oecirconmaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
noel: noel {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "NOEL";
|
|
#binding-cells = <0>;
|
|
bindings = <¯onoelmin>, <¯onoelmaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
a_grave: a_grave {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "AGRAVE";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oagravmin>, <¯oagravmaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
a_circ: a_circ {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "ACIRC";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oacircmin>, <¯oacircmaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
i_circ: i_circ {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "ICIRC";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oicircmin>, <¯oicircmaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
i_trema: i_trema {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "ITREMA";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oitremamin>, <¯oitremamaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
o_circ: o_circ {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "OCIRC";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oocircmin>, <¯oocircmaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
u_grave: u_grave {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "UGRAVE";
|
|
#binding-cells = <0>;
|
|
bindings = <¯ougravemin>, <¯ougravemaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
u_circ: u_circ {
|
|
compatible = "zmk,behavior-mod-morph";
|
|
label = "UCIRC";
|
|
#binding-cells = <0>;
|
|
bindings = <¯oucircmin>, <¯oucircmaj>;
|
|
mods = <(MOD_LSFT)>;
|
|
};
|
|
|
|
};
|
|
/* ======
|
|
* COMBOS
|
|
* ======
|
|
*/
|
|
combos {
|
|
compatible = "zmk,combos";
|
|
combo_eaigu {
|
|
timeout-ms = <30>;
|
|
key-positions = <19 20>;
|
|
bindings = <&e_aigu>;
|
|
};
|
|
combo_egrv {
|
|
timeout-ms = <30>;
|
|
key-positions = <20 21>;
|
|
bindings = <&e_grave>;
|
|
};
|
|
combo_ecircon {
|
|
timeout-ms = <40>;
|
|
key-positions = <19 20 21>;
|
|
bindings = <&e_circ>;
|
|
};
|
|
combo_cdille {
|
|
timeout-ms = <30>;
|
|
key-positions = <26 27>;
|
|
bindings = <¯ocdille>;
|
|
};
|
|
combo_noel {
|
|
timeout-ms = <30>;
|
|
key-positions = <19 21>;
|
|
bindings = <&noel>;
|
|
};
|
|
combo_agrave {
|
|
timeout-ms = <30>;
|
|
key-positions = <13 14>;
|
|
bindings = <&a_grave>;
|
|
};
|
|
combo_acirc {
|
|
timeout-ms = <40>;
|
|
key-positions = <12 13 14>;
|
|
bindings = <&a_circ>;
|
|
};
|
|
combo_icirc {
|
|
timeout-ms = <40>;
|
|
key-positions = <20 21 22>;
|
|
bindings = <&i_circ>;
|
|
};
|
|
combo_itrema {
|
|
timeout-ms = <40>;
|
|
key-positions = <20 22>;
|
|
bindings = <&i_trema>;
|
|
};
|
|
combo_ocirc {
|
|
timeout-ms = <40>;
|
|
key-positions = <21 22 23>;
|
|
bindings = <&o_circ>;
|
|
};
|
|
combo_ugrave {
|
|
timeout-ms = <30>;
|
|
key-positions = <8 9>;
|
|
bindings = <&u_grave>;
|
|
};
|
|
combo_ucirc {
|
|
timeout-ms = <40>;
|
|
key-positions = <7 8 9>;
|
|
bindings = <&u_circ>;
|
|
};
|
|
|
|
};
|
|
};
|
|
|
|
|
|
/* ====================
|
|
* MOD TAP MODIFICATION
|
|
* ====================
|
|
*/
|
|
|
|
|
|
&mt {
|
|
tapping-term-ms = <400>;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* =================
|
|
* KEYMAP DEFINITION
|
|
* =================
|
|
*/
|
|
|
|
/ {
|
|
keymap {
|
|
compatible = "zmk,keymap";
|
|
|
|
DEFAULT {
|
|
// -----------------------------------------------------------------------------------------
|
|
// | - _ | Q | W | F | P | B | | J | L | U | Y | :; | + = |
|
|
// | TAB | A | R | S/ALT | T | G | | M | N | E | I | O | ' " |
|
|
// |ESC/SHT| Z | X | C | D | V | | K | H | ,< | .> | /? | ~ ` |
|
|
// |ENT/CTL| SPC | BCK | | SYM | SFT |GUI/FN|
|
|
bindings = <
|
|
&kp MINUS &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &column_invert &kp EQUAL
|
|
&kp TAB &kp A &kp R &gqt LALT S &kp T &kp G &kp M &kp N &kp E &kp I &kp O &apo LGUI 0
|
|
&mt LSHFT ESC &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &kp COMMA &kp DOT &kp FSLH &tilde
|
|
&mt LCTRL RET < 2 SPACE &kp BSPC &mo 1 &kp LSHFT < 3 LGUI
|
|
>;
|
|
};
|
|
SYMBOLE {
|
|
// -----------------------------------------------------------------------------------------
|
|
// | - _ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + = |
|
|
// | TAB | ! | @ | # | $ | % | | € | ^ | & | * | | | |
|
|
// | | ( | ) | [ | ] | | | | { | } | . | \ | |
|
|
// | boot | SPC | BCK | | | NAV | boot|
|
|
bindings = <
|
|
&trans &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &trans
|
|
&trans &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp RA(N5) &chapeau &kp AMPS &kp STAR &kp PIPE &none
|
|
&none &kp LPAR &kp RPAR &kp LBKT &kp RBKT &none &none &kp LBRC &kp RBRC &kp DOT &kp BSLH &none
|
|
&bootloader &kp SPACE &kp BSPC &none &mo 2 &bootloader
|
|
>;
|
|
};
|
|
|
|
NAVIGATION {
|
|
// --------------------------------------------------------------------------------------------------------------------------
|
|
// | | Vol-| ⇧ | ↑ | ⇩ |Vol+ | | |Contr-| |Contr+| | |
|
|
// | CTRLALTDEL |HOME | ← | ↓ | → | END | | | Vol- | mute| Vol+ | | |
|
|
// | DEL | |CTL+←| mute|CTL+→| | | | prev | play| next | | |
|
|
// | | | | | | | |
|
|
bindings = <
|
|
&none &kp C_VOL_DN &kp PG_UP &kp UP &kp PG_DN &kp C_VOL_UP &none &kp C_BRI_DN &none &kp C_BRI_UP &none &none
|
|
¯octrlaltdel &kp HOME &kp LEFT &kp DOWN &kp RIGHT &kp END &none &kp C_VOL_DN &kp C_MUTE &kp C_VOL_UP &none &none
|
|
&kp DEL &none &kp LC(LEFT) &kp C_MUTE &kp LC(RIGHT) &none &none &kp C_PREV &kp C_PP &kp C_NEXT &none &none
|
|
&none &none &none &none &none &none
|
|
>;
|
|
};
|
|
|
|
FUNCTION {
|
|
// -----------------------------------------------------------------------------------------
|
|
// | | F1 | F2 | F3 | F4 | | | | | | | | |
|
|
// | | F5 | F6 | F7 | F8 | | | | | ALT | | | GUI |
|
|
// | | F9 | F10 | F11 | F12 | | | | | | | | |
|
|
// | CTRL| | | | | SHFT| |
|
|
bindings = <
|
|
&none &kp F1 &kp F2 &kp F3 &kp F4 &none &none &none &none &none &none &none
|
|
&none &kp F5 &kp F6 &kp F7 &kp F8 &none &none &none &kp LALT &none &none &kp LGUI
|
|
&none &kp F9 &kp F10 &kp F11 &kp F12 &none &none &none &none &none &none &none
|
|
&kp LCTRL &none &none &none &kp LSHFT &none
|
|
>;
|
|
};
|
|
};
|
|
};
|
|
|
|
// redefine cs-gpios because ultralignt corne from pete do not use the nice!view recommandation pin
|
|
&nice_view_spi {
|
|
cs-gpios = <&pro_micro 0 GPIO_ACTIVE_HIGH>;
|
|
};
|