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>
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>
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>
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>
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 "<E": " <= "
528 ">E": " >= "
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