main
  1draw_config:
  2  key_w: 60.0
  3  key_h: 56.0
  4  split_gap: 30.0
  5  combo_w: 32.0
  6  combo_h: 32.0
  7  key_rx: 6.0
  8  key_ry: 6.0
  9  n_columns: 1
 10  separate_combo_diagrams: false
 11  combo_diagrams_scale: 2
 12  inner_pad_w: 3.0
 13  inner_pad_h: 3.0
 14  outer_pad_w: 30.0
 15  outer_pad_h: 56.0
 16  line_spacing: 1.2
 17  arc_radius: 6.0
 18  append_colon_to_layer_header: false
 19  small_pad: 2.0
 20  legend_rel_x: 0.0
 21  legend_rel_y: 0.0
 22  draw_key_sides: false
 23  key_side_pars:
 24    rel_x: 0
 25    rel_y: 4
 26    rel_w: 12
 27    rel_h: 12
 28    rx: 4
 29    ry: 4
 30  svg_style: |
 31    /* inherit to force styles through use tags */
 32    svg path {
 33        fill: inherit;
 34    }
 35
 36    /* font and background color specifications */
 37    svg.keymap {
 38        font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;
 39        font-size: 14px;
 40        font-weight: bold;
 41        font-kerning: normal;
 42        text-rendering: optimizeLegibility;
 43        fill: white;
 44    }
 45
 46    /* default key styling */
 47    rect.key {
 48        fill: #1c2128;
 49        stroke: #adbac7;
 50        stroke-width: 1;
 51    }
 52
 53    /* default key side styling, only used is draw_key_sides is set */
 54    rect.side {
 55        filter: brightness(90%);
 56    }
 57
 58    /* color accent for combo boxes */
 59    rect.combo, rect.combo-separate {
 60        fill: #4a5568;
 61        stroke: #cbd5e0;
 62        stroke-width: 2;
 63    }
 64
 65    /* color accent for held keys */
 66    rect.held, rect.combo.held {
 67        fill: #FF9E3B;
 68    }
 69
 70    /* color accent for ghost (optional) keys */
 71    rect.ghost, rect.combo.ghost {
 72        stroke-dasharray: 4, 4;
 73        stroke-width: 2;
 74    }
 75
 76    text {
 77        text-anchor: middle;
 78        dominant-baseline: middle;
 79    }
 80
 81    /* styling for layer labels */
 82    text.label {
 83        font-weight: bold;
 84        text-anchor: start;
 85        fill: #adbac7;
 86        font-size: 28px;
 87        stroke: #777;
 88        stroke-width: 0px;
 89        paint-order: stroke;
 90    }
 91
 92    /* styling for combo tap, and key hold/shifted label text */
 93    text.combo, text.hold, text.shifted {
 94        font-size: 10px;
 95        font-weight: bold;
 96        text-transform: uppercase;
 97        fill: white;
 98    }
 99
100    text.hold {
101        text-anchor: middle;
102        dominant-baseline: auto;
103    }
104
105    text.shifted {
106        text-anchor: middle;
107        dominant-baseline: hanging;
108    }
109
110    /* styling for hold/shifted label text in combo box */
111    text.combo.hold, text.combo.shifted {
112        font-size: 8px;
113    }
114
115    /* lighter symbol for transparent keys */
116    text.trans {
117        fill: #7b7e81;
118    }
119
120    /* styling for unused/empty keys (XXXXXXX, KC_NO) */
121    /* Target keys that have neither text nor glyph (use) elements */
122    /* Exclude combo diagram keys */
123    g[class*='layer-']:not([class*='combopos']) g.key:not(:has(text)):not(:has(use)) rect.key {
124        fill: #0d1117;
125        stroke: #30363d;
126        stroke-dasharray: 2, 2;
127        opacity: 0.5;
128    }
129
130    /* styling for combo dendrons */
131    path.combo {
132        stroke-width: 1;
133        stroke: gray;
134        fill: none;
135    }
136
137    /* Start Tabler Icons Cleanup */
138    /* cannot use height/width with glyphs */
139
140    .icon-tabler > path {
141        fill: white;
142        stroke: none;
143    }
144
145    .icon-tabler-cut > path,
146    .icon-tabler-space > path,
147    .icon-tabler-copy > path,
148    .icon-tabler-clipboard > path,
149    .icon-tabler-camera > path,
150    .icon-tabler-volume > path,
151    .icon-tabler-volume-2 > path,
152    .icon-tabler-bluetooth-x > path,
153    .icon-tabler-bluetooth-prev > path,
154    .icon-tabler-bluetooth-next > path {
155        fill: none;
156        stroke: white;
157    }
158
159    #tabler\:cut,
160    #tabler\:copy,
161    #tabler\:clipboard,
162    #tabler\:camera {
163       transform: scale(1.4);
164       transform-box: fill-box;
165    }
166
167    #tabler\:space {
168        transform: scale(1.8);
169        transform-box: fill-box;
170    }
171
172    #tabler\:volume,
173    #tabler\:volume-2 {
174        transform: scale(1.7);
175        transform-box: fill-box;
176    }
177
178    #tabler\:arrow-big-up,
179    #tabler\:arrow-big-down,
180    #tabler\:arrow-big-left,
181    #tabler\:arrow-big-right {
182        transform: scale(1.3);
183        transform-box: fill-box;
184    }
185
186    /* hide tabler's default box */
187    .icon-tabler > path[stroke="none"][fill="none"] {
188        visibility: hidden;
189    }
190    /* End Tabler Icons Cleanup */
191
192    /* Material glyphs */
193    #material\:keyboard_return{
194      transform: scale(2);
195      transform-box: fill-box;
196    }
197
198    #material\:backspace{
199      transform: scale(2) translateY(1px);
200      transform-box: fill-box;
201    }
202
203    .shifted.material\:left_click {
204        transform: scale(1.2) translateY(5px);
205        transform-box: fill-box;
206    }
207
208    #material\:left_click,
209    #material\:right_click,
210    #material\:keyboard_tab {
211        transform: scale(1.5);
212        transform-box: fill-box;
213    }
214
215    /* Custom glyphs */
216    .bt-clear {
217        transform: scale(2.4) translate(2px, 1.5px);
218    }
219
220    .bt-prev,
221    .bt-next {
222        transform: scale(1.5) translate(2px);
223    }
224
225    #delete {
226      transform: scale(2) rotate(180deg) translate(-1px, -1px);
227      transform-box: fill-box;
228    }
229
230    #nbsp {
231        transform: scale(2.5);
232        transform-box: fill-box;
233    }
234
235    .combo.scroll {
236        transform: scale(1.2) translate(-19px, -6px);
237    }
238
239    .scroll,
240    .scroll-right {
241        transform: scale(1.5);
242    }
243
244    .scroll-down {
245        transform: scale(1.5) translateY(-2px);
246    }
247
248    .scroll-up {
249        transform: scale(1.5) translateY(2px);
250    }
251
252    .scroll-left {
253        transform: scale(1.5) translate(2px);
254    }
255
256    .click-middle {
257        transform: scale(1.7) translate(2px, 1px);
258        transform-box: fill-box;
259    }
260
261    .cursor-right {
262        transform: scale(1.8);
263    }
264
265    .cursor-down {
266        transform: scale(1.8) translateY(-1px);
267    }
268
269    .cursor-up {
270        transform: scale(1.9) translateY(1px);
271    }
272
273    .cursor-left {
274        transform: scale(1.8) translate(1px);
275    }
276
277    .output-toggle {
278        transform: scale(2.5);
279        fill: none;
280        stroke: white;
281        stroke-width: 4px;
282    }
283
284    .layer-lock {
285        transform: scale(1.8);
286        transform-box: fill-box;
287    }
288  svg_extra_style: ''
289  shrink_wide_legends: 6
290  glyph_tap_size: 14
291  glyph_hold_size: 12
292  glyph_shifted_size: 10
293  glyphs:
294    bt-clear: |
295      <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-bluetooth-x" width="32" height="32" viewBox="0 0 32 32" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
296        <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
297        <path d="M7 8l10 8l-5 4v-16l1 .802m0 6.396l-6 4.802" />
298        <path d="M16 6l4 4" />
299        <path d="M20 6l-4 4" />
300      </svg>
301    bt-next: |
302      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon icon-tabler icon-tabler-bluetooth-next">
303          <g stroke="none">
304              <path d="M10.59.5h13.65v13.64H10.59Z"/>
305              <path fill="currentColor" d="M2 5v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 2 5Zm11 0v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 13 5Z" style="fill:#fff;fill-opacity:1;stroke:none;stroke-opacity:1" transform="translate(10.59 .5) scale(.5686)"/>
306          </g>
307          \g&gt;
308          <path d="m1.69 7.1 12.45 9.96-6.23 4.98V2.1l1.25 1m0 7.97-7.47 5.98" style="stroke:#fff;stroke-width:2.49081;stroke-opacity:1"/>
309          \g&gt;
310      </svg>
311    bt-prev: |
312        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon icon-tabler icon-tabler-bluetooth-next">
313            <g stroke="none">
314          <path d="M24.24 14.14H10.59V.5h13.65Z"/>
315          <path fill="currentColor" d="M2 5v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 2 5Zm11 0v14a1 1 0 0 0 1.66.75l8-7a1 1 0 0 0 0-1.5l-8-7A1 1 0 0 0 13 5Z" style="fill:#fff;fill-opacity:1;stroke:none;stroke-opacity:1" transform="rotate(180 12.12 7.07) scale(.5686)"/>
316          </g>
317          \g&gt;
318          <path d="m1.69 7.1 12.45 9.96-6.23 4.98V2.1l1.25 1m0 7.97-7.47 5.98" style="stroke:#fff;stroke-width:2.49081;stroke-opacity:1"/>
319          \g&gt;
320        </svg>
321    output-toggle: |
322      <svg xmlns="http://www.w3.org/2000/svg" width="30.33" height="39.21" viewBox="0 0 8.03 10.37">
323          <g style="fill:#fff;fill-opacity:1">
324              <g style="fill:#fff;fill-opacity:1;stroke-width:.365;stroke-dasharray:none">
325                  <path d="M106.89 150.28a.53.53 0 1 0 1.06 0 .53.53 0 1 0-1.06 0" style="fill:#fff;fill-opacity:1;stroke-width:.365;stroke-dasharray:none" transform="translate(-100.98 -140.44)"/>
326                  <path d="M107.42 149.75v-3.04m-1.32 1.19v.8l1.32.79m0-.39 1.32-.54v-.66" style="fill:none;fill-opacity:1;stroke:#fff;stroke-width:.365;stroke-dasharray:none;stroke-opacity:1" transform="translate(-100.98 -140.44)"/>
327                  <path d="M108.48 147.9h.53v-.53h-.53zm-2.63-.26a.26.26 0 1 0 .53 0 .26.26 0 1 0-.53 0m1.05-.93h1.05l-.53-.66Z" style="fill:#fff;fill-opacity:1;stroke-width:.365;stroke-dasharray:none" transform="translate(-100.98 -140.44)"/>
328              </g>
329              <path d="m98.5 149.47 2.65 2.11-1.32 1.06v-4.23l1.32 1.06-2.64 2.11" style="fill:none;fill-opacity:1;stroke:#fff;stroke-width:.365;stroke-dasharray:none;stroke-opacity:1" transform="translate(-98.4 -148.03)"/>
330              <path d="m99.58 156.1 4.97-4.97" style="fill:none;fill-opacity:1;stroke:#fff;stroke-width:.365;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" transform="translate(-98.4 -148.03)"/>
331          </g>
332      </svg>
333    delete: |
334      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M360-200q-22 0-40-11.5T289-241L120-480l169-239q13-18 31-29.5t40-11.5h420q24.75 0 42.375 17.625T840-700v440q0 24.75-17.625 42.375T780-200H360Zm420-60v-440 440Zm-431 0h431v-440H349L195-480l154 220Zm99-66 112-112 112 112 43-43-113-111 111-111-43-43-110 112-112-112-43 43 113 111-113 111 43 43Z"/></svg>
335    scroll: |
336      <svg xmlns="http://www.w3.org/2000/svg" width="289.74" height="289.74" viewBox="0 0 76.66 76.66">
337          <g transform="translate(-55.59 -96.9)">
338              <circle cx="93.92" cy="135.22" r="13.53" style="fill:#fff;fill-opacity:1;stroke:none;stroke-width:.30994;stroke-linecap:round"/>
339              <path d="M110.63 113.6 93.92 96.9 77.2 113.6h16.7ZM77.2 156.84l16.72 16.71 16.71-16.7H93.92Zm38.34-4.9 16.7-16.72-16.7-16.7v16.7zM72.3 118.51l-16.7 16.71 16.71 16.72v-16.72z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
340          </g>
341      </svg>
342    nbsp: |
343      <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 -960 1120 1120">
344        <path fill="#fff" d="M240.21-188.49v-240h80v160h480v-160h80v240z"/>
345        <path d="M571.53-325.45h-60.52l-82.4-193.05h-2.36q4.56 22.06 4.56 47.4v145.65h-45.94v-266.51h60.88l81.67 191.04h2q-3.46-19.14-3.46-45.57v-145.47h45.57zm27.04-266.51h67.99q41.56 0 60.52 16.22 18.96 16.05 18.96 51.23 0 23.15-10.03 38.83-10.02 15.49-27.34 18.77v1.82q22.6 5.66 32.63 21.15 10.03 15.5 10.03 41.2 0 36.27-19.5 56.87-19.33 20.42-53.06 20.42h-80.2zm46.66 107.19h22.79q15.68 0 22.06-8.39 6.38-8.38 6.38-24.97 0-16.6-7.3-23.7-7.29-7.3-22.96-7.3h-20.97zm0 41.38v74.55h24.98q15.5 0 22.96-9.47 7.66-9.48 7.66-29.35 0-35.73-31.35-35.73z" aria-label="NB" style="fill:#fff;stroke-width:42.72;stroke-linejoin:round" transform="translate(.21 11.51)"/>
346      </svg>
347    scroll-left: |
348      <svg xmlns="http://www.w3.org/2000/svg" width="289.66" height="289.7" viewBox="0 0 76.64 76.65">
349          <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
350          <path d="M16.7 21.61 0 38.32l16.71 16.72V38.32Z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
351      </svg>
352    scroll-up: |
353      <svg xmlns="http://www.w3.org/2000/svg" width="289.66" height="289.7" viewBox="0 0 76.64 76.65">
354          <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
355          <path d="M55.03 16.7 38.32 0 21.6 16.7h16.7z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
356      </svg>
357    scroll-down: |
358      <svg xmlns="http://www.w3.org/2000/svg" width="289.66" height="289.7" viewBox="0 0 76.64 76.65">
359          <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
360          <path d="m21.6 59.94 16.72 16.71 16.71-16.7H38.32Z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
361      </svg>
362    scroll-right: |
363      <svg xmlns="http://www.w3.org/2000/svg" width="289.66" height="289.7" viewBox="0 0 76.64 76.65">
364          <path d="M51.85 38.32a13.53 13.53 0 0 1-13.53 13.53 13.53 13.53 0 0 1-13.53-13.53 13.53 13.53 0 0 1 13.53-13.53 13.53 13.53 0 0 1 13.53 13.53z" style="fill:#fff;stroke-width:.30994;stroke-linecap:round"/>
365          <path d="m59.94 55.04 16.7-16.72-16.7-16.7v16.7z" style="color:#000;fill:#fff;stroke-linecap:round;-inkscape-stroke:none"/>
366      </svg>
367    cursor-left: |
368      <svg xmlns="http://www.w3.org/2000/svg" width="270.72" height="270.76" viewBox="0 0 71.63 71.64">
369          <path d="M11.69 24.12 0 35.82l11.7 11.7v-11.7z" style="color:#000;fill:#fff;stroke-width:.7;stroke-linecap:round;-inkscape-stroke:none"/>
370          <path d="m46.57 53.66-13.9-13.9-4.06 12.27-9.75-32.5 32.5 9.75-12.26 4.06 13.89 13.9z" style="fill:#fff;fill-opacity:1;stroke-width:.0812514"/>
371      </svg>
372    cursor-down: |
373      <svg xmlns="http://www.w3.org/2000/svg" width="270.72" height="270.76" viewBox="0 0 71.63 71.64">
374          <path d="m24.1 59.94 11.71 11.7 11.7-11.7H35.8Z" style="color:#000;fill:#fff;stroke-width:.7;stroke-linecap:round;-inkscape-stroke:none"/>
375          <path d="m46.57 53.66-13.9-13.9-4.06 12.27-9.75-32.5 32.5 9.75-12.26 4.06 13.89 13.9z" style="fill:#fff;fill-opacity:1;stroke-width:.0812514"/>
376      </svg>
377    cursor-up: |
378      <svg xmlns="http://www.w3.org/2000/svg" width="270.72" height="270.76" viewBox="0 0 71.63 71.64">
379          <path d="M47.5 11.69 35.82 0l-11.7 11.69H35.8z" style="color:#000;fill:#fff;stroke-width:.7;stroke-linecap:round;-inkscape-stroke:none"/>
380          <path d="m46.57 53.66-13.9-13.9-4.06 12.27-9.75-32.5 32.5 9.75-12.26 4.06 13.89 13.9z" style="fill:#fff;fill-opacity:1;stroke-width:.0812514"/>
381      </svg>
382    cursor-right: |
383      <svg xmlns="http://www.w3.org/2000/svg" width="270.72" height="270.76" viewBox="0 0 71.63 71.64">
384          <path d="m59.94 47.52 11.69-11.7-11.7-11.7v11.7z" style="color:#000;fill:#fff;stroke-width:.7;stroke-linecap:round;-inkscape-stroke:none"/>
385          <path d="m46.57 53.66-13.9-13.9-4.06 12.27-9.75-32.5 32.5 9.75-12.26 4.06 13.89 13.9z" style="fill:#fff;fill-opacity:1;stroke-width:.0812514"/>
386      </svg>
387    click-middle: |
388      <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 -960 1120 1120">
389          <path fill="#fff" d="m738.2-366.06-41.73-77.07q29-47.38 22.98-102.18-6-54.8-46.31-95.1Q626.47-687.1 560-687.1t-113.14 46.67q-40.3 40.3-46.31 95.11-6.01 54.8 22.98 102.18l-41.72 77.07q-64.35-71.42-62.23-166.88 2.13-95.46 70.71-164.04Q461.01-767.7 560-767.7q99 0 169.7 70.72 68.6 68.58 70.72 164.04 2.12 95.46-62.23 166.88zM615.85 10.83H504.14V-231L362-159.58l198-367.7 197.99 367.7L615.86-231Z"/>
390      </svg>
391    play-pause: |
392      <svg xmlns="http://www.w3.org/2000/svg" width="26" height="24" viewBox="0 0 24 26" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon icon-tabler icon-tabler-player-play">
393          <path fill="#fff" stroke="none" d="M11.02 4v16a1 1 0 0 0 1.52.85l13-8a1 1 0 0 0 0-1.7l-13-8a1 1 0 0 0-1.52.85Z" style="fill:#fff;fill-opacity:1"/>
394          <path fill="#fff" stroke="none" d="M1.6 3h2.72c.82 0 1.48.65 1.48 1.45V19.5c0 .8-.66 1.44-1.48 1.44h-2.7c-.82 0-1.48-.65-1.48-1.44V4.45C.14 3.65.8 3 1.61 3Z" style="fill:#fff;fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"/>
395      </svg>
396    layer-lock: |
397      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
398          <rect x="3" y="11" width="18" height="11" rx="2" ry="2" fill="#fff"/>
399          <path d="M7 11V7a5 5 0 0 1 10 0v4" stroke="#fff" fill="none"/>
400      </svg>
401  glyph_urls:
402    tabler: https://unpkg.com/@tabler/icons/icons/outline/{}.svg
403    mdi: https://raw.githubusercontent.com/Templarian/MaterialDesign-SVG/master/svg/{}.svg
404    mdil: https://raw.githubusercontent.com/Pictogrammers/MaterialDesignLight/master/svg/{}.svg
405    material: https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/{}/default/48px.svg
406  use_local_cache: true
407parse_config:
408  zmk_additional_includes:
409    - "__DEPS_DIR__/zmk-helpers/include"
410  preprocess: true
411  skip_binding_parsing: false
412  raw_binding_map:
413    "&AE_L 0": "Æ"
414    "&A_CI 0": "Â"
415    "&A_GR 0": "À"
416    "&CEDIL 0": "Ç"
417    "&E_CI 0": "Ê"
418    "&E_CU 0": "É"
419    "&E_GR 0": "È"
420    "&E_TR 0": "Ë"
421    "&I_CI 0": "Î"
422    "&I_TR 0": "Ï"
423    "&KPT ACC_AC 0": "´"
424    "&KPT ACC_CI 0": "^"
425    "&KPT ACC_GR 0": "`"
426    "&KPT ACC_TI 0": "~"
427    "&KPT ACC_TR 0": "¨"
428    "&OE_L 0": "Œ"
429    "&O_CI 0": "Ô"
430    "&O_TR 0": "Ö"
431    "&U_CI 0": "Û"
432    "&U_GR 0": "Ù"
433    "&U_TR 0": "Ü"
434    "&hrme SL 0": "È"
435    "&hrmeg SL 0": "È"
436    "&hrmi SL 0": "Î"
437    "&hrmic SL 0": "Î"
438    "&AE_L 2": "Æ"
439    "&A_CI 2": "Â"
440    "&A_GR 2": "À"
441    "&CEDIL 2": "Ç"
442    "&E_CI 2": "Ê"
443    "&E_CU 2": "É"
444    "&E_GR 2": "È"
445    "&E_TR 2": "Ë"
446    "&I_CI 2": "Î"
447    "&I_TR 2": "Ï"
448    "&KPT ACC_CI 2": "^"
449    "&KPT ACC_GR 2": "`"
450    "&KPT ACC_TR 2": "¨"
451    "&OE_L 2": "Œ"
452    "&O_CI 2": "Ô"
453    "&O_TR 2": "Ö"
454    "&U_CI 2": "Û"
455    "&U_GR 2": "Ù"
456    "&U_TR 2": "Ü"
457    "&hrme SL 2": "È"
458    "&hrmi SL 2": "Î"
459    "&A_GR 4": "À"
460    "&A_CI 4": "Â"
461    "&hrme SL 4": "È"
462    "&hrmec SL 4": "Ê"
463    "&hrmiq SL 2": "Î"
464    "&AE_L 4": "Æ"
465    "&CEDIL 4": "Ç"
466    "&E_CI 4": "Ê"
467    "&E_CU 4": "É"
468    "&E_GR 4": "È"
469    "&E_TR 4": "Ë"
470    "&I_CI 4": "Î"
471    "&I_TR 4": "Ï"
472    "&KPT ACC_CI 4": "^"
473    "&KPT ACC_GR 4": "`"
474    "&KPT ACC_TR 4": "¨"
475    "&kp INV_QUEST": "¿"
476    "&kp INV_EXCL": "¡"
477    "&OE_L 4": "Œ"
478    "&O_CI 4": "Ô"
479    "&O_TR 4": "Ö"
480    "&U_CI 4": "Û"
481    "&U_GR 4": "Ù"
482    "&U_TR 4": "Ü"
483    "&kp QUEST": "?"
484    "&kp RA(COMMA)": "<"
485    "&kp RA(DOT)": ">"
486    "&GRA": "`"
487    "&CAR": "^"
488    "&kp LBRAC": "{"
489    "&kp RBRAC": "}"
490    "&kp LBKET": "["
491    "&kp RBKET": "]"
492    "&kp PIP": "|"
493    "&kp LAQUO": "«"
494    "&kp RAQUO": "»"
495    "&kp MATH_1_4": "¼"
496    "&kp MATH_1_2": "½"
497    "&kp MATH_3_4": "¾"
498    "&kp MATH_PM": "±"
499    "&kp DEG": "°"
500    "&kp RA(RBKT)": "~"
501    "&kp SLSH": "/"
502    "&kp KP_SLASH": "/"
503    "&kp LS(SLSH)": "\\"
504    "&kp MATH_MICRO": "µ"
505    "&mkp RCLK": "$$material:right_click$$"
506    "&mkp LCLK": "$$material:left_click$$"
507    "&mkp MCLK": "$$click-middle$$"
508    "&msc SCRL_LEFT": "$$scroll-left$$"
509    "&msc SCRL_RIGHT": "$$scroll-right$$"
510    "&msc SCRL_UP": "$$scroll-up$$"
511    "&msc SCRL_DOWN": "$$scroll-down$$"
512    "&mmv MOVE_LEFT": "$$cursor-left$$"
513    "&mmv MOVE_RIGHT": "$$cursor-right$$"
514    "&mmv MOVE_UP": "$$cursor-up$$"
515    "&mmv MOVE_DOWN": "$$cursor-down$$"
516    "&mmv_dpi": "DPI"
517    "&mkp_boot": "QMK BOOT"
518    "&mwh_tg": "$$scroll$$"
519    "&caps_word": "CAPS WORD"
520    "&caps_lock": "CAPS LOCK"
521    "&kp LC(X)": "$$tabler:cut$$"
522    "&kp LC(C)": "$$tabler:copy$$"
523    "&kp LC(V)": "$$tabler:clipboard$$"
524    "&kp LC(LA(J))": "TMUX"
525    "&TMUX_SESSION": "TMUX NEW SESSION"
526    "&TMUX_CMD": "TMUX COMMAND"
527    "&LTE": " <= "
528    "&GTE": " >= "
529    "&ARROW": " -> "
530    "&FAT_ARROW": " => "
531    "&kp RA(SPACE)": "$$nbsp$$"
532    "&out OUT_TOG": '$$output-toggle$$'
533    "&kp SAPOS": "'"
534    "&kp DAPOS": '"'
535    "&soft_off": "$$mdi:power-standby$$"
536    "&tog NAV": "NAV"
537    "&AGRA SPACE": "`"
538    "&AGRA A": "À"
539    "&AGRA E": "È"
540    "&AGRA I": "Ì"
541    "&AGRA O": "Ò"
542    "&AGRA U": "Ù"
543    "&AIGU A": "Á"
544    "&AIGU E": "É"
545    "&AIGU I": "Í"
546    "&AIGU O": "Ó"
547    "&AIGU U": "Ú"
548    "&CIRC SPACE": "^"
549    "&CIRC A": "Â"
550    "&CIRC E": "Ê"
551    "&CIRC I": "Î"
552    "&CIRC O": "Ô"
553    "&CIRC U": "Û"
554    "&TREM SPACE": "\""
555    "&TREM A": "Ä"
556    "&TREM E": "Ë"
557    "&TREM I": "Ï"
558    "&TREM O": "Ö"
559    "&TREM U": "Ü"
560    "&kp NTIL": "Ñ"
561    "&kp EACUT": "É"
562    "&kp EURO": "€"
563    "&AIGU SPACE": "'"
564    "&kp AE": "Æ"
565    "&kp OE": "Œ"
566    "&key_repeat": "REPEAT"
567    "&alt_repeat": "ALT_REP"
568  sticky_label: sticky
569  toggle_label: toggle
570  trans_legend:
571    t: 
572    type: trans
573  mark_alternate_layer_activators: true
574  zmk_remove_keycode_prefix: []
575  zmk_keycode_map:
576    EXCLAMATION: '!'
577    EXCL: '!'
578    AT_SIGN: '@'
579    AT: '@'
580    HASH: '#'
581    POUND: '#'
582    DOLLAR: $
583    DLLR: $
584    PERCENT: '%'
585    PRCNT: '%'
586    CARET: ^
587    AMPERSAND: '&'
588    AMPS: '&'
589    ASTERISK: '*'
590    ASTRK: '*'
591    STAR: '*'
592    LEFT_PARENTHESIS: (
593    LPAR: (
594    RIGHT_PARENTHESIS: )
595    RPAR: )
596    EQUAL: '='
597    PLUS: +
598    MINUS: '-'
599    UNDERSCORE: _
600    UNDER: _
601    SLASH: /
602    FSLH: /
603    QUESTION: '?'
604    QMARK: '?'
605    BACKSLASH: \
606    BSLH: \
607    PIPE: '|'
608    NON_US_BACKSLASH: \
609    PIPE2: '|'
610    NON_US_BSLH: '|'
611    SEMICOLON: ;
612    SEMI: ;
613    COLON: ':'
614    SINGLE_QUOTE: ''''
615    SQT: ''''
616    APOSTROPHE: ''''
617    APOS: ''''
618    DOUBLE_QUOTES: '"'
619    DQT: '"'
620    COMMA: ','
621    LESS_THAN: <
622    LT: <
623    PERIOD: .
624    DOT: .
625    GREATER_THAN: '>'
626    GT: '>'
627    LEFT_BRACKET: '['
628    LBKT: '['
629    LEFT_BRACE: '{'
630    LBRC: '{'
631    RIGHT_BRACKET: ']'
632    RBKT: ']'
633    RIGHT_BRACE: '}'
634    RBRC: '}'
635    GRAVE: '`'
636    TILDE: '~'
637    NON_US_HASH: '#'
638    NUHS: '#'
639    TILDE2: '~'
640    KP_MINUS: '-'
641    BSPC: '$$material:backspace$$'
642    SPACE: '$$tabler:space$$'
643    TAB: "$$material:keyboard_tab$$"
644    PRINTSCREEN: "$$tabler:camera$$"
645    RET: "$$material:keyboard_return$$"
646    SLCK: 'SCROLL LOCK'
647    INS: 'INSERT'
648    PG_UP: 'PAGE UP'
649    PG_DN: 'PAGE DOWN'
650    LALT: 'ALT'
651    LGUI: 'GUI'
652    LSHFT: 'SHIFT'
653    LCTRL: 'CTRL'
654    CAPSLOCK: 'CAPS LOCK'
655    DEL: '$$delete$$'
656    C_VOL_UP: '$$tabler:volume$$'
657    C_VOL_DN: '$$tabler:volume-2$$'
658    C_PP: '$$play-pause$$'
659    C_PREV: '$$tabler:player-track-prev$$'
660    C_NEXT: '$$tabler:player-track-next$$'
661    LEFT: '$$tabler:arrow-big-left$$'
662    RIGHT: '$$tabler:arrow-big-right$$'
663    UP: '$$tabler:arrow-big-up$$'
664    DOWN: '$$tabler:arrow-big-down$$'
665    BT_CLR: '$$bt-clear$$'
666    BT_NXT: '$$bt-next$$'
667    BT_PRV: '$$bt-prev$$'
668    '&key_repeat': 'REPEAT'
669    # QMK/Moonlander specific keycodes
670    FR_DQUO: '"'
671    FR_QUOT: "'"
672    FR_GRAVE: "`"
673    FR_CIRC: "^"
674    FR_E_AIGU: "É"
675    FR_E_AIGU_CAPS: "É"
676    FR_E_GRAVE: "È"
677    FR_E_GRAVE_CAPS: "È"
678    FR_A_GRAVE: "À"
679    FR_A_GRAVE_CAPS: "À"
680    US_LDAQ: "«"
681    US_RDAQ: "»"
682    US_BRKP: "¦"
683    NUMWORD: "NUMWORD"
684    VRSN: "VER"
685    LED_LEVEL: "LED"
686    TOGGLE_LAYER_COLOR: "RGB"
687    RM_TOGG: "RGB ⇄"
688    RM_VALU: "RGB +"
689    RM_VALD: "RGB -"
690    RM_HUEU: "HUE +"
691    RM_HUED: "HUE -"
692    # Home row mods (after KC_ prefix removal)
693    HM_GUI_A: "A"
694    HM_ALT_U: "U"
695    HM_SFT_I: "I"
696    HM_CTL_E: "E"
697    HM_HYP_COMM: ","
698    HM_HYP_C: "C"
699    HM_CTL_T: "T"
700    HM_SFT_S: "S"
701    HM_ALT_R: "R"
702    HM_GUI_N: "N"
703    HM_ALT_S: "S"
704    HM_SFT_D: "D"
705    HM_CTL_F: "F"
706    HM_HYP_G: "G"
707    HM_HYP_H: "H"
708    HM_CTL_J: "J"
709    HM_SFT_K: "K"
710    HM_ALT_L: "L"
711    HM_GUI_SCLN: ";"
712    # QMK keypad keys (after KC_ prefix removal)
713    PMNS: "-"
714    PSLS: "/"
715    PAST: "*"
716    PPLS: "+"
717    PDOT: "."
718    PCMM: ","
719    PERC: "%"
720  zmk_combos:
721    combo_capsword:
722      draw_separate: true
723    combo_capslock:
724      draw_separate: true
725    combo_to_ergol:
726      draw_separate: true
727    combo_to_bepo:
728      draw_separate: true
729    combo_to_qwerty:
730      draw_separate: true
731    combo_toggle_mouse:
732      draw_separate: true
733  qmk_remove_keycode_prefix: ["KC_", "QK_", "OS_"]
734  qmk_keycode_map:
735    # Custom French keycodes (US International layout) - with and without prefix
736    "FR_DQUO": '"'
737    "DQUO": '"'
738    "FR_QUOT": "'"
739    "QUOT": "'"
740    "FR_GRAVE": "`"
741    "GRAVE": "`"
742    "FR_CIRC": "^"
743    "CIRC": "^"
744    "FR_E_AIGU": "É"
745    "E_AIGU": "É"
746    "FR_E_AIGU_CAPS": "É"
747    "E_AIGU_CAPS": "É"
748    "FR_E_GRAVE": "È"
749    "E_GRAVE": "È"
750    "FR_E_GRAVE_CAPS": "È"
751    "E_GRAVE_CAPS": "È"
752    "FR_A_GRAVE": "À"
753    "A_GRAVE": "À"
754    "FR_A_GRAVE_CAPS": "À"
755    "A_GRAVE_CAPS": "À"
756    # US International keycodes - with and without prefix
757    "US_LDAQ": "«"
758    "LDAQ": "«"
759    "US_RDAQ": "»"
760    "RDAQ": "»"
761    "US_BRKP": "¦"
762    "BRKP": "¦"
763    # Keypad keycodes (already removed KC_ prefix)
764    "PMNS": "-"
765    "PSLS": "/"
766    "PAST": "*"
767    "PPLS": "+"
768    "PDOT": "."
769    "PCMM": ","
770    # Custom macros and special functions
771    "VRSN": "VER"
772    "NUMWORD": "NUMWORD"
773    # Home row mods - show base letter
774    "HM_GUI_A": "A"
775    "HM_ALT_U": "U"
776    "HM_SFT_I": "I"
777    "HM_CTL_E": "E"
778    "HM_HYP_COMM": ","
779    "HM_HYP_C": "C"
780    "HM_CTL_T": "T"
781    "HM_SFT_S": "S"
782    "HM_ALT_R": "R"
783    "HM_GUI_N": "N"
784    "HM_ALT_S": "S"
785    "HM_SFT_D": "D"
786    "HM_CTL_F": "F"
787    "HM_HYP_G": "G"
788    "HM_HYP_H": "H"
789    "HM_CTL_J": "J"
790    "HM_SFT_K": "K"
791    "HM_ALT_L": "L"
792    "HM_GUI_SCLN": ";"
793    # Layer switching
794    "TO(BEPO)": "→ Bépo"
795    "TO(ERGL)": "→ ErgoL"
796    "TO(QWER)": "→ QWERTY"
797    "TG(MOUS)": "⇄ Mouse"
798    # One shot mods
799    "OS_LSFT": "⇪ Shift"
800    "OS_LGUI": "⇪ GUI"
801    "OS_LALT": "⇪ Alt"
802    "OS_LCTL": "⇪ Ctrl"
803    "OS_HYPR": "⇪ Hyper"
804    # ZSA-specific
805    "LED_LEVEL": "LED"
806    "TOGGLE_LAYER_COLOR": "RGB"
807    "RM_TOGG": "RGB ⇄"
808    "RM_VALU": "RGB +"
809    "RM_VALD": "RGB -"
810    "RM_HUEU": "HUE +"
811    "RM_HUED": "HUE -"
812    # QMK standard (extend existing mappings)
813    "XXXXXXX": ""
814    "NO": ""
815    "TRNS": "▽"
816    "BOOT": "RESET"
817    "EE_CLR": "EE CLR"
818    # Mouse keys
819    "MS_UP": "$$cursor-up$$"
820    "MS_DOWN": "$$cursor-down$$"
821    "MS_LEFT": "$$cursor-left$$"
822    "MS_RGHT": "$$cursor-right$$"
823    "MS_BTN1": "$$material:left_click$$"
824    "MS_BTN2": "$$material:right_click$$"
825    "MS_BTN3": "$$click-middle$$"
826    "MS_WHLU": "$$scroll-up$$"
827    "MS_WHLD": "$$scroll-down$$"
828    "MS_WHLL": "$$scroll-left$$"
829    "MS_WHLR": "$$scroll-right$$"
830    # Media keys
831    "MPRV": "$$tabler:player-track-prev$$"
832    "MNXT": "$$tabler:player-track-next$$"
833    "MPLY": "$$play-pause$$"
834    "MUTE": "MUTE"
835    "VOLD": "VOL-"
836    "VOLU": "VOL+"
837    # Navigation
838    "PGUP": "PAGE UP"
839    "PGDN": "PAGE DOWN"
840    # Leader key
841    "LEAD": "LEADER"
842    # Repeat keys
843    "REP": "REPEAT"
844    "AREP": "ALT REPEAT"
845    # Additional standard keycodes that may appear after KC_ removal
846    "DLR": "$"
847    "LPRN": "("
848    "RPRN": ")"
849    "AT": "@"
850    "PLUS": "+"
851    "PERC": "%"
852    "CIRC": "^"
853    "GRV": "`"
854    "LABK": "<"
855    "RABK": ">"
856    "PMNS": "-"
857    "PIPE": "|"
858    "LCBR": "{"
859    "RCBR": "}"
860    "EXLM": "!"
861    "PSLS": "/"
862    "EQL": "="
863    "AMPR": "&"
864    "HASH": "#"
865    "SCLN": ";"
866    "TILD": "~"
867    "LBRC": "["
868    "RBRC": "]"
869    "COLN": ":"
870    "COMM": ","
871    "PPLS": "+"
872    "PCMM": ","
873    "PDOT": "."
874    "TAB": "⇥"
875    "BSPC": "⌫"
876    "ENT": "↵"
877    "SPC": "␣"
878
879