aboutsummaryrefslogtreecommitdiff
path: root/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h')
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h721
1 files changed, 721 insertions, 0 deletions
diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h
new file mode 100644
index 000000000..aad9ec233
--- /dev/null
+++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h
@@ -0,0 +1,721 @@
1/*
2 * License (GPL):
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17 * © 2019,2020 by Jos Boersema
18 *
19 */
20
21
22// ------------------------------------- ⬇ --------------------------------------
23// Configuration:
24// ------------------------------------- ⬇ --------------------------------------
25
26 // (For the non-coders: “_Remove_” means to place ‛//’ in front of a line. The rest of the line becomes a comment.
27 // Placing ‛//’ in front of a line, means whatever follows it will be ignored during compilation.
28 // “_Activate_” means to *delete* the two ‛//’ in front. Now the rest of the line *will* be compiled
29 // /* ... */ is another a way to turn “...” into being a comment which is ignored during compilation.
30 // (The documentation here is geared toward people who have no understanding about programming.)
31
32 /*
33 --------------------------------------------------------------------------------------
34 ----
35 --
36 -
37 Table of Contents:
38
39 -0- ➡ Compact configuration file ⬅
40
41 -1- ➡ Letters / Numbers & Symbols layouts ⬅
42 • Qwerty
43 • Qwerty with Base arrows
44 • Dvorak
45 • Dvorak descramble mode
46 • Colemak
47 • Workman
48 • Numpad
49
50 -2- ➡ Eviscerations ( ① / ② ) ⬅
51 • Single layout
52
53 -3- ➡ Startup settings ⬅
54 • Alternate Base
55 • Leds on/off at startup.
56 • Speed measuring
57 • Text size counting ⬅
58
59 -4- ➡ How many hardware keys 1st row ⬅
60
61 -5- ⚠ ≠ Minivan ⬅
62
63 -6- ➡ Defining the meaning of the additional hardware keys ⬅
64 • Defining the additional key for 'South paw' (also called 'Command')
65 • Defining 'Arrow' hardware layout additional keys
66
67 -7- ➡ Arrows/Navigation cluster ⬅
68 • Navigation cluster configuration
69 • VI editor arrows
70
71 -8- ➡ Number pad Configuration⬅
72
73 -9- ➡ Speed measuring ⬅
74
75 -10- ➡ Some alternative keys ⬅
76 • Right Alt or hold(_RAR) on Base
77 • GUI left/right
78 • Alternate currency symbol
79 • Check boxes or Pointers
80 • Switch _ACC/_BON and *left* side _NSY/_DRA hold keys
81 • Switch _PAD and _MOV on Left Shift toggle
82 • Switch _FUN and _RAR on Right Shift toggle
83
84 -11- ➡ Eviscerations ( ② / ② ) ⬅
85 • Removing the numbers pad _PAD layer
86 • Removing one or more of the Unicode layers _ACC, _DRA or_BON
87 • Removing groups of characters
88
89 -12- ➡ Leds ⬅
90 -
91 --
92 ----
93 --------------------------------------------------------------------------------------
94 */
95
96 /* -0- ➡ Compact configuration file ⬅
97 *
98 * If you _activate_ this, this whole heavily documented configuration block below
99 * gets skipped, and instead a bare bones configuration file with all these same options
100 * gets read. There is no functional difference.
101 *
102 * (You can use the compact configuration if you like that better. It can make communicating
103 * a configuration easier. The fully documented configuration is left in a state of default
104 * when uploaded to QMK, so that it gives the most commonly used layout: Qwerty with Numpad,
105 * basic 44 Minivan keys. The compact version its state is whatever it is.)
106 */
107 #define MINIFAN_CONFIG_COMPACT // _Activate_ this, to load the configuration in ./minifan_config_compact.h (note: mini‛f’an).
108#ifndef MINIFAN_CONFIG_COMPACT // (don't alter this)
109
110
111 /* -1- ➡ Letters / Numbers & Symbols layouts ⬅
112 *
113 * Here you can configure what letters layer (BASE layer), and number&symbols layer you
114 * want. This is a dual layout system, so you can choose a second pair as well. You can
115 * switch between them with a key on the _RAR layer. All the other layers are the same,
116 * regardless of your choice in letter/number&symbol layers.
117 *
118 * The letters layer is the BASE layer, from which you also reach all other layers.
119 * The letters it has is the alphabet in its simplest form: abcdefghijklmnopqrstuvwxyz.
120 * The numbers & symbols layer has what you find on any regular keyboard: 123… !@#… []/…
121 * The numbers & symbols layer is made to fit the Letters layer, due to small differences
122 * between layouts like Qwerty and Dvorak (in this case the symbols ‛-’, ‛/’, ‛?’, and ‛_’).
123 *
124 * Example: A Qwerty letters layer, with a fitting numbers & symbols layer, as ‛Default’.
125 * A Dvorak letters layer, with a fitting numbers & symbols layer, as ‛Alternate’.
126 *
127 * You will be asked to configure one layout as ‛Default’ and another as ‛Alternate’.
128 *
129 * A bases layout may have locally re-defined one or more of the common layers. If you
130 * choose two bases layouts who re-define the same common layer locally, you will need
131 * to choose either one by commenting out the other.
132 */
133 //
134 // • Qwerty
135 // (a regular Qwerty layout)
136 // _Activate_ one of these two, _remove_ the other.
137 #define BASE_QWERTY__DEF_BASE // _Activate_ if you want Qwerty on the ‛Default’ spot
138//#define BASE_QWERTY__ALT_BASE // _Activate_ if you want Qwerty on the ‛Alternate’ spot
139 // Note: you still need to set if you have the additional ‛arrow’ hardware key. You
140 // can ignore what it should be defined as, because it will be a plain arrow on Base.
141 //
142 // • Qwerty with Base arrows
143 // (provides direct access to arrows)
144 // _Activate_ one of these two, _remove_ the other.
145//#define BASE_QWERTY_BASEARROW__DEF_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Default’ spot
146//#define BASE_QWERTY_BASEARROW__ALT_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Alternate’ spot
147 //
148 // • Dvorak
149 // (a regular Dvorak layout)
150 // _Activate_ one of these two, _remove_ the other.
151//#define BASE_DVORAK__DEF_BASE // _Activate_ if you want Dvorak on the ‛Default’ spot
152//#define BASE_DVORAK__ALT_BASE // _Activate_ if you want Dvorak on the ‛Alternate’ spot
153 //
154 // • Dvorak descramble mode
155 // (Dvorak for a computer already remapping to Dvorak)
156 // This layout is only available on ‛Alternate’, because of the special _HALF_ descramble mode.
157//#define BASE_DVORAK_DESCRAMBLE__ALT_BASE // _Activate_ if you want Dvorak on the ‛Alternate’ spot
158 //
159 // • Colemak
160 // (a regular Colemak layout)
161 // _Activate_ one of these two, _remove_ the other.
162//#define BASE_COLEMAK__DEF_BASE // _Activate_ if you want Colemak on the ‛Default’ spot
163//#define BASE_COLEMAK__ALT_BASE // _Activate_ if you want Colemak on the ‛Alternate’ spot
164 //
165 // • Workman
166 // (a regular Workman layout)
167 // _Activate_ one of these two, _remove_ the other.
168//#define BASE_WORKMAN__DEF_BASE // _Activate_ if you want Workman on the ‛Default’ spot
169//#define BASE_WORKMAN__ALT_BASE // _Activate_ if you want Workman on the ‛Alternate’ spot
170 //
171 // • Numpad
172 // (a numerical keypad, one for left hand and one for right hand)
173 // _Activate_ to get Numpad on Alternate. There is no option for Numpad on ‛Default’ base.
174 #define BASE_NUMPAD__ALT_BASE // _Activate_ if you want Numpad on the ‛Alternate’ spot
175 // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./base_numpad.c
176 //
177 /* -2- ➡ Eviscerations ( ① / ② ) ⬅
178 */
179 /* • Single layout
180 *
181 * Removes the ‛Alternate’ base layers, and removes the switch key on _RAR.
182 * ⚠ You have to not define a ‛Alternate’ base layer pair. Define only a ‛Default’ pair.
183 */
184//#define MINIFAN_SINGLE_LAYOUT // _Activate_ to only have the ‛Default’ base layers, _remove_ to also have ‛Alternate’.
185
186
187 /* -3- ➡ Startup settings ⬅
188 */
189 /* • Alternate Base
190 *
191 * You can define which of the two BASE layers is on when powering up the keyboard.
192 */
193//#define STARTUP_ALTERNATE // Example: For BASES_QWERTY_DVORAK defined: _remove_ is startup in Qwerty, _active_ is
194 // startup in Dvorak
195 /* • Leds on/off at startup.
196 */
197//#define STARTUP_SIDE_LEDS_OFF // _Activate_ to have side leds be off at keyboard startup (when you plug it in / computer powers on).
198//#define STARTUP_MID_LED_OFF // _Activate_ to have middle led be off at keyboard startup.
199 //
200 /* • Speed measuring
201 */
202//#define STARTUP_SPEED // _Activate_ for default speed measuring on, _remove_ to set off at startup.
203 //
204 /* • Text size counting ⬅
205 */
206//#define STARTUP_COUNT // _Activate_ for default character/word counting on, _remove_ to set off at startup.
207
208
209
210 /* -4- ➡ How many hardware keys 1st row ⬅
211 *
212 * Define how many keys your keyboard has.
213 */
214 // Default (12x12x12x8 keys)
215 //'Command' (12x12x12x9 keys) + key on the left
216 //'Arrow' (12x12x12x9 keys) + key on the right
217 //'South paw' + 'Arrow' (12x12x12x10 keys)
218//#define MORE_KEY__COMMAND // Additional key 1st row on the left. This hardware layout is called 'Command' or 'South paw'.
219//#define MORE_KEY__ARROW // Additional key 1st row (counting from row with space-bar) on the right, called 'Arrow' layout.
220 //
221 // See below for how to define your additional key(s).
222
223
224 /* -5- ⚠ ≠ Minivan ⬅
225 *
226 * This section is for when you want to flash this keymap unto a board with more
227 * keys than the Minivan has.
228 *
229 * Trans-Minivan keymap: 12x12x12x11, 12x12x12x12, 12x12x12x13 keys
230 * Example board: Planck (12x12x12x12)
231 *
232 * It is assumed that you enabled MORE_KEY__ARROW and
233 * MORE_KEY__COMMAND, to get to 12x12x12x10 keys. With this you
234 * can get to one, two or three more keys on row 1, without manually
235 * editing all layers. You could first edit the definition on layers that you have
236 * a specific meaning for these keys, and let the rest be patched with the definitions
237 * here.
238 *
239 * It can help to inspect the preprocessing with > gcc -E keymap.c | less
240 *
241 * Planck keyboard
242 *
243 * The identifier TRANSMINIVAN_MIDLEFT could help compile the layout on a Planck keyboard,
244 * if it has a two unit large spacebar. You compile without TRANSMINIVAN_LEFTSIDE in that case.
245 * All keys on the left, row 1 (closest to the user) shift one unit to the left, with TRANS_MIDLEFT
246 * inserted on what would be the left key of the two unit spacebar (assuming that is a key).
247 *
248 * Other keyboards formats
249 *
250 * It is always possible to just padd the rows somewhere, if you have even more keys. On the other
251 * hand, to try to cut this layout down to fewer keys than it has at minimum (12x12x12x8), is likely
252 * going to reduce its functionality, and will require some puzzling to keep a well organized BASE
253 * layer, and have “hold key” layer switching work correctly.
254 *
255 * FIXME: not been compiled or tested for any boards.
256 */
257//#define TRANSMINIVAN_LAYOUT ....... // Set this to something with the needed amount of keycodes.
258 // Your values are inserted here: [ _LTR ] = LAYOUT_redefined (
259 // ^^^^^^^^^^^^^^^^ (throughout all layers)
260//#define TRANSMINIVAN_LEFTSIDE // _Activate_ to get yet one more key on the left side row 1
261 #define TRANS_LEFT XXXXXXX // Define what the TRANSMINIVAN_LEFTSIDE key should be, where it is not otherwise defined.
262 // (Ignored if TRANSMINIVAN_LEFTSIDE is _removed_).
263 //
264//#define TRANSMINIVAN_MIDLEFT // _Activate_ to get yet one more key on the first key from center, row 1.
265 #define TRANS_MIDLEFT XXXXXXX // Define what the TRANSMINIVAN_RIGHTSIDE key should be on all layers at once.
266 // (Ignored if TRANSMINIVAN_MIDLEFT is _removed_).
267 //
268//#define TRANSMINIVAN_RIGHTSIDE // _Activate_ to get yet one more key on the right side row 1
269 #define TRANS_RIGHT XXXXXXX // Define what the TRANSMINIVAN_RIGHTSIDE key should be, where it is not otherwise defined.
270 // (Ignored if TRANSMINIVAN_RIGHTSIDE is _removed_).
271
272
273 /* -6- ➡ Defining the meaning of the additional hardware keys ⬅
274 *
275 * Some possibilities you might like:
276 *
277 * ① Number-pad and F-keys layers are only on a toggle. If you want them accessible on a hold key, you can use
278 * these additional hardware keys. Make sure to use a transparent key on that location on those layers.
279 *
280 * ② You can use the right side additional key for quick access to an arrow/navigation cluster (see below).
281 *
282 * ③ Other uses, such as a delete key and/or a special interface key your system needs.
283 */
284 /* • Defining the additional key for 'South paw' (also called 'Command')
285 *
286 * Left side additional key. This is ignored if MORE_KEY__COMMAND is not defined.
287 */
288 // Configure here what this key is on the BASE layers (excluding Base Numpad compile option).
289//#define MORE_key1_BASE TG ( _RAR ) // _Activate_ this to get a toggle to layer _RAR. MO(_RAR) does not follow a BASE switch by ‛Other Base’.
290//#define MORE_key1_BASE KC_DEL // Could be useful if you like to toggle to certain layers and stay there for a while.
291 #define MORE_key1_BASE KC__XGUI // (Default) (Using KC__XGUI makes sure it is the *other* GUI, relative to KC__YGUI.)
292 //
293 // Configure here what this key is on all other layers
294//#define MORE_key1 KC_DEL // Configure here what this key is on all other layers (and Base Numpad).
295 #define MORE_key1 KC__XGUI // (Default)
296 //
297 //
298 /* • Defining 'Arrow' hardware layout additional keys
299 *
300 * You can create an arrow-cluster with your additional MORE_key2 hardware key on the _MOV layer.
301 * Either way: this new key can toggle to _MOV layer, with the key that on the _MOV layer becomes the down-arrow,
302 * in the middle of an arrow cluster. To do that, uncomment MOREKEY2_ARROW_CLUSTER.
303 * The keys that are by default defined on those keys on _MOV layer, will now be overwritten (they are not typically
304 * that much used there).
305 *
306 * Arrow cluster for 'arrow' layout: _activate_ MOREKEY2_ARROW_CLUSTER and _activate_ #define MORE_key2 _MOV_UP
307 * No arrow cluster for 'arrow' layout: _remove_ MOREKEY2_ARROW_CLUSTER, and set MORE_key2 to whatever you want.
308 */
309 #define MOREKEY2_ARROW_CLUSTER // Arrow cluster on _MOV layer. This is ignored if MORE_KEY__ARROW is not defined.
310 // This will cost you 'Right Alt' and 'GUI' on the _MOV layer.
311//#define MOREKEY2_ADD_NAVIGATION // Additional navigation keys around arrow cluster MOREKEY2_ARROW_CLUSTER. Ignored if MOREKEY2_ARROW_CLUSTER is not defined.
312 // Note: this will cause mouse buttons 'BTN4' and 'BTN5' on the _MOV layer to be moved.
313 /*
314 * Define the key you want on the additional key. Leave it to _MOV_UP if you want an arrow cluster, easily
315 * accessed with this key.
316 *
317 * If you want to be able to type all arrow cluster keys with both GUI keys, than you cannot have this additional
318 * arrow cluster around the ‛arrow’ additional hardware key, because it eats away the GUI just to the left of
319 * that additional hardware key.
320 *
321 * For typing both GUIs with the navigation cluster, you also need the left side additional hardware key. In this
322 * case, you can still set the optional hardware key on the right to _MOV_UP, but that is marginally useful
323 * as you already have that on Left Shift.
324 *
325 * When aiming to type all normally available keys on a 100% keyboard with all modifiers including GUIs, you
326 * could use the right hand side optional hardware key (‛arrow’), because it causes the right side GUI to be
327 * available there. (This kind of stuff affects rare or even never used keyboard shortcuts.)
328 */
329 #define MORE_key2 _MOV_UP // Right side additional key. This is ignored if MORE_KEY__ARROW is not defined.
330//#define MORE_key2 KC_DEL // More or less a random suggestion. Harmonizes well with “.DEL” on Numbers Pad.
331 // It is convenient to have an uncluttered Delete key on the Base layer.
332//#define MORE_key2 <...your choice...> // Right side additional key.
333 //
334
335
336 /* -7- ➡ Arrows/Navigation cluster ⬅
337 */
338 /* • Navigation cluster configuration
339 *
340 * _Activate_ below line to use a "WASD" type layout (on the spot where WASD is in Qwerty).
341 * _Remove_ if you prefer a flat type layout, with arrows in a row, on the right hand.
342 */
343 #define ARROWS_TRIANGLE // Implies mouse is also similarly in a triangle.
344 /*
345 * • VI editor arrows
346 *
347 * Vi is a famous editor, with its own peculiar text cursor movement arrangement (arrows).
348 * This option modifies the flat arrows layout on the right hand, to be like the “HJKL”
349 * arrows in the editor vi(1). “HJKL” meaning: the 7th to 10th key on the 3rd row.
350 * The arrows on the additional MOREKEY2_ARROW_CLUSTER also get harmonized to be like vi.
351 */
352//#define VI_SWITCHERYDOO // You have to _remove_ ARROWS_TRIANGLE, or this gets ignored.
353
354
355 /* -8- ➡ Number pad Configuration⬅
356 *
357 * This concerns the Numbers Pad layer, which is part of the common layers (not the Bse
358 * layer, which also has a Numbers Pad option).
359 *
360 * There are two compile versions for the number pad layer ‛_PAD’, in the common layers.
361 *
362 * _Activate_ the below to have the numbers pad _PAD layer resemble the squared layout of
363 * a numerical keyboard, allowing to type all numbers with the right hand.
364 * _Remove_ the below to have the numbers in this layer follow the layout of the _NSY layer,
365 * with the numbers on a line from left to right on the home row, across both hands.
366 */
367//#define NUMPAD_COMMON_SQUARE // _Activate_ to resemble a one handed numerical keyboard.
368
369
370 /* -9- ➡ Speed measuring ⬅
371 */
372 /*
373 * Led color configuration. You can see the speed you have configured below directly on the keyboard,
374 * after you compiled and flashed it.
375 * Set speed measuring to <off>.
376 * Hold the 'Report' key for one second, then release. The keyboard prints a number, which is the
377 * amount of characters per second for which that color is then being shown. Hold it again for
378 * a second, and it increments. Toggle speed measuring on/off to restart.
379 * You can play with the below settings until you like the result.
380 *
381 * The default values (8, 160 respectively) are starting at blue, avoiding confusion with default
382 * cyan for BASE layer, going to purple and further avoiding confusion with text size counting.
383 * Very fast typers could reach red, and then it goes further to yellow, etc.
384 */
385 #define SPEED_COUNTDOWN 25 // After how many keypresses to update the effect(s).
386 #define SPEED_HUE_STEP 8 // For each key/sec faster, the hue value of HSV goes this step further.
387 #define SPEED_HUE_START 160 // The starting hue for 0 k/s (0 = 255 = red).
388 /*
389 * Speed report in words-per-minute (wpm) rather than keystrokes-per-second (k/s). wpm = k/s * ⁶⁰/₅ = k/s * 12
390 */
391 #define WORDS_PER_MINUTE // _Activate_ to get speed report in words-per-minute, _remove_ to get it in keystrokes-per-second (k/s).
392
393
394 /* -10- ➡ Some alternative keys ⬅
395 */
396 /*
397 * • Right Alt or hold(_RAR) on Base
398 *
399 * _Activate_ below line to get Right-Alt or Alt-Gr (same thing) on Base.
400 * A short tap results in RAlt briefly pressed, plus Right-Arrow.
401 * When pressed with another key, however short, results only in RAlt, and no Right-Arrow.
402 * Held a little longer than tapping it, results in only RAlt being pressed, no Right-Arrow.
403 *
404 * _Remove_ to have a layer hold key to the _RAR layer there, instead of RAlt, together with tapped Right-Arrow.
405 */
406//#define BASE_RIGHT_ALT // _Activate_ to get Right-Alt instead of _RAR on Base layer.
407 /*
408 * • GUI left/right
409 *
410 * _Activate_ below line to have LGUI (also called OS or Win key, etc) where RGUI is,
411 * and RGUI where LGUI is.
412 */
413//#define SWITCH_GUIS // _Activate_ this if you want LGUI on the BASE layer rather than RGUI, despite that spot being on the right.
414 /*
415 * • Alternate currency symbol
416 *
417 * _Activate_ the below to get a Euro symbol, where ƒ (Dutch Guilder) is on the default map (_DRA layer).
418 */
419 #define UNICODE_CURRENCY 0x20ac // Hex number, euro symbol €. The unicode hex number for position ƒ in the default keymap.
420 /*
421 * • Check boxes or Pointers
422 *
423 * You can have these symbols (checkboxes): ☐ ☒ ☑ 🗹
424 * or these (pointers): ⮘ ⮙ ⮚ ⮛
425 */
426//#define POINT_ON_CHECKBOXES // _Activate_ to get arrows, _remove_ to get checkboxes on _DRA layer.
427 /*
428 * • Switch _ACC/_BON and *left* side _NSY/_DRA hold keys
429 *
430 * If you type a lot of _ACC layer (accented keys), and not much _DRA layer, you might like to
431 * switch the _ACC hold key, and the left side _NSY key, if you find it awkward to reach to the
432 * left with your thumb. These two keys are next to each other. Only the Base layer is affected.
433 */
434//#define SWITCH_HOLD_ACC_NSY // _Activate_ to switch the *left* _NSY and _ACC layer hold keys, on Base layer.
435 /*
436 * • Switch _PAD and _MOV on Left Shift toggle
437 *
438 * Recommended if you use _MOV more than _PAD
439 */
440//#define SWITCH_LSHIFT_PAD_MOV // _Activate_ to make _MOV layer be on the fast tap, and _PAD on a short hold toggle
441 /*
442 * • Switch _FUN and _RAR on Right Shift toggle
443 *
444 * Recommended if you use _RAR more than _FUN
445 */
446//#define SWITCH_RSHIFT_FUN_RAR // _Activate_ to make _RAR layer be on the fast tap, and _FUN on a short hold toggle
447
448
449 /* -11- ➡ Eviscerations ( ② / ② ) ⬅
450 */
451 /* • Removing the numbers pad _PAD layer
452 *
453 * You may have no use for this common layer, if you have a numerical keypad on the Alternate Base already.
454 *
455 * ⚠ Note: ./base_numpad.h can overrides this setting, if compiled with that ‛Base layers’.
456 */
457//#define REMOVE_PAD // _Activate_ to strip out the _PAD layer, _remove_ to have the _PAD layer.
458 //
459 /* • Removing one or more of the Unicode layers _ACC, _DRA or_BON
460 */
461 /* Removes the _ACC layer, optionally redirect its key. This can save some 750 bytes.
462 */
463//#define REMOVE_ACC // _Activate_ to strip out the _ACC layer, _remove_ to have the _ACC layer.
464 /* Unless REMOVE_ACC is _active_, the next defines which redirect the _ACC key(s) are ignored. */
465//#define _ACC_KEY_ALT_LAYER _BON // _Activate_ to make the key(s) that normally goes to _ACC, go to _BON instead.
466//#define _ACC_KEY_ALT_LAYER _DRA // _Activate_ to make the key(s) that normally goes to _ACC, go to _DRA instead.
467 /*
468 *
469 * Removes the _DRA layer, optionally redirect its key. Also saves some 750 bytes.
470 */
471//#define REMOVE_DRA // _Activate_ to strip out the _DRA layer, _remove_ to have the _DRA layer.
472 /* Unless REMOVE_DRA is _active_, the next defines which redirect the _DRA key(s) are ignored. */
473//#define _DRA_KEY_ALT_LAYER _ACC // _Activate_ to make the key(s) that normally goes to _ACC, go to _ACC instead.
474//#define _DRA_KEY_ALT_LAYER _BON // _Activate_ to make the key(s) that normally goes to _ACC, go to _BON instead.
475 /*
476 *
477 * Removes the _BON layer, optionally redirect its key. Also saves some 750 bytes.
478 */
479//#define REMOVE_BON // _Activate_ to strip out the _BON layer, _remove_ to have the _BON layer.
480 /* Unless REMOVE_BON is _active_, the next defines which redirect the _BON key(s) are ignored. */
481//#define _BON_KEY_ALT_LAYER _ACC // _Activate_ to make the key(s) that normally goes to _BON, go to _ACC instead.
482//#define _BON_KEY_ALT_LAYER _DRA // _Activate_ to make the key(s) that normally goes to _BON, go to _DRA instead.
483 /*
484 *
485 * • Removing groups of characters
486 */
487 /*
488 * The below cut out an amount of symbols on a given layer, to simplify and/or reduce firmware size a little.
489 */
490//#define ALL_DRA_BON_EVISCERATIONS // _Activate_ this to _remove_ the below all at once. (Seems to save only ±114 bytes)
491 //
492 #define BOX_DRAWINGS // _Activate_ to get box drawings on _BON. Horizontal lines (━─┄┅) on _DRA are not affected.
493 // Affected on rows 2 and 3: ┣┫┏┗┃┇┛┓
494 // Full, 3rd row, boxdr.: Ctrl ① ⬅ ② ⬇ ③ ➡ ④ ┏ ⑤ ┓ ⑥ ┃ ⑦ ┇ ⑧ ╋ ⑨ ⓪ ∞ —
495 // Full, 2nd row, boxdr.: LSht ‹ › ÷ ☞ ┗ ≠ ┛ ✗ ┣ ✓ ┫ ⚠ « » RSht
496 //
497 // 3rd row, no boxdrawing: Ctrl ① ⬅ ② ⬇ ③ ➡ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⓪ ∞ —
498 // 2nd row, no boxdrawing: LSht ‹ › ÷ ☞ ≠ ✗ ✓ ⚠ « » RSht
499 //
500 #define SUB_SCRIPT_NUMS // _Activate_ to get subscript numbers (₁₂₃…₀) on _DRA.
501 // Affected on row 3: ₁₂₃₄₅₆₇₈₉₀
502 // Thinned out 3rd row: xxx ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁰ xxx
503 // Full 3rd row: xxx ¹₁ ²₂ ³₃ ⁴₄ ⁵₅ ⁶₆ ⁷₇ ⁸₈ ⁹₉ ⁰₀ xxx
504 //
505 #define FULL_DRA_2NDROW // _Activate_ to have symbols on all unshifted + shifted positions on _DRA, 2nd row.
506 // Affected: 「 」 〇 § · 🗹 《 》
507 // Full 2nd row: LSht 「━ 」─ °〇 •§ …· ☐ ☒ ☑ 🗹 ¿¡ 《┄ 》┅ Rsht
508 // Thinned out 2nd row: LSht ━ ─ ° • … ☐ ☑ ☑ ¿¡ ┄ ┅ RSht
509 //
510 #define FULL_DRA_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _DRA, 4th row.
511 // Affected 4th row: „ ≤ ≥ ∅ ¢ ƒ ❦ 🙂 🙁 👍 👎 ⁽ ₍ ⁾ ₎
512 // Full 4th row: BASE “„ ”≤ £≥ ∅ ¢ ±ƒ ❦ ♥ 🙂🙁 👍👎 ⁽₍ ⁾₎ Bkspc
513 // Thinned out 4th row: BASE “ ” £ ± ♥ Bkspc
514 //
515 #define FULL_BON_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _BON, 4th row.
516 // Affected 4th row: 🛠 ¤ ∑ ‱ ٭ 😊 ⍨ ⃰ ⁻ ⁺ 🄯 ©
517 // Full 4th row: BASE ‛🛠 ’⬆ ¤ 🄯 ∑ © ‰‱ ★٭ 😊⍨ × ⃰ √ ⁻⁺ Bkspc
518 // Thinned out 4th row: BASE ‛ ’⬆ ‰ ★ × Bkspc
519 //
520
521
522 /* -12- ➡ Leds ⬅
523 *
524 * Leds off for the Default Base Layer.
525 * Implies: no indication on Default Base for: Caps-lock, typing speed, typing amount done of a limit.
526 * Speed / typing amount will be visible by going to another layer.
527 */
528//#define LEDS_OFF_BASE_DEF // _Activate_ to make leds dark when in ‛Default Base’ layer.
529
530// ------------------------------------- ⬆ --------------------------------------
531// Below here no more comfortable configuration options.....
532// There may be configuration options in the layout ./bases_....h file you chose.
533// ------------------------------------- ⬆ --------------------------------------
534
535#else // (ignore this)
536# include "./minifan_config_compact.h"
537#endif // MINIFAN_CONFIG_COMPACT
538
539
540// ------------------------------------- ⬇ --------------------------------------
541// Base layer headers
542// ------------------------------------- ⬇ --------------------------------------
543
544// * Numpad *
545# if defined(BASE_NUMPAD__ALT_BASE)
546# include "./base_numpad.h" // Numbers pad header
547# endif
548// * Qwerty Base Arrow *
549# if defined(BASE_QWERTY_BASEARROW__DEF_BASE) || defined(BASE_QWERTY_BASEARROW__ALT_BASE)
550# include "./base_qwerty_basearrow.h" // Your Keymap header/configuration file.
551# endif
552
553// // ⬇ insert your ./base_YOUR_KEYMAP.h #include here:
554
555// * YOUR KEYMAP *
556// # if defined(BASE_YOUR_KEYMAP__DEF_BASE) || defined(BASE_YOUR_KEYMAP__ALT_BASE)
557// # include "./base_YOUR_KEYMAP.h" // Your Keymap header/configuration file.
558// # endif
559
560// // ⬆
561
562// ------------------------------------- ⬆ --------------------------------------
563// Base layer headers are best #included here, so the preprocessor statements
564// following the user configuration block can pick up on anything that was set.
565//
566// Example: base_numpad.h _activate_ ‛REMOVE_PAD’. Based upon that, the preprocessor
567// constant ‛_PAD’ is changed into ‛_FUN’ in the below statements.
568// ------------------------------------- ⬆ --------------------------------------
569
570
571
572// The below sets some things up based on the above #defines.
573
574// This is sort of a hack. It re-defines _ALT_BASE and _ALT_NSY to point to the same
575// layer as _DEF_BASE and _DEF_NSY, because there are quite a few references to the
576// former and putting #if then around each one complicated the code even more. If needed,
577// it can be changed later. This option already reduces firmware size, so we should be
578// well below the maximum.
579# ifdef MINIFAN_SINGLE_LAYOUT
580# define _ALT_BASE _DEF_BASE
581# define _ALT_NSY _DEF_NSY
582# endif
583
584// This triggers the compilation of special _HALF_ descramble mode, where you access
585// the Unicode layers without passing them through the descramble system (middle led
586// lit on _RAR_ when cycling through the base layers with ‛Other Base’ key).
587# ifdef BASE_DVORAK_DESCRAMBLE__ALT_BASE
588# define DVORAK_DESCRAMBLE_HALF
589# endif
590
591// Prevent likely erroneous configuration. If no 'Arrow' hardware layout, then not patching in an arrow cluster.
592# if !defined(MORE_KEY__ARROW) && defined(MOREKEY2_ARROW_CLUSTER)
593# undef MOREKEY2_ARROW_CLUSTER
594# endif
595
596# if !defined(MORE_KEY__ARROW) && defined(MOREKEY2_ADD_NAVIGATION)
597# undef MOREKEY2_ADD_NAVIGATION
598# endif
599# if !defined(MOREKEY2_ARROW_CLUSTER) && defined(MOREKEY2_ADD_NAVIGATION)
600# undef MOREKEY2_ADD_NAVIGATION // Only navigation keys, when the are arrows defined.
601# endif
602
603// When choosing 'triangle' arrows, then they go left. Not 'triangle' arrows, than right.
604# ifdef ARROWS_TRIANGLE
605 /* _Activate_ below line to put the arrows on the left, comment out to have arrows right. */
606# define ARROWS_LEFT // Implies mouse is right
607# endif
608
609
610// Set up user GUI choice:
611# ifndef SWITCH_GUIS
612# define KC__XGUI KC_LGUI // Name logic is alphabetic order left to right …X (…) …Y in layout definitions..
613# define KC__YGUI KC_RGUI // .. meaning KC__XGUI is left on the keymap, KC__YGUI is right.
614# endif
615
616# ifdef SWITCH_GUIS
617# define KC__XGUI KC_RGUI
618# define KC__YGUI KC_LGUI
619# endif
620
621
622// Define the layout macro for the amount of hardware keys.
623// These for Minivan are defined up in the code tree.
624# if !defined(MORE_KEY__COMMAND) && !defined(MORE_KEY__ARROW)
625# define LAYOUT_redefined LAYOUT // Default (8 keys on 1st row)
626# endif
627
628# if !defined(MORE_KEY__COMMAND) && defined(MORE_KEY__ARROW)
629# define LAYOUT_redefined LAYOUT_arrow // Additional key 1st row on the right. 'Arrow'
630# endif
631
632# if defined(MORE_KEY__COMMAND) && !defined(MORE_KEY__ARROW)
633# define LAYOUT_redefined LAYOUT_command // Additional key 1st row on the left. 'Command'
634# endif
635
636# if defined(MORE_KEY__COMMAND) && defined(MORE_KEY__ARROW)
637# define LAYOUT_redefined LAYOUT_arrow_command // Additional keys 1st row both left and right. 'Arrow' + 'Command'
638# endif
639
640# ifdef TRANSMINIVAN_LAYOUT
641# undef LAYOUT_redefined
642# define LAYOUT_redefined TRANSMINIVAN_LAYOUT
643# endif
644
645
646// Process user config setting for speed measuring
647# ifdef STARTUP_SPEED
648# define SPEED_INIT_VALUE TRUE
649# else
650# define SPEED_INIT_VALUE FALSE
651# endif
652// Process user config setting for text size measuring
653# ifdef STARTUP_COUNT
654# define COUNT_INIT_VALUE TRUE
655# else
656# define COUNT_INIT_VALUE FALSE
657# endif
658
659
660// Get all key reductions at once
661# ifdef ALL_DRA_BON_EVISCERATIONS
662# ifdef BOX_DRAWINGS
663# undef BOX_DRAWINGS
664# endif
665
666# ifdef SUB_SCRIPT_NUMS
667# undef SUB_SCRIPT_NUMS
668# endif
669
670# ifdef FULL_DRA_2NDROW
671# undef FULL_DRA_2NDROW
672# endif
673
674# ifdef FULL_DRA_4THROW
675# undef FULL_DRA_4THROW
676# endif
677
678# ifdef FULL_BON_4THROW
679# undef FULL_BON_4THROW
680# endif
681# endif
682
683// This resolves compiling “TO (_BON)” on the _FUN layer.
684# ifdef REMOVE_BON
685# undef _BON
686# ifdef _BON_KEY_ALT_LAYER
687# define _BON _BON_KEY_ALT_LAYER // To what user wants
688# else
689# define _BON _FUN // void behavior
690# endif
691# endif
692
693// This resolves compiling “TO (_PAD)” on the _FUN layer.
694# ifdef REMOVE_PAD
695# undef _PAD
696# define _PAD _FUN // void behavior
697# endif
698
699// If the _ACC layer hold key has no function anymore because the layers _ACC and _BON to which it
700// switches have been removed, and no alternative use been set, that key reverts to being KC_DEL,
701// and the whole macro CHOLTAP_ACCE it normally activates gets cut.
702# if defined(REMOVE_ACC) \
703 && !defined(_ACC_KEY_ALT_LAYER) \
704 && defined(REMOVE_BON) \
705 && !defined(_BON_KEY_ALT_LAYER)
706# define CHOLTAP_ACCE KC_DEL // replaces in the keymap
707# define CHOLTAP_ACCE_NOP // cuts CHOLTAP_ACCE out of macros
708# endif
709
710// Here all Unicode layers _ACC, _DRA and _BON have been removed, and none of their key(s) has
711// been re-assigned to a useful purpose. That makes that whole system redundant, so it is simplified.
712# if defined(REMOVE_ACC) \
713 && !defined(_ACC_KEY_ALT_LAYER) \
714 && defined(REMOVE_DRA) \
715 && !defined(_DRA_KEY_ALT_LAYER) \
716 && defined(REMOVE_BON) \
717 && !defined(_BON_KEY_ALT_LAYER)
718# define CHOLTAP_ACCE KC_DEL // replaces in the keymap
719# define CHOLTAP_ACCE_NOP // cuts CHOLTAP_ACCE out of macros
720# define DUO_HOLD_BASIC // cuts out the long DUO_HOLD macro, replaces it with a simple 'descramble'-aware hold(_NSY/_DDN)
721# endif