diff options
author | QMK Bot <hello@qmk.fm> | 2021-11-05 18:28:07 +0000 |
---|---|---|
committer | QMK Bot <hello@qmk.fm> | 2021-11-05 18:28:07 +0000 |
commit | b4c5c56f58d97ee3de832ae43697b01e6cf3ed9a (patch) | |
tree | c5841e1f8a91a2933d669fe827a2d917241bdf3f | |
parent | ea3b2e2f954b54e647881de18c9ad637f2f0c1d3 (diff) | |
parent | 827115a4f69eec494687f4fdea62acc7b310f910 (diff) | |
download | qmk_firmware-b4c5c56f58d97ee3de832ae43697b01e6cf3ed9a.tar.gz qmk_firmware-b4c5c56f58d97ee3de832ae43697b01e6cf3ed9a.zip |
Merge remote-tracking branch 'origin/master' into develop
-rw-r--r-- | layouts/community/ergodox/french_hacker/keymap.c | 263 | ||||
-rw-r--r-- | layouts/community/ergodox/french_hacker/readme.md | 27 |
2 files changed, 47 insertions, 243 deletions
diff --git a/layouts/community/ergodox/french_hacker/keymap.c b/layouts/community/ergodox/french_hacker/keymap.c index b4c8e37bd..44b0c4786 100644 --- a/layouts/community/ergodox/french_hacker/keymap.c +++ b/layouts/community/ergodox/french_hacker/keymap.c | |||
@@ -7,82 +7,64 @@ | |||
7 | #define BASE 0 // default Colemak Mod-DH layer | 7 | #define BASE 0 // default Colemak Mod-DH layer |
8 | #define SYMB 1 // symbols | 8 | #define SYMB 1 // symbols |
9 | #define MDIA 2 // media keys | 9 | #define MDIA 2 // media keys |
10 | #define ACC 3 // accented characters | ||
11 | |||
12 | #define QCOPY 0 // Qubes OS VM to VM copy | ||
13 | #define QPASTE 1 // Qubes OS VM to VM paste | ||
14 | #define M_ACIRC 2 // â | ||
15 | #define M_ECIRC 3 // ê | ||
16 | #define M_ICIRC 4 // î | ||
17 | #define M_OCIRC 5 // ô | ||
18 | #define M_UCIRC 6 // û | ||
19 | #define M_YCIRC 7 // ŷ | ||
20 | #define M_AUMLT 8 // ä | ||
21 | #define M_EUMLT 9 // ë | ||
22 | #define M_IUMLT 10 // ï | ||
23 | #define M_OUMLT 11 // ö | ||
24 | #define M_UUMLT 12 // ü | ||
25 | #define M_YUMLT 13 // ÿ | ||
26 | 10 | ||
27 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 11 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
28 | /* Keymap 0: Base Colemak Mod-DH layer | 12 | /* Keymap 0: Base Colemak Mod-DH layer |
29 | * | 13 | * |
30 | * ,--------------------------------------------------. ,--------------------------------------------------. | 14 | * ,--------------------------------------------------. ,--------------------------------------------------. |
31 | * | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | | 15 | * | Esc | & _1 | é _2 | " _3 | ' _4 | ( _5 | | | | - _6 | è _7 | _ _8 | ç _9 | à _0 | | |
32 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | 16 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| |
33 | * | | Q | W | F | P | B | TO(0)| |TO(2) | J | L | U | Y | ; | | | 17 | * | | Q | W | F | P | B | TO(0)| |TO(2) | J | L | U | Y | ; | Ins | |
34 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | 18 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| |
35 | * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | Bcksp | | 19 | * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | Bcksp | |
36 | * |--------+------+------+------+------+------| TO(1)| |OSL(3)|------+------+------+------+------+--------| | 20 | * |--------+------+------+------+------+------| TO(1)| | MEH |------+------+------+------+------+--------| |
37 | * | LShift | Z | X | C | D | V | | | | K | H | , | . | : | Rshift | | 21 | * | LShift | Z | X | C | D | V | | | | K | H | , | . | : | Rshift | |
38 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | 22 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' |
39 | * | Ins | Caps | Left | Right| MO(2)| | MO(2)| Down | Up | PgDn | PgUp | | 23 | * | ù | | Left | Right| MO(2)| | MO(2)| Down | Up | PgDn | PgUp | |
40 | * `----------------------------------' `----------------------------------' | 24 | * `----------------------------------' `----------------------------------' |
41 | * ,-------------. ,-------------. | 25 | * ,-------------. ,-------------. |
42 | * |QCopy | Ralt | | Ralt |QPaste| | 26 | * | | Ralt | | Ralt | | |
43 | * ,------|------|------| |------+------+------. | 27 | * ,-------|------|------| |------+------+------. |
44 | * | | | Home | | End | | | | 28 | * | | | Home | | End | | | |
45 | * | Space| Ctrl |------| |------| Ctrl |Enter | | 29 | * | Space | Ctrl |------| |------| Ctrl | Enter | |
46 | * | | | LAlt | | LAlt | | | | 30 | * | | | LAlt | | LAlt | | | |
47 | * `--------------------' `--------------------' | 31 | * `---------------------' `---------------------' |
48 | */ | 32 | */ |
49 | // If it accepts an argument (i.e, is a function), it doesn't need KC_. | ||
50 | // Otherwise, it needs KC_* | ||
51 | [BASE] = LAYOUT_ergodox( // layer 0 : default | 33 | [BASE] = LAYOUT_ergodox( // layer 0 : default |
52 | // left hand | 34 | // left hand |
53 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, | 35 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, |
54 | KC_TRNS, FR_Q, FR_W, KC_F, KC_P, KC_B, TO(BASE), | 36 | KC_NO, FR_Q, FR_W, KC_F, KC_P, KC_B, TO(BASE), |
55 | KC_TAB, FR_A, KC_R, KC_S, KC_T, KC_G, | 37 | KC_TAB, FR_A, KC_R, KC_S, KC_T, KC_G, |
56 | KC_LSFT, FR_Z, KC_X, KC_C, KC_D, KC_V, TO(SYMB), | 38 | KC_LSFT, FR_Z, KC_X, KC_C, KC_D, KC_V, TO(SYMB), |
57 | KC_INS, KC_CAPS, KC_LEFT,KC_RIGHT, MO(SYMB), | 39 | FR_UGRV, KC_NO, KC_LEFT, KC_RIGHT, MO(SYMB), |
58 | M(QCOPY), KC_RALT, | 40 | KC_NO, KC_RALT, |
59 | KC_HOME, | 41 | KC_HOME, |
60 | KC_SPC,KC_LCTRL, KC_LALT, | 42 | KC_SPC,KC_LCTRL, KC_LALT, |
61 | // right hand | 43 | // right hand |
62 | KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, | 44 | KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, |
63 | TO(MDIA), KC_J, KC_L, KC_U, KC_Y, FR_SCLN, KC_TRNS, | 45 | TO(MDIA), KC_J, KC_L, KC_U, KC_Y, FR_SCLN, KC_INS, |
64 | FR_M, KC_N, KC_E, KC_I, KC_O, KC_BSPC, | 46 | FR_M, KC_N, KC_E, KC_I, KC_O, KC_BSPC, |
65 | OSL(ACC), KC_K, KC_H, FR_COMM, FR_DOT, FR_COLN, KC_RSFT, | 47 | OSM(MOD_MEH), KC_K, KC_H, FR_COMM, FR_DOT, FR_COLN, KC_RSFT, |
66 | MO(SYMB), KC_DOWN, KC_UP, KC_PGDN, KC_PGUP, | 48 | MO(SYMB), KC_DOWN, KC_UP, KC_PGDN, KC_PGUP, |
67 | 49 | ||
68 | KC_RALT, M(QPASTE), | 50 | KC_RALT, KC_NO, |
69 | KC_END, | 51 | KC_END, |
70 | KC_LALT,KC_RCTL, KC_ENT | 52 | KC_LALT,KC_RCTL, KC_ENT |
71 | ), | 53 | ), |
72 | 54 | ||
73 | 55 | ||
74 | /* Keymap 1: Symbol Layer | 56 | /* Keymap 1: Symbol Layer |
75 | * // TODO missing: ¤ | 57 | * |
76 | * ,--------------------------------------------------. ,--------------------------------------------------. | 58 | * ,--------------------------------------------------. ,--------------------------------------------------. |
77 | * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | | 59 | * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | |
78 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | 60 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| |
79 | * | | § | < | { | \ | ~ | | | | % | @ | } | > | µ | F12 | | 61 | * | | § | < | { | \ | ~ | | | | % | @ | } | > | ¨ | F12 | |
80 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | 62 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| |
81 | * | | ' | = | - | ( | + |------| |------| * | ) | _ | / | " | | | 63 | * | | ' | = | - | ( | + |------| |------| * | ) | _ | / | " | | |
82 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | 64 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| |
83 | * | | ` | ? | # | [ | | | | | | & | ] | $ | ! | ^ | | | 65 | * | | ` | ? | # | [ | | | | | | & | ] | $ | ! | ^ | | |
84 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | 66 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' |
85 | * | € | £ | $ | | | | | | | ß | | | 67 | * | € | £ | ¤ | ² | | | | ° | µ | ß | | |
86 | * `----------------------------------' `----------------------------------' | 68 | * `----------------------------------' `----------------------------------' |
87 | * ,-------------. ,-------------. | 69 | * ,-------------. ,-------------. |
88 | * | | | | | | | 70 | * | | | | | | |
@@ -95,20 +77,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
95 | // SYMBOLS | 77 | // SYMBOLS |
96 | [SYMB] = LAYOUT_ergodox( | 78 | [SYMB] = LAYOUT_ergodox( |
97 | // left hand | 79 | // left hand |
98 | M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, | 80 | M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, |
99 | KC_TRNS,FR_SECT,FR_LABK, FR_LCBR,FR_BSLS,FR_TILD,KC_TRNS, | 81 | KC_TRNS, FR_SECT, FR_LABK, FR_LCBR, FR_BSLS, FR_TILD, KC_TRNS, |
100 | KC_TRNS,FR_QUOT,FR_EQL, FR_MINS,FR_LPRN,FR_PLUS, | 82 | KC_TRNS, FR_QUOT, FR_EQL, FR_MINS, FR_LPRN, FR_PLUS, |
101 | KC_TRNS,FR_GRV,FR_QUES,FR_HASH,FR_LBRC,FR_PIPE,KC_TRNS, | 83 | KC_TRNS, FR_GRV, FR_QUES, FR_HASH, FR_LBRC, FR_PIPE, KC_TRNS, |
102 | FR_EURO,FR_PND,FR_DLR,KC_TRNS,KC_TRNS, | 84 | FR_EURO, FR_PND, FR_CURR, FR_SUP2, KC_TRNS, |
103 | KC_TRNS,KC_TRNS, | 85 | KC_TRNS,KC_TRNS, |
104 | KC_TRNS, | 86 | KC_TRNS, |
105 | KC_TRNS,KC_TRNS,KC_TRNS, | 87 | KC_TRNS,KC_TRNS,KC_TRNS, |
106 | // right hand | 88 | // right hand |
107 | KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | 89 | KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, |
108 | KC_TRNS, FR_PERC, FR_AT, FR_RCBR, FR_RABK, FR_MICR, KC_F12, | 90 | KC_TRNS, FR_PERC, FR_AT, FR_RCBR, FR_RABK, FR_DIAE, KC_F12, |
109 | FR_ASTR, FR_RPRN, FR_UNDS, FR_SLSH, FR_DQUO, KC_TRNS, | 91 | FR_ASTR, FR_RPRN, FR_UNDS, FR_SLSH, FR_DQUO, KC_TRNS, |
110 | KC_TRNS, FR_AMPR, FR_RBRC, FR_DLR, FR_EXLM, FR_CIRC, KC_TRNS, | 92 | KC_TRNS, FR_AMPR, FR_RBRC, FR_DLR, FR_EXLM, FR_CIRC, KC_TRNS, |
111 | KC_TRNS, KC_TRNS, KC_TRNS, ALGR(KC_S), KC_TRNS, | 93 | KC_TRNS, FR_DEG, FR_MICR, ALGR(KC_S), KC_TRNS, |
112 | KC_TRNS, KC_TRNS, | 94 | KC_TRNS, KC_TRNS, |
113 | KC_TRNS, | 95 | KC_TRNS, |
114 | KC_TRNS, KC_TRNS, KC_TRNS | 96 | KC_TRNS, KC_TRNS, KC_TRNS |
@@ -154,178 +136,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
154 | KC_TRNS, | 136 | KC_TRNS, |
155 | KC_TRNS, KC_TRNS, KC_WBAK | 137 | KC_TRNS, KC_TRNS, KC_WBAK |
156 | ), | 138 | ), |
157 | |||
158 | /* Keymap 3: accented characters | ||
159 | * | ||
160 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
161 | * | | | | | | | | | | | | | | | | | ||
162 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
163 | * | | | à | â | ä | | | | | | | î | ï | | | | ||
164 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
165 | * | | é | è | ê | ë | |------| |------| | | ô | ö | | | | ||
166 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
167 | * | | | ù | û | ü | | | | | | | ŷ | ÿ | | | | ||
168 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
169 | * | | | | | | | | | | | | | ||
170 | * `----------------------------------' `----------------------------------' | ||
171 | * ,-------------. ,-------------. | ||
172 | * | | | | | | | ||
173 | * ,------|------|------| |------+------+------. | ||
174 | * | | | | | | | | | ||
175 | * | | |------| |------| | | | ||
176 | * | | | | | | | | | ||
177 | * `--------------------' `--------------------' | ||
178 | */ | ||
179 | // ACCENTED CHARACTERS | ||
180 | [ACC] = LAYOUT_ergodox( | ||
181 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
182 | |||
183 | KC_TRNS, KC_TRNS, FR_AGRV, M(M_ACIRC), M(M_AUMLT), KC_TRNS, KC_TRNS, | ||
184 | KC_TRNS, FR_EACU, FR_EGRV, M(M_ECIRC), M(M_EUMLT), KC_TRNS, | ||
185 | KC_TRNS, KC_TRNS, FR_UGRV, M(M_UCIRC), M(M_UUMLT), KC_TRNS, KC_TRNS, | ||
186 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
187 | KC_TRNS, KC_TRNS, | ||
188 | KC_TRNS, | ||
189 | KC_TRNS, KC_TRNS, KC_TRNS, | ||
190 | // right hand | ||
191 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
192 | KC_TRNS, KC_TRNS, KC_TRNS, M(M_ICIRC), M(M_IUMLT), KC_TRNS, KC_TRNS, | ||
193 | KC_TRNS, KC_TRNS, M(M_OCIRC), M(M_OUMLT), KC_TRNS, KC_TRNS, | ||
194 | KC_TRNS, KC_TRNS, KC_TRNS, M(M_YCIRC), M(M_YUMLT), KC_TRNS, KC_TRNS, | ||
195 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
196 | KC_TRNS, KC_TRNS, | ||
197 | KC_TRNS, | ||
198 | KC_TRNS, KC_TRNS, KC_TRNS | ||
199 | ), | ||
200 | }; | ||
201 | |||
202 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
203 | { | ||
204 | // MACRODOWN only works in this function | ||
205 | switch(id) { | ||
206 | case QCOPY: | ||
207 | if (record->event.pressed) { | ||
208 | return MACRO(I(255), | ||
209 | D(LCTRL), | ||
210 | T(C), | ||
211 | D(LSFT), | ||
212 | T(C), | ||
213 | U(LCTRL), | ||
214 | U(LSFT), | ||
215 | END); | ||
216 | } | ||
217 | break; | ||
218 | case QPASTE: | ||
219 | if (record->event.pressed) { | ||
220 | return MACRO(I(255), | ||
221 | D(LCTRL), | ||
222 | D(LSFT), | ||
223 | T(V), | ||
224 | U(LCTRL), | ||
225 | T(INS), | ||
226 | U(LSFT), | ||
227 | END); | ||
228 | } | ||
229 | break; | ||
230 | case M_ACIRC: | ||
231 | if (record->event.pressed) { | ||
232 | return MACRO(T(LBRC), // FR_CIRC | ||
233 | T(Q), // FR_A | ||
234 | END); | ||
235 | } | ||
236 | break; | ||
237 | case M_ECIRC: | ||
238 | if (record->event.pressed) { | ||
239 | return MACRO(T(LBRC), // FR_CIRC | ||
240 | T(E), | ||
241 | END); | ||
242 | } | ||
243 | break; | ||
244 | case M_UCIRC: | ||
245 | if (record->event.pressed) { | ||
246 | return MACRO(T(LBRC), // FR_CIRC | ||
247 | T(U), | ||
248 | END); | ||
249 | } | ||
250 | break; | ||
251 | case M_ICIRC: | ||
252 | if (record->event.pressed) { | ||
253 | return MACRO(T(LBRC), // FR_CIRC | ||
254 | T(I), | ||
255 | END); | ||
256 | } | ||
257 | break; | ||
258 | case M_OCIRC: | ||
259 | if (record->event.pressed) { | ||
260 | return MACRO(T(LBRC), // FR_CIRC | ||
261 | T(O), | ||
262 | END); | ||
263 | } | ||
264 | break; | ||
265 | case M_YCIRC: | ||
266 | if (record->event.pressed) { | ||
267 | return MACRO(T(LBRC), // FR_CIRC | ||
268 | T(Y), | ||
269 | END); | ||
270 | } | ||
271 | break; | ||
272 | case M_AUMLT: | ||
273 | if (record->event.pressed) { | ||
274 | return MACRO(D(LSFT), | ||
275 | T(LBRC), | ||
276 | U(LSFT), | ||
277 | T(Q), | ||
278 | END); | ||
279 | } | ||
280 | break; | ||
281 | case M_EUMLT: | ||
282 | if (record->event.pressed) { | ||
283 | return MACRO(D(LSFT), | ||
284 | T(LBRC), | ||
285 | U(LSFT), | ||
286 | T(E), | ||
287 | END); | ||
288 | } | ||
289 | break; | ||
290 | case M_UUMLT: | ||
291 | if (record->event.pressed) { | ||
292 | return MACRO(D(LSFT), | ||
293 | T(LBRC), | ||
294 | U(LSFT), | ||
295 | T(U), | ||
296 | END); | ||
297 | } | ||
298 | break; | ||
299 | case M_IUMLT: | ||
300 | if (record->event.pressed) { | ||
301 | return MACRO(D(LSFT), | ||
302 | T(LBRC), | ||
303 | U(LSFT), | ||
304 | T(I), | ||
305 | END); | ||
306 | } | ||
307 | break; | ||
308 | case M_OUMLT: | ||
309 | if (record->event.pressed) { | ||
310 | return MACRO(D(LSFT), | ||
311 | T(LBRC), | ||
312 | U(LSFT), | ||
313 | T(O), | ||
314 | END); | ||
315 | } | ||
316 | break; | ||
317 | case M_YUMLT: | ||
318 | if (record->event.pressed) { | ||
319 | return MACRO(D(LSFT), | ||
320 | T(LBRC), | ||
321 | U(LSFT), | ||
322 | T(Y), | ||
323 | END); | ||
324 | } | ||
325 | break; | ||
326 | |||
327 | } | ||
328 | return MACRO_NONE; | ||
329 | }; | 139 | }; |
330 | 140 | ||
331 | // Runs just one time when the keyboard initializes. | 141 | // Runs just one time when the keyboard initializes. |
@@ -350,9 +160,6 @@ void matrix_scan_user(void) { | |||
350 | case MDIA: | 160 | case MDIA: |
351 | ergodox_right_led_2_on(); | 161 | ergodox_right_led_2_on(); |
352 | break; | 162 | break; |
353 | case ACC: | ||
354 | ergodox_right_led_3_on(); | ||
355 | break; | ||
356 | default: | 163 | default: |
357 | // none | 164 | // none |
358 | break; | 165 | break; |
diff --git a/layouts/community/ergodox/french_hacker/readme.md b/layouts/community/ergodox/french_hacker/readme.md index 6b0575af1..829013597 100644 --- a/layouts/community/ergodox/french_hacker/readme.md +++ b/layouts/community/ergodox/french_hacker/readme.md | |||
@@ -1,30 +1,27 @@ | |||
1 | # French hacker layout | 1 | # French hacker layout |
2 | 2 | ||
3 | ## Introduction | ||
4 | |||
5 | [Colemak Mod-DH](https://colemakmods.github.io/mod-dh/) layout for | 3 | [Colemak Mod-DH](https://colemakmods.github.io/mod-dh/) layout for |
6 | users keeping an `azerty` layout configuration on their OS. | 4 | users keeping an `azerty` layout configuration on their OS. |
7 | 5 | ||
6 | ## Introduction | ||
7 | |||
8 | This keymap is for users keeping their operating systems configured with | 8 | This keymap is for users keeping their operating systems configured with |
9 | `azerty` - for typing passwords or in their native languages - but who | 9 | `azerty` - for typing passwords in their native languages, or for their laptop |
10 | wants a Colemak Mod-DH layout on their mechanical. | 10 | keyboard - but who wants a Colemak Mod-DH layout on their mechanical keyboard. |
11 | 11 | ||
12 | The symbols layers was done after analysing various programming | 12 | The symbols layers was done after analysing various programming |
13 | languages sources codes and should be close to optimal for typing | 13 | languages sources codes and should be close to optimal for typing |
14 | confort. | 14 | confort, see the link at the end of the README. |
15 | |||
16 | Special macros for [Qubes OS](https://www.qubes-os.org/) are included. | ||
17 | |||
18 | There is an accented characters layer for infrequent typing of french | ||
19 | accents. | ||
20 | 15 | ||
21 | Special macros for [Qubes OS](https://www.qubes-os.org/) are included. | 16 | The design is done to minimize the usage of the pinky fingers and reduces stress |
17 | on the hands, thus Alt and Ctrl keys are accessible for both hands. | ||
22 | 18 | ||
23 | ## Build | 19 | ## Flashing the firmware |
24 | 20 | ||
25 | cd keyboards/ergodox | 21 | ``` |
26 | make french_hacker | 22 | qmk flash -kb ergodox_ez -km french_hacker |
23 | ``` | ||
27 | 24 | ||
28 | ## Design explanations | 25 | ## Design explanations |
29 | 26 | ||
30 | See my [blog post](http://dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/). | 27 | See my [blog post](http://www.dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/). |