diff options
-rw-r--r-- | docs/reference_keymap_extras.md | 1 | ||||
-rw-r--r-- | quantum/keymap_extras/keymap_french_afnor.h | 253 | ||||
-rw-r--r-- | quantum/keymap_extras/sendstring_french_afnor.h | 100 |
3 files changed, 354 insertions, 0 deletions
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md index a7026a099..7e3d9bf27 100644 --- a/docs/reference_keymap_extras.md +++ b/docs/reference_keymap_extras.md | |||
@@ -22,6 +22,7 @@ To use these, simply `#include` the corresponding [header file](https://github.c | |||
22 | |Estonian |`keymap_estonian.h` | | 22 | |Estonian |`keymap_estonian.h` | |
23 | |Finnish |`keymap_finnish.h` | | 23 | |Finnish |`keymap_finnish.h` | |
24 | |French |`keymap_french.h` | | 24 | |French |`keymap_french.h` | |
25 | |French (AFNOR) |`keymap_french_afnor.h` | | ||
25 | |French (BÉPO) |`keymap_bepo.h` | | 26 | |French (BÉPO) |`keymap_bepo.h` | |
26 | |French (Belgium) |`keymap_belgian.h` | | 27 | |French (Belgium) |`keymap_belgian.h` | |
27 | |French (Switzerland) |`keymap_fr_ch.h` | | 28 | |French (Switzerland) |`keymap_fr_ch.h` | |
diff --git a/quantum/keymap_extras/keymap_french_afnor.h b/quantum/keymap_extras/keymap_french_afnor.h new file mode 100644 index 000000000..be67fdc95 --- /dev/null +++ b/quantum/keymap_extras/keymap_french_afnor.h | |||
@@ -0,0 +1,253 @@ | |||
1 | /* Copyright 2020 Guillaume Gérard | ||
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 | /* French AZERTY - AFNOR NF Z71-300 | ||
18 | * | ||
19 | * A standard for the French keyboard | ||
20 | * | ||
21 | * The project was launched at the end of 2015 on the proposal of the General | ||
22 | * Delegation for the French language and the languages of France (Ministry | ||
23 | * of Culture), starting from the observation that the current "azerty" | ||
24 | * keyboards constrain the writing of French, languages regional and European | ||
25 | * languages with Latin alphabet. | ||
26 | * | ||
27 | * For the first time, a standard (NF Z71-300) defines the placement of | ||
28 | * characters on the French keyboard. It offers two layouts, one of which | ||
29 | * closely follows the QWERTY keyboard used by most people who write in French. | ||
30 | * | ||
31 | * However, it is in many ways superior to the old keyboard: | ||
32 | * | ||
33 | * - it contains all the characters required to enter text in French (for example É, œ and ") | ||
34 | * - it is designed to be more ergonomic and allow faster typing | ||
35 | * - it includes almost 60 additional characters for entering foreign languages, technical content, etc | ||
36 | * - however, the characters remain easy to locate thanks to intuitive groupings | ||
37 | * | ||
38 | * Source: https://norme-azerty.fr | ||
39 | */ | ||
40 | |||
41 | #pragma once | ||
42 | |||
43 | #include "keymap.h" | ||
44 | |||
45 | // clang-format off | ||
46 | |||
47 | /* | ||
48 | * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ | ||
49 | * │ @ │ à │ é │ è │ ê │ ( │ ) │ ‘ │ ’ │ « │ » │ ' │ ^ │ │ | ||
50 | * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ | ||
51 | * │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ - │ + │ │ | ||
52 | * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ | ||
53 | * │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ / │ * │ │ | ||
54 | * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ | ||
55 | * │ │ < │ W │ X │ C │ V │ B │ N │ . │ , │ : │ ; │ │ | ||
56 | * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ | ||
57 | * │ │ │ │ │ │ │ │ │ | ||
58 | * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ | ||
59 | */ | ||
60 | // Row 1 | ||
61 | #define FR_AT KC_GRV // @ | ||
62 | #define FR_AGRV KC_1 // à | ||
63 | #define FR_EACU KC_2 // é | ||
64 | #define FR_EGRV KC_3 // è | ||
65 | #define FR_ECIR KC_4 // ê | ||
66 | #define FR_LPRN KC_5 // ( | ||
67 | #define FR_RPRN KC_6 // ) | ||
68 | #define FR_LSQU KC_7 // ‘ | ||
69 | #define FR_RSQU KC_8 // ’ | ||
70 | #define FR_LDAQ KC_9 // « | ||
71 | #define FR_RDAQ KC_0 // » | ||
72 | #define FR_QUOT KC_MINS // ' | ||
73 | #define FR_DCIR KC_EQL // ^ (dead) | ||
74 | // Row 2 | ||
75 | #define FR_A KC_Q // A | ||
76 | #define FR_Z KC_W // Z | ||
77 | #define FR_E KC_E // E | ||
78 | #define FR_R KC_R // R | ||
79 | #define FR_T KC_T // T | ||
80 | #define FR_Y KC_Y // Y | ||
81 | #define FR_U KC_U // U | ||
82 | #define FR_I KC_I // I | ||
83 | #define FR_O KC_O // O | ||
84 | #define FR_P KC_P // P | ||
85 | #define FR_MINS KC_LBRC // - | ||
86 | #define FR_PLUS KC_RBRC // + | ||
87 | // Row 3 | ||
88 | #define FR_Q KC_A // Q | ||
89 | #define FR_S KC_S // S | ||
90 | #define FR_D KC_D // D | ||
91 | #define FR_F KC_F // F | ||
92 | #define FR_G KC_G // G | ||
93 | #define FR_H KC_H // H | ||
94 | #define FR_J KC_J // J | ||
95 | #define FR_K KC_K // K | ||
96 | #define FR_L KC_L // L | ||
97 | #define FR_M KC_SCLN // M | ||
98 | #define FR_SLSH KC_QUOT // / | ||
99 | #define FR_ASTR KC_NUHS // * | ||
100 | // Row 4 | ||
101 | #define FR_LABK KC_NUBS // < | ||
102 | #define FR_W KC_Z // W | ||
103 | #define FR_X KC_X // X | ||
104 | #define FR_C KC_C // C | ||
105 | #define FR_V KC_V // V | ||
106 | #define FR_B KC_B // B | ||
107 | #define FR_N KC_N // N | ||
108 | #define FR_DOT KC_M // . | ||
109 | #define FR_COMM KC_COMM // , | ||
110 | #define FR_COLN KC_DOT // : | ||
111 | #define FR_SCLN KC_SLSH // ; | ||
112 | |||
113 | /* Shifted symbols | ||
114 | * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ | ||
115 | * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ " │ ¨ │ │ | ||
116 | * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ | ||
117 | * │ │ │ │ │ │ │ │ │ │ │ │ – │ ± │ │ | ||
118 | * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ | ||
119 | * │ │ │ │ │ │ │ │ │ │ │ │ \ │ ½ │ │ | ||
120 | * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ | ||
121 | * │ │ > │ │ │ │ │ │ │ ? │ ! │ … │ = │ │ | ||
122 | * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ | ||
123 | * │ │ │ │ │ │ │ │ │ | ||
124 | * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ | ||
125 | */ | ||
126 | // Row 1 | ||
127 | #define FR_HASH S(FR_AT) // # | ||
128 | #define FR_1 S(FR_AGRV) // 1 | ||
129 | #define FR_2 S(FR_EACU) // 2 | ||
130 | #define FR_3 S(FR_EGRV) // 3 | ||
131 | #define FR_4 S(FR_ECIR) // 4 | ||
132 | #define FR_5 S(FR_LPRN) // 5 | ||
133 | #define FR_6 S(FR_RPRN) // 6 | ||
134 | #define FR_7 S(FR_LSQU) // 7 | ||
135 | #define FR_8 S(FR_RSQU) // 8 | ||
136 | #define FR_9 S(FR_LDAQ) // 9 | ||
137 | #define FR_0 S(FR_RDAQ) // 0 | ||
138 | #define FR_DQUO S(FR_QUOT) // " | ||
139 | #define FR_DIAE S(FR_DCIR) // ¨ (dead) | ||
140 | // Row 2 | ||
141 | #define FR_NDSH S(FR_MINS) // – | ||
142 | #define FR_PLMN S(FR_PLUS) // ± | ||
143 | // Row 3 | ||
144 | #define FR_BSLS S(FR_SLSH) // (backslash) | ||
145 | #define FR_HALF S(FR_ASTR) // ½ | ||
146 | // Row 4 | ||
147 | #define FR_RABK S(FR_LABK) // > | ||
148 | #define FR_QUES S(FR_DOT) // ? | ||
149 | #define FR_EXLM S(FR_COMM) // ! | ||
150 | #define FR_ELLP S(FR_COLN) // … | ||
151 | #define FR_EQL S(FR_SCLN) // = | ||
152 | |||
153 | /* AltGr symbols | ||
154 | * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ | ||
155 | * │ ˘ │ § │ ´ │ ` │ & │ [ │ ] │ ¯ │ _ │ “ │ ” │ ° │ ˇ │ │ | ||
156 | * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ | ||
157 | * │ │ æ │ £ │ € │ ® │ { │ } │ ù │ ˙ │ œ │ % │ − │ † │ │ | ||
158 | * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ | ||
159 | * │ │ θ │ ß │ $ │ ¤ │ µ │ Eu│ │ ∕ │ | │ ∞ │ ÷ │ × │ │ | ||
160 | * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ | ||
161 | * │ │ ≤ │ ʒ │ © │ ç │ ¸ │ − │ ~ │ ¿ │ ¡ │ · │ ≃ │ │ | ||
162 | * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ | ||
163 | * │ │ │ │ │ │ │ │ │ | ||
164 | * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ | ||
165 | */ | ||
166 | // Row 1 | ||
167 | #define FR_BREV ALGR(FR_AT) // ˘ (dead) | ||
168 | #define FR_SECT ALGR(FR_AGRV) // § | ||
169 | #define FR_ACUT ALGR(FR_EACU) // ´ (dead) | ||
170 | #define FR_GRV ALGR(FR_EGRV) // ` (dead) | ||
171 | #define FR_AMPR ALGR(FR_ECIR) // & | ||
172 | #define FR_LBRC ALGR(FR_LPRN) // [ | ||
173 | #define FR_RBRC ALGR(FR_RPRN) // ] | ||
174 | #define FR_MACR ALGR(FR_LSQU) // ¯ (dead) | ||
175 | #define FR_UNDS ALGR(FR_RSQU) // _ | ||
176 | #define FR_LDQU ALGR(FR_LDAQ) // “ | ||
177 | #define FR_RDQU ALGR(FR_RDAQ) // ” | ||
178 | #define FR_DEG ALGR(FR_QUOT) // ° | ||
179 | #define FR_CARN ALGR(FR_DCIR) // ˇ (dead) | ||
180 | // Row 2 | ||
181 | #define FR_AE ALGR(FR_A) // æ | ||
182 | #define FR_PND ALGR(FR_Z) // £ | ||
183 | #define FR_EURO ALGR(FR_E) // € | ||
184 | #define FR_REGD ALGR(FR_R) // ® | ||
185 | #define FR_LCBR ALGR(FR_T) // { | ||
186 | #define FR_RCBR ALGR(FR_Y) // } | ||
187 | #define FR_UGRV ALGR(FR_U) // ù | ||
188 | #define FR_DOTA ALGR(FR_I) // ˙ (dead) | ||
189 | #define FR_OE ALGR(FR_O) // œ | ||
190 | #define FR_PERC ALGR(FR_P) // % | ||
191 | #define FR_MMNS ALGR(FR_MINS) // − | ||
192 | #define FR_DAGG ALGR(FR_PLUS) // † | ||
193 | // Row 3 | ||
194 | #define FR_THET ALGR(FR_Q) // θ | ||
195 | #define FR_SS ALGR(FR_S) // ß | ||
196 | #define FR_DLR ALGR(FR_D) // $ | ||
197 | #define FR_CURR ALGR(FR_F) // ¤ (dead monetary key) | ||
198 | #define FR_DGRK ALGR(FR_G) // µ (dead Greek key) | ||
199 | #define FR_EU ALGR(FR_H) // Eu (dead European symbol key) | ||
200 | #define FR_DSLS ALGR(FR_K) // ∕ (dead) | ||
201 | #define FR_PIPE ALGR(FR_L) // | | ||
202 | #define FR_INFN ALGR(FR_M) // ∞ | ||
203 | #define FR_DIV ALGR(FR_SLSH) // ÷ | ||
204 | #define FR_MUL ALGR(FR_ASTR) // × | ||
205 | // Row 4 | ||
206 | #define FR_LEQL ALGR(FR_LABK) // ≤ | ||
207 | #define FR_EZH ALGR(FR_W) // ʒ | ||
208 | #define FR_COPY ALGR(FR_X) // © | ||
209 | #define FR_CCED ALGR(FR_C) // ç | ||
210 | #define FR_CEDL ALGR(FR_V) // ¸ (dead) | ||
211 | #define FR_DMNS ALGR(FR_B) // − (dead) | ||
212 | #define FR_DTIL ALGR(FR_N) // ~ (dead) | ||
213 | #define FR_IQUE ALGR(FR_DOT) // ¿ | ||
214 | #define FR_IEXL ALGR(FR_COMM) // ¡ | ||
215 | #define FR_MDDT ALGR(FR_COLN) // · | ||
216 | #define FR_AEQL ALGR(FR_SCLN) // ≃ | ||
217 | |||
218 | /* Shift+AltGr symbols | ||
219 | * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ | ||
220 | * │ ̑ │ │ │ │ │ ˝ │ ̏ │ │ — │ ‹ │ › │ ˚ │ │ │ | ||
221 | * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ | ||
222 | * │ │ │ │ │ │ ™ │ │ │ ̣ │ │ ‰ │ ‑ │ ‡ │ │ | ||
223 | * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ | ||
224 | * │ │ │ │ │ │ │ ˍ │ │ │ │ │ √ │ ¼ │ │ | ||
225 | * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ | ||
226 | * │ │ ≥ │ │ │ │ ˛ │ │ │ │ ̦ │ │ ≠ │ │ | ||
227 | * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ | ||
228 | * │ │ │ │ │ │ │ │ │ | ||
229 | * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ | ||
230 | */ | ||
231 | // Row 1 | ||
232 | #define FR_IBRV S(ALGR(FR_AT)) // ̑ (dead) | ||
233 | #define FR_DACU S(ALGR(FR_LPRN)) // ˝ (dead) | ||
234 | #define FR_DGRV S(ALGR(FR_RPRN)) // ̏ (dead) | ||
235 | #define FR_MDSH S(ALGR(FR_RSQU)) // — | ||
236 | #define FR_LSAQ S(ALGR(FR_LDAQ)) // ‹ | ||
237 | #define FR_RSAQ S(ALGR(FR_RDAQ)) // › | ||
238 | #define FR_RNGA S(ALGR(FR_QUOT)) // ˚ (dead) | ||
239 | // Row 2 | ||
240 | #define FR_TM S(ALGR(FR_T)) // ™ | ||
241 | #define FR_DOTB S(ALGR(FR_I)) // ̣ (dead) | ||
242 | #define FR_PERM S(ALGR(FR_P)) // ‰ | ||
243 | #define FR_NBHY S(ALGR(FR_MINS)) // ‑ (non-breaking hyphen) | ||
244 | #define FR_DDAG S(ALGR(FR_PLUS)) // ‡ | ||
245 | // Row 3 | ||
246 | #define FR_MACB S(ALGR(FR_H)) // ˍ (dead) | ||
247 | #define FR_SQRT S(ALGR(FR_SLSH)) // √ | ||
248 | #define FR_QRTR S(ALGR(FR_ASTR)) // ¼ | ||
249 | // Row 4 | ||
250 | #define FR_GEQL S(ALGR(FR_LABK)) // ≥ | ||
251 | #define FR_OGON S(ALGR(FR_V)) // ˛ (dead) | ||
252 | #define FR_DCMM S(ALGR(FR_COMM)) // ̦ (dead) | ||
253 | #define FR_NEQL S(ALGR(FR_SCLN)) // ≠ | ||
diff --git a/quantum/keymap_extras/sendstring_french_afnor.h b/quantum/keymap_extras/sendstring_french_afnor.h new file mode 100644 index 000000000..690daaaf0 --- /dev/null +++ b/quantum/keymap_extras/sendstring_french_afnor.h | |||
@@ -0,0 +1,100 @@ | |||
1 | /* Copyright 2020 Guillaume Gérard | ||
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 French (AZERTY - AFNOR NF Z71-300) layouts | ||
18 | |||
19 | #pragma once | ||
20 | |||
21 | #include "keymap_french_afnor.h" | ||
22 | #include "quantum.h" | ||
23 | |||
24 | // clang-format off | ||
25 | |||
26 | const 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, 1, 0, 0, 0, 0), | ||
33 | KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), | ||
34 | KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), | ||
35 | KCLUT_ENTRY(1, 1, 0, 0, 0, 1, 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, 1, 0, 0, 0), | ||
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, 0, 0, 0, 0) | ||
44 | }; | ||
45 | |||
46 | const 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, 1, 1, 1, 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(0, 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, 0, 1, 0, 1), | ||
60 | KCLUT_ENTRY(1, 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, 1, 1, 1, 0) | ||
64 | }; | ||
65 | |||
66 | const uint8_t ascii_to_keycode_lut[128] PROGMEM = { | ||
67 | // NUL SOH STX ETX EOT ENQ ACK BEL | ||
68 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
69 | // BS TAB LF VT FF CR SO SI | ||
70 | KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
71 | // DLE DC1 DC2 DC3 DC4 NAK SYN ETB | ||
72 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
73 | // CAN EM SUB ESC FS GS RS US | ||
74 | XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
75 | |||
76 | // ! " # $ % & ' | ||
77 | KC_SPC, FR_COMM, FR_QUOT, FR_AT, FR_D, FR_P, FR_ECIR, FR_QUOT, | ||
78 | // ( ) * + , - . / | ||
79 | FR_LPRN, FR_RPRN, FR_ASTR, FR_PLUS, FR_COMM, FR_MINS, FR_DOT, FR_SLSH, | ||
80 | // 0 1 2 3 4 5 6 7 | ||
81 | FR_RDAQ, FR_AGRV, FR_EACU, FR_EGRV, FR_ECIR, FR_LPRN, FR_RPRN, FR_LSQU, | ||
82 | // 8 9 : ; < = > ? | ||
83 | FR_RSQU, FR_LDAQ, FR_COLN, FR_SCLN, FR_LABK, FR_SCLN, FR_LABK, FR_DOT, | ||
84 | // @ A B C D E F G | ||
85 | FR_AT, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G, | ||
86 | // H I J K L M N O | ||
87 | FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O, | ||
88 | // P Q R S T U V W | ||
89 | FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W, | ||
90 | // X Y Z [ \ ] ^ _ | ||
91 | FR_X, FR_Y, FR_Z, FR_LPRN, FR_SLSH, FR_RPRN, FR_DCIR, FR_RSQU, | ||
92 | // ` a b c d e f g | ||
93 | FR_EGRV, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G, | ||
94 | // h i j k l m n o | ||
95 | FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O, | ||
96 | // p q r s t u v w | ||
97 | FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W, | ||
98 | // x y z { | } ~ DEL | ||
99 | FR_X, FR_Y, FR_Z, FR_T, FR_L, FR_Y, FR_N, KC_DEL | ||
100 | }; | ||