Yet another update to drashna keymaps and userspace (EEPROM, RGB indicators) (#2959)
* More Iris Tweaks * Mess with iris arrow keys * Massive layout overhaul to make everything more OLKB * Additional tweaks * Cleanup Userspace Remove unused layer code, and properly set userspace eeprom structure. * EEPROM stuff * Only use indicators if layer indication is enabled * Iris and Orthodox Tweaks (Status Indicators) * Additional tweaks to finish tri layer conversion * Disable ProMicro ligths globally * Add Pro Micro hacking info * Successfully get mod indication working on thumb clusters * Enable printing when console is enabled * Make Modifier Indicator lights more modular * Keymap cleanup * Tapping test changes * Cleanup and minor tweaks
This commit is contained in:
		
							parent
							
								
									a572323f94
								
							
						
					
					
						commit
						53a6501d71
					
				
					 12 changed files with 273 additions and 249 deletions
				
			
		| 
						 | 
					@ -41,6 +41,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
 | 
					#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
 | 
				
			||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
 | 
					#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
 | 
				
			||||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
 | 
					#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RGBLIGHT_LIMIT_VAL 225
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef AUDIO_ENABLE
 | 
					#ifdef AUDIO_ENABLE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,79 +2,94 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
#include "drashna.h"
 | 
					#include "drashna.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
 | 
					extern userspace_config_t userspace_config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t last_mod;
 | 
				
			||||||
 | 
					uint8_t last_led;
 | 
				
			||||||
 | 
					uint8_t last_osm;
 | 
				
			||||||
 | 
					bool has_mods_changed = false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define KC_ALAP ALT_T(KC_APP)
 | 
					#define KC_ALAP ALT_T(KC_APP)
 | 
				
			||||||
 | 
					#define KC_OSLG OSM(MOD_LGUI)
 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_QWERTY] = LAYOUT_wrapper(
 | 
					  [_QWERTY] = LAYOUT_wrapper(
 | 
				
			||||||
     KC_GESC, ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
					     KC_ESC,  ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
				
			||||||
     KC_TAB , _________________QWERTY_L1_________________,                       _________________QWERTY_R1_________________, KC_BSLS,
 | 
					     KC_TAB , _________________QWERTY_L1_________________,                       _________________QWERTY_R1_________________, KC_BSLS,
 | 
				
			||||||
     KC_C1R3, _________________QWERTY_L2_________________,                       _________________QWERTY_R2_________________, KC_QUOT,
 | 
					     KC_CCCV, _________________QWERTY_L2_________________,                       _________________QWERTY_R2_________________, KC_QUOT,
 | 
				
			||||||
     KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP,     KC_LGUI, _________________QWERTY_R3_________________, KC_MRSF,
 | 
					     KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP,     KC_OSLG, _________________QWERTY_R3_________________, KC_MRSF,
 | 
				
			||||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
					                             LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
  [_COLEMAK] = LAYOUT_wrapper(
 | 
					  [_COLEMAK] = LAYOUT_wrapper(
 | 
				
			||||||
     KC_GESC, ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
					     KC_ESC , ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
				
			||||||
     KC_TAB , _________________COLEMAK_L1________________,                       _________________COLEMAK_R1________________, KC_BSLS,
 | 
					     KC_TAB , _________________COLEMAK_L1________________,                       _________________COLEMAK_R1________________, KC_BSLS,
 | 
				
			||||||
     KC_C1R3, _________________COLEMAK_L2________________,                       _________________COLEMAK_R2________________, KC_QUOT,
 | 
					     KC_CCCV, _________________COLEMAK_L2________________,                       _________________COLEMAK_R2________________, KC_QUOT,
 | 
				
			||||||
     KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP,     KC_LGUI, _________________COLEMAK_R3________________, KC_MRSF,
 | 
					     KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP,     KC_OSLG, _________________COLEMAK_R3________________, KC_MRSF,
 | 
				
			||||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
					                             LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
  [_DVORAK] = LAYOUT_wrapper(
 | 
					  [_DVORAK] = LAYOUT_wrapper(
 | 
				
			||||||
     KC_GESC, ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
					     KC_ESC,  ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
				
			||||||
     KC_TAB , _________________DVORAK_L1_________________,                       _________________DVORAK_R1_________________, KC_BSLS,
 | 
					     KC_TAB , _________________DVORAK_L1_________________,                       _________________DVORAK_R1_________________, KC_BSLS,
 | 
				
			||||||
     KC_C1R3, _________________DVORAK_L2_________________,                       _________________DVORAK_R2_________________, KC_QUOT,
 | 
					     KC_CCCV, _________________DVORAK_L2_________________,                       _________________DVORAK_R2_________________, KC_QUOT,
 | 
				
			||||||
     KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP,     KC_LGUI, _________________DVORAK_R3_________________, KC_MRSF,
 | 
					     KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP,     KC_OSLG, _________________DVORAK_R3_________________, KC_MRSF,
 | 
				
			||||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
					                             LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
  [_WORKMAN] = LAYOUT_wrapper(
 | 
					  [_WORKMAN] = LAYOUT_wrapper(
 | 
				
			||||||
     KC_GESC, ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
					     KC_ESC,  ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
				
			||||||
     KC_TAB , _________________WORKMAN_L1________________,                       _________________WORKMAN_R1________________, KC_BSLS,
 | 
					     KC_TAB , _________________WORKMAN_L1________________,                       _________________WORKMAN_R1________________, KC_BSLS,
 | 
				
			||||||
     KC_C1R3, _________________WORKMAN_L2________________,                       _________________WORKMAN_R2________________, KC_QUOT,
 | 
					     KC_CCCV, _________________WORKMAN_L2________________,                       _________________WORKMAN_R2________________, KC_QUOT,
 | 
				
			||||||
     KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP,     KC_LGUI, _________________WORKMAN_R3________________, KC_MRSF,
 | 
					     KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP,     KC_OSLG, _________________WORKMAN_R3________________, KC_MRSF,
 | 
				
			||||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
					                             LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_MODS] = LAYOUT(
 | 
					  [_MODS] = LAYOUT_wrapper(
 | 
				
			||||||
     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
					     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
					     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
					     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
     KC_LSFT, _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______, _______,
 | 
					     KC_LSFT, _______, _______, _______, _______, _______, _______,     _______, _______, _______, _______, _______, _______, KC_RSFT,
 | 
				
			||||||
                                       _______, _______, _______,         _______, _______, _______
 | 
					                                       _______, _______, _______,         _______, _______, _______
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_LOWER] = LAYOUT(
 | 
					  [_LOWER] = LAYOUT_wrapper(
 | 
				
			||||||
     KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                       KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
 | 
					     _______, _________________FUNC_LEFT_________________,                       _________________FUNC_RIGHT________________, _______,
 | 
				
			||||||
     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
					     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
     KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                         KC_RBRC, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
					     _______, _______, _______, _______, _______, _______,                       _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
				
			||||||
     KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, KC_LPRN,      KC_RPRN, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______,
 | 
					     _______, _______, _______, _______, _______, _______, _______,     _______, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______,
 | 
				
			||||||
                                       _______, _______, KC_DEL,          _______, _______, _______
 | 
					                                       _______, _______, _______,         _______, _______, _______
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_RAISE] = LAYOUT(
 | 
					  [_RAISE] = LAYOUT_wrapper(
 | 
				
			||||||
      KC_F12,  KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,                        KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
 | 
					      _______, _________________FUNC_LEFT_________________,                      _________________FUNC_RIGHT________________, _______,
 | 
				
			||||||
      _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
					      _______, _______, _______, _______, _______, _______,                      _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
      _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_UNDS,                       KC_EQL , KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
					      _______, _______, _______, _______, _______, _______,                      _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
				
			||||||
      _______, _______, _______, _______, _______, _______, _______,     _______, KC_PLUS, KC_END, _______, _______, _______, _______,
 | 
					      _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END,  _______,
 | 
				
			||||||
                                        _______, _______, _______,         _______, _______, _______
 | 
					                                        _______, _______, _______,        _______, _______, _______
 | 
				
			||||||
   ),
 | 
					   ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_ADJUST] = LAYOUT(
 | 
					  [_ADJUST] = LAYOUT_wrapper(
 | 
				
			||||||
      KC_MAKE, KC_RST,  EPRM,    _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
					      KC_MAKE, _______, _______, _______, _______, _______,                      KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
 | 
				
			||||||
      RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______,                       _______, _______, _______, _______, _______, _______,
 | 
					      VRSN,    RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,                      _______, _______, _______, _______, _______, EPRM,
 | 
				
			||||||
      RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON,   AU_OFF,  AG_NORM,                       AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS),
 | 
					      _______, _______, CK_TOGG, AU_ON,   AU_OFF,  AG_NORM,                      AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, _______,
 | 
				
			||||||
      KC_RGB_T,RGB_SMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,     _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
 | 
					      TG(_MODS),RGB_SMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______,    _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
 | 
				
			||||||
                                        _______, _______, _______,         _______, _______, _______
 | 
					                                        _______, _______, _______,        _______, _______, _______
 | 
				
			||||||
   )
 | 
					   )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void matrix_init_keymap(void) {
 | 
				
			||||||
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
 | 
					  last_mod = get_mods();
 | 
				
			||||||
 | 
					  last_led = host_keyboard_leds();
 | 
				
			||||||
 | 
					  last_osm =get_oneshot_mods();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef INDICATOR_LIGHT
 | 
					 | 
				
			||||||
uint32_t layer_state_set_keymap (uint32_t state) {
 | 
					uint32_t layer_state_set_keymap (uint32_t state) {
 | 
				
			||||||
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
  uint8_t modifiders = get_mods();
 | 
					  uint8_t modifiders = get_mods();
 | 
				
			||||||
  uint8_t led_usb_state = host_keyboard_leds();
 | 
					  uint8_t led_usb_state = host_keyboard_leds();
 | 
				
			||||||
  uint8_t one_shot = get_oneshot_mods();
 | 
					  uint8_t one_shot = get_oneshot_mods();
 | 
				
			||||||
| 
						 | 
					@ -92,41 +107,49 @@ uint32_t layer_state_set_keymap (uint32_t state) {
 | 
				
			||||||
    rgblight_sethsv_at(120, 255, 255, 7);
 | 
					    rgblight_sethsv_at(120, 255, 255, 7);
 | 
				
			||||||
    rgblight_sethsv_at(120, 255, 255, 8);
 | 
					    rgblight_sethsv_at(120, 255, 255, 8);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return state;
 | 
					  return state;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void matrix_scan_keymap (void) {
 | 
					void matrix_scan_keymap (void) {
 | 
				
			||||||
  static uint8_t current_mods;
 | 
					 | 
				
			||||||
  static uint8_t current_host_leds;
 | 
					 | 
				
			||||||
  static uint8_t current_oneshot_mods;
 | 
					 | 
				
			||||||
  static bool has_status_changed = true;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) {
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
    has_status_changed = true;
 | 
					  uint8_t current_mod = get_mods();
 | 
				
			||||||
    current_mods = get_mods();
 | 
					  uint8_t current_led = host_keyboard_leds();
 | 
				
			||||||
    current_host_leds = host_keyboard_leds();
 | 
					  uint8_t current_osm =get_oneshot_mods();
 | 
				
			||||||
    current_oneshot_mods = get_oneshot_mods();
 | 
					
 | 
				
			||||||
 | 
					  if (last_mod == current_mod) {
 | 
				
			||||||
 | 
					    last_mod = current_mod;
 | 
				
			||||||
 | 
					    has_mods_changed = true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (last_led == current_led) {
 | 
				
			||||||
 | 
					    last_led = current_led;
 | 
				
			||||||
 | 
					    has_mods_changed = true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (last_osm == current_osm) {
 | 
				
			||||||
 | 
					    last_osm = current_osm;
 | 
				
			||||||
 | 
					    has_mods_changed = true;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (has_status_changed) {
 | 
					 | 
				
			||||||
    has_status_changed = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) {
 | 
					
 | 
				
			||||||
 | 
					  if (userspace_config.rgb_layer_change && has_mods_changed && biton32(layer_state) == 0) {
 | 
				
			||||||
 | 
					    if (current_mod & MODS_SHIFT_MASK || current_led & (1<<USB_LED_CAPS_LOCK) || current_osm & MODS_SHIFT_MASK) {
 | 
				
			||||||
      rgblight_sethsv_at(0, 255, 255, 5);
 | 
					      rgblight_sethsv_at(0, 255, 255, 5);
 | 
				
			||||||
      rgblight_sethsv_at(0, 255, 255, 10);
 | 
					      rgblight_sethsv_at(0, 255, 255, 10);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      rgblight_sethsv_default_helper(5);
 | 
					      rgblight_sethsv_default_helper(5);
 | 
				
			||||||
      rgblight_sethsv_default_helper(10);
 | 
					      rgblight_sethsv_default_helper(10);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) {
 | 
					    if (current_mod & MODS_CTRL_MASK || current_osm & MODS_CTRL_MASK) {
 | 
				
			||||||
      rgblight_sethsv_at(51, 255, 255, 6);
 | 
					      rgblight_sethsv_at(51, 255, 255, 6);
 | 
				
			||||||
      rgblight_sethsv_at(51, 255, 255, 9);
 | 
					      rgblight_sethsv_at(51, 255, 255, 9);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      rgblight_sethsv_default_helper(6);
 | 
					      rgblight_sethsv_default_helper(6);
 | 
				
			||||||
      rgblight_sethsv_default_helper(9);
 | 
					      rgblight_sethsv_default_helper(9);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) {
 | 
					    if (current_mod & MODS_GUI_MASK || current_osm & MODS_GUI_MASK) {
 | 
				
			||||||
      rgblight_sethsv_at(120, 255, 255, 7);
 | 
					      rgblight_sethsv_at(120, 255, 255, 7);
 | 
				
			||||||
      rgblight_sethsv_at(120, 255, 255, 8);
 | 
					      rgblight_sethsv_at(120, 255, 255, 8);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
| 
						 | 
					@ -135,7 +158,6 @@ void matrix_scan_keymap (void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,3 +9,4 @@ AUDIO_ENABLE      = yes
 | 
				
			||||||
NKRO_ENABLE       = yes
 | 
					NKRO_ENABLE       = yes
 | 
				
			||||||
BACKLIGHT_ENABLE = no
 | 
					BACKLIGHT_ENABLE = no
 | 
				
			||||||
SWAP_HANDS_ENABLE = yes
 | 
					SWAP_HANDS_ENABLE = yes
 | 
				
			||||||
 | 
					INDICATOR_LIGHTS  = yes
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,14 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
#include "drashna.h"
 | 
					#include "drashna.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
 | 
					extern userspace_config_t userspace_config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t last_mod;
 | 
				
			||||||
 | 
					uint8_t last_led;
 | 
				
			||||||
 | 
					uint8_t last_osm;
 | 
				
			||||||
 | 
					bool has_mods_changed = false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
| 
						 | 
					@ -33,6 +41,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
#define XXXXXXX KC_NO
 | 
					#define XXXXXXX KC_NO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[_QWERTY] = LAYOUT_wrapper(\
 | 
					[_QWERTY] = LAYOUT_wrapper(\
 | 
				
			||||||
| 
						 | 
					@ -65,27 +74,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[_LOWER] = LAYOUT_wrapper(\
 | 
					[_LOWER] = LAYOUT_wrapper(\
 | 
				
			||||||
  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                                                               KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
 | 
					  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                                                               KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
 | 
				
			||||||
  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,            KC_PGUP, KC_PGDN,         KC_HOME, KC_END,           _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
					  _______, _________________FUNC_LEFT_________________,           KC_PGUP, KC_PGDN,         KC_HOME, KC_END,           _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
				
			||||||
  KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______,         _______, _______, _______, _______, _______, KC_COMM, KC_DOT,  _______, _______
 | 
					  _______, _________________FUNC_RIGHT________________,  _______, _______, _______,         _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[_RAISE] = LAYOUT_wrapper(\
 | 
					[_RAISE] = LAYOUT_wrapper(\
 | 
				
			||||||
  KC_GRV,  ________________NUMBER_LEFT________________,                                                               ________________NUMBER_RIGHT_______________, KC_BSPC,
 | 
					  KC_GRV,  ________________NUMBER_LEFT________________,                                                               ________________NUMBER_RIGHT_______________, KC_BSPC,
 | 
				
			||||||
  _______, _______, _______, _______, _______, _______,          KC_PGUP, KC_PGDN,         KC_HOME, KC_END,           _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
					  _______, _______, _______, _______, _______, _______,          KC_PGUP, KC_PGDN,         KC_HOME, KC_END,           _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
				
			||||||
  _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, KC_COMM, KC_DOT,  _______, _______
 | 
					  _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[_ADJUST] = LAYOUT_wrapper(\
 | 
					[_ADJUST] = LAYOUT_wrapper(\
 | 
				
			||||||
  KC_MAKE,KC_RESET, EPRM,    _______, _______, _______,                                                               _______, _______, _______, _______, _______, _______,
 | 
					  KC_MAKE, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,                                                               KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RESET,
 | 
				
			||||||
  RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON,   AU_OFF,  AG_NORM,          _______, _______,         _______, _______,          AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS),
 | 
					  VRSN,    _______, CK_TOGG, AU_ON,   AU_OFF,  AG_NORM,          _______, _______,         _______, _______,          AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, EPRM,
 | 
				
			||||||
  KC_RGB_T,RGB_HUD, MU_ON,   MU_OFF,  MU_TOG,  MU_MOD,  _______, _______, _______,         _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY
 | 
					  TG(_MODS),RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______, _______, _______,         _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					void matrix_init_keymap(void) {
 | 
				
			||||||
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
 | 
					  last_mod = get_mods();
 | 
				
			||||||
 | 
					  last_led = host_keyboard_leds();
 | 
				
			||||||
 | 
					  last_osm =get_oneshot_mods();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint32_t layer_state_set_keymap (uint32_t state) {
 | 
					uint32_t layer_state_set_keymap (uint32_t state) {
 | 
				
			||||||
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
  uint8_t modifiders = get_mods();
 | 
					  uint8_t modifiders = get_mods();
 | 
				
			||||||
  uint8_t led_usb_state = host_keyboard_leds();
 | 
					  uint8_t led_usb_state = host_keyboard_leds();
 | 
				
			||||||
  uint8_t one_shot = get_oneshot_mods();
 | 
					  uint8_t one_shot = get_oneshot_mods();
 | 
				
			||||||
| 
						 | 
					@ -103,41 +120,49 @@ uint32_t layer_state_set_keymap (uint32_t state) {
 | 
				
			||||||
    rgblight_sethsv_at(120, 255, 255, 7);
 | 
					    rgblight_sethsv_at(120, 255, 255, 7);
 | 
				
			||||||
    rgblight_sethsv_at(120, 255, 255, 8);
 | 
					    rgblight_sethsv_at(120, 255, 255, 8);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return state;
 | 
					  return state;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void matrix_scan_keymap (void) {
 | 
					void matrix_scan_keymap (void) {
 | 
				
			||||||
  static uint8_t current_mods;
 | 
					 | 
				
			||||||
  static uint8_t current_host_leds;
 | 
					 | 
				
			||||||
  static uint8_t current_oneshot_mods;
 | 
					 | 
				
			||||||
  static bool has_status_changed = true;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) {
 | 
					#ifdef INDICATOR_LIGHTS
 | 
				
			||||||
    has_status_changed = true;
 | 
					  uint8_t current_mod = get_mods();
 | 
				
			||||||
    current_mods = get_mods();
 | 
					  uint8_t current_led = host_keyboard_leds();
 | 
				
			||||||
    current_host_leds = host_keyboard_leds();
 | 
					  uint8_t current_osm =get_oneshot_mods();
 | 
				
			||||||
    current_oneshot_mods = get_oneshot_mods();
 | 
					
 | 
				
			||||||
 | 
					  if (last_mod == current_mod) {
 | 
				
			||||||
 | 
					    last_mod = current_mod;
 | 
				
			||||||
 | 
					    has_mods_changed = true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (last_led == current_led) {
 | 
				
			||||||
 | 
					    last_led = current_led;
 | 
				
			||||||
 | 
					    has_mods_changed = true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (last_osm == current_osm) {
 | 
				
			||||||
 | 
					    last_osm = current_osm;
 | 
				
			||||||
 | 
					    has_mods_changed = true;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (has_status_changed) {
 | 
					 | 
				
			||||||
    has_status_changed = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) {
 | 
					
 | 
				
			||||||
 | 
					  if (userspace_config.rgb_layer_change && has_mods_changed && biton32(layer_state) == 0) {
 | 
				
			||||||
 | 
					    if (current_mod & MODS_SHIFT_MASK || current_led & (1<<USB_LED_CAPS_LOCK) || current_osm & MODS_SHIFT_MASK) {
 | 
				
			||||||
      rgblight_sethsv_at(0, 255, 255, 5);
 | 
					      rgblight_sethsv_at(0, 255, 255, 5);
 | 
				
			||||||
      rgblight_sethsv_at(0, 255, 255, 10);
 | 
					      rgblight_sethsv_at(0, 255, 255, 10);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      rgblight_sethsv_default_helper(5);
 | 
					      rgblight_sethsv_default_helper(5);
 | 
				
			||||||
      rgblight_sethsv_default_helper(10);
 | 
					      rgblight_sethsv_default_helper(10);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) {
 | 
					    if (current_mod & MODS_CTRL_MASK || current_osm & MODS_CTRL_MASK) {
 | 
				
			||||||
      rgblight_sethsv_at(51, 255, 255, 6);
 | 
					      rgblight_sethsv_at(51, 255, 255, 6);
 | 
				
			||||||
      rgblight_sethsv_at(51, 255, 255, 9);
 | 
					      rgblight_sethsv_at(51, 255, 255, 9);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      rgblight_sethsv_default_helper(6);
 | 
					      rgblight_sethsv_default_helper(6);
 | 
				
			||||||
      rgblight_sethsv_default_helper(9);
 | 
					      rgblight_sethsv_default_helper(9);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) {
 | 
					    if (current_mod & MODS_GUI_MASK || current_osm & MODS_GUI_MASK) {
 | 
				
			||||||
      rgblight_sethsv_at(120, 255, 255, 7);
 | 
					      rgblight_sethsv_at(120, 255, 255, 7);
 | 
				
			||||||
      rgblight_sethsv_at(120, 255, 255, 8);
 | 
					      rgblight_sethsv_at(120, 255, 255, 8);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
| 
						 | 
					@ -146,5 +171,7 @@ void matrix_scan_keymap (void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,3 +7,4 @@ TAP_DANCE_ENABLE  = no
 | 
				
			||||||
RGBLIGHT_ENABLE   = yes
 | 
					RGBLIGHT_ENABLE   = yes
 | 
				
			||||||
AUDIO_ENABLE      = yes
 | 
					AUDIO_ENABLE      = yes
 | 
				
			||||||
NKRO_ENABLE       = yes
 | 
					NKRO_ENABLE       = yes
 | 
				
			||||||
 | 
					INDICATOR_LIGHTS  = yes
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,6 @@ extern keymap_config_t keymap_config;
 | 
				
			||||||
#define DIABLO   TG(_DIABLO)
 | 
					#define DIABLO   TG(_DIABLO)
 | 
				
			||||||
#define GAMEPAD  TG(_GAMEPAD)
 | 
					#define GAMEPAD  TG(_GAMEPAD)
 | 
				
			||||||
#define MEDIA    TT(_MEDIA)
 | 
					#define MEDIA    TT(_MEDIA)
 | 
				
			||||||
#define COVECUBE TG(_COVECUBE)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//enum more_custom_keycodes {
 | 
					//enum more_custom_keycodes {
 | 
				
			||||||
| 
						 | 
					@ -28,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_NUMLOCK] = LAYOUT_ortho_5x7(
 | 
					  [_NUMLOCK] = LAYOUT_ortho_5x7(
 | 
				
			||||||
      LMACRO,  DIABLO,  GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,
 | 
					      LMACRO,  DIABLO,  GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,
 | 
				
			||||||
      MEDIA,   KC_CALC, COVECUBE,KC_P7,   KC_P8,   KC_P9,   KC_PAST,
 | 
					      MEDIA,   KC_CALC, XXXXXXX, KC_P7,   KC_P8,   KC_P9,   KC_PAST,
 | 
				
			||||||
      KC_HOME, KC_DEL,  KC_PGUP, KC_P4,   KC_P5,   KC_P6,   KC_PMNS,
 | 
					      KC_HOME, KC_DEL,  KC_PGUP, KC_P4,   KC_P5,   KC_P6,   KC_PMNS,
 | 
				
			||||||
      KC_END,  KC_UP,   KC_PGDN, KC_P1,   KC_P2,   KC_P3,   KC_PPLS,
 | 
					      KC_END,  KC_UP,   KC_PGDN, KC_P1,   KC_P2,   KC_P3,   KC_PPLS,
 | 
				
			||||||
      KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_COLN, KC_PENT
 | 
					      KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_COLN, KC_PENT
 | 
				
			||||||
| 
						 | 
					@ -58,13 +57,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
      KC_SALT,     KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM,      XXXXXXX,     KC_PENT
 | 
					      KC_SALT,     KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM,      XXXXXXX,     KC_PENT
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_COVECUBE] = LAYOUT_ortho_5x7(
 | 
					 | 
				
			||||||
      XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,     XXXXXXX,
 | 
					 | 
				
			||||||
      XXXXXXX,     XXXXXXX,     COVECUBE,    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
 | 
					 | 
				
			||||||
  ),
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  [_MEDIA] = LAYOUT_ortho_5x7(
 | 
					  [_MEDIA] = LAYOUT_ortho_5x7(
 | 
				
			||||||
      KC_MAKE, KC_RESET,MU_TOG,  AU_ON,   AU_OFF,  CK_TOGG, RGB_SAD,
 | 
					      KC_MAKE, KC_RESET,MU_TOG,  AU_ON,   AU_OFF,  CK_TOGG, RGB_SAD,
 | 
				
			||||||
| 
						 | 
					@ -77,13 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void matrix_init_keymap(void) {
 | 
					 | 
				
			||||||
  DDRD &= ~(1<<5);
 | 
					 | 
				
			||||||
  PORTD &= ~(1<<5);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  DDRB &= ~(1<<0);
 | 
					 | 
				
			||||||
  PORTB &= ~(1<<0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 | 
					bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,11 +57,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
  [_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
 | 
					  [_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
        // left hand                                                                       // right hand
 | 
					        // left hand                                                                       // right hand
 | 
				
			||||||
             KC_EQL,  ________________NUMBER_LEFT________________, OSL(_MOUS),           OSL(_MOUS), ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
					             KC_EQL,  ________________NUMBER_LEFT________________, _______,                 _______, ________________NUMBER_RIGHT_______________, KC_MINS,
 | 
				
			||||||
             KC_TAB,  _________________QWERTY_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS,
 | 
					             KC_TAB,  _________________QWERTY_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS,
 | 
				
			||||||
             KC_C1R3, _________________QWERTY_L2_________________,                                   _________________QWERTY_R2_________________, KC_QUOT,
 | 
					             KC_C1R3, _________________QWERTY_L2_________________,                                   _________________QWERTY_R2_________________, KC_QUOT,
 | 
				
			||||||
             KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF,
 | 
					             KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF,
 | 
				
			||||||
    LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB),
 | 
					             KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
 | 
				
			||||||
                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
					                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
/* Keymap 0: COLEMAK layer
 | 
					/* Keymap 0: COLEMAK layer
 | 
				
			||||||
| 
						 | 
					@ -89,11 +89,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
// Otherwise, it needs KC_*
 | 
					// Otherwise, it needs KC_*
 | 
				
			||||||
  [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper(
 | 
					  [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
        // left hand                                                                       // right hand
 | 
					        // left hand                                                                       // right hand
 | 
				
			||||||
             KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    OSL(_MOUS),           OSL(_MOUS), KC_6,    KC_7,    KC_8,    KC_9,     KC_0,   KC_MINS,
 | 
					             KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______,                 _______, KC_6,    KC_7,    KC_8,    KC_9,     KC_0,   KC_MINS,
 | 
				
			||||||
             KC_TAB,  _________________COLEMAK_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS,
 | 
					             KC_TAB,  _________________COLEMAK_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS,
 | 
				
			||||||
             KC_C1R3, _________________COLEMAK_L2________________,                                   _________________COLEMAK_R2________________, KC_QUOT,
 | 
					             KC_C1R3, _________________COLEMAK_L2________________,                                   _________________COLEMAK_R2________________, KC_QUOT,
 | 
				
			||||||
             KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF,
 | 
					             KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF,
 | 
				
			||||||
    LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB),
 | 
					             KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
 | 
				
			||||||
                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
					                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
/* Keymap 0: DVORAK Layout
 | 
					/* Keymap 0: DVORAK Layout
 | 
				
			||||||
| 
						 | 
					@ -121,11 +121,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
// Otherwise, it needs KC_*
 | 
					// Otherwise, it needs KC_*
 | 
				
			||||||
  [_DVORAK] = LAYOUT_ergodox_pretty_wrapper(
 | 
					  [_DVORAK] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
        // left hand        // right hand
 | 
					        // left hand        // right hand
 | 
				
			||||||
             KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    OSL(_MOUS),           OSL(_MOUS), KC_6,    KC_7,    KC_8,    KC_9,     KC_0,   KC_BSLS,
 | 
					             KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______,                 _______, KC_6,    KC_7,    KC_8,    KC_9,     KC_0,   KC_BSLS,
 | 
				
			||||||
             KC_TAB,  _________________DVORAK_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH,
 | 
					             KC_TAB,  _________________DVORAK_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH,
 | 
				
			||||||
             KC_C1R3, _________________DVORAK_L2_________________,                                   _________________DVORAK_R2_________________, KC_MINS,
 | 
					             KC_C1R3, _________________DVORAK_L2_________________,                                   _________________DVORAK_R2_________________, KC_MINS,
 | 
				
			||||||
             KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF,
 | 
					             KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF,
 | 
				
			||||||
    LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB),
 | 
					             KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
 | 
				
			||||||
                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
					                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
/* Keymap 0: WORKMAN layer
 | 
					/* Keymap 0: WORKMAN layer
 | 
				
			||||||
| 
						 | 
					@ -153,16 +153,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
// Otherwise, it needs KC_*
 | 
					// Otherwise, it needs KC_*
 | 
				
			||||||
  [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper(
 | 
					  [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
        // left hand
 | 
					        // left hand
 | 
				
			||||||
             KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    OSL(_MOUS),           OSL(_MOUS), KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
 | 
					             KC_EQL,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______,                 _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
 | 
				
			||||||
             KC_TAB,  _________________WORKMAN_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS,
 | 
					             KC_TAB,  _________________WORKMAN_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS,
 | 
				
			||||||
             KC_C1R3, _________________WORKMAN_L2________________,                                   _________________WORKMAN_R2________________, KC_QUOT,
 | 
					             KC_C1R3, _________________WORKMAN_L2________________,                                   _________________WORKMAN_R2________________, KC_QUOT,
 | 
				
			||||||
             KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF,
 | 
					             KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF,
 | 
				
			||||||
    LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB),
 | 
					             KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
 | 
				
			||||||
                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
					                                                    __________________ERGODOX_THUMB_CLUSTER_____________________
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Reverts OSM(Shift) to normal Shifts. However, may not need since we fixed the issue with RDP (LOCAL RESOURCES)
 | 
					// Reverts OSM(Shift) to normal Shifts. However, may not need since we fixed the issue with RDP (LOCAL RESOURCES)
 | 
				
			||||||
  [_MODS] = LAYOUT_ergodox_pretty(
 | 
					  [_MODS] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
					             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
					             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
             _______, _______, _______, _______, _______, _______,                                   _______, _______, _______, _______, _______, _______,
 | 
					             _______, _______, _______, _______, _______, _______,                                   _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
| 
						 | 
					@ -173,37 +173,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
                                                 _______, _______, _______,                 _______, _______, _______
 | 
					                                                 _______, _______, _______,                 _______, _______, _______
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Keymap 3: Symbol Layer
 | 
					 | 
				
			||||||
*
 | 
					 | 
				
			||||||
* ,--------------------------------------------------.           ,--------------------------------------------------.
 | 
					 | 
				
			||||||
* |   ESC  |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  | F10  |   F11  |
 | 
					 | 
				
			||||||
* |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 | 
					 | 
				
			||||||
* |  RESET |   !  |   @  |  {   |   }  |  |   |      |           |      |  +   |   7  |   8  |   9  |  *   |   F12  |
 | 
					 | 
				
			||||||
* |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 | 
					 | 
				
			||||||
* |  MAKE  |   #  |   $  |  (   |   )  |  `   |------|           |------|  -   |   4  |   5  |   6  |  /   | PrtSc  |
 | 
					 | 
				
			||||||
* |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 | 
					 | 
				
			||||||
* |  VRSN  |   %  |   ^  |  [   |   ]  |  ~   |      |           |      | NUM  |   1  |   2  |   3  |  =   |  PAUSE |
 | 
					 | 
				
			||||||
* `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 | 
					 | 
				
			||||||
*   |  LT0 |   &  |   *  |  :   |   ;  |                                       |      |   0  | NUM. | ENT  |  ENT |
 | 
					 | 
				
			||||||
*   `----------------------------------'                                       `----------------------------------'
 | 
					 | 
				
			||||||
*                                        ,-------------.       ,-------------.
 | 
					 | 
				
			||||||
*                                        | RGBM | RED  |       | OFF  | SOLID|
 | 
					 | 
				
			||||||
*                                 ,------|------|------|       |------+------+------.
 | 
					 | 
				
			||||||
*                                 |      |      | GREEN|       |      |      |      |
 | 
					 | 
				
			||||||
*                                 | RGB  | RGB  |------|       |------| NUM0 | NUME |
 | 
					 | 
				
			||||||
*                                 | DARK |BRITE | BLUE |       |      |      |      |
 | 
					 | 
				
			||||||
*                                 `--------------------'       `--------------------'
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
  [_SYMB] = LAYOUT_ergodox_pretty(
 | 
					 | 
				
			||||||
             EPRM,    KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_QWERTY,             KC_QWERTY, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
 | 
					 | 
				
			||||||
             KC_RST,  KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_COLEMAK,           KC_WORKMAN, KC_PPLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PAST, KC_F12,
 | 
					 | 
				
			||||||
             KC_MAKE, KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRAVE,                                  KC_PMNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PSLS, KC_PSCREEN,
 | 
					 | 
				
			||||||
             VRSN,    KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_DVORAK,            TG(_MODS), KC_NLCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_PEQL, KC_PAUSE,
 | 
					 | 
				
			||||||
             KC_TRNS, KC_AMPR, KC_ASTR, KC_COLN, KC_SCLN,                                                     KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, KC_TRNS,
 | 
					 | 
				
			||||||
                                                          RGB_SMOD, KC_RGB_T,               KC_TRNS, KC_TRNS,
 | 
					 | 
				
			||||||
                                                                    RGB_HUI,                KC_TRNS,
 | 
					 | 
				
			||||||
                                                 RGB_M_R, RGB_M_SW, RGB_HUD,                KC_PDOT, KC_KP_0, KC_PENT
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Keymap 4: Customized Overwatch Layout
 | 
					/* Keymap 4: Customized Overwatch Layout
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -226,7 +195,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 *                                 |      |      |  H   |       |      |      |      |
 | 
					 *                                 |      |      |  H   |       |      |      |      |
 | 
				
			||||||
 *                                 `--------------------'       `--------------------'
 | 
					 *                                 `--------------------'       `--------------------'
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
  [_GAMEPAD] = LAYOUT_ergodox_pretty(
 | 
					  [_GAMEPAD] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
             KC_ESC,  KC_TRNS, KC_TRNS, KC_TRNS, HYPR(KC_D), HYPR(KC_Q), HYPR(KC_GRV),      KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NO,   KC_NO,
 | 
					             KC_ESC,  KC_TRNS, KC_TRNS, KC_TRNS, HYPR(KC_D), HYPR(KC_Q), HYPR(KC_GRV),      KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NO,   KC_NO,
 | 
				
			||||||
             KC_F1,   KC_K,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
					             KC_F1,   KC_K,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
				
			||||||
             KC_TAB,  KC_G,    KC_A,    KC_S,    KC_D,    KC_F,                                      KC_I,    KC_O,    KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
					             KC_TAB,  KC_G,    KC_A,    KC_S,    KC_D,    KC_F,                                      KC_I,    KC_O,    KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
				
			||||||
| 
						 | 
					@ -258,7 +227,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 *                                 | SHIFT| ALT  | 0MAC |       |      |      |      |
 | 
					 *                                 | SHIFT| ALT  | 0MAC |       |      |      |      |
 | 
				
			||||||
 *                                 `--------------------'       `--------------------'
 | 
					 *                                 `--------------------'       `--------------------'
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
  [_DIABLO] = LAYOUT_ergodox_pretty(
 | 
					  [_DIABLO] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
             KC_ESC,  KC_V,    KC_D,    KC_LALT, KC_NO,   KC_NO,   KC_NO,                   KC_TRNS, KC_F9,   KC_F10,   KC_F11,  KC_F12,  KC_NO,   KC_NO,
 | 
					             KC_ESC,  KC_V,    KC_D,    KC_LALT, KC_NO,   KC_NO,   KC_NO,                   KC_TRNS, KC_F9,   KC_F10,   KC_F11,  KC_F12,  KC_NO,   KC_NO,
 | 
				
			||||||
             KC_TAB,  KC_S,    KC_I,    KC_F,    KC_M,    KC_T,    KC_TRNS,                 KC_TRNS, KC_NO,   KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
					             KC_TAB,  KC_S,    KC_I,    KC_F,    KC_M,    KC_T,    KC_TRNS,                 KC_TRNS, KC_NO,   KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
				
			||||||
             KC_Q,    KC_1,    KC_2,    KC_3,    KC_4,    KC_G,                                      KC_NO,   KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
					             KC_Q,    KC_1,    KC_2,    KC_3,    KC_4,    KC_G,                                      KC_NO,   KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
				
			||||||
| 
						 | 
					@ -269,36 +238,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
                          SFT_T(KC_SPACE),  ALT_T(KC_Q),   KC_DIABLO_CLEAR,                 KC_PGDN, KC_DEL,  KC_ENT
 | 
					                          SFT_T(KC_SPACE),  ALT_T(KC_Q),   KC_DIABLO_CLEAR,                 KC_PGDN, KC_DEL,  KC_ENT
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Keymap 4: Media and mouse keys
 | 
					  [_LOWER] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
 *
 | 
					             _______, _________________FUNC_LEFT_________________, _______,                 _______, _________________FUNC_RIGHT________________, KC_F11,
 | 
				
			||||||
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 | 
					             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
 | 
					             _______, _______, _______, _______, _______, _______,                                   _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
				
			||||||
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 | 
					             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
 * |        |      | MsUp |      |      |      |      |           |      |      |      |      |      |      |        |
 | 
					             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
				
			||||||
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 | 
					                                                          _______, _______,                 _______, _______,
 | 
				
			||||||
 * |        |MsLeft|MsDown|MsRght|      |      |------|           |------|      |      | Acc0 | Acc1 | Acc2 |        |
 | 
					                                                                   _______,                 _______,
 | 
				
			||||||
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 | 
					                                                 _______, _______, _______,                 _______, _______, _______
 | 
				
			||||||
 * |        | Acc0 | Acc1 | Acc2 |      |      |      |           |      |      | Mute |VolDn |VolUp |      |        |
 | 
					            ),
 | 
				
			||||||
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 | 
					
 | 
				
			||||||
 *   |      |      |      |      |      |                                       | Play | Stop |      |      |      |
 | 
					  [_RAISE] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
 *   `----------------------------------'                                       `----------------------------------'
 | 
					             _______, _________________FUNC_LEFT_________________, _______,                 _______, _________________FUNC_RIGHT________________, _______,
 | 
				
			||||||
 *                                        ,-------------.       ,-------------.
 | 
					             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
				
			||||||
 *                                        |      |      |       |      |      |
 | 
					             _______, _______, _______, _______, _______, _______,                                   _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
				
			||||||
 *                                 ,------|------|------|       |------+------+------.
 | 
					             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, KC_RSFT,
 | 
				
			||||||
 *                                 |      |      | MWUp |       |      |      |      |
 | 
					             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
				
			||||||
 *                                 | Lclk | Rclk |------|       |------| MBn4 | MBn5 |
 | 
					                                                          _______, _______,                 _______, _______,
 | 
				
			||||||
 *                                 |      |      | MWDn |       | Mclk |      |      |
 | 
					                                                                   _______,                 _______,
 | 
				
			||||||
 *                                 `--------------------'       `--------------------'
 | 
					                                                 _______, _______, _______,                 _______, _______, _______
 | 
				
			||||||
 */
 | 
					            ),
 | 
				
			||||||
  [_MOUS] = LAYOUT_ergodox_pretty(
 | 
					
 | 
				
			||||||
             KC_NO,   KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_TRNS,                 KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
					  [_ADJUST] = LAYOUT_ergodox_pretty_wrapper(
 | 
				
			||||||
             KC_NO,   KC_NO,   KC_MS_U, KC_NO,   KC_NO,   KC_NO,   KC_TRNS,                 KC_TRNS, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
					             KC_MAKE, _______, _______, _______, _______, _______, _______,                 _______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
 | 
				
			||||||
             KC_NO,   KC_MS_L, KC_MS_D, KC_MS_R, KC_NO,   KC_NO,                                     KC_NO,   KC_ACL0, KC_ACL1, KC_ACL2, KC_NO,   KC_NO,
 | 
					             VRSN,    RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, _______,                 _______, _______, _______, _______, _______, _______, EPRM,
 | 
				
			||||||
             KC_NO,   KC_ACL0, KC_ACL1, KC_ACL2, KC_NO,   KC_NO,   KC_TRNS,                 KC_TRNS, KC_NO,   KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   KC_NO,
 | 
					             RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON,   AU_OFF,  AG_NORM,                                   AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS),
 | 
				
			||||||
             KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,                                                       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
					             TG(_MODS),RGB_SMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______,                 _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
 | 
				
			||||||
                                                          KC_NO,   KC_NO,                   KC_NO,   KC_NO,
 | 
					             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
				
			||||||
                                                                   KC_WH_U,                 KC_NO,
 | 
					                                                          _______, _______,                 _______, _______,
 | 
				
			||||||
                                                 KC_BTN1, KC_BTN2, KC_WH_D,                 KC_BTN3, KC_BTN4, KC_BTN5
 | 
					                                                                   _______,                 _______,
 | 
				
			||||||
 | 
					                                                 _______, _______, _______,                 _______, _______, _______
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef AUDIO_ENABLE
 | 
					#ifdef AUDIO_ENABLE
 | 
				
			||||||
#define AUDIO_CLICKY
 | 
					#define AUDIO_CLICKY
 | 
				
			||||||
#define AUDIO_CLICKY_ON
 | 
					 | 
				
			||||||
#define STARTUP_SONG SONG(E1M1_DOOM)
 | 
					#define STARTUP_SONG SONG(E1M1_DOOM)
 | 
				
			||||||
#define GOODBYE_SONG  SONG(SONIC_RING)
 | 
					#define GOODBYE_SONG  SONG(SONIC_RING)
 | 
				
			||||||
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
 | 
					#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
 | 
				
			||||||
| 
						 | 
					@ -43,6 +42,8 @@
 | 
				
			||||||
#define IGNORE_MOD_TAP_INTERRUPT
 | 
					#define IGNORE_MOD_TAP_INTERRUPT
 | 
				
			||||||
#undef PERMISSIVE_HOLD
 | 
					#undef PERMISSIVE_HOLD
 | 
				
			||||||
#undef PREVENT_STUCK_MODIFIERS
 | 
					#undef PREVENT_STUCK_MODIFIERS
 | 
				
			||||||
 | 
					#define TAPPING_FORCE_HOLD
 | 
				
			||||||
 | 
					//#define RETRO_TAPPING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define FORCE_NKRO
 | 
					#define FORCE_NKRO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,7 +54,7 @@
 | 
				
			||||||
#ifdef TAPPING_TERM
 | 
					#ifdef TAPPING_TERM
 | 
				
			||||||
#undef TAPPING_TERM
 | 
					#undef TAPPING_TERM
 | 
				
			||||||
#endif // TAPPING_TERM
 | 
					#endif // TAPPING_TERM
 | 
				
			||||||
#define TAPPING_TERM 176
 | 
					#define TAPPING_TERM 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Disable action_get_macro and fn_actions, since we don't use these
 | 
					// Disable action_get_macro and fn_actions, since we don't use these
 | 
				
			||||||
| 
						 | 
					@ -61,7 +62,7 @@
 | 
				
			||||||
#ifndef NO_DEBUG
 | 
					#ifndef NO_DEBUG
 | 
				
			||||||
#define NO_DEBUG
 | 
					#define NO_DEBUG
 | 
				
			||||||
#endif // !NO_DEBUG
 | 
					#endif // !NO_DEBUG
 | 
				
			||||||
#ifndef NO_PRINT
 | 
					#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
 | 
				
			||||||
#define NO_PRINT
 | 
					#define NO_PRINT
 | 
				
			||||||
#endif // !NO_PRINT
 | 
					#endif // !NO_PRINT
 | 
				
			||||||
#define NO_ACTION_MACRO
 | 
					#define NO_ACTION_MACRO
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,10 +38,6 @@ float tone_paste[][2]           = SONG(SCROLL_LOCK_OFF_SOUND);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static uint16_t copy_paste_timer;
 | 
					static uint16_t copy_paste_timer;
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
bool rgb_layer_change = true;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
userspace_config_t userspace_config;
 | 
					userspace_config_t userspace_config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Helper Functions
 | 
					//  Helper Functions
 | 
				
			||||||
| 
						 | 
					@ -164,31 +160,42 @@ void led_set_keymap(uint8_t usb_led) {}
 | 
				
			||||||
// call the keymap's init function
 | 
					// call the keymap's init function
 | 
				
			||||||
void matrix_init_user(void) {
 | 
					void matrix_init_user(void) {
 | 
				
			||||||
  uint8_t default_layer = eeconfig_read_default_layer();
 | 
					  uint8_t default_layer = eeconfig_read_default_layer();
 | 
				
			||||||
 | 
					  userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef BOOTLOADER_CATERINA
 | 
				
			||||||
  rgblight_enable();
 | 
					  DDRD &= ~(1<<5);
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					  PORTD &= ~(1<<5);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (default_layer & (1UL << _COLEMAK)) {
 | 
					  DDRB &= ~(1<<0);
 | 
				
			||||||
 | 
					  PORTB &= ~(1<<0);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    rgblight_sethsv_magenta();
 | 
					    rgblight_enable();
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
  } else if (default_layer & (1UL << _DVORAK)) {
 | 
					 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    rgblight_sethsv_green();
 | 
					 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
  } else if (default_layer & (1UL << _WORKMAN)) {
 | 
					 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    rgblight_sethsv_goldenrod();
 | 
					 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    rgblight_sethsv_teal();
 | 
					 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					    if (default_layer & (1UL << _COLEMAK)) {
 | 
				
			||||||
 | 
					  #ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					      rgblight_sethsv_magenta();
 | 
				
			||||||
 | 
					  #endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					    } else if (default_layer & (1UL << _DVORAK)) {
 | 
				
			||||||
 | 
					  #ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					      rgblight_sethsv_green();
 | 
				
			||||||
 | 
					  #endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					    } else if (default_layer & (1UL << _WORKMAN)) {
 | 
				
			||||||
 | 
					  #ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					      rgblight_sethsv_goldenrod();
 | 
				
			||||||
 | 
					  #endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					  #ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					      rgblight_sethsv_teal();
 | 
				
			||||||
 | 
					  #endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
 | 
					#ifdef AUDIO_CLICKY
 | 
				
			||||||
  clicky_enable = userspace_config.clicky_enable;
 | 
					  clicky_enable = userspace_config.clicky_enable;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) )
 | 
					#if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) )
 | 
				
			||||||
	set_unicode_input_mode(UC_WINC);
 | 
						set_unicode_input_mode(UC_WINC);
 | 
				
			||||||
| 
						 | 
					@ -364,8 +371,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
  case KC_RGB_T:  // This allows me to use underglow as layer indication, or as normal
 | 
					  case KC_RGB_T:  // This allows me to use underglow as layer indication, or as normal
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (record->event.pressed) {
 | 
					    if (record->event.pressed) {
 | 
				
			||||||
      rgb_layer_change = !rgb_layer_change;
 | 
					      userspace_config.rgb_layer_change ^= 1;
 | 
				
			||||||
      if (rgb_layer_change) {
 | 
					      eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
 | 
				
			||||||
 | 
					      if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
        layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
 | 
					        layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -374,7 +382,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
  case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
 | 
					  case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
 | 
				
			||||||
    if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
 | 
					    if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
 | 
				
			||||||
      rgb_layer_change = false;
 | 
					      userspace_config.rgb_layer_change = false;
 | 
				
			||||||
 | 
					      eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return true; break;
 | 
					    return true; break;
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
| 
						 | 
					@ -403,8 +412,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case CLICKY_TOGGLE:
 | 
					  case CLICKY_TOGGLE:
 | 
				
			||||||
 | 
					#ifdef AUDIO_CLICKY
 | 
				
			||||||
    userspace_config.clicky_enable = clicky_enable;
 | 
					    userspace_config.clicky_enable = clicky_enable;
 | 
				
			||||||
    eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
 | 
					    eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
#ifdef UNICODE_ENABLE
 | 
					#ifdef UNICODE_ENABLE
 | 
				
			||||||
  case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻
 | 
					  case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻
 | 
				
			||||||
| 
						 | 
					@ -445,123 +456,104 @@ uint32_t layer_state_set_user(uint32_t state) {
 | 
				
			||||||
  state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
 | 
					  state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  switch (biton32(state)) {
 | 
					  switch (biton32(state)) {
 | 
				
			||||||
  case _NAV:
 | 
					 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					 | 
				
			||||||
      rgblight_sethsv_blue();
 | 
					 | 
				
			||||||
      rgblight_mode(1);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case _SYMB:
 | 
					 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					 | 
				
			||||||
      rgblight_sethsv_blue();
 | 
					 | 
				
			||||||
      rgblight_mode(2);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case _MOUS:
 | 
					 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					 | 
				
			||||||
      rgblight_sethsv_yellow();
 | 
					 | 
				
			||||||
      rgblight_mode(1);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case _MACROS:
 | 
					  case _MACROS:
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					    if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
      rgblight_sethsv_orange();
 | 
					      rgblight_sethsv_orange();
 | 
				
			||||||
      userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
 | 
					      userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case _MEDIA:
 | 
					  case _MEDIA:
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					    if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
      rgblight_sethsv_chartreuse();
 | 
					      rgblight_sethsv_chartreuse();
 | 
				
			||||||
      rgblight_mode(22);
 | 
					      rgblight_mode(22);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case _GAMEPAD:
 | 
					  case _GAMEPAD:
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					    if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
      rgblight_sethsv_orange();
 | 
					      rgblight_sethsv_orange();
 | 
				
			||||||
      rgblight_mode(17);
 | 
					      rgblight_mode(17);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case _DIABLO:
 | 
					  case _DIABLO:
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					    if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
      rgblight_sethsv_red();
 | 
					      rgblight_sethsv_red();
 | 
				
			||||||
      rgblight_mode(5);
 | 
					      rgblight_mode(5);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case _RAISE:
 | 
					  case _RAISE:
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					    if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
      rgblight_sethsv_yellow();
 | 
					      rgblight_sethsv_yellow();
 | 
				
			||||||
      rgblight_mode(5);
 | 
					      rgblight_mode(5);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case _LOWER:
 | 
					  case _LOWER:
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					    if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
      rgblight_sethsv_orange();
 | 
					      rgblight_sethsv_orange();
 | 
				
			||||||
      rgblight_mode(5);
 | 
					      rgblight_mode(5);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case _ADJUST:
 | 
					  case _ADJUST:
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					    if (userspace_config.rgb_layer_change) {
 | 
				
			||||||
      rgblight_sethsv_red();
 | 
					      rgblight_sethsv_red();
 | 
				
			||||||
      rgblight_mode(23);
 | 
					      rgblight_mode(23);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
    break;
 | 
					
 | 
				
			||||||
  case _COVECUBE:
 | 
					 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    if (rgb_layer_change) {
 | 
					 | 
				
			||||||
      rgblight_sethsv_green();
 | 
					 | 
				
			||||||
      rgblight_mode(2);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  default: //  for any other layers, or the default layer
 | 
					  default: //  for any other layers, or the default layer
 | 
				
			||||||
    if (default_layer & (1UL << _COLEMAK)) {
 | 
					    if (default_layer & (1UL << _COLEMAK)) {
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
      if (rgb_layer_change) { rgblight_sethsv_magenta(); }
 | 
					      if (userspace_config.rgb_layer_change) { rgblight_sethsv_magenta(); }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else if (default_layer & (1UL << _DVORAK)) {
 | 
					    else if (default_layer & (1UL << _DVORAK)) {
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
      if (rgb_layer_change) { rgblight_sethsv_green(); }
 | 
					      if (userspace_config.rgb_layer_change) { rgblight_sethsv_green(); }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else if (default_layer & (1UL << _WORKMAN)) {
 | 
					    else if (default_layer & (1UL << _WORKMAN)) {
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
      if (rgb_layer_change) { rgblight_sethsv_goldenrod(); }
 | 
					      if (userspace_config.rgb_layer_change) { rgblight_sethsv_goldenrod(); }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
      if (rgb_layer_change) { rgblight_sethsv_teal(); }
 | 
					      if (userspace_config.rgb_layer_change) { rgblight_sethsv_teal(); }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe
 | 
					    if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
      if (rgb_layer_change) { rgblight_mode(2); }
 | 
					      if (userspace_config.rgb_layer_change) { rgblight_mode(2); }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    } else {                       // otherwise, stay solid
 | 
					    } else {                       // otherwise, stay solid
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
      if (rgb_layer_change) { rgblight_mode(1); }
 | 
					      if (userspace_config.rgb_layer_change) { rgblight_mode(1); }
 | 
				
			||||||
#endif // RGBLIGHT_ENABLE
 | 
					#endif // RGBLIGHT_ENABLE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,12 +27,8 @@ enum userspace_layers {
 | 
				
			||||||
  _DVORAK,
 | 
					  _DVORAK,
 | 
				
			||||||
  _WORKMAN,
 | 
					  _WORKMAN,
 | 
				
			||||||
  _MODS,
 | 
					  _MODS,
 | 
				
			||||||
  _NAV,
 | 
					 | 
				
			||||||
  _COVECUBE,
 | 
					 | 
				
			||||||
  _SYMB,
 | 
					 | 
				
			||||||
  _GAMEPAD,
 | 
					  _GAMEPAD,
 | 
				
			||||||
  _DIABLO,
 | 
					  _DIABLO,
 | 
				
			||||||
  _MOUS,
 | 
					 | 
				
			||||||
  _MACROS,
 | 
					  _MACROS,
 | 
				
			||||||
  _MEDIA,
 | 
					  _MEDIA,
 | 
				
			||||||
  _LOWER,
 | 
					  _LOWER,
 | 
				
			||||||
| 
						 | 
					@ -49,7 +45,6 @@ enum userspace_layers {
 | 
				
			||||||
// RGB color codes are no longer located here anymore.  Instead, you will want to
 | 
					// RGB color codes are no longer located here anymore.  Instead, you will want to
 | 
				
			||||||
// head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h
 | 
					// head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern bool rgb_layer_change;
 | 
					 | 
				
			||||||
extern bool clicky_enable;
 | 
					extern bool clicky_enable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef RGBLIGHT_ENABLE
 | 
					#ifdef RGBLIGHT_ENABLE
 | 
				
			||||||
| 
						 | 
					@ -59,10 +54,11 @@ void rgblight_sethsv_default_helper(uint8_t index);
 | 
				
			||||||
#define EECONFIG_USERSPACE (uint8_t *)20
 | 
					#define EECONFIG_USERSPACE (uint8_t *)20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef union {
 | 
					typedef union {
 | 
				
			||||||
  uint32_t raw;
 | 
					  uint8_t raw;
 | 
				
			||||||
  struct {
 | 
					  struct {
 | 
				
			||||||
    bool     clicky_enable  :1;
 | 
					    bool     clicky_enable    :1;
 | 
				
			||||||
    bool     is_overwatch   :1;
 | 
					    bool     rgb_layer_change :1;
 | 
				
			||||||
 | 
					    bool     is_overwatch     :1;
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
} userspace_config_t;
 | 
					} userspace_config_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -166,10 +162,10 @@ enum {
 | 
				
			||||||
#define LAYOUT KEYMAP
 | 
					#define LAYOUT KEYMAP
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define LAYOUT_ergodox_wrapper(...)   LAYOUT_ergodox(__VA_ARGS__)
 | 
					#define LAYOUT_ergodox_wrapper(...)          LAYOUT_ergodox(__VA_ARGS__)
 | 
				
			||||||
#define LAYOUT_ergodox_pretty_wrapper(...)   LAYOUT_ergodox_pretty(__VA_ARGS__)
 | 
					#define LAYOUT_ergodox_pretty_wrapper(...)   LAYOUT_ergodox_pretty(__VA_ARGS__)
 | 
				
			||||||
#define KEYMAP_wrapper(...)           LAYOUT(__VA_ARGS__)
 | 
					#define KEYMAP_wrapper(...)                  LAYOUT(__VA_ARGS__)
 | 
				
			||||||
#define LAYOUT_wrapper(...)           LAYOUT(__VA_ARGS__)
 | 
					#define LAYOUT_wrapper(...)                  LAYOUT(__VA_ARGS__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Blocks for each of the four major keyboard layouts
 | 
					// Blocks for each of the four major keyboard layouts
 | 
				
			||||||
| 
						 | 
					@ -236,6 +232,8 @@ enum {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ________________NUMBER_LEFT________________       KC_1,    KC_2,    KC_3,    KC_4,    KC_5
 | 
					#define ________________NUMBER_LEFT________________       KC_1,    KC_2,    KC_3,    KC_4,    KC_5
 | 
				
			||||||
#define ________________NUMBER_RIGHT_______________       KC_6,    KC_7,    KC_8,    KC_9,    KC_0
 | 
					#define ________________NUMBER_RIGHT_______________       KC_6,    KC_7,    KC_8,    KC_9,    KC_0
 | 
				
			||||||
 | 
					#define _________________FUNC_LEFT_________________       KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5
 | 
				
			||||||
 | 
					#define _________________FUNC_RIGHT________________       KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN),
 | 
					// Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN),
 | 
				
			||||||
// this allows us to quickly modify the bottom row for all of the layouts
 | 
					// this allows us to quickly modify the bottom row for all of the layouts
 | 
				
			||||||
| 
						 | 
					@ -245,9 +243,9 @@ enum {
 | 
				
			||||||
#define ___________ERGODOX_BOTTOM_RIGHT____________       KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
 | 
					#define ___________ERGODOX_BOTTOM_RIGHT____________       KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define __________________ERGODOX_THUMB_CLUSTER_____________________       ALT_T(KC_APP), KC_LGUI,                 KC_RGUI, CTL_T(KC_ESCAPE), \
 | 
					#define __________________ERGODOX_THUMB_CLUSTER_____________________           ALT_T(KC_APP), KC_LGUI,                 KC_RGUI, CTL_T(KC_ESCAPE), \
 | 
				
			||||||
                                                                                              KC_HOME,                 KC_PGUP, \
 | 
					                                                                                              KC_HOME,                 KC_PGUP, \
 | 
				
			||||||
                                                                            KC_SPACE,KC_BSPC, KC_END,                  KC_PGDN, KC_DEL,  KC_ENTER
 | 
					                                                                LT(_LOWER, KC_SPACE),KC_BSPC, KC_END,                  KC_PGDN, KC_DEL,  LT(_RAISE, KC_ENTER)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // !USERSPACE
 | 
					#endif // !USERSPACE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,7 @@ This tells us where in the EEPROM that the data structure is located, and this s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```c
 | 
					```c
 | 
				
			||||||
typedef union {
 | 
					typedef union {
 | 
				
			||||||
  uint32_t raw;
 | 
					  uint8_t raw;
 | 
				
			||||||
  struct {
 | 
					  struct {
 | 
				
			||||||
    bool     clicky_enable  :1;
 | 
					    bool     clicky_enable  :1;
 | 
				
			||||||
    bool     is_overwatch   :1;
 | 
					    bool     is_overwatch   :1;
 | 
				
			||||||
| 
						 | 
					@ -174,3 +174,23 @@ Then, in your C file, you want to add: `userspace_config_t userspace_config;`, a
 | 
				
			||||||
From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value.  
 | 
					From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value.  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
And if you want to update it, update directly and then use `eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);` to write the value back to the EEPROM. 
 | 
					And if you want to update it, update directly and then use `eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);` to write the value back to the EEPROM. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Pro Micro Hacking
 | 
				
			||||||
 | 
					-----------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Well, you can get the QMK DFU bootloader working on the ProMicro. But you need to change fuses.  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					What worked to get into the firmware properly was: 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Low: 0x5E High: 0x99 Extended: 0xF3 Lock: 0xFF
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					But some of the columns and rows didn't work, like the pin mapping was wrong. Even when setting the bootloader settings.
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 This is here for future reference.  And the default fuse settings I believe were:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Low: 0xFF High: 0xD8 Extended: 0xC3 Lock: 0x3F
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,3 +5,7 @@ EXTRAFLAGS        += -flto
 | 
				
			||||||
ifeq ($(strip $(NO_SECRETS)), yes)
 | 
					ifeq ($(strip $(NO_SECRETS)), yes)
 | 
				
			||||||
    OPT_DEFS += -DNO_SECRETS
 | 
					    OPT_DEFS += -DNO_SECRETS
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
 | 
				
			||||||
 | 
					    OPT_DEFS += -DINDICATOR_LIGHTS
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue