aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2021-11-05 18:28:07 +0000
committerQMK Bot <hello@qmk.fm>2021-11-05 18:28:07 +0000
commitb4c5c56f58d97ee3de832ae43697b01e6cf3ed9a (patch)
treec5841e1f8a91a2933d669fe827a2d917241bdf3f
parentea3b2e2f954b54e647881de18c9ad637f2f0c1d3 (diff)
parent827115a4f69eec494687f4fdea62acc7b310f910 (diff)
downloadqmk_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.c263
-rw-r--r--layouts/community/ergodox/french_hacker/readme.md27
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
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 11const 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
202const 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
6users keeping an `azerty` layout configuration on their OS. 4users keeping an `azerty` layout configuration on their OS.
7 5
6## Introduction
7
8This keymap is for users keeping their operating systems configured with 8This 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
10wants a Colemak Mod-DH layout on their mechanical. 10keyboard - but who wants a Colemak Mod-DH layout on their mechanical keyboard.
11 11
12The symbols layers was done after analysing various programming 12The symbols layers was done after analysing various programming
13languages sources codes and should be close to optimal for typing 13languages sources codes and should be close to optimal for typing
14confort. 14confort, see the link at the end of the README.
15
16Special macros for [Qubes OS](https://www.qubes-os.org/) are included.
17
18There is an accented characters layer for infrequent typing of french
19accents.
20 15
21Special macros for [Qubes OS](https://www.qubes-os.org/) are included. 16The design is done to minimize the usage of the pinky fingers and reduces stress
17on 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 22qmk flash -kb ergodox_ez -km french_hacker
23```
27 24
28## Design explanations 25## Design explanations
29 26
30See my [blog post](http://dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/). 27See my [blog post](http://www.dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/).