Commit 6c6f35228c51

Vincent Demeester <vincent@sbr.pm>
2025-07-09 16:12:52
keyboards/eyelash_corne: Add more layer and work on an hardware bépo
This works "decently" well, but I am a bit worried how it will work on android. For example, it doesn't work properly on `kitty`. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 0e00aff
Changed files (4)
keyboards/eyelash_corne/config/combos.dtsi
@@ -4,11 +4,15 @@
 // All Layers
 ZMK_COMBO(esc, &kp ESC, RM3 RM4)
 
-// Ergo-L -> QWERTY - Inner thumbs, active on Ergo-L
-ZMK_COMBO(ergol_qwerty, &to QWE, LH0 RH0, ERG)
+// (Bépo,Qwerty) -> Ergo-L - Mid thumbs, active on Bépo and Qwerty
+ZMK_COMBO(to_ergol, &to ERG, LH1 RH1, BEP QWE)
+
+// (Ergo-L/Qwerty) -> Bépo - Inner thumbs, active on Ergo-L and Qwerty
+ZMK_COMBO(to_bepo, &to BEP, LH0 RH0, ERG QWE)
+  
+// (Bépo/Ergo-L) -> Qwerty - Outer thumbs, active on Bépo and Ergo-L
+ZMK_COMBO(to_qwerty, &to QWE, LH2 RH2, BEP ERG)
 
-// QWERTY -> Ergo-L - Outer thumbs, active on QWERTY
-ZMK_COMBO(qwerty_ergol, &to ERG, LH1 RH1, QWE)
   
 /*
 Local Variables:
keyboards/eyelash_corne/config/constants.h
@@ -5,14 +5,16 @@
 #define XXX &none
 
 // Layers
-#define QWE 0
-// #define QAC 1
-#define ERG 1
-#define EAC 2
-#define SYM 3
-#define NAV 4
-#define NUM 5
-#define MOU 6
+#define BEP 0
+#define BAC 1
+#define ERG 2
+#define EAC 3
+#define QWE 4
+#define QAC 5
+#define SYM 6
+#define NAV 7
+#define NUM 8
+#define MOU 9
 
 // Modifier keys
 #define GL LGUI
@@ -32,5 +34,7 @@
 // Hyper Key and Functions
 #define LEFT_HYPER LS(LA(LC(LGUI)))
 #define RIGHT_HYPER RS(RA(RC(RGUI)))
+#define HL LEFT_HYPER
+#define HR RIGHT_HYPER
 #define LH(keycode)            LS(LA(LC(LG(keycode))))
 #define RH(keycode)            RS(RA(RC(RG(keycode))))
keyboards/eyelash_corne/config/eyelash_corne.keymap
@@ -12,29 +12,78 @@
 
 #include "zmk-helpers/helper.h"
 #include "zmk-helpers/key-labels/eyelash42.h"
+#include "zmk-helpers/unicode-chars/currency.dtsi"
+#include "zmk-helpers/unicode-chars/french.dtsi"
 #include "combos.dtsi"
 #include "hold-tap.dtsi"
+#include "mod-morph.dtsi"
 
 #define ZMK_MOUSE_DEFAULT_MOVE_VAL 1200  // 600
 #define ZMK_MOUSE_DEFAULT_SCRL_VAL 20    // 10
-#define QUICK_TAP_MS 200
-#define TAPPING_TERM_MS 200
 #define IDLE_MS 125
 
-ZMK_LAYER(QWERTY,
+// 0: Bépo TODO
+// This is an "adaptation" of the bépo layout (https://bepo.fr/wiki/Accueil)
+// There is some difference
+// - No Ê or Ç keys, we don't have enough room
+// - Not all RIGHT_ALT and RIGHT_ALT+SHIFT are available, as those might be accessed from a different layer instead
+ZMK_LAYER(Bepo,
 // ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
-     &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T                   &kp UP                &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
+     &kp TAB     &kp B       EACUT       &kp P       &kp O        EGRAV                   &kp UP                &car_excl   &kp V         &kp D         &kp L        &kp J        &kp Z
 // ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
-     &kp EQUAL   &hml GL A   &hml AL S   &hml SL D   &hml CL F    &kp G         &kp LEFT  &kp RET  &kp RIGHT    &kp H       &hmr CR J     &hmr SR K     &hmr AR L   &hmr GL SEMI  &kp SQT
+     &kp EQUAL   &hml GL A   &hml AL U   &hml SL I   &hml CL E    &com_smc      &kp LEFT  &kp RET  &kp RIGHT    &kp C       &hmr CR T      &hmr SR S     &hmr AR R    &hmr GL N    &kp M
 // ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
-     &kp GRAVE   &kp Z       &kp X       &kp C       &kp V        &kp B         XXX       &kp DOWN              &kp N       &kp M         &kp COMMA     &kp DOT      &kp FSLH     &kp RBKT
+     &kp GRAVE   AGRAV         &kp Y       &kp X     &dot_col     &kp K         XXX       &kp DOWN              &sqt_qma    &kp Q         &kp G         &kp H        &kp F        &kp W
 // ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
                                          &kp DEL     &kp SPACE    &kp BSPC                                      &kp SL      &kp RET       &kp AR
 //                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
 	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
 )
 
+// 1: Bépo accents TODO
+ZMK_LAYER(BepoAcc,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp C       &kp O       &kp P        &kp  W                  &kp UP                &kp J       &kp M         &kp D         &to EAC      &kp Y        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL E   &hml CL N    &kp F         &kp LEFT  &kp RET  &kp RIGHT    &kp L       &hmr CR R     &hmr SR T     &hmr AR I    &hmr GL U    &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &min_qma    &kp V        &kp B         XXX       &kp DOWN              &dot_col    &kp H         &kp G         &com_smc     &kp K        &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
+
+// 2: ErgoL
 ZMK_LAYER(ErgoL,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp C       &kp O       &kp P        &kp  W                  &kp UP                &kp J       &kp M         &kp D         &to EAC      &kp Y        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL E   &hml CL N    &kp F         &kp LEFT  &kp RET  &kp RIGHT    &kp L       &hmr CR R     &hmr SR T     &hmr AR I    &hmr GL U    &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &min_qma    &kp V        &kp B         XXX       &kp DOWN              &dot_col    &kp H         &kp G         &com_smc     &kp K        &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
+
+// 3: ErgoL Accent TODO
+ZMK_LAYER(ErgoAcc,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp C       &kp O       &kp P        &kp  W                  &kp UP                &kp J       &kp M         &kp D         &to EAC      &kp Y        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL E   &hml CL N    &kp F         &kp LEFT  &kp RET  &kp RIGHT    &kp L       &hmr CR R     &hmr SR T     &hmr AR I    &hmr GL U    &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &min_qma    &kp V        &kp B         XXX       &kp DOWN              &dot_col    &kp H         &kp G         &com_smc     &kp K        &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
+
+// 4: Qwerty
+ZMK_LAYER(Qwerty,
 // ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
      &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T                   &kp UP                &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
 // ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
@@ -47,6 +96,75 @@ ZMK_LAYER(ErgoL,
 	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
 )
 
+// 5: Qwerty Accents TODO
+ZMK_LAYER(QwertyAcc,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T                   &kp UP                &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL D   &hml CL F    &kp G         &kp LEFT  &kp RET  &kp RIGHT    &kp H       &hmr CR J     &hmr SR K     &hmr AR L   &hmr GL SEMI  &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &kp C       &kp V        &kp B         XXX       &kp DOWN              &kp N       &kp M         &kp COMMA     &kp DOT      &kp FSLH     &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
+
+// 6: SYMBOLS TODO
+ZMK_LAYER(Symbols,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T                   &kp UP                &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL D   &hml CL F    &kp G         &kp LEFT  &kp RET  &kp RIGHT    &kp H       &hmr CR J     &hmr SR K     &hmr AR L   &hmr GL SEMI  &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &kp C       &kp V        &kp B         XXX       &kp DOWN              &kp N       &kp M         &kp COMMA     &kp DOT      &kp FSLH     &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
+
+// 7: Navigation TODO
+ZMK_LAYER(Nav,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T                   &kp UP                &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL D   &hml CL F    &kp G         &kp LEFT  &kp RET  &kp RIGHT    &kp H       &hmr CR J     &hmr SR K     &hmr AR L   &hmr GL SEMI  &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &kp C       &kp V        &kp B         XXX       &kp DOWN              &kp N       &kp M         &kp COMMA     &kp DOT      &kp FSLH     &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
+
+// 8: Numbers TODO
+ZMK_LAYER(Numbers,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T                   &kp UP                &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL D   &hml CL F    &kp G         &kp LEFT  &kp RET  &kp RIGHT    &kp H       &hmr CR J     &hmr SR K     &hmr AR L   &hmr GL SEMI  &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &kp C       &kp V        &kp B         XXX       &kp DOWN              &kp N       &kp M         &kp COMMA     &kp DOT      &kp FSLH     &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
+
+// 9: Mouse TODO
+ZMK_LAYER(Mouse,
+// ╭───────────┬───────────┬───────────┬───────────┬────────────┬────────────╮                                ╭───────────┬─────────────┬─────────────┬────────────┬────────────┬────────────╮
+     &kp TAB     &kp Q       &kp W       &kp E       &kp R        &kp T                   &kp UP                &kp Y       &kp U         &kp I         &kp O        &kp P        &kp LBKT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp EQUAL   &hml GL A   &hml AL S   &hml SL D   &hml CL F    &kp G         &kp LEFT  &kp RET  &kp RIGHT    &kp H       &hmr CR J     &hmr SR K     &hmr AR L   &hmr GL SEMI  &kp SQT
+// ├───────────┼───────────┼───────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┼────────────┼────────────┤
+     &kp GRAVE   &kp Z       &kp X       &kp C       &kp V        &kp B         XXX       &kp DOWN              &kp N       &kp M         &kp COMMA     &kp DOT      &kp FSLH     &kp RBKT
+// ╰───────────┴───────────────────────┼───────────┼────────────┼────────────┤                                ├───────────┼─────────────┼─────────────┼────────────┴────────────┴────────────╯
+                                         ___         ___          ___                                           ___         ___           ___
+//                                     ╰───────────┴────────────┴────────────╯                                ╰───────────┴─────────────┴─────────────╯
+	  , &inc_dec_kp C_VOLUME_UP C_VOLUME_DOWN
+)
 /*
 
 // Bépo key
keyboards/eyelash_corne/config/mod-morph.dtsi
@@ -0,0 +1,61 @@
+#define SAPOS  LS(COMMA)        // '
+#define DAPOS  LS(DOT)          // "
+
+#define EACUT  &fr_e_acute      // é/É
+#define EGRAV  &fr_e_grave      // è/È
+#define AGRAV  &fr_a_grave      // à/À
+
+#define ACC_CI LBKT             // ^
+
+ZMK_UNICODE_SINGLE(three_dot, N2, N0, N2, N6) // … U+2026
+
+// tap: minus | shift + tap: question mark
+ZMK_MOD_MORPH(min_qma,
+    bindings = <&kp MINUS>, <&kp QMARK>;
+    mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// tap: comma | shift + tab: semicolon
+ZMK_MOD_MORPH(com_smc,
+    bindings = <&kp COMMA>, <&kp SEMICOLON>;
+    mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+  
+// tap: period | shift + tap: colon
+ZMK_MOD_MORPH(dot_col,
+    bindings = <&kp DOT>, <&kp COLON>;
+    mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// Bépo morphs
+
+// tap: quote (') | shift + tab: question mark
+ZMK_MOD_MORPH(sqt_qma,
+    bindings = <&kp SQT>, <&kp QMARK>;
+    mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+// tap: period | shift + tap : colon | right_alt + tap: …
+/* ZMK_MOD_MORPH(col_3p,
+ *     bindings = <&kp COL>, <three_dot>;
+ *     mods = <MOD_RALT>;
+ * )
+ * ZMK_MOD_MORPH(dot_col_p,
+ *     bindings = <&kp DOT>, <&col_3p>;
+ *     mods = <(MOD_LSFT|MOD_RSFT|MOD_RALT)>;
+ *     keep-mods = <MOD_RALT>;
+ * ) */
+
+// tap: ACC_CI (^) | shift + tap: EXCLAMATION (!)
+ZMK_MOD_MORPH(car_excl,
+    bindings = <&kp CARET>, <&kp EXCLAMATION>;
+    mods = <(MOD_LSFT|MOD_RSFT)>;
+)
+
+
+
+/*
+Local Variables:
+mode: c
+End:
+*/