aboutsummaryrefslogtreecommitdiff
path: root/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c')
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c1754
1 files changed, 1754 insertions, 0 deletions
diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c
new file mode 100644
index 000000000..035cdfdb3
--- /dev/null
+++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c
@@ -0,0 +1,1754 @@
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 * Authors: This QMK keymap file is a combination of the default
18 * keymap, led code original copied/edited from ../jetpacktuxedo, some
19 * copy/paste from QMK documentation code examples (etc).
20 * Remainder: © 2019, 2020, 2021 by Jos Boersema
21 */
22
23// --------------------------------------v---------------------------------------
24// Configuration:
25// --------------------------------------v---------------------------------------
26#include "./user_config.h" // Edit this file to set user preference compile options.
27// --------------------------------------^---------------------------------------
28
29
30
31 /* Configurable keymap for Minivan layouts 44, 45, 46 keys.
32 * May work for 12×12×12×[11-12] keys as well.
33 * Configuration in ./user_config.h
34 */
35
36 /* Overview of the code
37 *
38 * The base layers are in separate files;
39 * process_record_user(), unicode macros are defined in unicode_macros.c;
40 * accented characters are defined in unicode_weurope.h
41 *
42 * Unicode macros facilitate recomputing for re-computing the Dvorak with changed letters
43 * ('descramble'), and exist because space ran out for * XP(…).
44 *
45 * The led color code might be a bit hairy, due to speed/count middle led overlapping layer color.
46 *
47 * Preprocessor indentation: # always in column one, #includes and #defines
48 * are most to the left unless nested, except in the user configuration
49 * block where room is left for a ‛//’. Logical stuff (#if etc) is
50 * indented from column two, and then in each nesting goes 4 more spaces
51 * to the right, so in between the normal code indentations. There should
52 * be a newline above and below logical statements. This makes preprocessor
53 * statements stand out, while giving more information in each statement.
54 * C indentation: trying to follow QMK standard.
55 *
56 */
57
58
59#include QMK_KEYBOARD_H
60
61// Bit masks for the Base layers, to set them as Default, in order to make transparency look back to the right one.
62#define _DEF_BASE_MASK 0x1 // Some functions take a bit-mask, where layer 0 (zero) is called 0x1 instead.
63#define _ALT_BASE_MASK 0x2 // Some functions take a bit-mask, where layer 0 (zero) is called 0x1 instead.
64
65// Below #defines the internal order of the layers.
66// Notice this order in layer_state_set_user as well, regarding the led indicators.
67enum {
68 _DEF_BASE, // Default BASE layer (layer at startup). Typically the letters.
69
70# ifndef MINIFAN_SINGLE_LAYOUT
71
72 _ALT_BASE, // Alternative BASE layer.
73
74# endif
75
76 _DEF_NSY, // numbers and symbols
77
78# ifndef MINIFAN_SINGLE_LAYOUT
79
80 _ALT_NSY, // Alternate version of _DEF_NSY
81
82# endif
83
84 _MOV, // movement arrows and mouse
85 _RAR, // keys RARely used, Unicode config, Power keys, Media keys, alternate mode switch, speed/size count, …
86
87# ifndef REMOVE_PAD
88
89 _PAD, // Numbers pad. These are different versions of the same numbers, that is ‛1’ (_NSY) ≠ ‛1’ (_PAD).
90
91# endif
92
93# ifndef REMOVE_ACC // Removes this layer entirely, if set.
94
95 _ACC, // Accented letters
96
97# endif
98
99# ifndef REMOVE_DRA // Removes this layer entirely, if set.
100
101 _DRA, // Unusual symbols and whatever else
102
103# endif
104
105# ifndef REMOVE_BON // Removes this layer entirely, if set.
106
107 _BON, // Bonus layer with more Unicode symbols
108
109# endif
110
111 _FUN, // function keys, layer switcher, given highest order precedence just in case
112} ;
113// The default and alternate base layers needs to have a low order
114// number, so that the other layers can be accessed on top of it.
115// Default Layer is set, according to active Base pair.
116
117// What BASE layer is active.
118enum {
119 _NORMAL_, // BASE layer is _DEF_BASE
120 _FULL_, // BASE layer is _ALT_BASE
121# ifdef DVORAK_DESCRAMBLE_HALF // not used with other keymaps
122 _HALF_, // BASE layer is _ALT_BASE For DVORAK_DESCRAMBLE_HALF keymap: does *not* re-compute letters in Unicode
123 // This is for different Unicode encodings than “Control+U+HEX” (Linux). It will go through what is set on _RAR
124# endif
125};
126// The mechanism is about what layer to return to, once needing to go back to the letters layer (BASE).
127
128# ifndef STARTUP_ALTERNATE // Startup with in default BASE, normal mode.
129short alternate = _NORMAL_;
130# else // Startup with alternate BASE active
131short alternate = _FULL_; //
132# endif
133
134//* Shift detection
135bool shift_ison = 0; // keep track of the state of shift (Capslock is ignored). There may be more elegant code for this in
136 // QMK (a function seems to do it?), but this is simple and keeps the issue isolated to this file.
137# define TRUE 1
138# define FALSE 0
139bool _fun_stay = FALSE; // for making _FUN layer not return to BASE after pressing an F-key
140bool leds_on; // toggle leds on/off
141
142# ifdef LEDS_OFF_BASE_DEF
143bool led_middle_on = TRUE; // Set to off later, if startup setting is off.
144# endif
145
146bool isolate_trigger = FALSE; // detects if _FUN layer move was pressed, and no other key (no normal use of Shift).
147bool capslock; // keeps track of capslock state
148bool numlock; // keeps track of numlock state
149layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well.
150// speed measuring
151bool speed_measure = SPEED_INIT_VALUE; // feature activated or not on startup
152uint32_t speed_counttime; // counts the time
153short speed_countdown = SPEED_COUNTDOWN; // countdown to next computation/effects
154int speed; // we store typing result (keys/second) to make reporting less stressful on user, as it doesn't run away after typing
155 // the value is recorded 10 times higher, to allow another digit of precision, needed to calculate Words-Per-Minute
156long int speed_batches = 0; // This counts how many batches of SPEED_COUNTDOWN have been added to wordcount_speed_add
157long int speed_add = 0; // This just adds the speed computed for every batch of SPEED_COUNTDOWN, also times 10 for precision
158// character and word counting, attempting to count the final text being written
159bool sizecount_measure = COUNT_INIT_VALUE; // feature activated or not on startup
160long int sizecount_blanks = 0; // This counts spaces/enters as a means of counting words, with manual substraction key
161long int sizecount_chars = 0; // This counts characters, substraction for delete/backspace
162bool sizecount_word; // remember if the last character was whitespace, so a second does not count a word
163bool sizecount_menu = FALSE; // menu mode for configuring sizecount led color & alert system for maximum size.
164long int sizecount_max = 0; // the maximum system for count, alert user about relative size/limit
165bool sizecount_max_type; // is size counting by word or by character
166#define SIZECOUNT_WORD 0 // The type of text size counting: words
167#define SIZECOUNT_CHAR 1 // " : characters
168
169/* This file contains mostly the Unicode and special macros.
170 It contains the function: process_record_user(...)
171 It has been isolated because the source file got long.
172 */
173#include "./unicode_macros.c"
174
175
176// Pre-existing function, run when the keyboard starts up.
177void keyboard_post_init_user (void) {
178
179# ifdef RGBLIGHT_ENABLE
180
181// Set side leds on/off startup
182# ifdef STARTUP_SIDE_LEDS_OFF
183 leds_on = FALSE;
184# else
185 leds_on = TRUE;
186# endif
187
188 // Set up RGB effects on _only_ the first LED
189 rgblight_set_effect_range (1, 1); // Takes a range: 1st arg is start, 2nd how many
190 rgblight_sethsv_noeeprom (HSV_WHITE); // Startup color of keyboard.
191 // Set LED effects to breathing mode
192 rgblight_mode_noeeprom (RGBLIGHT_EFFECT_BREATHING + 2);
193
194 // Init the first and last LEDs to a static color.
195 setrgb (0, 0, 0, (LED_TYPE *)&led[0]); // Led[0] is led 0
196 setrgb (0, 0, 0, (LED_TYPE *)&led[2]); // 2nd led
197
198// The logic seems to be to establish the effect first, and then toggle it on/off.
199# ifdef STARTUP_MID_LED_OFF
200 rgblight_disable (); //
201# ifdef LEDS_OFF_BASE_DEF // This messes with led effect on/off, so we need to track the state of this setting now.
202 led_middle_on = FALSE;
203# endif
204# endif
205
206 isolate_rgblight_set ();
207
208# endif //RGBLIGHT_ENABLE
209
210// Set startup layer
211# ifdef STARTUP_ALTERNATE
212 layer_move (_ALT_BASE);
213# else
214 layer_move (_DEF_BASE);
215# endif
216
217 _fun_stay = TRUE; // startup with F-keys not returning to Base after stroke (_FUN)
218
219}
220
221
222// Writes a number as if typed on keyboard. Typically to show a speed/text size measurement.
223// If last argument is TRUE it prints a dot ‛.’ before the last digit
224int write_number (long int input, short divide10) {
225 long int step10;
226 short digit;
227 short start = FALSE;
228 short printed = 0;
229 char output[2];
230
231 output[1] = '\0';
232 if (0 > input) { // number is negative
233 send_string ("-"); // minus
234 printed++;
235 input *= -1; // turn positive
236 }
237 for (step10 = 1000000000; 0 != step10; step10 /= 10) { // assuming 32 bit, ± 10⁹
238 digit = input / step10;
239 input = input % step10;
240 if (!start) { // remove leading zeros
241 if ((0 != digit) || (1 == step10)) start = TRUE; // If all zeros, always print last zero.
242 }
243 if (divide10 && (1 == step10)) { // print with a dot before the last digit
244 send_string (".");
245 printed++;
246 }
247 if (start) { // print
248 output[0] = '0' + digit;
249 send_string (output);
250 printed++;
251 }
252 }
253 return printed;
254}
255
256
257// This function prevents the middle led from being altered by layer
258// switching (showing the layer color, that is), when another
259// functionality takes precedent over the middle led.
260void middle_led_control (short hsv_h, short hsv_s, short hsv_v ) {
261# ifdef RGBLIGHT_ENABLE
262
263 if (FALSE == speed_measure) { // only touch middle led if no speed measuring going on
264 if ( ! ((TRUE == sizecount_measure) && (0 != sizecount_max)) ) { // only touch middle led if no text size
265 // counting set to a maximum is going on.
266
267 rgblight_sethsv_noeeprom (hsv_h, hsv_s, hsv_v); // set it
268 }
269 }
270
271# endif
272}
273
274
275// Set middle led color for speed system. Needed in various places.
276void speed_led (int speed) {
277# ifdef RGBLIGHT_ENABLE
278
279 speed /= 10; // argument is in 10 times its value
280 if ( ! ((TRUE == sizecount_measure) && (0 != sizecount_max)) ) { // only touch middle led if no text size
281 // counting set to a maximum is going on.
282 rgblight_sethsv_noeeprom (SPEED_HUE_STEP * speed + SPEED_HUE_START, 255, 128); // full saturation, but half lit
283 rgblight_set (); // only center led is altered, no need to go through isolate_rgblight_set()
284 }
285
286# endif
287}
288
289
290// do this in one place to handle left/right leds being off here
291void isolate_rgblight_set () {
292# ifdef RGBLIGHT_ENABLE
293
294 if (!leds_on) { // left/right leds are off
295 // overwrite previously colors
296 uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0;
297 uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0;
298 led0r = 0;
299 led0g = 0;
300 led0b = 0;
301 led2r = 0;
302 led2g = 0;
303 led2b = 0;
304 setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
305 setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
306 }
307 rgblight_set ();
308
309# endif
310}
311
312
313// _FUN layer leds.
314void indicate_fun_stay (void) {
315# ifdef RGBLIGHT_ENABLE
316
317 uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0;
318 uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0;
319 // See also below under _FUN layer led
320 if (_fun_stay == TRUE) { // normal mode, 0 (100% normal)
321 led0r = 255; // red
322 led2r = 255; // Yellow
323 led2g = 50;
324 }else{
325 led0r = 255; // Yellow
326 led0g = 50; //
327 led2r = 255; // red
328 }
329 setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
330 setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
331 isolate_rgblight_set ();
332
333# endif //RGBLIGHT_ENABLE
334}
335
336
337// _RAR layer leds
338// It is a function because this is called when the Base layer OTHER_BASE key is pressed
339void indicate_base (void) {
340# ifdef RGBLIGHT_ENABLE
341
342 uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0;
343 uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0;
344 // See also below under _FUN layer led
345 if (_NORMAL_ == alternate) { // normal mode, 0 (100% normal)
346 led0r = 255; // shine white left led
347 led0g = 255;
348 led0b = 255;
349 rgblight_sethsv_noeeprom (HSV_PURPLE); // This overrides the speed setting.
350 led2r = 100; // purple
351 led2b = 100;
352 }
353# ifdef DVORAK_DESCRAMBLE_HALF // not used with other keymaps
354 else if (_HALF_ == alternate) { // alternate mode, 1 (normal unicode)
355 led0r = 100; // purple
356 led0b = 100;
357 rgblight_sethsv_noeeprom (HSV_WHITE); // shine white middle led (still breathes)
358 led2r = 100; // purple
359 led2b = 100;
360 }
361# endif
362 else if (_FULL_ == alternate) { // alternate mode, 1 (recomputed unicode for DVORAK_DESCRAMBLE)
363 led0r = 100; // purple
364 led0b = 100;
365 rgblight_sethsv_noeeprom (HSV_PURPLE);
366 led2r = 255;// shine white right led
367 led2g = 255;
368 led2b = 255;
369 }
370 setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
371 setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
372 isolate_rgblight_set ();
373
374# endif //RGBLIGHT_ENABLE
375}
376
377
378// Sets led colors for all layers. Including Capslock/Numlock changes. See a computer side activated function for that too:
379// led_update_user (…)
380void set_led_colors_ (layer_state_t state) {
381# ifdef RGBLIGHT_ENABLE
382
383 uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0;
384 uint8_t led2r = 0; uint8_t led2g = 0; uint8_t led2b = 0;
385 short color_ddl = 28 ;
386
387# ifdef LEDS_OFF_BASE_DEF
388 // Special case of switching centre led effect on/off
389 if (!layer_state_cmp (state, _DEF_BASE)) { // letters
390 //if (rgblight_is_enabled())
391 if (led_middle_on) { // Follows user setting based on _RAR key.
392 rgblight_enable_noeeprom (); // Would be easier if middle_led_control (…) could set brightness to dark, but seems to not work.
393 }
394 }
395# endif
396
397 // The order should be the reverse of the #defines of layer number of the layers on top
398 // because higher layer number is higher priority if activated
399 /* _DEF_BASE 0 _ALT_BASE 1 _DEF_NSY 2 _ALT_NSY 3 _MOV 4 _RAR 5 _PAD 6 _ACC 7 _DRA 8 _BON 9 _FUN 10 */
400 if (layer_state_cmp (state, _FUN)) { // F-keys, and layer toggles
401 middle_led_control (HSV_RED); // purple
402 indicate_fun_stay (); // Indicates state of _fun_stay, but only when it is being toggled.
403 return ; // indicate_fun_stay function already does it all.
404 }
405
406# ifndef REMOVE_BON // Removes this layer entirely, if set.
407 else if (layer_state_cmp (state, _BON)) { // Bonus layer with encircled numbers and more symbols
408 // side leds dark
409 middle_led_control (HSV_YELLOW);
410 }
411# endif // REMOVE_BON
412
413# ifndef REMOVE_DRA // This cuts out the whole _DRA layer
414 else if (layer_state_cmp (state, _DRA)) { // Unicode drawings and unusual things
415 led0r = 255; // gold red
416 led0g = 128; //
417 led2r = 255; //
418 led2g = 128; //
419 middle_led_control( HSV_GOLDENROD );
420 }
421# endif // REMOVE_DRA
422
423# ifndef REMOVE_ACC // This cuts out the whole _ACC layer.
424 else if (layer_state_cmp (state, _ACC)) { // Accented letters (Unicode input layer)
425 led0g = 150; // With some blue, because it is also a symbol
426 led0b = 100;
427 led2g = 150;
428 led2b = 100;
429 middle_led_control (HSV_TURQUOISE); // cyan
430 }
431# endif // REMOVE_ACC
432
433# ifndef REMOVE_PAD
434 else if (layer_state_cmp (state, _PAD)) { // numbers pad layer
435 if (numlock) {
436 led0b = 255; // Blue for the numbers part
437 led2g = 255; // Green for the navigation part
438 }else{
439 led0g = 255; // reversed
440 led2b = 255; //
441 }
442 middle_led_control (60, 20, 100); // yellow (low saturation)
443 }
444# endif // REMOVE_PAD
445
446 //---
447 else if (layer_state_cmp (state, _RAR)) { // layer with special keys
448 indicate_base (); // this function already does it all
449 return; //
450 }
451 //---
452 else if (layer_state_cmp (state, _MOV)) { // movement layer
453 led0g = 255;// movement is green, "go forward"
454 led2g = 255;
455 middle_led_control(HSV_GREEN);
456 }
457 //--- (pair)
458 else if (layer_state_cmp (state, _ALT_NSY)) { // alternate, numbers/symbols
459 led0b = 255; // first led follows the corresponding default layer: _DEF_NSY
460 led2r = color_ddl; // Same as DDL, to which it belongs.
461 led2g = color_ddl; //
462 led2b = color_ddl; //
463 middle_led_control (HSV_BLUE);
464 }
465 else if (layer_state_cmp (state, _DEF_NSY)) { // symbols and numbers
466 led0b = 255; // blue for symbols, like ink (writing)
467 led2b = 255;
468 middle_led_control (HSV_BLUE);
469 }
470 //--- (pair)
471 // Alternate BASE layer (alternate)
472 else if (layer_state_cmp (state, _ALT_BASE)) {
473
474# if !defined(BASE_NUMPAD__ALT_BASE) // Normal led colors for ‛regular’ base layers like Dvorak, Qwerty.
475
476 if (capslock) {
477 led2r = 255; // Brighter version to indicate capslock
478 led2g = 255; //
479 led2b = 255; //
480 } else {
481 led2r = color_ddl; // A bit of a white not too bright color on right
482 led2g = color_ddl; //
483 led2b = color_ddl; //
484 }
485
486# else // BASE_NUMPAD__ALT_BASE: numpad on Alternate Base, which should show the state of NumLock
487
488 // This is a copy of the _PAD led colors, but less bright
489 if (numlock) {
490 led0b = 80; // Blue for the numbers part
491 led2g = 80; // Green for the navigation part
492 }else{
493 led0g = 80; // reversed
494 led2b = 80; //
495 }
496 middle_led_control (60, 20, 100); // yellow (low saturation)
497
498# endif
499
500 middle_led_control (HSV_TEAL); // seems to be the same as CYAN/AZURE, conflicts with _ACC
501 }
502 // Default layer (generally), normal BASE layer
503 else if (layer_state_cmp (state, _DEF_BASE)) { // letters
504
505# ifdef LEDS_OFF_BASE_DEF
506 led0r = 0; // All leds off when in Default Base
507 led0g = 0; //
508 led0b = 0; //
509 rgblight_disable_noeeprom ();
510# else
511 if (capslock) {
512 led0r = 255; // Brighter version to indicate capslock
513 led0g = 255; //
514 led0b = 255; //
515 } else {
516 led0r = 28; // A bit of a weak white color on left
517 led0g = 28; //
518 led0b = 28; //
519 }
520
521 middle_led_control (HSV_TEAL);
522# endif // LEDS_OFF_BASE_DEF
523 }
524 //---
525
526 setrgb (led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0
527 setrgb (led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2
528
529 isolate_rgblight_set ();
530
531# endif //RGBLIGHT_ENABLE
532}
533
534// Pre-existing QMK function, called when NumLock/CapsLock key is pressed, including on another keyboard.
535// This function sets two booleans that keep track of the current capslock/numlock state, for use in layer led colors.
536bool led_update_user (led_t led_state) {
537
538 if (led_state.num_lock) { // This doesn't look at the keyboard leds or any other actual leds. It seems to look at whether
539 // or not the computer has numlock in the on/off state.
540 numlock = TRUE;
541 }else{
542 numlock = FALSE;
543 }
544 if (led_state.caps_lock) {
545 capslock = TRUE;
546 }else{
547 capslock = FALSE;
548 }
549 //layer_state_set_user
550 set_led_colors_ (state_recall); // Update leds
551 return true ;
552}
553
554
555// pre-existing function, called when layer changes
556layer_state_t layer_state_set_user (layer_state_t state) {
557
558 set_led_colors_ (state); // Update leds
559 state_recall = state; // Recall this, for calling set_led_colors_(…) on Num/Capslock changes in led_update_user(…)
560 return state;
561}
562
563// -------------------------------- layers --------------------------------
564
565const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
566
567
568/******************** What base layers to use: **************/
569
570// * Dvorak *
571# if defined(BASE_DVORAK__DEF_BASE) || defined(BASE_DVORAK__ALT_BASE)
572# include "./base_dvorak.c" // Regular Dvorak.
573# endif
574
575// * Dvorak descramble *
576# if defined(BASE_DVORAK_DESCRAMBLE__ALT_BASE) // only for ‛Alternate’ base
577# include "./base_dvorak_descramble.c" // Dvorak for when computer is already remapping to Dvorak.
578# endif
579
580// * Qwerty *
581# if defined(BASE_QWERTY__DEF_BASE) || defined(BASE_QWERTY__ALT_BASE)
582# include "./base_qwerty.c" // Regular Qwerty.
583# endif
584
585// * Qwerty arrows on Base *
586# if defined(BASE_QWERTY_BASEARROW__DEF_BASE) || defined(BASE_QWERTY_BASEARROW__ALT_BASE)
587# include "./base_qwerty_basearrow.c" // Qwerty + arrows
588# endif
589
590// * Colemak *
591# if defined(BASE_COLEMAK__DEF_BASE) || defined(BASE_COLEMAK__ALT_BASE)
592# include "./base_colemak.c" // Regular Colemak.
593# endif
594
595// * Workman *
596# if defined(BASE_WORKMAN__DEF_BASE) || defined(BASE_WORKMAN__ALT_BASE)
597# include "./base_workman.c" // Regular Workman.
598# endif
599
600// * Numpad *
601# if defined(BASE_NUMPAD__ALT_BASE)
602# include "./base_numpad.c" // Numbers pad
603# endif
604
605// // ⬇ insert your ./base_YOUR_KEYMAP.c #include here:
606
607
608// * YOUR KEYMAP *
609// # if defined(BASE_YOUR_KEYMAP__DEF_BASE) || defined(BASE_YOUR_KEYMAP__ALT_BASE)
610// # include "./base_YOUR_KEYMAP.c" // Your Keymap.
611// # endif
612
613// If your keymap also has a ./base_YOUR_KEYMAP.h configuration/header file, #include it in ./user_config.h
614// Look for similar inclusions of base header files, similar to the #includes here.
615// You should be able to just copy what you did here, and only change “.c” into “.h”.
616
617// // ⬆
618
619
620 // See the ./bases_*.c file for definition of _DEF_BASE, _DEF_NSY, _ALT_BASE, _ALT_NSY layers, selected in ./user_config.h
621
622 /* ⬆⬇ (next layer) */
623
624
625# ifndef BASESFILE_LAYER_MOV // Use a definition of this layer in the ./bases_* file, where this #define can be defined.
626
627 /* Layer _MOV: Movement layer: mouse and hands on navigation
628 * Also delete/backspace, to navigate and delete together.
629 */
630
631 [ _MOV ] = LAYOUT_redefined (
632
633/*
634 Layer _MOV (MOVement, mouse movement on right hand)
635
636 triangle layout (mouse right hand):
637
638 <pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
639 <|>-*- //(toggle) on _FUN
640 BASE PgDn Up PgUp Home Btn3 | xxx WhDn MsUp WhU WhLft Bksp
641 LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl
642 LSht*- xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 xxx RSht //(toggle) on BASE
643 ----------------------------------------------------------------------------
644 LAlt Del Ent ___ | PgUp PgDn LGUI RAlt
645 -*-<|> //(hold) on BASE
646 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
647 … …
648
649 triangle layout, 'arrow' additional hardware key, with arrow cluster (difference marked _):
650
651 <pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
652 <|>-*- //(toggle) on _FUN
653 BASE PgDn Up PgUp Home Btn3 | xxx WhDn MsUp WhU WhLft Bksp
654 LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl
655 LSht*- xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 _Up_ RSht //(toggle) on BASE
656 ----------------------------------------------------------------------------
657 LAlt Del Ent ___ | PgUp PgDn _Left__Down__Right_
658 -*-<|> //(hold) on BASE
659 <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
660
661
662 triangle layout, 'arrow' additional hardware key, with arrow cluster and navigation keys:
663
664 <pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
665 <|>-*- //(toggle) on _FUN
666 BASE PgDn Up PgUp Home _Btn4_ | xxx WhDn MsUp WhU WhLft Bksp
667 LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl
668 LSht*- xxx Acc2 Acc1 Acc0 _Btn5_ | Btn2 Btn3 _Home__PgUp_ _Up_ _PgDn_ //(toggle) on BASE
669 ----------------------------------------------------------------------------
670 LAlt Del Ent ___ | PgUp _End_ _Left__Down__Right_
671 -*-<|> //(hold) on BASE
672 <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
673
674
675
676 flat layout (mouse movement on left hand):
677
678 <pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
679 <|>-*- //(toggle) on _FUN
680 BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp
681 LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl
682 LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht //(toggle) on BASE
683 ----------------------------------------------------------------------------
684 LAlt Del Ent ___ | PgUp PgDn LGUI RAlt
685 -*-<|> //(hold) on BASE
686 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
687
688
689 flat layout, 'arrow' additional hardware key, with arrow cluster (difference marked _)
690
691 <pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
692 <|>-*- //(toggle) on _FUN
693 BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp
694 LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl
695 LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht //(toggle) on BASE
696 ----------------------------------------------------------------------------
697 LAlt Del Ent ___ | PgUp _Left_ _Up_ _Down__Right_
698 -*-<|> //(hold) on BASE
699 <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
700
701
702 flat layout, 'arrow' additional hardware key, with arrow cluster and additional navigation keys:
703
704 <pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
705 <|>-*- //(toggle) on _FUN
706 BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp
707 LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl
708 LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_ //(toggle) on BASE
709 ----------------------------------------------------------------------------
710 LAlt Del Ent ___ | PgUp _Left_ _Up_ _Down__Right_
711 -*-<|> //(hold) on BASE
712 <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
713
714
715 flat layout, 'arrow' additional hardware key, with arrow cluster, additional navigation keys, vi(1) layout:
716
717 <pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
718 <|>-*- //(toggle) on _FUN
719 BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp
720 LCtl MLft MDn MUp MRht Btn1 | Left Down Up Right Btn1 RCtl
721 LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_ //(toggle) on BASE
722 ----------------------------------------------------------------------------
723 LAlt Del Ent ___ | PgUp _Left_ _Down__Up_ _Right_
724 -*-<|> //(hold) on BASE
725 <1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
726
727 */
728
729 /* Inner default navigation/mouse layout. 11 means row 1, column 1, etc.
730 * Configured for arrows on the right, mouse on the left (BTN* on the left side, that is).
731 */
732
733# ifndef ARROWS_TRIANGLE
734# define NAVI_11 KC_BTN3 // NAVI for 'navigation cluster', 11 for row 1, column 1, etc.
735# define NAVI_12 KC_PGUP
736# define NAVI_13 KC_HOME
737# define NAVI_14 KC_END
738# define NAVI_15 KC_PGDN
739# define NAVI_21 KC_BTN1
740# define NAVI_22 KC_LEFT
741# define NAVI_23 KC_UP
742# define NAVI_24 KC_DOWN
743# define NAVI_25 KC_RIGHT
744# define NAVI_31 KC_BTN2
745# define NAVI_32 KC_ACL0
746# define NAVI_33 KC_ACL1
747# define NAVI_34 KC_ACL2
748# define NAVI_35 XXXXXXX
749 //-----------------------------------------------------------------------------------
750 // Configured for left handed mouse, with xxx,BTN* on the right most column.
751# define MOUS_11 KC_WH_L // MOUS for mouse, etc.
752# define MOUS_12 KC_WH_D
753# define MOUS_13 KC_WH_U
754# define MOUS_14 KC_WH_R
755# define MOUS_15 XXXXXXX
756# define MOUS_21 KC_MS_L
757# define MOUS_22 KC_MS_D
758# define MOUS_23 KC_MS_U
759# define MOUS_24 KC_MS_R
760# define MOUS_25 KC_BTN1
761# define MOUS_31 KC_BTN5
762# define MOUS_32 KC_BTN4
763# define MOUS_33 KC_BTN3
764# define MOUS_34 KC_BTN2
765# define MOUS_35 XXXXXXX
766# endif
767
768// Alternative navigation/mouse layout: arrows in triangle, and left hand on the left 'wasd' location.
769// If you want these arrows on the right hand, you may want to edit this, to put right most column left, etc.
770
771# ifdef ARROWS_TRIANGLE
772# define NAVI_11 KC_PGDN
773# define NAVI_12 KC_UP
774# define NAVI_13 KC_PGUP
775# define NAVI_14 KC_HOME
776# define NAVI_15 KC_BTN3
777# define NAVI_21 KC_LEFT
778# define NAVI_22 KC_DOWN
779# define NAVI_23 KC_RIGHT
780# define NAVI_24 KC_END
781# define NAVI_25 KC_BTN1
782# define NAVI_31 XXXXXXX
783# define NAVI_32 KC_ACL2
784# define NAVI_33 KC_ACL1
785# define NAVI_34 KC_ACL0
786# define NAVI_35 KC_BTN2
787 //------------------------------------------------------------------------------------
788 // If switching hands to put mouse left, same as for navigation side: switch outer columns by editing here.
789# define MOUS_11 XXXXXXX
790# define MOUS_12 KC_WH_D
791# define MOUS_13 KC_MS_U
792# define MOUS_14 KC_WH_U
793# define MOUS_15 KC_WH_L
794# define MOUS_21 KC_BTN1
795# define MOUS_22 KC_MS_L
796# define MOUS_23 KC_MS_D
797# define MOUS_24 KC_MS_R
798# define MOUS_25 KC_WH_R
799# define MOUS_31 KC_BTN2
800# define MOUS_32 KC_BTN3
801# define MOUS_33 KC_BTN4
802# define MOUS_34 KC_BTN5
803# define MOUS_35 XXXXXXX
804# endif
805
806// Default left/right layout, meaning arrows right and mouse left.
807# ifndef ARROWS_LEFT
808# define LEFT_AA MOUS_11
809# define LEFT_AB MOUS_12
810# define LEFT_AC MOUS_13
811# define LEFT_AD MOUS_14
812# define LEFT_AE MOUS_15
813# define LEFT_BA MOUS_21
814# define LEFT_BB MOUS_22
815# define LEFT_BC MOUS_23
816# define LEFT_BD MOUS_24
817# define LEFT_BE MOUS_25
818# define LEFT_CA MOUS_31
819# define LEFT_CB MOUS_32
820# define LEFT_CC MOUS_33
821# define LEFT_CD MOUS_34
822# define LEFT_CE MOUS_35
823# define RGHT_AA NAVI_11
824# define RGHT_AB NAVI_12
825# define RGHT_AC NAVI_13
826# define RGHT_AD NAVI_14
827# define RGHT_AE NAVI_15
828# define RGHT_BA NAVI_21
829# define RGHT_BB NAVI_22
830# define RGHT_BC NAVI_23
831# define RGHT_BD NAVI_24
832# define RGHT_BE NAVI_25
833# define RGHT_CA NAVI_31
834# define RGHT_CB NAVI_32
835# define RGHT_CC NAVI_33
836# define RGHT_CD NAVI_34
837# define RGHT_CE NAVI_35
838# endif
839
840# ifdef ARROWS_LEFT
841# define LEFT_AA NAVI_11
842# define LEFT_AB NAVI_12
843# define LEFT_AC NAVI_13
844# define LEFT_AD NAVI_14
845# define LEFT_AE NAVI_15
846# define LEFT_BA NAVI_21
847# define LEFT_BB NAVI_22
848# define LEFT_BC NAVI_23
849# define LEFT_BD NAVI_24
850# define LEFT_BE NAVI_25
851# define LEFT_CA NAVI_31
852# define LEFT_CB NAVI_32
853# define LEFT_CC NAVI_33
854# define LEFT_CD NAVI_34
855# define LEFT_CE NAVI_35
856# define RGHT_AA MOUS_11
857# define RGHT_AB MOUS_12
858# define RGHT_AC MOUS_13
859# define RGHT_AD MOUS_14
860# define RGHT_AE MOUS_15
861# define RGHT_BA MOUS_21
862# define RGHT_BB MOUS_22
863# define RGHT_BC MOUS_23
864# define RGHT_BD MOUS_24
865# define RGHT_BE MOUS_25
866# define RGHT_CA MOUS_31
867# define RGHT_CB MOUS_32
868# define RGHT_CC MOUS_33
869# define RGHT_CD MOUS_34
870# define RGHT_CE MOUS_35
871# endif
872
873/* Definition of the additional arrow cluster with optional navigation keys, for the 'arrow' hardware layout.
874 *
875 * By default what becomes the up-arrow (row 2, 2nd key from right) is a no-action key on this layer,
876 * which can be displaced without worry.
877 * Keys that are displaced for the larger arrow cluster with navigation keys, get moved to the second definition
878 * of KC_BTN2 and KC_BTN3, which is on the non-mouse hand.
879 *
880 * Only the version where the triangle arrows are defined for the left hand, or the version where the flat line
881 * arrows are defined for the right hand, are supported.
882 *
883 * There are several configurations, worked down in order to keep this mess under control.
884 *
885 * v----------------------not-defined-------------v----------------v
886 * !MOREKEY2_ARROW_CLUSTER !MOREKEY2_ADD_NAVIGATION !ARROWS_TRIANGLE !ARROWS_LEFT
887 * defined MOREKEY2_ARROW_CLUSTER ...................... yes yes yes
888 * defined MOREKEY2_ADD_NAVIGATION yes ....................... yes only for flat arrows
889 * defined ARROWS_TRIANGLE yes yes ............... no
890 * defined ARROWS_LEFT yes only for triangle yes ...........
891 * MOREKEY2_ARROW_CLUSTER MOREKEY2_ADD_NAVIGATION ARROWS_TRIANGLE ARROWS_LEFT
892 * ^--------------------------defined-------------^----------------^
893 *
894 * Definition order:
895 * 0 no arrow cluster (and therefore no additional navigation keys either)
896 * 1 triangle arrows with arrow cluster
897 * 2 '' '' + additional navigation and repositioning displaced keys
898 * 3 flat arrows with arrow cluster
899 * 4 '' '' + additional navigation and repositioning displaced keys
900 */
901
902 /* 0 (Nothing special, just the default keys)*/
903
904// Default layout without arrow cluster. (With a little imagination you can visualize the keyboard.)
905# if !defined(MOREKEY2_ARROW_CLUSTER)
906// Default
907# define _MOV_KEY_ROW2_KEY1 KC_RSFT
908# define _MOV_KEY_ROW2_KEY2 RGHT_CE // Key counting from the right to the left.
909# define _MOV_KEY_ROW2_KEY3 RGHT_CD
910# define _MOV_KEY_ROW2_KEY4 RGHT_CC
911// ------------------------------------------
912# define _MOV_KEY_ROW1_KEY1 KC_RALT // ''
913# define _MOV_KEY_ROW1_KEY2 MORE_key2 // ''
914# define _MOV_KEY_ROW1_KEY3 KC__YGUI // '' (etc)
915# define _MOV_KEY_ROW1_KEY4 KC_PGDN
916// <|,> , , , ,
917// |, 4> , 3> , 2> , ± , 1> // ± is the additional hardware key
918# endif
919
920 /* 1 (triangle arrows with arrow cluster) */
921
922// Patch in the arrows for arrow triangle layout
923# if defined(MOREKEY2_ARROW_CLUSTER) && defined(ARROWS_TRIANGLE)
924// Arrow cluster
925# define _MOV_KEY_ROW2_KEY2 KC_UP
926// ------------------------------------------
927# define _MOV_KEY_ROW1_KEY1 KC_RIGHT
928# define _MOV_KEY_ROW1_KEY2 KC_DOWN
929# define _MOV_KEY_ROW1_KEY3 KC_LEFT
930// <|,> , , , ,
931// |, 4> , 3> , 2> , ± , 1>
932# endif
933
934// The default layout around the arrows
935# if defined(MOREKEY2_ARROW_CLUSTER) && !defined(MOREKEY2_ADD_NAVIGATION) && defined(ARROWS_TRIANGLE)
936// Default keys
937# define _MOV_KEY_ROW2_KEY1 KC_RSFT
938# define _MOV_KEY_ROW2_KEY3 RGHT_CD
939# define _MOV_KEY_ROW2_KEY4 RGHT_CC
940// ------------------------------------------
941# define _MOV_KEY_ROW1_KEY4 KC_PGDN
942// <|,> , , , ,
943// |, 4> , 3> , 2> , ± , 1>
944# endif
945
946 /* 2 ( '' '' + additional navigation and repositioning displaced keys) */
947
948// Patch in the navigation keys for the arrow in triangle layout.
949# if defined(MOREKEY2_ADD_NAVIGATION) && defined(ARROWS_TRIANGLE) // Navigation additional keys (arrows implied).
950# define _MOV_KEY_ROW2_KEY1 KC_PGDN
951# define _MOV_KEY_ROW2_KEY3 KC_PGUP
952# define _MOV_KEY_ROW2_KEY4 KC_HOME
953// ------------------------------------------
954# define _MOV_KEY_ROW1_KEY4 KC_END
955// <|,> , , , ,
956// |, 4> , 3> , 2> , ± , 1>
957# endif
958
959// We have now overwritten the positions of RGHT_CC and RGHT_CD, which could be useful keys.
960// You don't want to mess with BTN1 on the other hand, because it needs to select together with mouse moving in many applications.
961# if defined(MOREKEY2_ADD_NAVIGATION) && defined(ARROWS_TRIANGLE) && defined(ARROWS_LEFT) // ARROWS_LEFT because the wider map is edited
962//
963// ... spelling this out to keep brain for exploding:
964// Overwritten (copied from above):
965// #define RGHT_CC MOUS_33
966// #define MOUS_33 KC_BTN4
967// #define RGHT_CD MOUS_34
968// #define MOUS_34 KC_BTN5
969// 'BTN4' and 'BTN5' are overwritten.
970// Where are KC_BTN2 and KC_BTN3 on the non-mouse hand:
971// #define NAVI_15 KC_BTN3
972// #define LEFT_AE NAVI_15
973// #define NAVI_35 KC_BTN2
974// #define LEFT_CE NAVI_35
975// 'LEFT_AE' and 'LEFT_CE' provide room.
976//
977# undef LEFT_AE
978# define LEFT_AE KC_BTN4
979# undef LEFT_CE
980# define LEFT_CE KC_BTN5
981# endif
982
983 /* 3 (flat arrows with arrow cluster) */
984
985# if defined(MOREKEY2_ARROW_CLUSTER) && !defined(ARROWS_TRIANGLE)
986// arrow cluster
987# define _MOV_KEY_ROW1_KEY1 KC_RIGHT
988# define _MOV_KEY_ROW1_KEY2 KC_DOWN
989# define _MOV_KEY_ROW1_KEY3 KC_UP
990# define _MOV_KEY_ROW1_KEY4 KC_LEFT
991// <|,> , , , ,
992// |, 4> , 3> , 2> , ± , 1>
993# endif
994
995// The default layout around the arrows
996# if defined(MOREKEY2_ARROW_CLUSTER) && !defined(MOREKEY2_ADD_NAVIGATION) && !defined(ARROWS_TRIANGLE)
997// Default
998# define _MOV_KEY_ROW2_KEY1 KC_RSFT
999# define _MOV_KEY_ROW2_KEY2 RGHT_CE // Key counting from the right to the left.
1000# define _MOV_KEY_ROW2_KEY3 RGHT_CD
1001# define _MOV_KEY_ROW2_KEY4 RGHT_CC
1002// <|,> , , , ,
1003// |, 4> , 3> , 2> , ± , 1>
1004# endif
1005
1006
1007 /* 4 ( '' '' + additional navigation and repositioning displaced keys) */
1008
1009// The definitions for the additional navigation keys (HOME, etc)
1010# if defined(MOREKEY2_ADD_NAVIGATION) && !defined(ARROWS_TRIANGLE)
1011// Additional navigation keys: flat
1012# define _MOV_KEY_ROW2_KEY1 KC_PGDN
1013# define _MOV_KEY_ROW2_KEY2 KC_END
1014# define _MOV_KEY_ROW2_KEY3 KC_HOME
1015# define _MOV_KEY_ROW2_KEY4 KC_PGUP
1016// <|,> , , , ,
1017// |, 4> , 3> , 2> , ± , 1>
1018# endif
1019
1020// Replace the overwritten key positions:
1021# if defined(MOREKEY2_ADD_NAVIGATION) && !defined(ARROWS_TRIANGLE) && !defined(ARROWS_LEFT) // !ARROWS_LEFT because the wider map is edited
1022//
1023// Overwritten (copied from above):
1024// #define RGHT_CC NAVI_33
1025// #define NAVI_33 KC_ACL1
1026// #define RGHT_CD NAVI_34
1027// #define NAVI_34 KC_ACL2
1028// 'KC_ACL1' and 'KC_ACL2' are overwritten.
1029// Where are BTN2 and BTN3 on the non-mouse hand:
1030// #define NAVI_11 KC_BTN3
1031// #define RGHT_AA NAVI_11
1032// #define NAVI_31 KC_BTN2
1033// #define RGHT_CA NAVI_31
1034// 'RGHT_AA' and 'RGHT_CA' provide room.
1035// It seems best to count the acceleration keys from right to left/up on the keyboard.
1036//
1037# undef RGHT_AA
1038# define RGHT_AA KC_ACL2
1039# undef RGHT_CA
1040# define RGHT_CA KC_ACL1
1041# endif
1042
1043// Changes the home row on the right hand to become HJKL (as in Qwerty) vi(1) arrow keys,
1044// and causes the arrow block to move one key to the left. The key lost on the left is
1045// put back on the other end (pinky).
1046// Row 3
1047# if defined(VI_SWITCHERYDOO) && !defined(ARROWS_TRIANGLE) // For all hardware variants
1048// |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1049// <|,> , , , , , ,
1050# undef RGHT_BA
1051# define RGHT_BA KC_LEFT
1052# undef RGHT_BB
1053# define RGHT_BB KC_DOWN
1054# undef RGHT_BC
1055# define RGHT_BC KC_UP
1056# undef RGHT_BD
1057# define RGHT_BD KC_RIGHT
1058# undef RGHT_BE
1059# define RGHT_BE KC_BTN1
1060# endif
1061// Row 1
1062# if defined(VI_SWITCHERYDOO) && !defined(ARROWS_TRIANGLE) && defined(MOREKEY2_ARROW_CLUSTER) // Only for 'arrow' hardware
1063// arrow cluster
1064# undef _MOV_KEY_ROW1_KEY1
1065# define _MOV_KEY_ROW1_KEY1 KC_RIGHT
1066# undef _MOV_KEY_ROW1_KEY2
1067# define _MOV_KEY_ROW1_KEY2 KC_UP
1068# undef _MOV_KEY_ROW1_KEY3
1069# define _MOV_KEY_ROW1_KEY3 KC_DOWN
1070# undef _MOV_KEY_ROW1_KEY4
1071# define _MOV_KEY_ROW1_KEY4 KC_LEFT
1072// <|,> , , , ,
1073// |, 4> , 3> , 2> , ± , 1>
1074# endif
1075
1076// (If you want to alter something in detail just for your keyboard, it is probably smart to just write in the keycodes (like KC_PGUP) in the final definitions here below.)
1077//
1078// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1079// , , , -*- , , <|,> , , , , , ,
1080 CTO_BASE , LEFT_AA , LEFT_AB , LEFT_AC , LEFT_AD , LEFT_AE , RGHT_AA , RGHT_AB , RGHT_AC , RGHT_AD , RGHT_AE , KC_BSPC ,
1081 KC_LCTL , LEFT_BA , LEFT_BB , LEFT_BC , LEFT_BD , LEFT_BE , RGHT_BA , RGHT_BB , RGHT_BC , RGHT_BD , RGHT_BE , KC_RCTL ,
1082 KC_LSFT , LEFT_CA , LEFT_CB , LEFT_CC , LEFT_CD , LEFT_CE , RGHT_CA , RGHT_CB , _MOV_KEY_ROW2_KEY4 , _MOV_KEY_ROW2_KEY3 , _MOV_KEY_ROW2_KEY2 , _MOV_KEY_ROW2_KEY1 ,
1083// --------------------------------------------------------------------------------------------------------------------------------------------------------------------
1084 KC_LALT
1085# ifdef TRANSMINIVAN_LEFTSIDE
1086 , TRANS_LEFT
1087# endif
1088
1089# ifdef MORE_KEY__COMMAND
1090 , MORE_key1
1091# endif
1092
1093 , KC_DEL , KC_ENT , _______
1094
1095# ifdef TRANSMINIVAN_MIDLEFT
1096 , TRANS_MIDLEFT
1097# endif
1098
1099 , KC_PGUP
1100
1101# ifdef TRANSMINIVAN_RIGHTSIDE
1102 , TRANS_RIGHT
1103# endif
1104
1105 , _MOV_KEY_ROW1_KEY4 , _MOV_KEY_ROW1_KEY3
1106
1107# ifdef MORE_KEY__ARROW
1108 , _MOV_KEY_ROW1_KEY2
1109# endif
1110 , _MOV_KEY_ROW1_KEY1
1111// , , , -*- <|,> , , ,
1112// <1 ±± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1113
1114 ),
1115
1116# endif // BASESFILE_LAYER_MOV
1117
1118 /* ⬆⬇ */
1119
1120# ifndef BASESFILE_LAYER_RAR // Use a definition of this layer in the ./bases_* file, where this #define can be defined.
1121
1122 /* Layer _RAR: Various special keys.
1123 * - The key which switches between Default and Alternate base layer.
1124 * - Power keys
1125 * The power keys have to be pressed with Shift, as a safety guard.
1126 * Without shift they write their name, as if someone typed it.
1127 * - Media keys
1128 * - Brightness for screen keys (depends on computer system if it works)
1129 * - Leds of keyboard on/off
1130 * - Unicode input mode
1131 * ☑ precedes the Unicode input modes, as memory aid and tester
1132 * Note that ☑ has no letters in its Unicode, but press with Shift for 🗹
1133 * which does. This matters when testing ‛descramble’ Dvorak mode.
1134 * - Capslock is on its normal position
1135 * - Insert
1136 * - APP (whatever it is) fakes being next to right GUI (though other layer).
1137 * - The traditional obsolete button like ScrLk/PrtSc are also included, in
1138 * case some program needs them.
1139 * - Speed measuring
1140 * - Text size measuring
1141 * - Some unused spots remaining.
1142 */
1143
1144 [ _RAR ] = LAYOUT_redefined (
1145
1146/*
1147 _RAR (RARe keys. Power keys, Unicode mode, Alternate BASE, Media, Brightness, Speed, leds, …)
1148
1149 <pink2<pinky <ring <middl <indexx<indx2| indx2>index>middl>ring> pinky> pink2>
1150 <|> -*- //(toggle) on _FUN
1151 BASE Cnt/Mx Cnull CWmin CRprt Speed | SRprt Play Next Prev Stop RSht(•)
1152 CapsL Power• Wake• Sleep• Pause• ScrLk | PrtSc xxx Vol+ Vol- Mute Insert // • requires Shift
1153 ☑ uLNX uBSD uOSX uWIN uWNC | xxx xxx Bri+ Bri- xxx APP // Ü(nicode) tester
1154 ----------------------------------------------------------------------------
1155 SLed MLeds RGUI xxx | !Alter xxx LGUI ___ // Middle-led, Side-leds, ! 'alternate'
1156 <|> -*- // (Hold) on BASE
1157 <1 ± <2 ± <3 <4 | 4> 3> 2> ± 1>
1158 … …
1159 */
1160//
1161// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1162// , , , , -*- , <|,> , , , , , ,
1163 CTO_BASE , COUNT_TOG , COUNT_NULL , COUNT_WORDMIN , COUNT_REPORT , SPEED_TOG , SPEED_REPORT , KC_MPLY , KC_MNXT , KC_MPRV , KC_MSTP , KC_RSFT ,
1164 KC_CAPS , C_KC_PWR , C_KC_WAKE , C_KC_SLEP , C_KC_PAUS , KC_SLCK , KC_PSCR , XXXXXXX , KC_VOLU , KC_VOLD , KC_MUTE , KC_INS ,
1165 XP_DRA_CG , UNICODE_MODE_LNX , UNICODE_MODE_BSD , UNICODE_MODE_OSX , UNICODE_MODE_WIN , UNICODE_MODE_WINC , XXXXXXX , XXXXXXX , KC_BRIGHTNESS_UP , KC_BRIGHTNESS_DOWN , XXXXXXX , KC_APP ,
1166// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1167 LEDS_ON
1168# ifdef TRANSMINIVAN_LEFTSIDE
1169 , TRANS_LEFT
1170# endif
1171
1172# ifdef MORE_KEY__COMMAND
1173 , MORE_key1
1174# endif
1175
1176# ifdef LEDS_OFF_BASE_DEF // This messes with led effect on/off, so we need to track the state of this setting now.
1177 , RGBTOG_
1178# else // Here we don't mess with led effect on/off, so we can use QMK key blindly.
1179 , RGB_TOG
1180# endif
1181 , KC__XGUI , XXXXXXX
1182
1183# ifdef TRANSMINIVAN_MIDLEFT
1184 , TRANS_MIDLEFT
1185# endif
1186
1187 , OTHER_BASE , XXXXXXX
1188
1189# ifdef TRANSMINIVAN_RIGHTSIDE
1190 , TRANS_RIGHT
1191# endif
1192
1193 , KC__YGUI
1194
1195# ifdef MORE_KEY__ARROW
1196 , MORE_key2
1197# endif
1198 , _______
1199// , , , <|,> , , ,
1200// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1201
1202 ),
1203
1204# endif // BASESFILE_LAYER_RAR
1205
1206 /* ⬆⬇ */
1207
1208# ifndef REMOVE_PAD // This removes all references to _PAD in the code, therefore is not functionally the same as BASESFILE_LAYER_PAD
1209
1210# ifndef BASESFILE_LAYER_PAD // Use a definition of this layer in the ./bases_* file, where this #define can be defined.
1211
1212# ifndef NUMPAD_COMMON_SQUARE // Use default _PAD layer, where numbers are aligned as they are on _NSY.
1213 // Conversely, if this is defined, this layer will resembel a numeric keypad.
1214 // See also base_numpad.c
1215
1216 /* Layer _PAD: Numbers pad, for numbers pad version of numbers (computer programs can see the difference).
1217 * Number pad navigation will be more or less useless, but there is a repetition of the Numpad
1218 * keys 4,2,8,6 row 4 for arrows, and 3,1,7,9 row 2 for navigation, to make it a little easier to find.
1219 */
1220
1221 [ _PAD ] = LAYOUT_redefined (
1222
1223/*
1224 Layer _PAD Numbers Pad (special symbol versions; regular '1' is not the same as this numpad '1', etc)
1225
1226 <pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
1227 -*- <|> //(toggle) on _FUN
1228 BASE xxx xxx .DEL 4LEFT 2DOWN | 8UP 6RGHT * xxx xxx Bksp
1229 LCtl 1END 2DOWN 3PGDN 4LEFT 5 | 6RGHT 7HOME 8UP 9PGUP 0INS -
1230 LSht xxx xxx / xxx = | + 3PGDN 1END 7HOME 9PGUP RSht
1231 -*---------------------------------------------------------------------------- //-*- toggle on BASE
1232 LAlt Del Tab ENT | NUML xxx LGUI RAlt
1233 <|>
1234 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1235 … …
1236
1237 */
1238
1239//
1240// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1241// , , , , , -*- <|,> , , , , , ,
1242 CTO_BASE , XXXXXXX , XXXXXXX , KC_KP_DOT , KC_KP_4 , KC_KP_2 , KC_KP_8 , KC_KP_6 , KC_KP_ASTERISK , XXXXXXX , XXXXXXX , KC_BSPC ,
1243 KC_LCTL , KC_KP_1 , KC_KP_2 , KC_KP_3 , KC_KP_4 , KC_KP_5 , KC_KP_6 , KC_KP_7 , KC_KP_8 , KC_KP_9 , KC_KP_0 , KC_KP_MINUS ,
1244 KC_LSFT , XXXXXXX , XXXXXXX , KC_KP_SLASH , XXXXXXX , KC_KP_EQUAL , KC_KP_PLUS , KC_KP_3 , KC_KP_1 , KC_KP_7 , KC_KP_9 , KC_RSFT ,
1245// ----------------------------------------------------------------------------------------------------------------------------------------------
1246 KC_LALT
1247
1248# ifdef TRANSMINIVAN_LEFTSIDE
1249 , _______ // On Base layers this key typically defaults to MO ( _PAD )
1250# endif
1251
1252# ifdef MORE_KEY__COMMAND
1253 , MORE_key1
1254# endif
1255
1256 , KC_DEL , KC_TAB , KC_KP_ENTER
1257
1258# ifdef TRANSMINIVAN_MIDLEFT
1259 , TRANS_MIDLEFT
1260# endif
1261
1262 , KC_NUMLOCK , XXXXXXX , KC__YGUI
1263
1264# ifdef TRANSMINIVAN_RIGHTSIDE
1265 , TRANS_RIGHT
1266# endif
1267
1268# ifdef MORE_KEY__ARROW
1269 , MORE_key2
1270# endif
1271
1272 , KC_RALT
1273// , , , <|,> , , ,
1274// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1275
1276 ),
1277
1278# else // NUMPAD_COMMON_SQUARE
1279
1280 [ _PAD ] = LAYOUT_redefined (
1281
1282/*
1283
1284 * Layer _PAD: Option for a different _PAD layer in the common layers system.
1285 * This variety resembles the square layout of a numerical keyboard.
1286 * It is different from one of the Numpad Base layer compile options, in that
1287 * it only has a number pad for the right hand. It is also different in featuring
1288 * modifiers, and the overall layout is sligthly different (Enter, = symbol).
1289 *
1290 * ‛Tab’ on key 3 left hand is the same as the other _PAD layer option (with the
1291 * numbers in a line, equal to the _NSY layer), to retain the same ability to
1292 * type Control-Tab. It seems better to have RAlt in its usual place, Enter in
1293 * its usual place, than to strictly follow a standard numeric keyboard layout
1294 * (which puts Enter somewhere on the right, row 1). It seems easy enough to
1295 * type Enter on this key as well, even with the right hand. Numlock is also
1296 * in its usual place. Note that ‛Del’ on the left, row 1, is not a numbers pad
1297 * Delete/Dot key, but standard Delete, also in the usual place.
1298 *
1299 * This is probably the better one of the square layout numpads, unless you have a use
1300 * for the two hands version. This is also available on ‛Base’ Numpad.
1301 *
1302
1303 Layer _PAD (Number pad, with NumLock on)
1304
1305 <pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring>pin>pink2>
1306 <|>
1307 BASE xxx xxx xxx xxx xxx | = 7 8 9 - Bspc
1308 LCtl xxx xxx xxx xxx xxx | * 4 5 6 + RCtl
1309 LSht xxx xxx xxx xxx xxx | / 1 2 3 , RSht
1310 ------------------------------------------------------------------------
1311 LAlt Del Tab Ent | NumL 0 . RAlt
1312 <|>
1313 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1314 … | …
1315
1316 Layer _PAD (Number pad, with NumLock off)
1317
1318 <pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring >pin>pink2>
1319 <|>
1320 BASE xxx xxx xxx xxx xxx | = Home Up PgUp - Bspc
1321 LCtl xxx xxx xxx xxx xxx | * Left 5 Right + RCtl
1322 LSht xxx xxx xxx xxx xxx | / End Down PgDn , RSht
1323 -------------------------------------------------------------------------
1324 LAlt Del Tab Ent | NumL Ins Del RAlt
1325 <|>
1326 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1327 … | …
1328
1329*/
1330
1331//
1332// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1333// , , , , , -*- <|,> , , , , , ,
1334 CTO_BASE , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_EQUAL , KC_KP_7 , KC_KP_8 , KC_KP_9 , KC_KP_MINUS , KC_BSPC ,
1335 KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_ASTERISK , KC_KP_4 , KC_KP_5 , KC_KP_6 , KC_KP_PLUS , KC_RCTL ,
1336 KC_LSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_KP_SLASH , KC_KP_1 , KC_KP_2 , KC_KP_3 , KC_KP_COMMA , KC_RSFT ,
1337// -----------------------------------------------------------------------------------------------------------------------------------
1338 KC_LALT
1339
1340# ifdef TRANSMINIVAN_LEFTSIDE
1341 , TRANS_LEFT
1342# endif
1343
1344# ifdef MORE_KEY__COMMAND
1345 , MORE_key1
1346# endif
1347
1348 , KC_DEL , KC_TAB , KC_KP_ENTER
1349
1350# ifdef TRANSMINIVAN_MIDLEFT
1351 , TRANS_MIDLEFT
1352# endif
1353
1354 , KC_NUMLOCK , KC_KP_0
1355
1356// See comment in ./base_numpad.c on the first layout (double handed Base layer), about the next few keys:
1357// This layer follows that layout Base Numpad.
1358// ---⬇
1359
1360# ifdef TRANSMINIVAN_RIGHTSIDE
1361 , TRANS_RIGHT
1362# endif
1363
1364# ifdef MORE_KEY__ARROW
1365 //, MORE_key2
1366 , KC__YGUI
1367# endif
1368// ---⬆
1369 , KC_KP_DOT
1370
1371 , KC_RALT
1372// , , , <|,> , , ,
1373// <1 ± ± , <2 , <3 , <4 |, 4> , 3> ± ± , 2> , 1>
1374
1375 ),
1376
1377
1378# endif // NUMPAD_COMMON_SQUARE
1379
1380# endif // BASESFILE_LAYER_PAD
1381
1382# endif // REMOVE_PAD
1383
1384 /* ⬆⬇ */
1385
1386# ifndef REMOVE_ACC // This cuts out the whole _ACC layer.
1387
1388# ifndef BASESFILE_LAYER_ACC // Use a definition of this layer in the ./bases_* file, where this #define can be defined.
1389
1390 /* Layer _ACC: Accented and other unusual characters. It seems this would
1391 * cover Dutch, German, French, Scandinavia, Italy and Spain.
1392 * It should helps with remembering what keys are where, if one
1393 * knows the logic behind it (however flawed it might be).
1394 * This layer has the uncluttered Tab key (whoohoo!).
1395 *
1396 * The logic is ... Versions of the vowels with accents are
1397 * widened vertically on the board, from their
1398 * normal position.
1399 * Grave is a line going up, thus on upper row. é
1400 * Acute is a line going down, thus on lower row. è
1401 * Diaereses is dots going horizontal, thus middle. ë
1402 * Diareses is umlaut which is most frequent if
1403 * including German, thus home row. ë
1404 * There is no room for Caret on the left, thus it is
1405 * on the right, following same-finger logic (O
1406 * is ring finger, etc).
1407 * Caret is on the lower row to make room for versions
1408 * of 'n' and 'c' near their normal position.
1409 * There is no room for ÿŸ on the normal y, because
1410 * íÍ is on it, which is more important, and to
1411 * keep the logic of that block, therefore it is
1412 * as close to it as can be.
1413 * øØ and åÅ follow the same-finger logic (a is left
1414 * hand pinky, etc), and are on remaining spots.
1415 * œŒ and æÆ are also no remaining spots, both close
1416 * to êÊ for the e in there, the œŒ being further
1417 * to the left to follow the same finger logic on
1418 * that right hand side: a on the right, o on the left.
1419 * ¡ and ¿ had no more room on this layer, therefore,
1420 * and because they are unusual, they are on the
1421 * _DRA(wings) layer. They are located under the keys
1422 * that also have ! and ?, respectively.
1423 *
1424 */
1425
1426 [ _ACC ] = LAYOUT_redefined (
1427
1428/*
1429 Layer _ACC (ACCented characters, see _RAR layer for input modes)
1430
1431 <pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
1432 -*- <|> //(toggle) on _FUN
1433 BASE áÁ óÓ éÉ úÚ íÍ | ýÝ ijIJ çÇ øØ åÅ Bksp
1434 RCTL(Tab) äÄ öÖ ëË üÜ ïÏ | ÿŸ œŒ æÆ ñÑ ß μ
1435 LSht àÀ òÒ èÈ ùÙ ìÌ | îÎ ûÛ êÊ ôÔ â RSht
1436 ----------------------------------------------------------------------------
1437 LAlt ___ ___ Ent | Spc ___ ___ RAlt
1438 -*- <|> //(hold) on BASE
1439 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1440 … …
1441 */
1442//
1443// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1444// , , , , , <|,>-*- , , , , , ,
1445 CTO_BASE , XP_ACC_AA , XP_ACC_AB , XP_ACC_AC , XP_ACC_AD , XP_ACC_AE , XP_ACC_AF , XP_ACC_AG , XP_ACC_AH , XP_ACC_AI , XP_ACC_AJ , KC_BSPC ,
1446 LCTL ( KC_TAB ) , XP_ACC_BA , XP_ACC_BB , XP_ACC_BC , XP_ACC_BD , XP_ACC_BE , XP_ACC_BF , XP_ACC_BG , XP_ACC_BH , XP_ACC_BI , XP_ACC_BJ , XP_ACC_BK ,
1447 KC_LSFT , XP_ACC_CA , XP_ACC_CB , XP_ACC_CC , XP_ACC_CD , XP_ACC_CE , XP_ACC_CF , XP_ACC_CG , XP_ACC_CH , XP_ACC_CI , XP_ACC_CJ , KC_RSFT ,
1448// ----------------------------------------------------------------------------------------------------------------------------------------------
1449 KC_LALT
1450# ifdef TRANSMINIVAN_LEFTSIDE
1451 , TRANS_LEFT
1452# endif
1453
1454# ifdef MORE_KEY__COMMAND
1455 , MORE_key1
1456# endif
1457
1458 , _______ , _______ , KC_ENT
1459
1460# ifdef TRANSMINIVAN_MIDLEFT
1461 , TRANS_MIDLEFT
1462# endif
1463
1464 , KC_SPC , _______ , _______
1465
1466# ifdef TRANSMINIVAN_RIGHTSIDE
1467 , TRANS_RIGHT
1468# endif
1469
1470# ifdef MORE_KEY__ARROW
1471 , MORE_key2
1472# endif
1473
1474 , KC_RALT
1475// , -*- , , <|,> , , ,
1476// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1477
1478 ),
1479
1480# endif // BASESFILE_LAYER_ACC
1481
1482# endif // REMOVE_ACC
1483
1484 /* ⬆⬇ */
1485
1486# ifndef REMOVE_DRA // This cuts out the whole _DRA layer
1487
1488# ifndef BASESFILE_LAYER_DRA // Use a definition of this layer in the ./bases_* file, where this #define can be defined.
1489
1490 /* Layer _DRA: Drawings, like various Unicode symbols.
1491 *
1492 */
1493
1494 [ _DRA ] = LAYOUT_redefined (
1495
1496/*
1497 Layer _DRA (DRAwings, whatever else (rendering width varies in different applications))
1498
1499 <pink2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
1500 -*- <|> //(toggle) on _FUN
1501 BASE “„ ”≤ £≥ ∅ ¢ ±ƒ | ❦♥ 🙂🙁 👍👎 ⁽₍ ⁾₎ Bksp
1502 Tab ¹₁ ²₂ ³₃ ⁴₄ ⁵₅ | ⁶₆ ⁷₇ ⁸₈ ⁹₉ ⁰₀ RCTL
1503 LSht 「━ 」─ °〇 •§ …· | ⮘⮙ ⮚⮛ ¿¡ 《┄ 》┅ RSht
1504 -------------------------------------------------------------------------
1505 LAlt ___ ___ Ent | Spc ___ ___ RAlt
1506 -*- <|> -*- //(hold) on BASE
1507 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1508 … …
1509 */
1510//
1511// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1512// , , , , , <|,> , -*- , , , , ,
1513 CTO_BASE , XP_DRA_AA , XP_DRA_AB , XP_DRA_AC , XP_DRA_AD , XP_DRA_AE , XP_DRA_AF , XP_DRA_AG , XP_DRA_AH , XP_DRA_AI , XP_DRA_AJ , KC_BSPC ,
1514 KC_TAB , XP_DRA_BA , XP_DRA_BB , XP_DRA_BC , XP_DRA_BD , XP_DRA_BE , XP_DRA_BF , XP_DRA_BG , XP_DRA_BH , XP_DRA_BI , XP_DRA_BJ , KC_RCTL ,
1515 KC_LSFT , XP_DRA_CA , XP_DRA_CB , XP_DRA_CC , XP_DRA_CD , XP_DRA_CE , XP_DRA_CF , XP_DRA_CG , XP_DRA_CH , XP_DRA_CI , XP_DRA_CJ , KC_RSFT ,
1516// --------------------------------------------------------------------------------------------------------------------------------------------
1517 KC_LALT
1518
1519# ifdef TRANSMINIVAN_LEFTSIDE
1520 , TRANS_LEFT
1521# endif
1522
1523# ifdef MORE_KEY__COMMAND
1524 , MORE_key1
1525# endif
1526
1527 , _______ , _______ , KC_ENT
1528
1529# ifdef TRANSMINIVAN_MIDLEFT
1530 , TRANS_MIDLEFT
1531# endif
1532
1533 , KC_SPC , _______ , _______
1534
1535# ifdef TRANSMINIVAN_RIGHTSIDE
1536 , TRANS_RIGHT
1537# endif
1538
1539# ifdef MORE_KEY__ARROW
1540 , MORE_key2
1541# endif
1542
1543 , KC_RALT
1544// , , , <|,> , , ,
1545// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1546
1547 ),
1548
1549# endif // BASESFILE_LAYER_RAR
1550
1551# endif // REMOVE_DRA
1552
1553 /* ⬆⬇ */
1554
1555# ifndef REMOVE_BON // Removes this layer entirely, if set.
1556
1557# ifndef BASESFILE_LAYER_BON // Use a definition of this layer in the ./bases_* file, where this #define can be defined.
1558
1559/*
1560 * Bonus layer: Enumeration numbers, some general purpose / mathematical symbols
1561 * ⁻ is an exponential minus sign (the center-dot · can be used in exponents too)
1562 * × is multiplication
1563 * ‰ is promille, ‱ is pro-tenthousandth
1564 *
1565 */
1566
1567 [ _BON ] = LAYOUT_redefined (
1568
1569/*
1570 Layer _BON (Bonus layer, a variety of more stuffs.)
1571
1572 <pink2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
1573 -*- <|>
1574 BASE ‛ 🛠 ’ ⬆ ¤ 🄯 ∑ © ‰ ‱ | ★ ٭ 😊 ⍨ × ⃰ √ ⁻ ⁺ Bksp
1575 `~ ① ⬅ ② ⬇ ③ ➡ ④ ┏ ⑤ ┓ | ⑥ ┃ ⑦ ┇ ⑧ ╋ ⑨ ⓪ ∞ — ≈ // — is a dash (larger), not hyphen
1576 LSht ‹ › ÷ ☞ ┗ ≠ ┛ | ✗ ┣ ✓ ┫ ⚠ « » RSht
1577 -------------------------------------------------------------------------
1578 Left ___ ___ Ent | Spc ___ ___ Right
1579 -*- -*- <|> -*- // Activation on BASE
1580 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1581 … …
1582 */
1583//
1584// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1585// , , , , , <|,> , , , , , ,
1586 CTO_BASE , XP_BON_AA , XP_BON_AB , XP_BON_AC , XP_BON_AD , XP_BON_AE , XP_BON_AF , XP_BON_AG , XP_BON_AH , XP_BON_AI , XP_BON_AJ , KC_BSPC ,
1587 KC_GRV , XP_BON_BA , XP_BON_BB , XP_BON_BC , XP_BON_BD , XP_BON_BE , XP_BON_BF , XP_BON_BG , XP_BON_BH , XP_BON_BI , XP_BON_BJ , XP_BON_BK ,
1588 KC_LSFT , XP_BON_CA , XP_BON_CB , XP_BON_CC , XP_BON_CD , XP_BON_CE , XP_BON_CF , XP_BON_CG , XP_BON_CH , XP_BON_CI , XP_BON_CJ , KC_RSFT ,
1589// -------------------------------------------------------------------------------------------------------------------------------------------------
1590 KC_LEFT
1591
1592# ifdef TRANSMINIVAN_LEFTSIDE
1593 , TRANS_LEFT
1594# endif
1595
1596# ifdef MORE_KEY__COMMAND
1597 , MORE_key1
1598# endif
1599
1600 , _______ , _______ , KC_ENT
1601
1602# ifdef TRANSMINIVAN_MIDLEFT
1603 , TRANS_MIDLEFT
1604# endif
1605
1606 , KC_SPC , _______ , _______
1607
1608# ifdef TRANSMINIVAN_RIGHTSIDE
1609 , TRANS_RIGHT
1610# endif
1611
1612# ifdef MORE_KEY__ARROW
1613 , MORE_key2
1614# endif
1615 , KC_RIGHT
1616// , , , <|,> , , ,
1617// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1618
1619 ),
1620
1621# endif // BASESFILE_LAYER_BON
1622
1623# endif // REMOVE_BON
1624
1625 /* ⬆⬇ */
1626
1627# ifndef BASESFILE_LAYER_FUN // Use a definition of this layer in the ./bases_* file, where this #define can be defined.
1628
1629 /* Layer _FUN: Function keys until F20. Some combo modifiers control/alt/shift
1630 * Toward any layer by toggle. Layer can be set to return to BASE after one F-key press (FUN<, row 1)
1631 */
1632
1633 [ _FUN ] = LAYOUT_redefined (
1634
1635/*
1636 Layer _FUN (F-keys, Layer access, Set BASE key direction)
1637
1638 <pink2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
1639 toggl toggl set toggl toggl toggl | toggl toggl // Type of layer switch
1640 <|>
1641 BASE: NUMS: _PAD _ACC _DRA _BON | _MOV _RAR xxx xxx xxx Bksp //':' are dynamic ...
1642 LCtl F1 F2 F3 F4 F5 | F6 F7 F8 F9 F10 RCtl
1643 LSht F11 F12 F13 F14 F15 | F16 F17 F18 F19 F20 RSht
1644 ----------------------------------------------------------------------*-- //-*- toggle on BASE
1645 LAlt LCtl& LCtl& LSht& | FUN< +LCtl&LSht LGUI RAlt //... < toggle 'stay'
1646 LSht LAlt LAlt | &LAlt
1647 +xxx +xxx +xxx | +xxx
1648 <|>
1649 <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1650 … …
1651 */
1652//
1653// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1654// , , -*- , , , <|,> , , , , , ,
1655 CTO_BASE , CTO_NUMS , TO ( _PAD ) , CTO_ACCE , CTO_DRAW , TO ( _BON ), TO ( _MOV ) , TO ( _RAR ) , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSPC ,
1656 KC_LCTL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_RCTL ,
1657 KC_LSFT , KC_F11 , KC_F12 , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_RSFT ,
1658// ------------------------------------------------------------------------------------------------------------------------------------------
1659 KC_LALT
1660# ifdef TRANSMINIVAN_LEFTSIDE
1661 , TRANS_LEFT
1662# endif
1663
1664# ifdef MORE_KEY__COMMAND
1665 , MORE_key1
1666# endif
1667
1668 , MT ( MOD_LCTL | MOD_LSFT, XXXXXXX ) , MT ( MOD_LCTL | MOD_LALT , XXXXXXX ) , MT ( MOD_LSFT | MOD_LALT , XXXXXXX )
1669
1670# ifdef TRANSMINIVAN_MIDLEFT
1671 , TRANS_MIDLEFT
1672# endif
1673
1674 , _FUN_STAY , MT ( MOD_LCTL | MOD_LSFT | MOD_LALT , XXXXXXX ) , KC__YGUI
1675
1676# ifdef TRANSMINIVAN_RIGHTSIDE
1677 , _______ // On Base layers this key typically defaults to MO ( _FUN )
1678# endif
1679
1680# ifdef MORE_KEY__ARROW
1681 , MORE_key2
1682# endif
1683 , KC_RALT
1684// , , , <|,> , , ,
1685// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1686
1687 ),
1688
1689# endif // BASESFILE_LAYER_FUN
1690
1691 /* ⬆ */
1692
1693
1694/*
1695 * New layer template. Includes left/right movement arrows, deletion, modifiers.
1696 * If you want a new layer, in the logic of this layout you would add a toggle on the
1697 * _FUN layer top row on the first free key to it, and optionally alter the hold
1698 * layer switch keys on the base layers. (Check if a new layer will fit on the chip.)
1699 *
1700 [ _??? ] = LAYOUT_redefined (
1701
1702// <pink2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
1703// <|>
1704// BASE xxx xxx xxx xxx xxx | xxx xxx xxx xxx xxx Bksp
1705// LCtl xxx xxx xxx xxx xxx | xxx xxx xxx xxx xxx RCtl
1706// LSht xxx xxx xxx xxx xxx | xxx xxx xxx xxx xxx RSht
1707// -------------------------------------------------------------------------
1708// LAlt+Left Del ___ Ent | Spc ___ ___ RAlt+Right
1709// <|>
1710// <1 ± <2 <3 <4 | 4> 3> 2> ± 1>
1711// … …
1712//
1713//
1714// <pink2 , <pinky , <ring , <middl , <index , <indx2 |, indx2> , index> , middl> , ring> , pinky> , pink2> ,
1715// , , , , , <|,> , , , , , ,
1716 CTO_BASE , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSPC ,
1717 KC_LCTL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_RCTL ,
1718 KC_LSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_RSFT ,
1719// ------------------------------------------------------------------------------------------------------------------------
1720 LALT_T ( KC_LEFT )
1721
1722# ifdef TRANSMINIVAN_LEFTSIDE
1723 , TRANS_LEFT
1724# endif
1725
1726# ifdef MORE_KEY__COMMAND
1727 , MORE_key1
1728# endif
1729
1730 , KC_DEL , XXXXXXX , KC_ENT
1731
1732# ifdef TRANSMINIVAN_MIDLEFT
1733 , TRANS_MIDLEFT
1734# endif
1735
1736 , KC_SPC , XXXXXXX , XXXXXXX
1737
1738# ifdef TRANSMINIVAN_RIGHTSIDE
1739 , TRANS_RIGHT
1740# endif
1741
1742# ifdef MORE_KEY__ARROW
1743 , MORE_key2
1744# endif
1745
1746 , RALT_T ( KC_RIGHT )
1747// , , , <|,> , , ,
1748// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1>
1749
1750 ),
1751*/
1752
1753};
1754