summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNebuleon <2391500+Nebuleon@users.noreply.github.com>2024-01-09 06:11:59 -0500
committerGitHub <noreply@github.com>2024-01-09 22:11:59 +1100
commite67d2c2f6fd3a50ac109eabbe93985f4e055963a (patch)
treec3168e35b4b3401bbff675bdaae92e85941883dd
parent744ac91f5e0e56156d31c7d583b78a71384eef24 (diff)
Add Canadian French input locale (#21456)
Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r--data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson407
-rw-r--r--docs/reference_keymap_extras.md1
-rw-r--r--quantum/keymap_extras/keymap_canadian_french.h122
-rw-r--r--quantum/keymap_extras/sendstring_canadian_french.h120
4 files changed, 650 insertions, 0 deletions
diff --git a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
new file mode 100644
index 0000000000..6fefd11f59
--- /dev/null
+++ b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
@@ -0,0 +1,407 @@
1{
2 "aliases": {
3/*
4 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
5 * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
6 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
7 * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ ¸ │ │
8 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
9 * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ` │ < │ │
10 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
11 * │ │ « │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ É │ │
12 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
13 * │ │ │ │ │ │ │ │ │
14 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
15 */
16 "KC_GRV": {
17 "key": "FR_HASH",
18 "label": "#",
19 }
20 "KC_1": {
21 "key": "FR_1",
22 "label": "1",
23 }
24 "KC_2": {
25 "key": "FR_2",
26 "label": "2",
27 }
28 "KC_3": {
29 "key": "FR_3",
30 "label": "3",
31 }
32 "KC_4": {
33 "key": "FR_4",
34 "label": "4",
35 }
36 "KC_5": {
37 "key": "FR_5",
38 "label": "5",
39 }
40 "KC_6": {
41 "key": "FR_6",
42 "label": "6",
43 }
44 "KC_7": {
45 "key": "FR_7",
46 "label": "7",
47 }
48 "KC_8": {
49 "key": "FR_8",
50 "label": "8",
51 }
52 "KC_9": {
53 "key": "FR_9",
54 "label": "9",
55 }
56 "KC_0": {
57 "key": "FR_0",
58 "label": "0",
59 }
60 "KC_MINS": {
61 "key": "FR_MINS",
62 "label": "-",
63 }
64 "KC_EQL": {
65 "key": "FR_EQL",
66 "label": "=",
67 }
68 "KC_Q": {
69 "key": "FR_Q",
70 "label": "Q",
71 }
72 "KC_W": {
73 "key": "FR_W",
74 "label": "W",
75 }
76 "KC_E": {
77 "key": "FR_E",
78 "label": "E",
79 }
80 "KC_R": {
81 "key": "FR_R",
82 "label": "R",
83 }
84 "KC_T": {
85 "key": "FR_T",
86 "label": "T",
87 }
88 "KC_Y": {
89 "key": "FR_Y",
90 "label": "Y",
91 }
92 "KC_U": {
93 "key": "FR_U",
94 "label": "U",
95 }
96 "KC_I": {
97 "key": "FR_I",
98 "label": "I",
99 }
100 "KC_O": {
101 "key": "FR_O",
102 "label": "O",
103 }
104 "KC_P": {
105 "key": "FR_P",
106 "label": "P",
107 }
108 "KC_LBRC": {
109 "key": "FR_DCIR",
110 "label": "^ (dead)",
111 }
112 "KC_RBRC": {
113 "key": "FR_CEDL",
114 "label": "¸ (dead)",
115 }
116 "KC_A": {
117 "key": "FR_A",
118 "label": "A",
119 }
120 "KC_S": {
121 "key": "FR_S",
122 "label": "S",
123 }
124 "KC_D": {
125 "key": "FR_D",
126 "label": "D",
127 }
128 "KC_F": {
129 "key": "FR_F",
130 "label": "F",
131 }
132 "KC_G": {
133 "key": "FR_G",
134 "label": "G",
135 }
136 "KC_H": {
137 "key": "FR_H",
138 "label": "H",
139 }
140 "KC_J": {
141 "key": "FR_J",
142 "label": "J",
143 }
144 "KC_K": {
145 "key": "FR_K",
146 "label": "K",
147 }
148 "KC_L": {
149 "key": "FR_L",
150 "label": "L",
151 }
152 "KC_SCLN": {
153 "key": "FR_SCLN",
154 "label": ";",
155 }
156 "KC_QUOT": {
157 "key": "FR_DGRV",
158 "label": "` (dead)",
159 }
160 "KC_NUHS": {
161 "key": "FR_LABK",
162 "label": "<",
163 }
164 "KC_NUBS": {
165 "key": "FR_LDAQ",
166 "label": "«",
167 }
168 "KC_Z": {
169 "key": "FR_Z",
170 "label": "Z",
171 }
172 "KC_X": {
173 "key": "FR_X",
174 "label": "X",
175 }
176 "KC_C": {
177 "key": "FR_C",
178 "label": "C",
179 }
180 "KC_V": {
181 "key": "FR_V",
182 "label": "V",
183 }
184 "KC_B": {
185 "key": "FR_B",
186 "label": "B",
187 }
188 "KC_N": {
189 "key": "FR_N",
190 "label": "N",
191 }
192 "KC_M": {
193 "key": "FR_M",
194 "label": "M",
195 }
196 "KC_COMM": {
197 "key": "FR_COMM",
198 "label": ",",
199 }
200 "KC_DOT": {
201 "key": "FR_DOT",
202 "label": ".",
203 }
204 "KC_SLSH": {
205 "key": "FR_EACU",
206 "label": "É",
207 }
208/* Shifted symbols
209 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
210 * │ | │ ! │ " │ / │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │
211 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
212 * │ │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │
213 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
214 * │ │ │ │ │ │ │ │ │ │ │ : │ │ > │ │
215 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
216 * │ │ » │ │ │ │ │ │ │ │ ' │ │ │ │
217 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
218 * │ │ │ │ │ │ │ │ │
219 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
220 */
221 "S(FR_HASH)": {
222 "key": "FR_PIPE",
223 "label": "|",
224 }
225 "S(FR_1)": {
226 "key": "FR_EXLM",
227 "label": "!",
228 }
229 "S(FR_2)": {
230 "key": "FR_DQUO",
231 "label": "\"",
232 }
233 "S(FR_3)": {
234 "key": "FR_SLSH",
235 "label": "/",
236 }
237 "S(FR_4)": {
238 "key": "FR_DLR",
239 "label": "$",
240 }
241 "S(FR_5)": {
242 "key": "FR_PERC",
243 "label": "%",
244 }
245 "S(FR_6)": {
246 "key": "FR_QUES",
247 "label": "?",
248 }
249 "S(FR_7)": {
250 "key": "FR_AMPR",
251 "label": "&",
252 }
253 "S(FR_8)": {
254 "key": "FR_ASTR",
255 "label": "*",
256 }
257 "S(FR_9)": {
258 "key": "FR_LPRN",
259 "label": "(",
260 }
261 "S(FR_0)": {
262 "key": "FR_RPRN",
263 "label": ")",
264 }
265 "S(FR_MINS)": {
266 "key": "FR_UNDS",
267 "label": "_",
268 }
269 "S(FR_EQL)": {
270 "key": "FR_PLUS",
271 "label": "+",
272 }
273 "S(FR_CEDL)": {
274 "key": "FR_DIAE",
275 "label": "¨ (dead)",
276 }
277 "S(FR_SCLN)": {
278 "key": "FR_COLN",
279 "label": ":",
280 }
281 "S(FR_LABK)": {
282 "key": "FR_RABK",
283 "label": ">",
284 }
285 "S(FR_LDAQ)": {
286 "key": "FR_RDAQ",
287 "label": "»",
288 }
289 "S(FR_COMM)": {
290 "key": "FR_QUOT",
291 "label": "'",
292 }
293/* AltGr symbols
294 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
295 * │ \ │ ± │ @ │ £ │ ¢ │ ¤ │ ¬ │ ¦ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │
296 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
297 * │ │ │ │ │ │ │ │ │ │ § │ ¶ │ [ │ ] │ │
298 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
299 * │ │ │ │ │ │ │ │ │ │ │ ~ │ { │ } │ │
300 * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
301 * │ │ ° │ │ │ │ │ │ │ µ │ ¯ │ - │ ´ │ │
302 * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
303 * │ │ │ │ │ │ │ │ │
304 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
305 */
306 "ALGR(FR_HASH)": {
307 "key": "FR_BSLS",
308 "label": "\\",
309 }
310 "ALGR(FR_1)": {
311 "key": "FR_PLMN",
312 "label": "±",
313 }
314 "ALGR(FR_2)": {
315 "key": "FR_AT",
316 "label": "@",
317 }
318 "ALGR(FR_3)": {
319 "key": "FR_PND",
320 "label": "£",
321 }
322 "ALGR(FR_4)": {
323 "key": "FR_CENT",
324 "label": "¢",
325 }
326 "ALGR(FR_5)": {
327 "key": "FR_CURR",
328 "label": "¤",
329 }
330 "ALGR(FR_6)": {
331 "key": "FR_NOT",
332 "label": "¬",
333 }
334 "ALGR(FR_7)": {
335 "key": "FR_BRKP",
336 "label": "¦",
337 }
338 "ALGR(FR_8)": {
339 "key": "FR_SUP2",
340 "label": "²",
341 }
342 "ALGR(FR_9)": {
343 "key": "FR_SUP3",
344 "label": "³",
345 }
346 "ALGR(FR_0)": {
347 "key": "FR_QRTR",
348 "label": "¼",
349 }
350 "ALGR(FR_MINS)": {
351 "key": "FR_HALF",
352 "label": "½",
353 }
354 "ALGR(FR_EQL)": {
355 "key": "FR_TQTR",
356 "label": "¾",
357 }
358 "ALGR(FR_O)": {
359 "key": "FR_SECT",
360 "label": "§",
361 }
362 "ALGR(FR_P)": {
363 "key": "FR_PARA",
364 "label": "¶",
365 }
366 "ALGR(FR_DCIR)": {
367 "key": "FR_LBRC",
368 "label": "[",
369 }
370 "ALGR(FR_CEDL)": {
371 "key": "FR_RBRC",
372 "label": "]",
373 }
374 "ALGR(FR_SCLN)": {
375 "key": "FR_TILD",
376 "label": "~",
377 }
378 "ALGR(FR_DGRV)": {
379 "key": "FR_LCBR",
380 "label": "{",
381 }
382 "ALGR(FR_LABK)": {
383 "key": "FR_RCBR",
384 "label": "}",
385 }
386 "ALGR(FR_LDAQ)": {
387 "key": "FR_DEG",
388 "label": "°",
389 }
390 "ALGR(FR_M)": {
391 "key": "FR_MICR",
392 "label": "µ",
393 }
394 "ALGR(FR_COMM)": {
395 "key": "FR_MACR",
396 "label": "¯",
397 }
398 "ALGR(FR_DOT)": {
399 "key": "FR_SHYP",
400 "label": "­ (soft hyphen)",
401 }
402 "ALGR(FR_EACU)": {
403 "key": "FR_ACUT",
404 "label": "´ (dead)",
405 }
406 }
407}
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index 0a51c85853..cf2ab28876 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -36,6 +36,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
36|French (AFNOR) |`keymap_french_afnor.h` |`sendstring_french_afnor.h` | 36|French (AFNOR) |`keymap_french_afnor.h` |`sendstring_french_afnor.h` |
37|French (BÉPO) |`keymap_bepo.h` |`sendstring_bepo.h` | 37|French (BÉPO) |`keymap_bepo.h` |`sendstring_bepo.h` |
38|French (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` | 38|French (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` |
39|French (Canada) |`keymap_canadian_french.h` |`sendstring_canadian_french.h` |
39|French (Switzerland) |`keymap_swiss_fr.h` |`sendstring_swiss_fr.h` | 40|French (Switzerland) |`keymap_swiss_fr.h` |`sendstring_swiss_fr.h` |
40|French (macOS, ISO) |`keymap_french_mac_iso.h` |`sendstring_french_mac_iso.h` | 41|French (macOS, ISO) |`keymap_french_mac_iso.h` |`sendstring_french_mac_iso.h` |
41|German |`keymap_german.h` |`sendstring_german.h` | 42|German |`keymap_german.h` |`sendstring_german.h` |
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
new file mode 100644
index 0000000000..a61d48d3ed
--- /dev/null
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -0,0 +1,122 @@
1// Copyright 2023 QMK
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4/*******************************************************************************
5 88888888888 888 d8b .d888 d8b 888 d8b
6 888 888 Y8P d88P" Y8P 888 Y8P
7 888 888 888 888
8 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
9 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
10 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
11 888 888 888 888 X88 888 888 888 Y8b. 888 X88
12 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
13 888 888
14 888 888
15 888 888
16 .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
17 d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
18 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
19 Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
20 "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
21 888
22 Y8b d88P
23 "Y88P"
24*******************************************************************************/
25
26#pragma once
27#include "keycodes.h"
28// clang-format off
29
30// Aliases
31#define FR_HASH KC_GRV // #
32#define FR_1 KC_1 // 1
33#define FR_2 KC_2 // 2
34#define FR_3 KC_3 // 3
35#define FR_4 KC_4 // 4
36#define FR_5 KC_5 // 5
37#define FR_6 KC_6 // 6
38#define FR_7 KC_7 // 7
39#define FR_8 KC_8 // 8
40#define FR_9 KC_9 // 9
41#define FR_0 KC_0 // 0
42#define FR_MINS KC_MINS // -
43#define FR_EQL KC_EQL // =
44#define FR_Q KC_Q // Q
45#define FR_W KC_W // W
46#define FR_E KC_E // E
47#define FR_R KC_R // R
48#define FR_T KC_T // T
49#define FR_Y KC_Y // Y
50#define FR_U KC_U // U
51#define FR_I KC_I // I
52#define FR_O KC_O // O
53#define FR_P KC_P // P
54#define FR_DCIR KC_LBRC // ^ (dead)
55#define FR_CEDL KC_RBRC // ¸ (dead)
56#define FR_A KC_A // A
57#define FR_S KC_S // S
58#define FR_D KC_D // D
59#define FR_F KC_F // F
60#define FR_G KC_G // G
61#define FR_H KC_H // H
62#define FR_J KC_J // J
63#define FR_K KC_K // K
64#define FR_L KC_L // L
65#define FR_SCLN KC_SCLN // ;
66#define FR_DGRV KC_QUOT // ` (dead)
67#define FR_LABK KC_NUHS // <
68#define FR_LDAQ KC_NUBS // «
69#define FR_Z KC_Z // Z
70#define FR_X KC_X // X
71#define FR_C KC_C // C
72#define FR_V KC_V // V
73#define FR_B KC_B // B
74#define FR_N KC_N // N
75#define FR_M KC_M // M
76#define FR_COMM KC_COMM // ,
77#define FR_DOT KC_DOT // .
78#define FR_EACU KC_SLSH // É
79#define FR_PIPE S(FR_HASH) // |
80#define FR_EXLM S(FR_1) // !
81#define FR_DQUO S(FR_2) // "
82#define FR_SLSH S(FR_3) // /
83#define FR_DLR S(FR_4) // $
84#define FR_PERC S(FR_5) // %
85#define FR_QUES S(FR_6) // ?
86#define FR_AMPR S(FR_7) // &
87#define FR_ASTR S(FR_8) // *
88#define FR_LPRN S(FR_9) // (
89#define FR_RPRN S(FR_0) // )
90#define FR_UNDS S(FR_MINS) // _
91#define FR_PLUS S(FR_EQL) // +
92#define FR_DIAE S(FR_CEDL) // ¨ (dead)
93#define FR_COLN S(FR_SCLN) // :
94#define FR_RABK S(FR_LABK) // >
95#define FR_RDAQ S(FR_LDAQ) // »
96#define FR_QUOT S(FR_COMM) // '
97#define FR_BSLS ALGR(FR_HASH) // (backslash)
98#define FR_PLMN ALGR(FR_1) // ±
99#define FR_AT ALGR(FR_2) // @
100#define FR_PND ALGR(FR_3) // £
101#define FR_CENT ALGR(FR_4) // ¢
102#define FR_CURR ALGR(FR_5) // ¤
103#define FR_NOT ALGR(FR_6) // ¬
104#define FR_BRKP ALGR(FR_7) // ¦
105#define FR_SUP2 ALGR(FR_8) // ²
106#define FR_SUP3 ALGR(FR_9) // ³
107#define FR_QRTR ALGR(FR_0) // ¼
108#define FR_HALF ALGR(FR_MINS) // ½
109#define FR_TQTR ALGR(FR_EQL) // ¾
110#define FR_SECT ALGR(FR_O) // §
111#define FR_PARA ALGR(FR_P) // ¶
112#define FR_LBRC ALGR(FR_DCIR) // [
113#define FR_RBRC ALGR(FR_CEDL) // ]
114#define FR_TILD ALGR(FR_SCLN) // ~
115#define FR_LCBR ALGR(FR_DGRV) // {
116#define FR_RCBR ALGR(FR_LABK) // }
117#define FR_DEG ALGR(FR_LDAQ) // °
118#define FR_MICR ALGR(FR_M) // µ
119#define FR_MACR ALGR(FR_COMM) // ¯
120#define FR_SHYP ALGR(FR_DOT) // ­ (soft hyphen)
121#define FR_ACUT ALGR(FR_EACU) // ´ (dead)
122
diff --git a/quantum/keymap_extras/sendstring_canadian_french.h b/quantum/keymap_extras/sendstring_canadian_french.h
new file mode 100644
index 0000000000..2abba3a9d3
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_canadian_french.h
@@ -0,0 +1,120 @@
1/* Copyright 2023 Nebuleon
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17// Sendstring lookup tables for Canadian French layouts
18
19#pragma once
20
21#include "keymap_canadian_french.h"
22#include "send_string.h"
23
24// clang-format off
25
26const uint8_t ascii_to_shift_lut[16] PROGMEM = {
27 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
28 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
29 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
30 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
31
32 KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 1),
33 KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
34 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
35 KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 1, 1),
36 KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
37 KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
38 KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
39 KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
40 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
41 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
42 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
43 KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0)
44};
45
46const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
47 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
48 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
49 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
50 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
51
52 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
53 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
54 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
55 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
56 KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
57 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
58 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
59 KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
60 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
61 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
62 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
63 KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0)
64};
65
66const uint8_t ascii_to_dead_lut[16] PROGMEM = {
67 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
68 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
69 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
70 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
71
72 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
73 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
74 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
75 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
76 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
77 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
78 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
79 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
80 KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
81 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
82 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
83 KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
84};
85
86const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
87 // NUL SOH STX ETX EOT ENQ ACK BEL
88 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
89 // BS TAB LF VT FF CR SO SI
90 KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
91 // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
92 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
93 // CAN EM SUB ESC FS GS RS US
94 XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
95
96 // ! " # $ % & '
97 KC_SPC, FR_1, FR_2, FR_HASH, FR_4, FR_5, FR_7, FR_COMM,
98 // ( ) * + , - . /
99 FR_9, FR_0, FR_8, FR_EQL, FR_COMM, FR_MINS, FR_DOT, FR_3,
100 // 0 1 2 3 4 5 6 7
101 FR_0, FR_1, FR_2, FR_3, FR_4, FR_5, FR_6, FR_7,
102 // 8 9 : ; < = > ?
103 FR_8, FR_9, FR_SCLN, FR_SCLN, FR_LABK, FR_EQL, FR_LABK, FR_6,
104 // @ A B C D E F G
105 FR_2, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
106 // H I J K L M N O
107 FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
108 // P Q R S T U V W
109 FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
110 // X Y Z [ \ ] ^ _
111 FR_X, FR_Y, FR_Z, FR_DCIR, FR_HASH, FR_CEDL, FR_DCIR, FR_MINS,
112 // ` a b c d e f g
113 FR_DGRV, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
114 // h i j k l m n o
115 FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
116 // p q r s t u v w
117 FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
118 // x y z { | } ~ DEL
119 FR_X, FR_Y, FR_Z, FR_DGRV, FR_HASH, FR_LABK, FR_SCLN, KC_DEL
120};