fedora-csb-system-manager
  1#+title: Eyelash Corne ZMK Config
  2
  3Custom ZMK firmware for the Eyelash Corne keyboard (42-key split, nice!nano v2, wireless Bluetooth).
  4
  5* Features
  6
  7- Layouts: Bépo (primary), ErgoL, QWERTY
  8- Home row mods, smart numword layer, combos, mod-morph, leader keys
  9- Mouse emulation, French/currency Unicode support
 10- nice!view display (gem animation), RGB underglow (auto-off on idle)
 11- Power: 12min sleep timeout, +8dBm BT transmission
 12
 13* Build & Flash
 14
 15#+begin_src bash
 16./go.sh build  # Build both sides (output: firmwares/)
 17./go.sh flash  # Build and flash left/right (bootloader mode prompts)
 18#+end_src
 19
 20Supports auto-mount (=/run/media/$USER/NICENANO=) and manual mount (=/mnt=).
 21
 22* Keymap Visualization
 23
 24[[file:../eyelash_corne.svg]]
 25
 26* Layers
 27
 28| Layer | Name       | Description                                              |
 29|-------+------------+----------------------------------------------------------|
 30| L0    | Bépo       | Primary French layout, home row mods, Unicode accents    |
 31| L1    | ErgoL      | Alternative French layout                                |
 32| L2    | QWERTY     | Standard layout                                          |
 33| L3    | Accents    | French vowels (´ ` ^ ¨), Æ Œ Ñ Ç                         |
 34| L4    | Symbols    | Programming symbols, brackets, operators                 |
 35| L5    | Numbers    | Calculator-style numpad                                  |
 36| L6    | Navigation | Arrows, page nav, shortcuts                              |
 37| L7    | Function   | F1-F12, media, system controls                           |
 38
 39*Home row mods (Bépo)*: Left: A(GUI) U(Alt) I(Shift) E(Ctrl) | Right: C(Hyper) T(Ctrl) S(Shift) R(Alt) N(GUI)
 40
 41* Configuration
 42
 43- *Power*: 12min sleep timeout, RGB auto-off, soft off support
 44- *Bluetooth*: +8dBm transmission, multiple devices
 45- *Display*: nice!view gem animation (4.8s interval), shows layer/battery/BT
 46- *Mouse*: Movement 1200, scroll 20, idle 125ms
 47
 48Build config (=build.yaml=): Left/right halves with nice!view, settings reset
 49
 50* Leader Key Sequences
 51
 52Leader key is activated with the *RH0+RH2 combo* (right thumb cluster: Shift + Alt on QWERTY). After activation, press a sequence of keys (timeout: 300ms per key) to insert text snippets or launch applications.
 53
 54** Layout Switching
 55
 56| Sequence | Output        | Description                |
 57|----------+---------------+----------------------------|
 58| l b      | Switch to BÉP | Switch to Bépo layout      |
 59| l e      | Switch to ERG | Switch to ErgoL layout     |
 60| l q      | Switch to QWE | Switch to QWERTY layout    |
 61
 62** Development Patterns - General
 63
 64| Sequence | Output              | Description                 |
 65|----------+---------------------+-----------------------------|
 66| c n      | nil                 | Go nil value                |
 67| c e      | if err != nil {↵⇥   | Go error check              |
 68| c l      | console.log()       | JavaScript console.log      |
 69| c p      | fmt.Println()       | Go fmt.Println              |
 70| c f      | function() {}       | JavaScript function         |
 71| c a      | () => {}            | JavaScript arrow function   |
 72
 73** Development Patterns - Python
 74
 75| Sequence | Output                                       | Description              |
 76|----------+----------------------------------------------+--------------------------|
 77| p i      | if __name__ == "__main__":↵⇥                 | Python main block        |
 78| p d      | def ():↵⇥                                    | Python function def      |
 79| p c      | class :↵⇥                                    | Python class def         |
 80| p p      | print(f"")                                   | Python f-string print    |
 81| p t      | try:↵⇥↵except Exception as e:↵⇥              | Python try/except        |
 82| p w      | with open("", "r") as f:↵⇥                   | Python with open         |
 83
 84** Development Patterns - Emacs Lisp
 85
 86| Sequence | Output              | Description                  |
 87|----------+---------------------+------------------------------|
 88| e d      | (defun  ()↵         | Emacs Lisp defun             |
 89| e i      | (interactive)       | Emacs Lisp interactive       |
 90| e l      | (let ((             | Emacs Lisp let binding       |
 91| e s      | (setq  )            | Emacs Lisp setq              |
 92| e m      | (message "")        | Emacs Lisp message           |
 93| e r      | (require ')         | Emacs Lisp require           |
 94
 95** Development Patterns - Nix
 96
 97| Sequence | Output                           | Description                    |
 98|----------+----------------------------------+--------------------------------|
 99| n f      | { pkgs, ... }:                   | Nix function signature         |
100| n l      | let↵⇥↵in↵                        | Nix let/in expression          |
101| n w      | with pkgs; [↵⇥↵]                 | Nix with statement             |
102| n i      | inherit ;                        | Nix inherit keyword            |
103| n b      | buildInputs = [ ];               | Nix buildInputs attribute      |
104| n p      | pkgs.writeShellScriptBin "" ''↵⇥↵'' | Nix shell script wrapper    |
105
106** Import Patterns
107
108| Sequence | Output                          | Description                    |
109|----------+---------------------------------+--------------------------------|
110| i p      | import                          | Python import                  |
111| i f      | from  import                    | Python from import             |
112| i n      | { pkgs }: {↵⇥↵}                 | Nix module import              |
113| i e      | (use-package ↵⇥                 | Emacs use-package              |
114
115** Personal Macros
116
117| Sequence | Output                                         | Description                 |
118|----------+------------------------------------------------+-----------------------------|
119| m e      | vincent@sbr.pm                                 | Email address               |
120| m g      | Vincent Demeester <vincent@sbr.pm>             | Git signature               |
121| m s      | --↵Vincent Demeester↵vincent@sbr.pm            | Email signature             |
122
123** Application Shortcuts
124
125These leader sequences trigger niri window manager keybindings:
126
127| Sequence | Keybinding          | Application          |
128|----------+---------------------+----------------------|
129| a d      | Mod+D               | Fuzzel (app launcher)|
130| a e      | Mod+Shift+Enter     | Emacs (client)       |
131| a t      | Mod+Enter           | Kitty (terminal)     |
132| a j      | Mod+Control+D       | Rofimoji (emoji)     |
133| a v      | Mod+Control+V       | Cliphist (clipboard) |
134| a r      | Mod+Shift+D         | Raffi (launcher)     |
135
136* Inspirations and References
137
138- https://github.com/urob/zmk-config
139- https://github.com/manna-harbour/miryoku_zmk
140- https://github.com/mctechnology17/zmk-config
141- https://github.com/urob/zmk-helpers
142- https://github.com/rayduck/pnohty
143- https://sunaku.github.io/home-row-mods.html
144- https://sunaku.github.io/ergohaven-remnant-keyboard.html
145- https://github.com/JeffDess/zmk-config
146- https://github.com/Townk/zmk-config
147- https://github.com/GPeye/hammerbeam-slideshow
148- https://github.com/zzeneg/zmk-nice-view-hid
149- https://github.com/GPeye/urchin-peripheral-animation
150- https://github.com/GPeye/nice-view-mod
151- https://github.com/n3oney/zmk-config
152- https://github.com/moutis/zmk-config
153- https://github.com/englmaxi/zmk-config
154- https://github.com/SethMilliken/zmk-config
155- https://github.com/minusfive/knucklehead