Keymap: Refactor Hacker Dvorak (#4688)
Programmer Dvorak based layout for the Ergodox EZ.
This commit is contained in:
		
							parent
							
								
									b13162f7fd
								
							
						
					
					
						commit
						5eb8f3f6b5
					
				@ -5,26 +5,33 @@
 | 
				
			|||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Keyboard Settings */
 | 
					 | 
				
			||||||
#undef  TAPPING_TERM
 | 
					#undef  TAPPING_TERM
 | 
				
			||||||
#define TAPPING_TERM 150
 | 
					#define TAPPING_TERM 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef  DEBOUNCE
 | 
					#undef  DEBOUNCE
 | 
				
			||||||
#define DEBOUNCE 10
 | 
					#define DEBOUNCE 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef  IGNORE_MOD_TAP_INTERRUPT
 | 
					#undef  IGNORE_MOD_TAP_INTERRUPT
 | 
				
			||||||
#define IGNORE_MOD_TAP_INTERRUPT
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef  FORCE_NKRO
 | 
					#undef  FORCE_NKRO
 | 
				
			||||||
#define FORCE_NKRO
 | 
					#define FORCE_NKRO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This isn't defined by default, so there is no need to undefine it first. */
 | 
					#undef  TAPPING_TOGGLE
 | 
				
			||||||
#define LEADER_TIMEOUT 500
 | 
					#define TAPPING_TOGGLE 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LEADER_TIMEOUT 1000
 | 
				
			||||||
 | 
					#define IGNORE_MOD_TAP_INTERRUPT
 | 
				
			||||||
#define PERMISSIVE_HOLD
 | 
					#define PERMISSIVE_HOLD
 | 
				
			||||||
#define QMK_KEYS_PER_SCAN 4
 | 
					#define QMK_KEYS_PER_SCAN 4
 | 
				
			||||||
 | 
					#define DANCING_TERM 175
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ONESHOT_TAP_TOGGLE 5
 | 
				
			||||||
 | 
					#define ONESHOT_TIMEOUT 5000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define COMBO_COUNT 4
 | 
				
			||||||
 | 
					#define COMBO_TERM 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RGB Lights
 | 
					 | 
				
			||||||
#undef  RGBLIGHT_HUE_STEP
 | 
					#undef  RGBLIGHT_HUE_STEP
 | 
				
			||||||
#define RGBLIGHT_HUE_STEP 24
 | 
					#define RGBLIGHT_HUE_STEP 24
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -40,11 +47,7 @@
 | 
				
			|||||||
#undef  RGBLIGHT_LIMIT_VAL
 | 
					#undef  RGBLIGHT_LIMIT_VAL
 | 
				
			||||||
#define RGBLIGHT_LIMIT_VAL 255
 | 
					#define RGBLIGHT_LIMIT_VAL 255
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This isn't defined by default, so there is no need to undefine it first. */
 | 
					 | 
				
			||||||
#define RGBLIGHT_SLEEP
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Mouse
 | 
					 | 
				
			||||||
#undef  MOUSEKEY_INTERVAL
 | 
					#undef  MOUSEKEY_INTERVAL
 | 
				
			||||||
#define MOUSEKEY_INTERVAL 10
 | 
					#define MOUSEKEY_INTERVAL 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -52,31 +55,34 @@
 | 
				
			|||||||
#define MOUSEKEY_DELAY 15
 | 
					#define MOUSEKEY_DELAY 15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef  MOUSEKEY_MAX_SPEED
 | 
					#undef  MOUSEKEY_MAX_SPEED
 | 
				
			||||||
#define MOUSEKEY_MAX_SPEED 15
 | 
					#define MOUSEKEY_MAX_SPEED 20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef  MOUSEKEY_TIME_TO_MAX
 | 
					#undef  MOUSEKEY_TIME_TO_MAX
 | 
				
			||||||
#define MOUSEKEY_TIME_TO_MAX 150
 | 
					#define MOUSEKEY_TIME_TO_MAX 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef  MOUSEKEY_WHEEL_MAX_SPEED
 | 
					#undef  MOUSEKEY_WHEEL_MAX_SPEED
 | 
				
			||||||
#define MOUSEKEY_WHEEL_MAX_SPEED 15
 | 
					#define MOUSEKEY_WHEEL_MAX_SPEED 20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#undef  MOUSEKEY_WHEEL_TIME_TO_MAX
 | 
					#undef  MOUSEKEY_WHEEL_TIME_TO_MAX
 | 
				
			||||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 150
 | 
					#define MOUSEKEY_WHEEL_TIME_TO_MAX 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* This is defined only if CONSOLE_ENABLE is set to "yes" */
 | 
					 | 
				
			||||||
// #undef  NO_DEBUG
 | 
					// #undef  NO_DEBUG
 | 
				
			||||||
// #define NO_DEBUG
 | 
					// #define NO_DEBUG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// #undef  NO_PRINT
 | 
					// #undef  NO_PRINT
 | 
				
			||||||
// #define NO_PRINT
 | 
					// #define NO_PRINT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* For COMBO only*/
 | 
					// #define RETRO_TAPPING
 | 
				
			||||||
// #define COMBO_COUNT 1
 | 
					// #define TAPPING_FORCE_HOLD
 | 
				
			||||||
// #define COMBO_TERM 200
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* For tap toggle */
 | 
					// #define AUTO_SHIFT_TIMEOUT 150
 | 
				
			||||||
// #define TAPPING_TOGGLE 2
 | 
					// #define NO_AUTO_SHIFT_SPECIAL
 | 
				
			||||||
// #define ONESHOT_TAP_TOGGLE 2
 | 
					// #define NO_AUTO_SHIFT_NUMERIC
 | 
				
			||||||
// #define ONESHOT_TIMEOUT 300
 | 
					// #define NO_AUTO_SHIFT_ALPHA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// #define EXTRA_LONG_COMBOS
 | 
				
			||||||
 | 
					// #define EXTRA_EXTRA_LONG_COMBOS
 | 
				
			||||||
 | 
					// #define COMBO_ALLOW_ACTION_KEYS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// #define RGBLIGHT_SLEEP
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +0,0 @@
 | 
				
			|||||||
https://i.imgur.com/fKX0Zbs.png
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
https://i.imgur.com/giAc3M9.jpg
 | 
					 | 
				
			||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
let gulp = require('gulp');
 | 
					let gulp = require('gulp');
 | 
				
			||||||
let run = require('gulp-run-command').default;
 | 
					let run = require('gulp-run-command').default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
gulp.task('clean', run('rm -rf ../../../../.build'));
 | 
					gulp.task('clean', run('rm -rf ../../../../.build'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak', {
 | 
					gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak', {
 | 
				
			||||||
@ -9,5 +9,11 @@ gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak
 | 
				
			|||||||
}));
 | 
					}));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gulp.task('watch', ['build'], () => {
 | 
					gulp.task('watch', ['build'], () => {
 | 
				
			||||||
    gulp.watch(['keymap.c', 'config.h', 'rules.mk'], ['build']);
 | 
					    gulp.watch([
 | 
				
			||||||
 | 
					        'keymap.c',
 | 
				
			||||||
 | 
					        'config.h',
 | 
				
			||||||
 | 
					        'rules.mk',
 | 
				
			||||||
 | 
					    ], ['build']);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gulp.task('default', ['watch']);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										353
									
								
								keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										353
									
								
								keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,353 @@
 | 
				
			|||||||
 | 
					// Keyboard keymap:
 | 
				
			||||||
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					    [DVORAK] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // HACKER DVORAK left hand
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //  ESCAPE                 |                         |                         |                         |                         |                         |     START RECORDING     //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                   KC_ESC,                 TD(GRV_TILD),             TD(AT_DLR),              TD(LCBR_LABK),            TD(LPRN_LBRC),            TD(EXLM_QUES),           DYN_REC_START1,     //
 | 
				
			||||||
 | 
					        //                         |                       ~ |                       $ |                       < |                       [ |                       ? |                         //
 | 
				
			||||||
 | 
					        //                         |            TAP DANCE: ` |            TAP DANCE: @              TAP DANCE: { |            TAP DANCE: ( |            TAP DANCE: ! |     DYNAMIC MARCO 1     //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //  TAB                    |      MOD TAP: ALT+SHIFT |       MOD TAP: CTRL+ALT |     MOD TAP: CTRL+SHIFT | P                       | Y                       |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                   KC_TAB,                TD(NONE_LEAD),            TD(QUOT_DQUO),            TD(DOT_COMM),              ALL_T(KC_P),              MEH_T(KC_Y),            DYN_MACRO_PLAY1,    //
 | 
				
			||||||
 | 
					        //                         |                    LEAD |                       " |                       , |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |         TAP DANCE: NONE |            TAP DANCE: ' |            TAP DANCE: . |          MOD TAP: HYPER |            MOD TAP: MEH |                         //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------|   PLAY DYNAMIC MACRO 1  //
 | 
				
			||||||
 | 
					        //                         |            MOD TAP: ALT |           MOD TAP: CTRL |        LAYER TAP: SHIFT |   LAYER TAP: ARROW KEYS |            MOD TAP: GUI |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                       Ü |                         |                         //
 | 
				
			||||||
 | 
					                TD(EQL_PLUS),              ALT_T(KC_A),              CTL_T(KC_O),              SFT_T(KC_E),           LT(ARROWS, KC_U),           LGUI_T(KC_I),      //-----------------------//
 | 
				
			||||||
 | 
					        //                       + |                       Á |                       Ó |                       É |                       Ú |                       Í |                         //
 | 
				
			||||||
 | 
					        //            TAP DANCE: = |            TAP DANCE: A |            TAP DANCE: O |            TAP DANCE: E |            TAP DANCE: U |            TAP DANCE: I |                         //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------|  META                   //
 | 
				
			||||||
 | 
					        //          STOP RECORDING |  MOD TAP: GUI+SHIFT+ALT | Q                       | J                       | K                       | X                       |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                DYN_REC_STOP,             TD(SCLN_COLN),            SGUI_T(KC_Q),          LT(MEDIA_FN, KC_J),        LT(NUMPAD, KC_K),           LCAG_T(KC_X),                KC_LGUI,        //
 | 
				
			||||||
 | 
					        //                         |                       : |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //           DYNAMIC MACRO |            TAP DANCE: ; |      MOD TAP: SHIFT+GUI | LAYER TAP: MEDIA/F-KEYS |   LAYER TAP: ATM NUMPAD |    MOD TAP: CTL+ALT+GUI |                         //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //         LAYERS SWITCHER | APPLICATION MENU        |                         |                         |                        //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                  SCROLL //
 | 
				
			||||||
 | 
					                 TG(LAYERS),                 KC_APP,                  KC_NLCK,                  KC_SLCK,                   KC_CAPS,        //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                  NUM    //
 | 
				
			||||||
 | 
					        //            LAYER TOGGLE |                         |                         |                         |       TAP DANCE: CAPS   //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                                                                               // HACKER DVORAK left thumb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                                                                                                           //------------------------+------------------------//
 | 
				
			||||||
 | 
					                                                                                                                                          // MOUSE WHEEL LEFT        | MOUSE WHEEL RIGHT       //
 | 
				
			||||||
 | 
					                                                                                                                                          //                         |                         //
 | 
				
			||||||
 | 
					                                                                                                                                                     KC_WH_L,                  KC_WH_R,        //
 | 
				
			||||||
 | 
					                                                                                                                                          //                         |                         //
 | 
				
			||||||
 | 
					                                                                                                                                           //                        |                         //
 | 
				
			||||||
 | 
					                                                                                                                //-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         | HOME                    //
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         |                         //
 | 
				
			||||||
 | 
					                                                                                                                /*  SPACE                   |  BACKSPACE             */         KC_HOME,        //
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         |                         //
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         |                         //
 | 
				
			||||||
 | 
					                                                                                                                           KC_SPC,                   KC_BSPC,        //-----------------------//
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         | END                     //
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         |                         //
 | 
				
			||||||
 | 
					                                                                                                               /*                          |                        */         KC_END,         //
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         |                         //
 | 
				
			||||||
 | 
					                                                                                                               //                          |                         |                         //
 | 
				
			||||||
 | 
					                                                                                                                //-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // HACKER DVORAK right hand
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                DYN_REC_START2,           TD(APMR_PIPE),            TD(RPRN_RBRC),            TD(RCBR_RABK),            TD(HASH_PERC),            TD(ASTR_CIRC),               XXXXXXX,        //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                DYN_MACRO_PLAY2,           MEH_T(KC_F),               ALL_T(KC_G),            C_S_T(KC_C),                LCA_T(KC_R),             LAS_T(KC_L),             TD(SLSH_BSLS),     //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        /*-----------------------*/        LGUI_T(KC_D),           LT(MOUSE, KC_H),            SFT_T(KC_T),             CTL_T(KC_N),               ALT_T(KC_S),             TD(MINS_UNDS),     //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                   KC_LGUI,                LCAG_T(KC_B),           LT(HYPER, KC_M),         LT(MEDIA_FN, KC_W),          SGUI_T(KC_V),            LGAS_T(KC_Z),                COMPOSE,        //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         |                         |                         |                         | ⎄                      //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					                                                             //                        |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                                                            //                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                                                                      KC_LEFT,                   KC_UP,                    KC_DOWN,                 KC_RGHT,                  KC_SYSREQ,       //
 | 
				
			||||||
 | 
					                                                            //                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                                                            //                         |                         |                         |                         |                         //
 | 
				
			||||||
 | 
					                                                             //------------------------+-------------------------+-------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // HACKER DVORAK right thumb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //------------------------+------------------------//
 | 
				
			||||||
 | 
					        //                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         //
 | 
				
			||||||
 | 
					                   KC_WH_U,                  KC_WH_D,        //
 | 
				
			||||||
 | 
					        //                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					                   KC_PGUP,        //                        |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					         //------------------------|                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					                  KC_PGDN,                   KC_DEL,                   KC_ENT          //
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					        //                         |                         |                         //
 | 
				
			||||||
 | 
					         //------------------------+-------------------------+------------------------//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [PLOVER] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        XXXXXXX,    XXXXXXX,       KC_MS_BTN2, KC_MS_UP,   KC_MS_BTN1,  KC_MS_BTN3, GUI_T(KC_NO),
 | 
				
			||||||
 | 
					        KC_ESC,     KC_MS_BTN4,    KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM,
 | 
				
			||||||
 | 
					        KC_TAB,     PV_LS,         PV_LT,      PV_LP,      PV_LH,       PV_STAR,
 | 
				
			||||||
 | 
					        KC_CLCK,    PV_LS,         PV_LK,      PV_LW,      PV_LR,       PV_STAR,    PV_STAR,
 | 
				
			||||||
 | 
					        XXXXXXX, TG(LAYERS), PV_NUM,     PV_NUM,     PV_NUM,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					              KC_SPACE, KC_BSPACE,
 | 
				
			||||||
 | 
					                        KC_HOME,
 | 
				
			||||||
 | 
					        PV_A, PV_O,     KC_END,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        KC_MS_ACCEL2, KC_MS_ACCEL1,  KC_MS_ACCEL0, KC_UP,   KC_APPLICATION, XXXXXXX,        KC_MS_WH_UP,
 | 
				
			||||||
 | 
					        PV_NUM,       KC_MS_WH_LEFT, KC_LEFT,      KC_DOWN, KC_RIGHT,       KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
 | 
				
			||||||
 | 
					                      PV_STAR,       PV_RF,        PV_RP,   PV_RL,          PV_RT,          PV_RD,
 | 
				
			||||||
 | 
					        PV_STAR,      PV_STAR,       PV_RR,        PV_RB,   PV_RG,          PV_RS,          PV_RZ,
 | 
				
			||||||
 | 
					                                     PV_NUM,       PV_NUM,  PV_NUM,         PV_NUM,         XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        KC_DELETE, KC_ENTER,
 | 
				
			||||||
 | 
					        KC_PGUP,
 | 
				
			||||||
 | 
					        KC_PGDOWN, PV_E,     PV_U
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [GAMING] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        KC_ESCAPE,            GUI_T(KC_MINS), KC_I,     KC_O,   KC_P,   ALGR_T(KC_EQL), KC_T,
 | 
				
			||||||
 | 
					        KC_TAB,               KC_LALT,        KC_Q,     KC_W,   KC_E,   ALL_T(KC_R),    KC_G,
 | 
				
			||||||
 | 
					        LT(MOUSE, KC_GRV), KC_LCTRL,       KC_A,     KC_S,   KC_D,   MEH_T(KC_F),
 | 
				
			||||||
 | 
					        KC_BSLS,              KC_LSHIFT,      KC_Z,     KC_X,   KC_C,   SCMD_T(KC_V),   KC_M,
 | 
				
			||||||
 | 
					        XXXXXXX,           TG(LAYERS),  KC_COMM, KC_DOT, KC_LBRC,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					                   MO(MEDIA_FN), KC_NLCK,
 | 
				
			||||||
 | 
					                                 KC_SCLN,
 | 
				
			||||||
 | 
					         KC_SPACE, KC_ENTER,     KC_BSPACE,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        KC_QUOT,       KC_Y,       KC_K,        KC_U,        KC_KP_7, KC_KP_8,  KC_KP_9,
 | 
				
			||||||
 | 
					        KC_MS_WH_UP,   KC_H,       KC_J,        KC_L,        KC_KP_4, KC_KP_2,  KC_KP_6,
 | 
				
			||||||
 | 
					                       KC_B,       KC_MS_UP,    KC_N,        KC_KP_1, KC_KP_5,  KC_KP_3,
 | 
				
			||||||
 | 
					        KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN,  KC_MS_RIGHT, KC_UP,   KC_KP_0,  KC_SLASH,
 | 
				
			||||||
 | 
					                                   KC_RBRC,     KC_LEFT,     KC_DOWN, KC_RIGHT, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        KC_MS_BTN5, MO(HYPER),
 | 
				
			||||||
 | 
					        KC_MS_BTN4,
 | 
				
			||||||
 | 
					        KC_MS_BTN3, KC_MS_BTN2,   KC_MS_BTN1
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [ARROWS] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,    XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX,    XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, KC_LCTRL,      KC_LSHIFT,    XXXXXXX,      _______,    XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, KC_RALT,       KC_LALT,      GUI_T(KC_NO), XXXXXXX,    XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					                  XXXXXXX,   XXXXXXX,
 | 
				
			||||||
 | 
					                             KC_HOME,
 | 
				
			||||||
 | 
					        KC_SPACE, KC_BSPACE, KC_END,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        LGUI(KC_X), XXXXXXX,       LCTL(KC_X), KC_MS_WH_UP,   XXXXXXX,       XXXXXXX,        XXXXXXX,
 | 
				
			||||||
 | 
					        LGUI(KC_C), XXXXXXX,       LCTL(KC_C), KC_UP,         SCTL(KC_C),    LCTL(KC_Z),     LGUI(KC_Z),
 | 
				
			||||||
 | 
					                    KC_MS_WH_LEFT, KC_LEFT,    KC_DOWN,       KC_RIGHT,      KC_MS_WH_RIGHT, KC_APPLICATION,
 | 
				
			||||||
 | 
					        LGUI(KC_V), XXXXXXX,       LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V),    LCTL(KC_Y),     SGUI(KC_Z),
 | 
				
			||||||
 | 
					        XXXXXXX,    XXXXXXX,       XXXXXXX,    XXXXXXX,       KC_SLCK,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        XXXXXXX,   XXXXXXX,
 | 
				
			||||||
 | 
					        KC_PGUP,
 | 
				
			||||||
 | 
					        KC_PGDOWN, KC_DELETE, KC_ENTER
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [MOUSE] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        XXXXXXX,       XXXXXXX,       XXXXXXX,    KC_MS_WH_UP,   LCTL(KC_X),  XXXXXXX,        LGUI(KC_X),
 | 
				
			||||||
 | 
					        LGUI(KC_Z),    LCTL(KC_Z),    SCTL(KC_C), KC_MS_UP,      LCTL(KC_C),  KC_MS_BTN4,     LGUI(KC_C),
 | 
				
			||||||
 | 
					        KC_MS_BTN3,    KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN,    KC_MS_RIGHT, KC_MS_WH_RIGHT,
 | 
				
			||||||
 | 
					        LGUI(KC_Z),    LCTL(KC_Y),    SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V),  KC_MS_BTN5,     LGUI(KC_V),
 | 
				
			||||||
 | 
					        KC_SLCK,       XXXXXXX,       XXXXXXX,    XXXXXXX,       XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					                    XXXXXXX,    XXXXXXX,
 | 
				
			||||||
 | 
					                                XXXXXXX,
 | 
				
			||||||
 | 
					        KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      XXXXXXX,      XXXXXXX,       XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
 | 
				
			||||||
 | 
					                 XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT,    KC_LCTRL,      KC_MS_ACCEL2,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT,      KC_RALT,       XXXXXXX,
 | 
				
			||||||
 | 
					                          XXXXXXX, XXXXXXX,      XXXXXXX,      XXXXXXX,       XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, KC_MS_ACCEL0
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [NUMPAD] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,  XXXXXXX,      XXXXXXX, XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,  GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO),  XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        _______, KC_LCTRL, KC_LSHIFT,    _______, MEH_T(KC_NO),  XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, KC_RALT,  KC_LALT,      XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,  XXXXXXX,      XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					                  XXXXXXX,   XXXXXXX,
 | 
				
			||||||
 | 
					                             KC_HOME,
 | 
				
			||||||
 | 
					        KC_SPACE, KC_BSPACE, KC_END,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        KC_X, KC_A, KC_B,   KC_C, KC_D,     KC_E,    KC_F,
 | 
				
			||||||
 | 
					        KC_O, KC_I, KC_1,   KC_2, KC_3,     KC_SLSH, KC_PERC,
 | 
				
			||||||
 | 
					              KC_M, KC_4,   KC_5, KC_6,     KC_PLUS, KC_MINS,
 | 
				
			||||||
 | 
					        KC_L, KC_J, KC_7,   KC_8, KC_9,     KC_ASTR, KC_CIRC,
 | 
				
			||||||
 | 
					                    KC_DOT, KC_0, KC_COMM, KC_UNDS,  KC_BSLS,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        XXXXXXX,   XXXXXXX,
 | 
				
			||||||
 | 
					        KC_PGUP,
 | 
				
			||||||
 | 
					        KC_PGDOWN, KC_DELETE, KC_ENTER
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [LAYERS] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					                 XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                          XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                 XXXXXXX, TO(DVORAK), TO(PLOVER), TO(GAMING), XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                          XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [MEDIA_FN] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        KC_VOLD,   KC_MUTE, RGB_TOG,    XXXXXXX, KC_MAIL,      KC_FIND, KC_WWW_REFRESH,
 | 
				
			||||||
 | 
					        KC_MPRV, KC_F9,         KC_F7,      KC_F5,   KC_F3,        KC_F1,   KC_WWW_HOME,
 | 
				
			||||||
 | 
					        KC_PAUS,            KC_F19,        KC_F17,     KC_F15,  KC_F13,       KC_F11,
 | 
				
			||||||
 | 
					        RGB_HUD,             XXXXXXX,       XXXXXXX,    _______, KC_F23,       KC_F21,  KC_WWW_BACK,
 | 
				
			||||||
 | 
					        RGB_VAD,             KC_CLCK,       KC_PSCREEN, XXXXXXX, MO(FIRMWARE),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					                 _______, XXXXXXX,
 | 
				
			||||||
 | 
					                          XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, KC_MEDIA_EJECT,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        KC_WWW_FAVORITES, KC_MYCM, KC_CALC,   XXXXXXX, RGB_MOD,         RGB_M_P,        KC_VOLU,
 | 
				
			||||||
 | 
					        KC_WWW_SEARCH,    KC_F2,          KC_F4,           KC_F6,   KC_F8,           KC_F10,         KC_MNXT,
 | 
				
			||||||
 | 
					                          KC_F12,         KC_F14,          KC_F16,  KC_F18,          KC_F20,         KC_MPLY,
 | 
				
			||||||
 | 
					        KC_WWW_FORWARD,   KC_F22,         KC_F24,          _______, XXXXXXX,         XXXXXXX,        RGB_HUI,
 | 
				
			||||||
 | 
					                                          KC_PWR, XXXXXXX, KC_SLEP, KC_WAKE, RGB_VAI,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        XXXXXXX,   XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX,
 | 
				
			||||||
 | 
					        RGB_GREEN, XXXXXXX, XXXXXXX
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [HYPER] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        XXXXXXX, HYPR(KC_F1),  HYPR(KC_F2),  HYPR(KC_F3),  HYPR(KC_F4),  HYPR(KC_F5),  XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, HYPR(KC_F6),  HYPR(KC_F7),  HYPR(KC_F8),  HYPR(KC_F9),  HYPR(KC_F10), XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15),
 | 
				
			||||||
 | 
					        XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					                 XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                          XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                 XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        XXXXXXX, _______,
 | 
				
			||||||
 | 
					        XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [FIRMWARE] = LAYOUT_ergodox(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // left thumb
 | 
				
			||||||
 | 
					               XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                        XXXXXXX,
 | 
				
			||||||
 | 
					        RESET, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right hand
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // right thumb
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX,
 | 
				
			||||||
 | 
					        XXXXXXX, XXXXXXX, EEP_RST
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					// Keycode aliases
 | 
				
			||||||
 | 
					#define SCTL(kc)   LSFT(LCTL(kc))  // Modifier keys: SHIFT+CTRL+kc combination.
 | 
				
			||||||
 | 
					#define LGAS_T(kc) MT(MOD_LGUI | MOD_LALT | MOD_LSFT, kc)  // Mod tap: kc when tapped, GUI+ALT+SHIFT when held.
 | 
				
			||||||
 | 
					#define LAS_T(kc)  MT(MOD_LALT | MOD_LSFT, kc)  // Mod tap: kc when tapped, ALT+SHIFT whin held.
 | 
				
			||||||
 | 
					#define COMPOSE    KC_RALT  // Compose key (used to input characters like á, ñ, ü).
 | 
				
			||||||
@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					// Define custom user keycodes:
 | 
				
			||||||
 | 
					enum custom_keycodes {
 | 
				
			||||||
 | 
					    PLACEHOLDER = SAFE_RANGE,  // Can always be here.
 | 
				
			||||||
 | 
					    RGB_GREEN,                 // To set default RGB layer as green once.
 | 
				
			||||||
 | 
					    MY_CUSTOM_MACRO,           // Custom macro example.
 | 
				
			||||||
 | 
					    MY_OTHER_MACRO,            // Custom macro example.
 | 
				
			||||||
 | 
					    DYNAMIC_MACRO_RANGE        // Should always be the last.
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -1,781 +1,19 @@
 | 
				
			|||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H       // Includes the QMK-verse.
 | 
				
			||||||
#include "keymap_dvorak.h"
 | 
					#include "keymap_plover.h"    // Includes the Plover keymap for easier readability.
 | 
				
			||||||
#include "sendstring_dvorak.h"
 | 
					
 | 
				
			||||||
#include "keymap_plover.h"
 | 
					
 | 
				
			||||||
#include "keymap_plover_dvorak.h"
 | 
					// TODO: No eeprom changes unless needed, custom rgb settings for animations.
 | 
				
			||||||
 | 
					#include "keycodes/aliases_definitions.c"
 | 
				
			||||||
 | 
					#include "layers/layers_definitions.c"
 | 
				
			||||||
#define SCTL(kc) LSFT(LCTL(kc))
 | 
					#include "tap_dance/tap_dance_setup.c"
 | 
				
			||||||
 | 
					#include "tap_dance/tap_dances.c"
 | 
				
			||||||
// Layers
 | 
					#include "user/matrix_scan_user.c"
 | 
				
			||||||
enum layers {
 | 
					#include "tap_dance/mod_tap_layer_dances/none_lead.c"
 | 
				
			||||||
    DVORAK_US = 0,
 | 
					#include "tap_dance/tap_dance_actions.c"
 | 
				
			||||||
    PLOVER_US,
 | 
					#include "keycodes/custom_keycodes.c"
 | 
				
			||||||
    GAMING_US,
 | 
					#include "dynamic_macro.h"    // Includes dynamic macro definitions, needed *after* the custom keycodes.
 | 
				
			||||||
    ARROWS_US,
 | 
					#include "hacker_dvorak.c"
 | 
				
			||||||
    MOUSE_US,
 | 
					#include "user/eeconfig_init_user.c"
 | 
				
			||||||
    NUMPAD_US,
 | 
					#include "user/process_record_user.c"
 | 
				
			||||||
    LAYERS_US,
 | 
					#include "plover/plover_mode.c"
 | 
				
			||||||
    DVORAK_DV,
 | 
					#include "user/layer_set_state_user.c"
 | 
				
			||||||
    PLOVER_DV,
 | 
					 | 
				
			||||||
    GAMING_DV,
 | 
					 | 
				
			||||||
    ARROWS_DV,
 | 
					 | 
				
			||||||
    MOUSE_DV,
 | 
					 | 
				
			||||||
    NUMPAD_DV,
 | 
					 | 
				
			||||||
    LAYERS_DV,
 | 
					 | 
				
			||||||
    MEDIA_FN,
 | 
					 | 
				
			||||||
    HYPER_FN,
 | 
					 | 
				
			||||||
    MEH_FN,
 | 
					 | 
				
			||||||
    MEH_FN_PLUS,
 | 
					 | 
				
			||||||
    FIRMWARE
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int CAPS_LOCK   = 0;
 | 
					 | 
				
			||||||
int NUM_LOCK    = 0;
 | 
					 | 
				
			||||||
int SCROLL_LOCK = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum tap_dances {
 | 
					 | 
				
			||||||
    TD_ESC_CAPS = 0
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
					 | 
				
			||||||
    [TD_ESC_CAPS]  = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CLCK)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum custom_keycodes {
 | 
					 | 
				
			||||||
    PLACEHOLDER = SAFE_RANGE, // can always be here
 | 
					 | 
				
			||||||
    RGB_GREEN  // to set default RGB layer as green once
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					 | 
				
			||||||
    /*
 | 
					 | 
				
			||||||
     * ,--------------------------------------------------.    ,--------------------------------------------------.
 | 
					 | 
				
			||||||
     * |    0   |   1  |   2  |   3  |   4  |   5  |  6   |    |  38  |  39  |  40  |  41  |  42  |  43  |   44   |
 | 
					 | 
				
			||||||
     * |--------+------+------+------+------+------+------|    |------+------+------+------+------+------+--------|
 | 
					 | 
				
			||||||
     * |    7   |   8  |   9  |  10  |  11  |  12  |  13  |    |  45  |  46  |  47  |  48  |  49  |  50  |   51   |
 | 
					 | 
				
			||||||
     * |--------+------+------+------+------+------|      |    |      |------+------+------+------+------+--------|
 | 
					 | 
				
			||||||
     * |   14   |  15  |  16  |  17  |  18  |  19  |------|    |------|  52  |  53  |  54  |  55  |  56  |   57   |
 | 
					 | 
				
			||||||
     * |--------+------+------+------+------+------|  26  |    |  58  |------+------+------+------+------+--------|
 | 
					 | 
				
			||||||
     * |   20   |  21  |  22  |  23  |  24  |  25  |      |    |      |  59  |  60  |  61  |  62  |  63  |   64   |
 | 
					 | 
				
			||||||
     * `--------+------+------+------+------+-------------'    `-------------+------+------+------+------+--------'
 | 
					 | 
				
			||||||
     *   |  27  |  28  |  29  |  30  |  31  |                                |  65  |  66  |  67  |  68  |  69  |
 | 
					 | 
				
			||||||
     *   `----------------------------------'                                `----------------------------------'
 | 
					 | 
				
			||||||
     *                                       ,-------------.  ,-------------.
 | 
					 | 
				
			||||||
     *                                       |  32  |  33  |  |  70  |  71  |
 | 
					 | 
				
			||||||
     *                                ,------+------+------|  |------+------+------.
 | 
					 | 
				
			||||||
     *                                |      |      |  34  |  |  72  |      |      |
 | 
					 | 
				
			||||||
     *                                |  35  |  36  |------|  |------|  74  |  75  |
 | 
					 | 
				
			||||||
     *                                |      |      |  37  |  |  73  |      |      |
 | 
					 | 
				
			||||||
     *                                `--------------------'  `--------------------'
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    [DVORAK_US] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        KC_ESC,     KC_LABK,         KC_LCBR,         KC_LBRC,             KC_LPRN,             KC_EXLM, KC_AMPR,
 | 
					 | 
				
			||||||
        KC_TAB,     KC_QUOT,         SCMD_T(KC_COMM), MEH_T(KC_DOT),       ALL_T(KC_P),         KC_Y,    KC_AT,
 | 
					 | 
				
			||||||
        KC_EQL,     CTL_T(KC_A),     SFT_T(KC_O),     LT(NUMPAD_US, KC_E), LT(ARROWS_US, KC_U), KC_I,
 | 
					 | 
				
			||||||
        KC_BSLS,    ALGR_T(KC_SCLN), ALT_T(KC_Q),     LT(MEDIA_FN, KC_J),  GUI_T(KC_K),         KC_X,    KC_PERC,
 | 
					 | 
				
			||||||
        MO(MEH_FN), TG(LAYERS_US),   KC_CIRC,         KC_PLUS,             KC_COLN,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                KC_LEFT, KC_RGHT,
 | 
					 | 
				
			||||||
                         KC_HOME,
 | 
					 | 
				
			||||||
        KC_SPC, KC_BSPC, KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        KC_PIPE, KC_QUES, KC_RPRN,            KC_RBRC,            KC_RCBR,      KC_RABK,       KC_ASTR,
 | 
					 | 
				
			||||||
        KC_HASH, KC_F,    ALL_T(KC_G),        MEH_T(KC_C),        SCMD_T(KC_R), KC_L,          KC_SLSH,
 | 
					 | 
				
			||||||
                 KC_D,    LT(MOUSE_US, KC_H), LT(HYPER_FN, KC_T), SFT_T(KC_N),  CTL_T(KC_S),   KC_MINS,
 | 
					 | 
				
			||||||
        KC_DLR,  KC_B,    GUI_T(KC_M),        LT(MEDIA_FN, KC_W), ALT_T(KC_V),  ALGR_T(KC_Z),  KC_GRV,
 | 
					 | 
				
			||||||
                          KC_DQUO,            KC_UNDS,            KC_TILD,      TG(DVORAK_DV), MO(MEH_FN_PLUS),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        KC_UP,   KC_DOWN,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDN, KC_DEL,  KC_ENT
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [PLOVER_US] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX,    XXXXXXX,       KC_MS_BTN2, KC_MS_UP,   KC_MS_BTN1,  KC_MS_BTN3, GUI_T(KC_NO),
 | 
					 | 
				
			||||||
        KC_ESC,     KC_MS_BTN4,    KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PV_NUM,
 | 
					 | 
				
			||||||
        KC_TAB,     PV_LS,         PV_LT,      PV_LP,      PV_LH,       PV_STAR,
 | 
					 | 
				
			||||||
        KC_CLCK,    PV_LS,         PV_LK,      PV_LW,      PV_LR,       PV_STAR,    PV_STAR,
 | 
					 | 
				
			||||||
        MO(MEH_FN), TG(LAYERS_US), PV_NUM,     PV_NUM,     PV_NUM,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
              KC_SPACE, KC_BSPACE,
 | 
					 | 
				
			||||||
                        KC_HOME,
 | 
					 | 
				
			||||||
        PV_A, PV_O,     KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        KC_MS_ACCEL2, KC_MS_ACCEL1,  KC_MS_ACCEL0, KC_UP,   KC_APPLICATION, XXXXXXX,        KC_MS_WH_UP,
 | 
					 | 
				
			||||||
        PV_NUM,       KC_MS_WH_LEFT, KC_LEFT,      KC_DOWN, KC_RIGHT,       KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
 | 
					 | 
				
			||||||
                      PV_STAR,       PV_RF,        PV_RP,   PV_RL,          PV_RT,          PV_RD,
 | 
					 | 
				
			||||||
        PV_STAR,      PV_STAR,       PV_RR,        PV_RB,   PV_RG,          PV_RS,          PV_RZ,
 | 
					 | 
				
			||||||
                                     PV_NUM,       PV_NUM,  PV_NUM,         PV_NUM,         MO(MEH_FN_PLUS),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        KC_DELETE, KC_ENTER,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDOWN, PV_E,     PV_U
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [GAMING_US] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        KC_ESCAPE,            GUI_T(KC_MINS), KC_I,     KC_O,   KC_P,   ALGR_T(KC_EQL), KC_T,
 | 
					 | 
				
			||||||
        KC_TAB,               KC_LALT,        KC_Q,     KC_W,   KC_E,   ALL_T(KC_R),    KC_G,
 | 
					 | 
				
			||||||
        LT(MOUSE_US, KC_GRV), KC_LCTRL,       KC_A,     KC_S,   KC_D,   MEH_T(KC_F),
 | 
					 | 
				
			||||||
        KC_BSLS,              KC_LSHIFT,      KC_Z,     KC_X,   KC_C,   SCMD_T(KC_V),   KC_M,
 | 
					 | 
				
			||||||
        MO(MEH_FN),           TG(LAYERS_US),  KC_COMM, KC_DOT, KC_LBRC,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                   MO(MEDIA_FN), KC_NLCK,
 | 
					 | 
				
			||||||
                                 KC_SCLN,
 | 
					 | 
				
			||||||
         KC_SPACE, KC_ENTER,     KC_BSPACE,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        KC_QUOT,       KC_Y,       KC_K,        KC_U,        KC_KP_7, KC_KP_8,  KC_KP_9,
 | 
					 | 
				
			||||||
        KC_MS_WH_UP,   KC_H,       KC_J,        KC_L,        KC_KP_4, KC_KP_2,  KC_KP_6,
 | 
					 | 
				
			||||||
                       KC_B,       KC_MS_UP,    KC_N,        KC_KP_1, KC_KP_5,  KC_KP_3,
 | 
					 | 
				
			||||||
        KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN,  KC_MS_RIGHT, KC_UP,   KC_KP_0,  KC_SLASH,
 | 
					 | 
				
			||||||
                                   KC_RBRC,     KC_LEFT,     KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        KC_MS_BTN5, MO(HYPER_FN),
 | 
					 | 
				
			||||||
        KC_MS_BTN4,
 | 
					 | 
				
			||||||
        KC_MS_BTN3, KC_MS_BTN2,   KC_MS_BTN1
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [ARROWS_US] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,    XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX,    XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, KC_LCTRL,      KC_LSHIFT,    XXXXXXX,      _______,    XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, KC_RALT,       KC_LALT,      GUI_T(KC_NO), XXXXXXX,    XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                  XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
                             KC_HOME,
 | 
					 | 
				
			||||||
        KC_SPACE, KC_BSPACE, KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        LGUI(KC_X), XXXXXXX,       LCTL(KC_X), KC_MS_WH_UP,   XXXXXXX,       XXXXXXX,        XXXXXXX,
 | 
					 | 
				
			||||||
        LGUI(KC_C), XXXXXXX,       LCTL(KC_C), KC_UP,         SCTL(KC_C),    LCTL(KC_Z),     LGUI(KC_Z),
 | 
					 | 
				
			||||||
                    KC_MS_WH_LEFT, KC_LEFT,    KC_DOWN,       KC_RIGHT,      KC_MS_WH_RIGHT, KC_APPLICATION,
 | 
					 | 
				
			||||||
        LGUI(KC_V), XXXXXXX,       LCTL(KC_V), KC_MS_WH_DOWN, SCTL(KC_V),    LCTL(KC_Y),     SGUI(KC_Z),
 | 
					 | 
				
			||||||
        XXXXXXX,    XXXXXXX,       XXXXXXX,    XXXXXXX,       KC_SLCK,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDOWN, KC_DELETE, KC_ENTER
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [MOUSE_US] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX,       XXXXXXX,       XXXXXXX,    KC_MS_WH_UP,   LCTL(KC_X),  XXXXXXX,        LGUI(KC_X),
 | 
					 | 
				
			||||||
        LGUI(KC_Z),    LCTL(KC_Z),    SCTL(KC_C), KC_MS_UP,      LCTL(KC_C),  KC_MS_BTN4,     LGUI(KC_C),
 | 
					 | 
				
			||||||
        KC_MS_BTN3,    KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN,    KC_MS_RIGHT, KC_MS_WH_RIGHT,
 | 
					 | 
				
			||||||
        LGUI(KC_Z),    LCTL(KC_Y),    SCTL(KC_V), KC_MS_WH_DOWN, LCTL(KC_V),  KC_MS_BTN5,     LGUI(KC_V),
 | 
					 | 
				
			||||||
        KC_SLCK, XXXXXXX,       XXXXXXX,    XXXXXXX,       XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                    XXXXXXX,    XXXXXXX,
 | 
					 | 
				
			||||||
                                XXXXXXX,
 | 
					 | 
				
			||||||
        KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      XXXXXXX,      XXXXXXX,       XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
 | 
					 | 
				
			||||||
                 XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT,    KC_LCTRL,      KC_MS_ACCEL2,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT,      KC_RALT,       XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX, XXXXXXX,      XXXXXXX,      XXXXXXX,       XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, KC_MS_ACCEL0
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [NUMPAD_US] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,  XXXXXXX,      XXXXXXX, XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,  GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO),  XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        _______, KC_LCTRL, KC_LSHIFT,    _______, MEH_T(KC_NO),  XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, KC_RALT,  KC_LALT,      XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,  XXXXXXX,      XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                  XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
                             KC_HOME,
 | 
					 | 
				
			||||||
        KC_SPACE, KC_BSPACE, KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        KC_X, KC_A, KC_B,   KC_C, KC_D,     KC_E,    KC_F,
 | 
					 | 
				
			||||||
        KC_O, KC_I, KC_1,   KC_2, KC_3,     KC_SLSH, KC_PERC,
 | 
					 | 
				
			||||||
              KC_M, KC_4,   KC_5, KC_6,     KC_PLUS, KC_MINS,
 | 
					 | 
				
			||||||
        KC_L, KC_J, KC_7,   KC_8, KC_9,     KC_ASTR, KC_CIRC,
 | 
					 | 
				
			||||||
                    KC_DOT, KC_0, KC_COMM, KC_UNDS,  KC_BSLS,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDOWN, KC_DELETE, KC_ENTER
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [LAYERS_US] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                 XXXXXXX, TO(DVORAK_US), TO(PLOVER_US), TO(GAMING_US), XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [DVORAK_DV] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        KC_ESC,     DV_LABK,         DV_LCBR,         DV_LBRC,             DV_LPRN,             DV_EXLM, DV_AMPR,
 | 
					 | 
				
			||||||
        KC_TAB,     DV_QUOT,         SCMD_T(DV_COMM), MEH_T(DV_DOT),       ALL_T(DV_P),         DV_Y,    DV_AT,
 | 
					 | 
				
			||||||
        DV_EQL,     CTL_T(DV_A),     SFT_T(DV_O),     LT(NUMPAD_DV, DV_E), LT(ARROWS_DV, DV_U), DV_I,
 | 
					 | 
				
			||||||
        DV_BSLS,    ALGR_T(DV_SCLN), ALT_T(DV_Q),     LT(MEDIA_FN, DV_J),  GUI_T(DV_K),         DV_X,    DV_PERC,
 | 
					 | 
				
			||||||
        MO(MEH_FN), TG(LAYERS_DV),   DV_CIRC,         DV_PLUS,             DV_COLN,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                KC_LEFT, KC_RGHT,
 | 
					 | 
				
			||||||
                         KC_HOME,
 | 
					 | 
				
			||||||
        KC_SPC, KC_BSPC, KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        DV_PIPE, DV_QUES, DV_RPRN,            DV_RBRC,            DV_RCBR,      DV_RABK,      DV_ASTR,
 | 
					 | 
				
			||||||
        DV_HASH, DV_F,    ALL_T(DV_G),        MEH_T(DV_C),        SCMD_T(DV_R), DV_L,         DV_SLSH,
 | 
					 | 
				
			||||||
                 DV_D,    LT(MOUSE_DV, DV_H), LT(HYPER_FN, DV_T), SFT_T(DV_N),  CTL_T(DV_S),  DV_MINS,
 | 
					 | 
				
			||||||
        DV_DLR,  DV_B,    GUI_T(DV_M),        LT(MEDIA_FN, DV_W), ALT_T(DV_V),  ALGR_T(DV_Z), DV_GRV,
 | 
					 | 
				
			||||||
                          DV_DQUO,            DV_UNDS,            DV_TILD,      _______,      MO(MEH_FN_PLUS),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        KC_UP,   KC_DOWN,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDN, KC_DEL,  KC_ENT
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [PLOVER_DV] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX,    XXXXXXX,       KC_MS_BTN2, KC_MS_UP,   KC_MS_BTN1,  KC_MS_BTN3, GUI_T(KC_NO),
 | 
					 | 
				
			||||||
        KC_ESC,     KC_MS_BTN4,    KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_BTN5, PD_NUM,
 | 
					 | 
				
			||||||
        KC_TAB,     PD_LS,         PD_LT,      PD_LP,      PD_LH,       PD_STAR,
 | 
					 | 
				
			||||||
        KC_CLCK,    PD_LS,         PD_LK,      PD_LW,      PD_LR,       PD_STAR,    PD_STAR,
 | 
					 | 
				
			||||||
        MO(MEH_FN), TG(LAYERS_DV), PD_NUM,     PD_NUM,     PD_NUM,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
              KC_SPACE, KC_BSPACE,
 | 
					 | 
				
			||||||
                        KC_HOME,
 | 
					 | 
				
			||||||
        PD_A, PD_O,     KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        KC_MS_ACCEL2, KC_MS_ACCEL1,  KC_MS_ACCEL0, KC_UP,   KC_APPLICATION, XXXXXXX,        KC_MS_WH_UP,
 | 
					 | 
				
			||||||
        PD_NUM,       KC_MS_WH_LEFT, KC_LEFT,      KC_DOWN, KC_RIGHT,       KC_MS_WH_RIGHT, KC_MS_WH_DOWN,
 | 
					 | 
				
			||||||
                      PD_STAR,       PD_RF,        PD_RP,   PD_RL,          PD_RT,          PD_RD,
 | 
					 | 
				
			||||||
        PD_STAR,      PD_STAR,       PD_RR,        PD_RB,   PD_RG,          PD_RS,          PD_RZ,
 | 
					 | 
				
			||||||
                                     PD_NUM,       PD_NUM,  PD_NUM,         PD_NUM,         MO(MEH_FN_PLUS),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        KC_DELETE, KC_ENTER,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDOWN, PD_E,     PD_U
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [GAMING_DV] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        KC_ESCAPE,            GUI_T(DV_MINS), DV_I,    DV_O,   DV_P,    ALGR_T(DV_EQL), DV_T,
 | 
					 | 
				
			||||||
        KC_TAB,               KC_LALT,        DV_Q,    DV_W,   DV_E,    ALL_T(DV_R),    DV_G,
 | 
					 | 
				
			||||||
        LT(MOUSE_DV, DV_GRV), KC_LCTRL,       DV_A,    DV_S,   DV_D,    MEH_T(DV_F),
 | 
					 | 
				
			||||||
        DV_BSLS,              KC_LSHIFT,      DV_Z,    DV_X,   DV_C,    SCMD_T(DV_V),   DV_M,
 | 
					 | 
				
			||||||
        MO(MEH_FN),           TG(LAYERS_DV),  DV_COMM, DV_DOT, DV_LBRC,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                   MO(MEDIA_FN), KC_NLCK,
 | 
					 | 
				
			||||||
                                 DV_SCLN,
 | 
					 | 
				
			||||||
         KC_SPACE, KC_ENTER,     KC_BSPACE,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        DV_QUOT,       DV_Y,       DV_K,       DV_U,        KC_KP_7, KC_KP_8,  KC_KP_9,
 | 
					 | 
				
			||||||
        KC_MS_WH_UP,   DV_H,       DV_J,       DV_L,        KC_KP_4, KC_KP_2,  KC_KP_6,
 | 
					 | 
				
			||||||
                       DV_B,       KC_MS_UP,   DV_N,        KC_KP_1, KC_KP_5,  KC_KP_3,
 | 
					 | 
				
			||||||
        KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_UP,   KC_KP_0,  DV_SLSH,
 | 
					 | 
				
			||||||
                                   DV_RBRC,    KC_LEFT,     KC_DOWN, KC_RIGHT, MO(MEH_FN_PLUS),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        KC_MS_BTN5, MO(HYPER_FN),
 | 
					 | 
				
			||||||
        KC_MS_BTN4,
 | 
					 | 
				
			||||||
        KC_MS_BTN3, KC_MS_BTN2,   KC_MS_BTN1
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [ARROWS_DV] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, SCMD_T(KC_NO), MEH_T(KC_NO), ALL_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, KC_LCTRL,      KC_LSHIFT,    XXXXXXX,      _______, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, KC_RALT,       KC_LALT,      GUI_T(KC_NO), XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,       XXXXXXX,      XXXXXXX,      XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                  XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
                             KC_HOME,
 | 
					 | 
				
			||||||
        KC_SPACE, KC_BSPACE, KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        LGUI(DV_X), XXXXXXX,       LCTL(DV_X), KC_MS_WH_UP,   XXXXXXX,       XXXXXXX,        XXXXXXX,
 | 
					 | 
				
			||||||
        LGUI(DV_C), XXXXXXX,       LCTL(DV_C), KC_UP,         SCTL(DV_C),    LCTL(DV_Z),     LGUI(DV_Z),
 | 
					 | 
				
			||||||
                    KC_MS_WH_LEFT, KC_LEFT,    KC_DOWN,       KC_RIGHT,      KC_MS_WH_RIGHT, KC_APPLICATION,
 | 
					 | 
				
			||||||
        LGUI(DV_V), XXXXXXX,       LCTL(DV_V), KC_MS_WH_DOWN, SCTL(DV_V),    LCTL(DV_Y),     SGUI(DV_Z),
 | 
					 | 
				
			||||||
        XXXXXXX,    XXXXXXX,       XXXXXXX,    XXXXXXX,       KC_SLCK,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDOWN, KC_DELETE, KC_ENTER
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [MOUSE_DV] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX,       XXXXXXX,       XXXXXXX,    KC_MS_WH_UP,   LCTL(DV_X),  XXXXXXX,        LGUI(DV_X),
 | 
					 | 
				
			||||||
        LGUI(DV_Z),    LCTL(DV_Z),    SCTL(DV_C), KC_MS_UP,      LCTL(DV_C),  KC_MS_BTN4,     LGUI(DV_C),
 | 
					 | 
				
			||||||
        KC_MS_BTN3,    KC_MS_WH_LEFT, KC_MS_LEFT, KC_MS_DOWN,    KC_MS_RIGHT, KC_MS_WH_RIGHT,
 | 
					 | 
				
			||||||
        LGUI(DV_Z),    LCTL(DV_Y),    SCTL(DV_V), KC_MS_WH_DOWN, LCTL(DV_V),  KC_MS_BTN5,     LGUI(DV_V),
 | 
					 | 
				
			||||||
        KC_SLCK, XXXXXXX,       XXXXXXX,    XXXXXXX,       XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                    XXXXXXX,    XXXXXXX,
 | 
					 | 
				
			||||||
                                XXXXXXX,
 | 
					 | 
				
			||||||
        KC_MS_BTN1, KC_MS_BTN2, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      XXXXXXX,      XXXXXXX,       XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, ALL_T(KC_NO), MEH_T(KC_NO), SCMD_T(KC_NO), XXXXXXX,
 | 
					 | 
				
			||||||
                 XXXXXXX, _______, KC_MS_ACCEL1, KC_LSHIFT,    KC_LCTRL,      KC_MS_ACCEL2,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, GUI_T(KC_NO), KC_LALT,      KC_RALT,       XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX, XXXXXXX,      XXXXXXX,      XXXXXXX,       XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, KC_MS_ACCEL0
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [NUMPAD_DV] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,  XXXXXXX,      XXXXXXX, XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,  GUI_T(KC_NO), XXXXXXX, ALL_T(KC_NO),  XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        _______, KC_LCTRL, KC_LSHIFT,    _______, MEH_T(KC_NO),  XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, KC_RALT,  KC_LALT,      XXXXXXX, SCMD_T(KC_NO), XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,  XXXXXXX,      XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                  XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
                             KC_HOME,
 | 
					 | 
				
			||||||
        KC_SPACE, KC_BSPACE, KC_END,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        DV_X, DV_A, DV_B,   DV_C, DV_D,    DV_E,    DV_F,
 | 
					 | 
				
			||||||
        DV_O, DV_I, DV_1,   DV_2, DV_3,    DV_SLSH, DV_PERC,
 | 
					 | 
				
			||||||
              DV_M, DV_4,   DV_5, DV_6,    DV_PLUS, DV_MINS,
 | 
					 | 
				
			||||||
        DV_L, DV_J, DV_7,   DV_8, DV_9,    DV_ASTR, DV_CIRC,
 | 
					 | 
				
			||||||
                    DV_DOT, DV_0, DV_COMM, DV_UNDS, DV_BSLS,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
        KC_PGUP,
 | 
					 | 
				
			||||||
        KC_PGDOWN, KC_DELETE, KC_ENTER
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [LAYERS_DV] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                 XXXXXXX, TO(DVORAK_DV), TO(PLOVER_DV), TO(GAMING_DV), XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,       XXXXXXX,       XXXXXXX,       XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [MEDIA_FN] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        KC_AUDIO_VOL_DOWN,   KC_AUDIO_MUTE, RGB_TOG,    XXXXXXX, KC_MAIL,      KC_FIND, KC_WWW_REFRESH,
 | 
					 | 
				
			||||||
        KC_MEDIA_PREV_TRACK, KC_F9,         KC_F7,      KC_F5,   KC_F3,        KC_F1,   KC_WWW_HOME,
 | 
					 | 
				
			||||||
        KC_PAUSE,            KC_F19,        KC_F17,     KC_F15,  KC_F13,       KC_F11,
 | 
					 | 
				
			||||||
        RGB_HUD,             XXXXXXX,       XXXXXXX,    _______, KC_F23,       KC_F21,  KC_WWW_BACK,
 | 
					 | 
				
			||||||
        RGB_VAD,             KC_CLCK,       KC_PSCREEN, XXXXXXX, MO(FIRMWARE),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                 _______, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, KC_MEDIA_EJECT,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        KC_WWW_FAVORITES, KC_MY_COMPUTER, KC_CALCULATOR,   XXXXXXX, RGB_MOD,         RGB_M_P,        KC_AUDIO_VOL_UP,
 | 
					 | 
				
			||||||
        KC_WWW_SEARCH,    KC_F2,          KC_F4,           KC_F6,   KC_F8,           KC_F10,         KC_MEDIA_NEXT_TRACK,
 | 
					 | 
				
			||||||
                          KC_F12,         KC_F14,          KC_F16,  KC_F18,          KC_F20,         KC_MEDIA_PLAY_PAUSE,
 | 
					 | 
				
			||||||
        KC_WWW_FORWARD,   KC_F22,         KC_F24,          _______, XXXXXXX,         XXXXXXX,        RGB_HUI,
 | 
					 | 
				
			||||||
                                          KC_SYSTEM_POWER, XXXXXXX, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, RGB_VAI,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX,   XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        RGB_GREEN, XXXXXXX, XXXXXXX
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [HYPER_FN] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, HYPR(KC_F1),  HYPR(KC_F2),  HYPR(KC_F3),  HYPR(KC_F4),  HYPR(KC_F5),  XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, HYPR(KC_F6),  HYPR(KC_F7),  HYPR(KC_F8),  HYPR(KC_F9),  HYPR(KC_F10), XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, HYPR(KC_F11), HYPR(KC_F12), HYPR(KC_F13), HYPR(KC_F14), HYPR(KC_F15),
 | 
					 | 
				
			||||||
        XXXXXXX, HYPR(KC_F16), HYPR(KC_F17), HYPR(KC_F18), HYPR(KC_F19), HYPR(KC_F20), XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, HYPR(KC_F21), HYPR(KC_F22), HYPR(KC_F23), HYPR(KC_F24),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, _______,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [MEH_FN] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        LCA(KC_F11),  LCA(KC_F9),  LCA(KC_F7),  LCA(KC_F5),  LCA(KC_F3),  LCA(KC_F1),  XXXXXXX,
 | 
					 | 
				
			||||||
        LCAG(KC_F11), LCAG(KC_F9), LCAG(KC_F7), LCAG(KC_F5), LCAG(KC_F3), LCAG(KC_F1), XXXXXXX,
 | 
					 | 
				
			||||||
        MEH(KC_F11),  MEH(KC_F9),  MEH(KC_F7),  MEH(KC_F5),  MEH(KC_F3),  MEH(KC_F1),
 | 
					 | 
				
			||||||
        SGUI(KC_F11), SGUI(KC_F9), SGUI(KC_F7), SGUI(KC_F5), SGUI(KC_F3), SGUI(KC_F1), XXXXXXX,
 | 
					 | 
				
			||||||
        _______,      XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, LCA(KC_F2),  LCA(KC_F4),  LCA(KC_F6),  LCA(KC_F8),  LCA(KC_F10),  LCA(KC_F12),
 | 
					 | 
				
			||||||
        XXXXXXX, LCAG(KC_F2), LCAG(KC_F4), LCAG(KC_F6), LCAG(KC_F8), LCAG(KC_F10), LCAG(KC_F12),
 | 
					 | 
				
			||||||
                 MEH(KC_F2),  MEH(KC_F4),  MEH(KC_F6),  MEH(KC_F8),  MEH(KC_F10),  MEH(KC_F12),
 | 
					 | 
				
			||||||
        XXXXXXX, SGUI(KC_F2), SGUI(KC_F4), SGUI(KC_F6), SGUI(KC_F8), SGUI(KC_F10), SGUI(KC_F12),
 | 
					 | 
				
			||||||
                              XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,      XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [MEH_FN_PLUS] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        LCA(KC_F23),  LCA(KC_F21),  LCA(KC_F19),  LCA(KC_F17),  LCA(KC_F15),  LCA(KC_F13),  XXXXXXX,
 | 
					 | 
				
			||||||
        LCAG(KC_F23), LCAG(KC_F21), LCAG(KC_F19), LCAG(KC_F17), LCAG(KC_F15), LCAG(KC_F13), XXXXXXX,
 | 
					 | 
				
			||||||
        MEH(KC_F23),  MEH(KC_F21),  MEH(KC_F19),  MEH(KC_F17),  MEH(KC_F15),  MEH(KC_F13),
 | 
					 | 
				
			||||||
        SGUI(KC_F23), SGUI(KC_F21), SGUI(KC_F19), SGUI(KC_F17), SGUI(KC_F15), SGUI(KC_F13), XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, LCA(KC_F14),  LCA(KC_F16),  LCA(KC_F18),  LCA(KC_F20),  LCA(KC_F22),  LCA(KC_F24),
 | 
					 | 
				
			||||||
        XXXXXXX, LCAG(KC_F14), LCAG(KC_F16), LCAG(KC_F18), LCAG(KC_F20), LCAG(KC_F22), LCAG(KC_F24),
 | 
					 | 
				
			||||||
                 MEH(KC_F14),  MEH(KC_F16),  MEH(KC_F18),  MEH(KC_F20),  MEH(KC_F22),  MEH(KC_F24),
 | 
					 | 
				
			||||||
        XXXXXXX, SGUI(KC_F14), SGUI(KC_F16), SGUI(KC_F18), SGUI(KC_F20), SGUI(KC_F22), SGUI(KC_F24),
 | 
					 | 
				
			||||||
                               XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,      _______,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [FIRMWARE] = LAYOUT_ergodox(
 | 
					 | 
				
			||||||
        // left hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // left thumb
 | 
					 | 
				
			||||||
               XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                        XXXXXXX,
 | 
					 | 
				
			||||||
        RESET, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right hand
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
                          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // right thumb
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX,
 | 
					 | 
				
			||||||
        XXXXXXX, XXXXXXX, EEP_RST
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
					 | 
				
			||||||
    switch (keycode) {
 | 
					 | 
				
			||||||
        case RGB_GREEN:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                #ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
                    rgblight_enable();
 | 
					 | 
				
			||||||
                    rgblight_mode(1);
 | 
					 | 
				
			||||||
                    rgblight_sethsv_red();
 | 
					 | 
				
			||||||
                #endif
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case KC_CLCK:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                if (!(CAPS_LOCK)) {
 | 
					 | 
				
			||||||
                    ergodox_right_led_1_on();
 | 
					 | 
				
			||||||
                    CAPS_LOCK = 1;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    ergodox_right_led_1_off();
 | 
					 | 
				
			||||||
                    CAPS_LOCK = 0;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case KC_NLCK:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                if (!(NUM_LOCK)) {
 | 
					 | 
				
			||||||
                    ergodox_right_led_2_on();
 | 
					 | 
				
			||||||
                    NUM_LOCK = 1;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    ergodox_right_led_2_off();
 | 
					 | 
				
			||||||
                    NUM_LOCK = 0;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case KC_SLCK:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                if (!(SCROLL_LOCK)) {
 | 
					 | 
				
			||||||
                    ergodox_right_led_3_on();
 | 
					 | 
				
			||||||
                    SCROLL_LOCK = 1;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    ergodox_right_led_3_off();
 | 
					 | 
				
			||||||
                    SCROLL_LOCK = 0;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case KC_MS_WH_LEFT:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                if (SCROLL_LOCK) {
 | 
					 | 
				
			||||||
                    return false;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    return true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case KC_MS_WH_UP:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                if (SCROLL_LOCK) {
 | 
					 | 
				
			||||||
                    return false;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    return true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case KC_MS_WH_DOWN:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                if (SCROLL_LOCK) {
 | 
					 | 
				
			||||||
                    return false;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    return true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case KC_MS_WH_RIGHT:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                if (SCROLL_LOCK) {
 | 
					 | 
				
			||||||
                    return false;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    return true;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uint32_t layer_state_set_user(uint32_t state) {
 | 
					 | 
				
			||||||
    uint8_t layer = biton32(state);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    switch (layer) {
 | 
					 | 
				
			||||||
        case DVORAK_US:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_red();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case PLOVER_US:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_red();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case GAMING_US:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_red();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case ARROWS_US:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_blue();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case MOUSE_US:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_blue();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case NUMPAD_US:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_blue();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case LAYERS_US:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_cyan();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case DVORAK_DV:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_green();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case PLOVER_DV:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_green();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case GAMING_DV:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_green();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case ARROWS_DV:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_blue();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case MOUSE_DV:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_blue();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case NUMPAD_DV:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_blue();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case LAYERS_DV:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_cyan();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case MEDIA_FN:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_yellow();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case HYPER_FN:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_magenta();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case MEH_FN:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_magenta();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 4);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case MEH_FN_PLUS:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_magenta();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        case FIRMWARE:
 | 
					 | 
				
			||||||
            rgblight_sethsv_noeeprom_pink();
 | 
					 | 
				
			||||||
            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return state;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					enum layers {        // Hacker Dvorak keyboard layers:
 | 
				
			||||||
 | 
					    DVORAK   = 0,    //   * Dvorak base layer.
 | 
				
			||||||
 | 
					    PLOVER   = 1,    //   * Steno layer for use with Plover.
 | 
				
			||||||
 | 
					    GAMING   = 2,    //   * Gaming layer intended for general purpose playing.
 | 
				
			||||||
 | 
					    ARROWS   = 3,    //   * Arrows movement keys and edition shortcuts.
 | 
				
			||||||
 | 
					    MOUSE    = 4,    //   * Mouse movement keys and edition shortcuts.
 | 
				
			||||||
 | 
					    NUMPAD   = 5,    //   * ATM style numpad with symbols and letters that should suffice to input any numeric literal.
 | 
				
			||||||
 | 
					    LAYERS   = 6,    //   * Layer switcher used to change between DVORAK, PLOVER and GAMING layers.
 | 
				
			||||||
 | 
					    MEDIA_FN = 7,    //   * Media, RGB and function keys from F1 to F24 in symmetric fashion.
 | 
				
			||||||
 | 
					    HYPER    = 8,    //   * Hot keys layer (uses hyper + F1 .. F24) suitable for global shortcut tasks.
 | 
				
			||||||
 | 
					    FIRMWARE = 9     //   * Layer with firmware related functionality, like the reset and EEPROM keys.
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					LEADER_DICTIONARY() {
 | 
				
			||||||
 | 
					    leading = false;
 | 
				
			||||||
 | 
					    leader_end();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SEQ_ONE_KEY(TD(APMR_PIPE)) {
 | 
				
			||||||
 | 
					        register_code(KC_LCTL);
 | 
				
			||||||
 | 
					        register_code(KC_LSFT);
 | 
				
			||||||
 | 
					        register_code(KC_U);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        unregister_code(KC_U);
 | 
				
			||||||
 | 
					        unregister_code(KC_LSFT);
 | 
				
			||||||
 | 
					        unregister_code(KC_LCTL);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					LEADER_EXTERNS();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void qk_leader_start(void) {
 | 
				
			||||||
 | 
					    if (!leading) {
 | 
				
			||||||
 | 
					        leading = true;
 | 
				
			||||||
 | 
					        leader_time = timer_read();
 | 
				
			||||||
 | 
					        leader_sequence_size = 0;
 | 
				
			||||||
 | 
					        leader_sequence[0] = 0;
 | 
				
			||||||
 | 
					        leader_sequence[1] = 0;
 | 
				
			||||||
 | 
					        leader_sequence[2] = 0;
 | 
				
			||||||
 | 
					        leader_sequence[3] = 0;
 | 
				
			||||||
 | 
					        leader_sequence[4] = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					// TODO: improve feedback
 | 
				
			||||||
 | 
					void plover_toggle(void) {
 | 
				
			||||||
 | 
					    // Press "PHROLG"
 | 
				
			||||||
 | 
					    register_code(PV_LP);
 | 
				
			||||||
 | 
					    register_code(PV_LH);
 | 
				
			||||||
 | 
					    register_code(PV_LR);
 | 
				
			||||||
 | 
					    register_code(PV_O);
 | 
				
			||||||
 | 
					    register_code(PV_RL);
 | 
				
			||||||
 | 
					    register_code(PV_RG);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Release "PHROLG"
 | 
				
			||||||
 | 
					    unregister_code(PV_LP);
 | 
				
			||||||
 | 
					    unregister_code(PV_LH);
 | 
				
			||||||
 | 
					    unregister_code(PV_LR);
 | 
				
			||||||
 | 
					    unregister_code(PV_O);
 | 
				
			||||||
 | 
					    unregister_code(PV_RL);
 | 
				
			||||||
 | 
					    unregister_code(PV_RG);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PLOVER_MODE = false;
 | 
				
			||||||
@ -17,8 +17,8 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som
 | 
				
			|||||||
  * All symbols (including shifted symbols).
 | 
					  * All symbols (including shifted symbols).
 | 
				
			||||||
  * All modifier are dual keys positioned near the home row.
 | 
					  * All modifier are dual keys positioned near the home row.
 | 
				
			||||||
2. Querty
 | 
					2. Querty
 | 
				
			||||||
  * Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use 
 | 
					  * Used to overcome the limitation pointed above, when your OS layout is set to Dvorak instead of US, this way you can use
 | 
				
			||||||
    Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on 
 | 
					    Standard Dvorak (available by default on all the main operating systems) on other normal keybdoards and Hacker Dvorak on
 | 
				
			||||||
    the Ergodox EZ Shine at the same time, without changing back and forth tho OS layout.
 | 
					    the Ergodox EZ Shine at the same time, without changing back and forth tho OS layout.
 | 
				
			||||||
3. Gaming
 | 
					3. Gaming
 | 
				
			||||||
  * Still in development.
 | 
					  * Still in development.
 | 
				
			||||||
@ -35,7 +35,7 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som
 | 
				
			|||||||
6. Numpad
 | 
					6. Numpad
 | 
				
			||||||
  * ATM style numpad.
 | 
					  * ATM style numpad.
 | 
				
			||||||
  * All modifier keys.
 | 
					  * All modifier keys.
 | 
				
			||||||
  * Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming 
 | 
					  * Letters from `A` to `F` for hexadecimal numbers (`B` is also used for binary numeric literals in most programming
 | 
				
			||||||
    languages, ie. `0b11001`).
 | 
					    languages, ie. `0b11001`).
 | 
				
			||||||
  * `X` for hexadecimal numeric literals in most programming languages, ie. `0xbeef`.
 | 
					  * `X` for hexadecimal numeric literals in most programming languages, ie. `0xbeef`.
 | 
				
			||||||
  * `O` for octal numeric literals in most programming languages, ie `0o123`.
 | 
					  * `O` for octal numeric literals in most programming languages, ie `0o123`.
 | 
				
			||||||
@ -52,11 +52,11 @@ I plan to use [QMK](https://docs.qmk.fm) in the future, in order to overcome som
 | 
				
			|||||||
  * Useful for custom application shortcuts.
 | 
					  * Useful for custom application shortcuts.
 | 
				
			||||||
10. Meh Fn +
 | 
					10. Meh Fn +
 | 
				
			||||||
  * Useful for custom standard shortcuts.
 | 
					  * Useful for custom standard shortcuts.
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
## To Do
 | 
					## To Do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Add images.
 | 
					Add images.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
***
 | 
					***
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience!
 | 
					Please comment below if you have any ideas or suggestions. If you have used this layout or used it as a base, I'd love to hear about your experience!
 | 
				
			||||||
 | 
				
			|||||||
@ -1,35 +1,40 @@
 | 
				
			|||||||
# Set any rules.mk overrides for your specific keymap here.
 | 
					# Set any rules.mk overrides for your specific keymap here.
 | 
				
			||||||
# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
 | 
					# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
 | 
				
			||||||
NKRO_ENABLE       = yes  # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
					 | 
				
			||||||
TAP_DANCE_ENABLE  = yes
 | 
					 | 
				
			||||||
MOUSEKEY_ENABLE   = yes  # Mouse keys(+4700b).
 | 
					 | 
				
			||||||
EXTRAKEY_ENABLE   = yes  # Audio control and System control(+450b).
 | 
					 | 
				
			||||||
SLEEP_LED_ENABLE  = yes  # Turn off leds when computer is sleeping.
 | 
					 | 
				
			||||||
KEY_LOCK_ENABLE   = yes  # (+1730b)
 | 
					 | 
				
			||||||
RGBLIGHT_ENABLE   = yes
 | 
					 | 
				
			||||||
LEADER_ENABLE     = yes
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NKRO_ENABLE      = yes  # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
				
			||||||
 | 
					TAP_DANCE_ENABLE = yes
 | 
				
			||||||
 | 
					MOUSEKEY_ENABLE  = yes  # Mouse keys(+4700b).
 | 
				
			||||||
 | 
					EXTRAKEY_ENABLE  = yes  # Audio control and System control(+450b).
 | 
				
			||||||
 | 
					RGBLIGHT_ENABLE  = yes
 | 
				
			||||||
 | 
					LEADER_ENABLE    = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
UNICODE_ENABLE    = no  # For Unicode.
 | 
					UNICODE_ENABLE    = no
 | 
				
			||||||
COMMAND_ENABLE    = no  # Commands for debug and configuration
 | 
					COMMAND_ENABLE    = no  # Commands for debug and configuration
 | 
				
			||||||
SWAP_HANDS_ENABLE = no  # Allow swapping hands of keyboard.
 | 
					SWAP_HANDS_ENABLE = no  # Allow swapping hands of keyboard.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This are by default off:
 | 
					# This are by default off:
 | 
				
			||||||
# CONSOLE_ENABLE    = no  # Console for debug(+400)
 | 
					# COMBO_ENABLE      = no
 | 
				
			||||||
# BOOTMAGIC_ENABLE  = no  # Virtual DIP switch configuration(+1000)
 | 
					# UCIS_ENABLE       = no  # For Unicode.
 | 
				
			||||||
 | 
					# UNICODEMAP_ENABLE = no
 | 
				
			||||||
 | 
					# SLEEP_LED_ENABLE  = no  # Turn off leds when computer is sleeping.
 | 
				
			||||||
 | 
					# KEY_LOCK_ENABLE   = no  # (+1730b)
 | 
				
			||||||
 | 
					# CONSOLE_ENABLE    = no  # Console for debug(+400b)
 | 
				
			||||||
 | 
					# BOOTMAGIC_ENABLE  = no  # Virtual DIP switch configuration(+1000b)
 | 
				
			||||||
# API_SYSEX_ENABLE  = no
 | 
					# API_SYSEX_ENABLE  = no
 | 
				
			||||||
# MIDI_ENABLE       = no
 | 
					# MIDI_ENABLE       = no
 | 
				
			||||||
# UNICODEMAP_ENABLE = no
 | 
					 | 
				
			||||||
# BLUETOOTH_ENABLE  = no
 | 
					# BLUETOOTH_ENABLE  = no
 | 
				
			||||||
# AUDIO_ENABLE      = no
 | 
					# AUDIO_ENABLE      = no
 | 
				
			||||||
# FAUXCLICKY_ENABLE = no
 | 
					# FAUXCLICKY_ENABLE = no
 | 
				
			||||||
# VARIABLE_TRACE    = no
 | 
					# VARIABLE_TRACE    = no
 | 
				
			||||||
# BACKLIGHT_ENABLE  = no
 | 
					# BACKLIGHT_ENABLE  = no
 | 
				
			||||||
# RGB_MATRIX_ENABLE = no
 | 
					# RGB_MATRIX_ENABLE = no
 | 
				
			||||||
# COMBO_ENABLE      = no
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# POINTING_DEVICE_ENABLE = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This don't need argument:
 | 
					# AUTO_SHIFT_ENABLE    = no
 | 
				
			||||||
 | 
					# AUTO_SHIFT_MODIFIERS = no
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This don't need argument?
 | 
				
			||||||
# CUSTOM_MATRIX    # Custom matrix file for the ErgoDox EZ
 | 
					# CUSTOM_MATRIX    # Custom matrix file for the ErgoDox EZ
 | 
				
			||||||
# SPLIT_KEYBOARD
 | 
					# SPLIT_KEYBOARD
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					//instanalize an instance of 'tap' for the None - Lead tap dance.
 | 
				
			||||||
 | 
					static tap none_lead_state = {
 | 
				
			||||||
 | 
					        .is_press_action = true,
 | 
				
			||||||
 | 
					        .state           = 0
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void none_lead_finished(qk_tap_dance_state_t *state, void *user_data) {
 | 
				
			||||||
 | 
					    none_lead_state.state = current_dance(state);
 | 
				
			||||||
 | 
					    switch (none_lead_state.state) {
 | 
				
			||||||
 | 
					        case SINGLE_TAP:
 | 
				
			||||||
 | 
					            register_code(KC_NO);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case SINGLE_HOLD:
 | 
				
			||||||
 | 
					            register_code(KC_LALT);
 | 
				
			||||||
 | 
					            register_code(KC_LSFT);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case DOUBLE_TAP:
 | 
				
			||||||
 | 
					            qk_leader_start();
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void none_lead_reset(qk_tap_dance_state_t *state, void *user_data) {
 | 
				
			||||||
 | 
					    switch (none_lead_state.state) {
 | 
				
			||||||
 | 
					        case SINGLE_TAP:
 | 
				
			||||||
 | 
					            unregister_code(KC_NO);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case SINGLE_HOLD:
 | 
				
			||||||
 | 
					            unregister_code(KC_LALT);
 | 
				
			||||||
 | 
					            unregister_code(KC_LSFT);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case DOUBLE_TAP:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    none_lead_state.state = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					// Register the double tap dances:
 | 
				
			||||||
 | 
					qk_tap_dance_action_t tap_dance_actions[] = {
 | 
				
			||||||
 | 
					        [EQL_PLUS]  = ACTION_TAP_DANCE_DOUBLE(KC_EQL,  KC_PLUS),
 | 
				
			||||||
 | 
					        [MINS_UNDS] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS),
 | 
				
			||||||
 | 
					        [SLSH_BSLS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS),
 | 
				
			||||||
 | 
					        [GRV_TILD]  = ACTION_TAP_DANCE_DOUBLE(KC_GRV,  KC_TILD),
 | 
				
			||||||
 | 
					        [QUOT_DQUO] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_DQUO),
 | 
				
			||||||
 | 
					        [SCLN_COLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
 | 
				
			||||||
 | 
					        [ASTR_CIRC] = ACTION_TAP_DANCE_DOUBLE(KC_ASTR, KC_CIRC),
 | 
				
			||||||
 | 
					        [APMR_PIPE] = ACTION_TAP_DANCE_DOUBLE(KC_AMPR, KC_PIPE),
 | 
				
			||||||
 | 
					        [EXLM_QUES] = ACTION_TAP_DANCE_DOUBLE(KC_EXLM, KC_QUES),
 | 
				
			||||||
 | 
					        [HASH_PERC] = ACTION_TAP_DANCE_DOUBLE(KC_HASH, KC_PERC),
 | 
				
			||||||
 | 
					        [AT_DLR]    = ACTION_TAP_DANCE_DOUBLE(KC_AT,   KC_DLR),
 | 
				
			||||||
 | 
					        [LPRN_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC),
 | 
				
			||||||
 | 
					        [RPRN_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC),
 | 
				
			||||||
 | 
					        [LCBR_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_LABK),
 | 
				
			||||||
 | 
					        [RCBR_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_RCBR, KC_RABK),
 | 
				
			||||||
 | 
					        [DOT_COMM]  = ACTION_TAP_DANCE_DOUBLE(KC_DOT,  KC_COMM),
 | 
				
			||||||
 | 
					        [NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, none_lead_finished, none_lead_reset, DANCING_TERM)
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    bool is_press_action;
 | 
				
			||||||
 | 
					    int state;
 | 
				
			||||||
 | 
					} tap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum {
 | 
				
			||||||
 | 
					    SINGLE_TAP        = 1,
 | 
				
			||||||
 | 
					    SINGLE_HOLD       = 2,
 | 
				
			||||||
 | 
					    DOUBLE_TAP        = 3,
 | 
				
			||||||
 | 
					    DOUBLE_HOLD       = 4,
 | 
				
			||||||
 | 
					    DOUBLE_SINGLE_TAP = 5,  // Send two single taps.
 | 
				
			||||||
 | 
					    TRIPLE_TAP        = 6,
 | 
				
			||||||
 | 
					    TRIPLE_HOLD       = 7,
 | 
				
			||||||
 | 
					    TRIPLE_SINGLE_TAP = 8   // Send three single taps.
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Return an integer that corresponds to what kind of tap dance should be executed.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * How to figure out tap dance state: interrupted and pressed.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
 | 
				
			||||||
 | 
					 *  under the tapping term. This is typically indicitive that you are trying to "tap" the key.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
 | 
				
			||||||
 | 
					 *  has ended, but the key is still being pressed down. This generally means the key is being "held".
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
 | 
				
			||||||
 | 
					 *  feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
 | 
				
			||||||
 | 
					 *  For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Good places to put an advanced tap dance:
 | 
				
			||||||
 | 
					 *  z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Criteria for "good placement" of a tap dance key:
 | 
				
			||||||
 | 
					 *  Not a key that is hit frequently in a sentence
 | 
				
			||||||
 | 
					 *  Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
 | 
				
			||||||
 | 
					 *    in a web form. So 'tab' would be a poor choice for a tap dance.
 | 
				
			||||||
 | 
					 *  Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
 | 
				
			||||||
 | 
					 *    letter 'p', the word 'pepper' would be quite frustating to type.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					int current_dance(qk_tap_dance_state_t *state) {
 | 
				
			||||||
 | 
					    int current_state = 0;
 | 
				
			||||||
 | 
					    if (state->count == 1) {
 | 
				
			||||||
 | 
					        if (state->interrupted || !state->pressed) {
 | 
				
			||||||
 | 
					            current_state = SINGLE_TAP;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            current_state = SINGLE_HOLD; //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else if (state->count == 2) {
 | 
				
			||||||
 | 
					        /*
 | 
				
			||||||
 | 
					         * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
 | 
				
			||||||
 | 
					         * action when hitting 'pp'. Suggested use case for this return value is when you want to send two
 | 
				
			||||||
 | 
					         * keystrokes of the key, and not the 'double tap' action/macro.
 | 
				
			||||||
 | 
					        */
 | 
				
			||||||
 | 
					        if (state->interrupted) {
 | 
				
			||||||
 | 
					            current_state = DOUBLE_SINGLE_TAP;
 | 
				
			||||||
 | 
					        } else if (state->pressed) {
 | 
				
			||||||
 | 
					            current_state = DOUBLE_HOLD;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            current_state = DOUBLE_TAP;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else if (state->count == 3) {
 | 
				
			||||||
 | 
					        if (state->interrupted) {
 | 
				
			||||||
 | 
					            current_state = TRIPLE_SINGLE_TAP;
 | 
				
			||||||
 | 
					        } else if (state->pressed) {
 | 
				
			||||||
 | 
					            current_state = TRIPLE_HOLD;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            current_state = TRIPLE_TAP;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return current_state;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,74 @@
 | 
				
			|||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //  Single tap  |  Single hold  |  Double tap  |  Double hold  |  Triple tap  |  Triple hold  //
 | 
				
			||||||
 | 
					// Mod tap dances:     //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					enum tap_dances {      //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    EQL_PLUS  = 0,     //       =      |       +       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    MINS_UNDS = 1,     //       -      |       _       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    SLSH_BSLS = 2,     //       /      |       \       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    GRV_TILD  = 3,     //       `      |       ~       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    QUOT_DQUO = 4,     //       '      |       "       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    SCLN_COLN = 5,     //       ;      |       :       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    ASTR_CIRC = 6,     //       *      |       ^       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    APMR_PIPE = 7,     //       &      |       |       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    EXLM_QUES = 8,     //       !      |       ?       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    HASH_PERC = 9,     //       #      |       %       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    AT_DLR    = 10,    //       @      |       $       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    LPRN_LBRC = 11,    //       (      |       [       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    RPRN_RBRC = 12,    //       )      |       ]       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    LCBR_LABK = 13,    //       {      |       <       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    RCBR_RABK = 14,    //       }      |       >       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    DOT_COMM  = 15,    //       .      |       ,       |              |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					    NONE_LEAD = 16,    //     NONE     |   ALT+SHIFT   | LEAD         |               |              |               //
 | 
				
			||||||
 | 
					                       //              |               |              |               |              |               //
 | 
				
			||||||
 | 
					                       //--------------------------------------------------------------------------------------------//
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					// void eeconfig_init_user(void) {
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// };
 | 
				
			||||||
@ -0,0 +1,121 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					uint32_t layer_state_set_user(uint32_t state) {
 | 
				
			||||||
 | 
					    uint8_t layer = biton32(state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch (layer) {
 | 
				
			||||||
 | 
					        case DVORAK:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_green();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case PLOVER:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_red();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!(PLOVER_MODE)) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case GAMING:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_red();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case ARROWS:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_blue();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case MOUSE:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_blue();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case NUMPAD:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_blue();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case LAYERS:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_cyan();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case MEDIA_FN:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_yellow();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case HYPER:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_magenta();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case FIRMWARE:
 | 
				
			||||||
 | 
					            rgblight_sethsv_noeeprom_magenta();
 | 
				
			||||||
 | 
					            rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (PLOVER_MODE) {
 | 
				
			||||||
 | 
					                plover_toggle();
 | 
				
			||||||
 | 
					                PLOVER_MODE = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return state;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					#include "../leader/leader_setup.c"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool MATRIX_SCANNED = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void matrix_scan_user(void) {
 | 
				
			||||||
 | 
					    if (!(MATRIX_SCANNED)) {
 | 
				
			||||||
 | 
					        rgblight_sethsv_noeeprom_green();
 | 
				
			||||||
 | 
					        MATRIX_SCANNED = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #include "../leader/leader_dictionary.c"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					// TODO: Improve this currently there is no feedback if activated by other means.
 | 
				
			||||||
 | 
					bool CAPS_LOCK   = false;
 | 
				
			||||||
 | 
					bool NUM_LOCK    = false;
 | 
				
			||||||
 | 
					bool SCROLL_LOCK = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
 | 
					    if (!process_record_dynamic_macro(keycode, record)) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch (keycode) {
 | 
				
			||||||
 | 
					        case KC_CLCK:
 | 
				
			||||||
 | 
					            if (record->event.pressed) {
 | 
				
			||||||
 | 
					                if (!(CAPS_LOCK)) {
 | 
				
			||||||
 | 
					                    ergodox_right_led_1_on();
 | 
				
			||||||
 | 
					                    CAPS_LOCK = true;
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    ergodox_right_led_1_off();
 | 
				
			||||||
 | 
					                    CAPS_LOCK = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case KC_NLCK:
 | 
				
			||||||
 | 
					            if (record->event.pressed) {
 | 
				
			||||||
 | 
					                if (!(NUM_LOCK)) {
 | 
				
			||||||
 | 
					                    ergodox_right_led_2_on();
 | 
				
			||||||
 | 
					                    NUM_LOCK = true;
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    ergodox_right_led_2_off();
 | 
				
			||||||
 | 
					                    NUM_LOCK = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case KC_SLCK:
 | 
				
			||||||
 | 
					            if (record->event.pressed) {
 | 
				
			||||||
 | 
					                if (!(SCROLL_LOCK)) {
 | 
				
			||||||
 | 
					                    ergodox_right_led_3_on();
 | 
				
			||||||
 | 
					                    SCROLL_LOCK = true;
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    ergodox_right_led_3_off();
 | 
				
			||||||
 | 
					                    SCROLL_LOCK = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case KC_MS_WH_UP ... KC_MS_WH_RIGHT:
 | 
				
			||||||
 | 
					            if (record->event.pressed) {
 | 
				
			||||||
 | 
					                if (SCROLL_LOCK) {
 | 
				
			||||||
 | 
					                    return false;
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    return true;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case MY_CUSTOM_MACRO:
 | 
				
			||||||
 | 
					            if (record->event.pressed) {
 | 
				
			||||||
 | 
					                SEND_STRING("QMK is the best thing ever!"); // this is our macro!
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        case MY_OTHER_MACRO:
 | 
				
			||||||
 | 
					            if (record->event.pressed) {
 | 
				
			||||||
 | 
					                SEND_STRING(SS_LCTRL("ac")); // selects all and copies
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user