diff options
Diffstat (limited to 'layouts/community/ergodox/french_hacker/keymap.c')
-rw-r--r-- | layouts/community/ergodox/french_hacker/keymap.c | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/layouts/community/ergodox/french_hacker/keymap.c b/layouts/community/ergodox/french_hacker/keymap.c new file mode 100644 index 000000000..30bf56608 --- /dev/null +++ b/layouts/community/ergodox/french_hacker/keymap.c | |||
@@ -0,0 +1,365 @@ | |||
1 | #include QMK_KEYBOARD_H | ||
2 | #include "debug.h" | ||
3 | #include "action_layer.h" | ||
4 | #include "version.h" | ||
5 | #include "keymap_french.h" | ||
6 | |||
7 | #define BASE 0 // default Colemak Mod-DH layer | ||
8 | #define SYMB 1 // symbols | ||
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 | |||
27 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
28 | /* Keymap 0: Base Colemak Mod-DH layer | ||
29 | * | ||
30 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
31 | * | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | | ||
32 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
33 | * | | Q | W | F | P | B | TO(0)| |TO(2) | J | L | U | Y | ; | | | ||
34 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
35 | * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | Bcksp | | ||
36 | * |--------+------+------+------+------+------| TO(1)| |OSL(3)|------+------+------+------+------+--------| | ||
37 | * | LShift | Z | X | C | D | V | | | | K | H | , | . | : | Rshift | | ||
38 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
39 | * | Ins | Caps | Left | Right| MO(2)| | MO(2)| Down | Up | PgDn | PgUp | | ||
40 | * `----------------------------------' `----------------------------------' | ||
41 | * ,-------------. ,-------------. | ||
42 | * |QCopy | Ralt | | Ralt |QPaste| | ||
43 | * ,------|------|------| |------+------+------. | ||
44 | * | | | Home | | End | | | | ||
45 | * | Space| Ctrl |------| |------| Ctrl |Enter | | ||
46 | * | | | LAlt | | LAlt | | | | ||
47 | * `--------------------' `--------------------' | ||
48 | */ | ||
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 | ||
52 | // left hand | ||
53 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, | ||
54 | KC_TRNS, 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, | ||
56 | 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), | ||
58 | M(QCOPY), KC_RALT, | ||
59 | KC_HOME, | ||
60 | KC_SPC,KC_LCTRL, KC_LALT, | ||
61 | // right hand | ||
62 | KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, | ||
63 | TO(MDIA), KC_J, KC_L, KC_U, KC_Y, FR_SCLN, KC_TRNS, | ||
64 | 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, | ||
66 | MO(SYMB), KC_DOWN, KC_UP, KC_PGDN, KC_PGUP, | ||
67 | |||
68 | KC_RALT, M(QPASTE), | ||
69 | KC_END, | ||
70 | KC_LALT,KC_RCTL, KC_ENT | ||
71 | ), | ||
72 | |||
73 | |||
74 | /* Keymap 1: Symbol Layer | ||
75 | * // TODO missing: ¤ | ||
76 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
77 | * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | | ||
78 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
79 | * | | § | < | { | \ | ~ | | | | % | @ | } | > | µ | F12 | | ||
80 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
81 | * | | ' | = | - | ( | + |------| |------| * | ) | _ | / | " | | | ||
82 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
83 | * | | ` | ? | # | [ | | | | | | & | ] | $ | ! | ^ | | | ||
84 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
85 | * | € | £ | $ | | | | | | | ß | | | ||
86 | * `----------------------------------' `----------------------------------' | ||
87 | * ,-------------. ,-------------. | ||
88 | * | | | | | | | ||
89 | * ,------|------|------| |------+------+------. | ||
90 | * | | | | | | | | | ||
91 | * | | |------| |------| | | | ||
92 | * | | | | | | | | | ||
93 | * `--------------------' `--------------------' | ||
94 | */ | ||
95 | // SYMBOLS | ||
96 | [SYMB] = LAYOUT_ergodox( | ||
97 | // left hand | ||
98 | M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, | ||
99 | KC_TRNS,FR_SECT,FR_LESS, FR_LCBR,FR_BSLS,FR_TILD,KC_TRNS, | ||
100 | KC_TRNS,FR_APOS,FR_EQL, FR_MINS,FR_LPRN,FR_PLUS, | ||
101 | 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, | ||
103 | KC_TRNS,KC_TRNS, | ||
104 | KC_TRNS, | ||
105 | KC_TRNS,KC_TRNS,KC_TRNS, | ||
106 | // right hand | ||
107 | KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | ||
108 | KC_TRNS, FR_PERC, FR_AT, FR_RCBR, FR_GRTR, FR_MU, KC_F12, | ||
109 | FR_ASTR, FR_RPRN, FR_UNDS, FR_SLSH, FR_QUOT, KC_TRNS, | ||
110 | KC_TRNS, FR_AMP, FR_RBRC, FR_DLR, FR_EXLM, FR_CIRC, KC_TRNS, | ||
111 | KC_TRNS, KC_TRNS, KC_TRNS, ALGR(KC_S), KC_TRNS, | ||
112 | KC_TRNS, KC_TRNS, | ||
113 | KC_TRNS, | ||
114 | KC_TRNS, KC_TRNS, KC_TRNS | ||
115 | ), | ||
116 | /* Keymap 2: Media and mouse keys | ||
117 | * | ||
118 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
119 | * | | | | | | | | | | | | | | | | | ||
120 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
121 | * | | | | MsUp | | | | | | | | | | | | | ||
122 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
123 | * | | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Rclk | | | Play | | ||
124 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
125 | * | | | | | | | | | | | | Prev | Next | | | | ||
126 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
127 | * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | | ||
128 | * `----------------------------------' `----------------------------------' | ||
129 | * ,-------------. ,-------------. | ||
130 | * | | | | | | | ||
131 | * ,------|------|------| |------+------+------. | ||
132 | * | | | | | | |Brwser| | ||
133 | * | | |------| |------| |Back | | ||
134 | * | | | | | | | | | ||
135 | * `--------------------' `--------------------' | ||
136 | */ | ||
137 | // MEDIA AND MOUSE | ||
138 | [MDIA] = LAYOUT_ergodox( | ||
139 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
140 | KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, | ||
141 | KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, | ||
142 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
143 | KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, | ||
144 | KC_TRNS, KC_TRNS, | ||
145 | KC_TRNS, | ||
146 | KC_TRNS, KC_TRNS, KC_TRNS, | ||
147 | // right hand | ||
148 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
149 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
150 | KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY, | ||
151 | KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, | ||
152 | KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, | ||
153 | KC_TRNS, KC_TRNS, | ||
154 | KC_TRNS, | ||
155 | KC_TRNS, KC_TRNS, KC_WBAK | ||
156 | ), | ||
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 uint16_t PROGMEM fn_actions[] = { | ||
203 | [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) | ||
204 | }; | ||
205 | |||
206 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
207 | { | ||
208 | // MACRODOWN only works in this function | ||
209 | switch(id) { | ||
210 | case QCOPY: | ||
211 | if (record->event.pressed) { | ||
212 | return MACRO(I(255), | ||
213 | D(LCTRL), | ||
214 | T(C), | ||
215 | D(LSFT), | ||
216 | T(C), | ||
217 | U(LCTRL), | ||
218 | U(LSFT), | ||
219 | END); | ||
220 | } | ||
221 | break; | ||
222 | case QPASTE: | ||
223 | if (record->event.pressed) { | ||
224 | return MACRO(I(255), | ||
225 | D(LCTRL), | ||
226 | D(LSFT), | ||
227 | T(V), | ||
228 | U(LCTRL), | ||
229 | T(INS), | ||
230 | U(LSFT), | ||
231 | END); | ||
232 | } | ||
233 | break; | ||
234 | case M_ACIRC: | ||
235 | if (record->event.pressed) { | ||
236 | return MACRO(T(LBRC), // FR_CIRC | ||
237 | T(Q), // FR_A | ||
238 | END); | ||
239 | } | ||
240 | break; | ||
241 | case M_ECIRC: | ||
242 | if (record->event.pressed) { | ||
243 | return MACRO(T(LBRC), // FR_CIRC | ||
244 | T(E), | ||
245 | END); | ||
246 | } | ||
247 | break; | ||
248 | case M_UCIRC: | ||
249 | if (record->event.pressed) { | ||
250 | return MACRO(T(LBRC), // FR_CIRC | ||
251 | T(U), | ||
252 | END); | ||
253 | } | ||
254 | break; | ||
255 | case M_ICIRC: | ||
256 | if (record->event.pressed) { | ||
257 | return MACRO(T(LBRC), // FR_CIRC | ||
258 | T(I), | ||
259 | END); | ||
260 | } | ||
261 | break; | ||
262 | case M_OCIRC: | ||
263 | if (record->event.pressed) { | ||
264 | return MACRO(T(LBRC), // FR_CIRC | ||
265 | T(O), | ||
266 | END); | ||
267 | } | ||
268 | break; | ||
269 | case M_YCIRC: | ||
270 | if (record->event.pressed) { | ||
271 | return MACRO(T(LBRC), // FR_CIRC | ||
272 | T(Y), | ||
273 | END); | ||
274 | } | ||
275 | break; | ||
276 | case M_AUMLT: | ||
277 | if (record->event.pressed) { | ||
278 | return MACRO(D(LSFT), | ||
279 | T(LBRC), | ||
280 | U(LSFT), | ||
281 | T(Q), | ||
282 | END); | ||
283 | } | ||
284 | break; | ||
285 | case M_EUMLT: | ||
286 | if (record->event.pressed) { | ||
287 | return MACRO(D(LSFT), | ||
288 | T(LBRC), | ||
289 | U(LSFT), | ||
290 | T(E), | ||
291 | END); | ||
292 | } | ||
293 | break; | ||
294 | case M_UUMLT: | ||
295 | if (record->event.pressed) { | ||
296 | return MACRO(D(LSFT), | ||
297 | T(LBRC), | ||
298 | U(LSFT), | ||
299 | T(U), | ||
300 | END); | ||
301 | } | ||
302 | break; | ||
303 | case M_IUMLT: | ||
304 | if (record->event.pressed) { | ||
305 | return MACRO(D(LSFT), | ||
306 | T(LBRC), | ||
307 | U(LSFT), | ||
308 | T(I), | ||
309 | END); | ||
310 | } | ||
311 | break; | ||
312 | case M_OUMLT: | ||
313 | if (record->event.pressed) { | ||
314 | return MACRO(D(LSFT), | ||
315 | T(LBRC), | ||
316 | U(LSFT), | ||
317 | T(O), | ||
318 | END); | ||
319 | } | ||
320 | break; | ||
321 | case M_YUMLT: | ||
322 | if (record->event.pressed) { | ||
323 | return MACRO(D(LSFT), | ||
324 | T(LBRC), | ||
325 | U(LSFT), | ||
326 | T(Y), | ||
327 | END); | ||
328 | } | ||
329 | break; | ||
330 | |||
331 | } | ||
332 | return MACRO_NONE; | ||
333 | }; | ||
334 | |||
335 | // Runs just one time when the keyboard initializes. | ||
336 | void matrix_init_user(void) { | ||
337 | |||
338 | }; | ||
339 | |||
340 | |||
341 | // Runs constantly in the background, in a loop. | ||
342 | void matrix_scan_user(void) { | ||
343 | |||
344 | uint8_t layer = biton32(layer_state); | ||
345 | |||
346 | ergodox_board_led_off(); | ||
347 | ergodox_right_led_1_off(); | ||
348 | ergodox_right_led_2_off(); | ||
349 | ergodox_right_led_3_off(); | ||
350 | switch (layer) { | ||
351 | case SYMB: | ||
352 | ergodox_right_led_1_on(); | ||
353 | break; | ||
354 | case MDIA: | ||
355 | ergodox_right_led_2_on(); | ||
356 | break; | ||
357 | case ACC: | ||
358 | ergodox_right_led_3_on(); | ||
359 | break; | ||
360 | default: | ||
361 | // none | ||
362 | break; | ||
363 | } | ||
364 | |||
365 | }; | ||