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_SNAKE_LENGTH 2
 | 
			
		||||
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
 | 
			
		||||
 | 
			
		||||
#define RGBLIGHT_LIMIT_VAL 225
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,79 +2,94 @@
 | 
			
		|||
#include QMK_KEYBOARD_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_OSLG OSM(MOD_LGUI)
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
  [_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_C1R3, _________________QWERTY_L2_________________,                       _________________QWERTY_R2_________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP,     KC_LGUI, _________________QWERTY_R3_________________, KC_MRSF,
 | 
			
		||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
			
		||||
     KC_CCCV, _________________QWERTY_L2_________________,                       _________________QWERTY_R2_________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP,     KC_OSLG, _________________QWERTY_R3_________________, KC_MRSF,
 | 
			
		||||
                             LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
			
		||||
  ),
 | 
			
		||||
  [_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_C1R3, _________________COLEMAK_L2________________,                       _________________COLEMAK_R2________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP,     KC_LGUI, _________________COLEMAK_R3________________, KC_MRSF,
 | 
			
		||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
			
		||||
     KC_CCCV, _________________COLEMAK_L2________________,                       _________________COLEMAK_R2________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP,     KC_OSLG, _________________COLEMAK_R3________________, KC_MRSF,
 | 
			
		||||
                             LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
			
		||||
  ),
 | 
			
		||||
  [_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_C1R3, _________________DVORAK_L2_________________,                       _________________DVORAK_R2_________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP,     KC_LGUI, _________________DVORAK_R3_________________, KC_MRSF,
 | 
			
		||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
			
		||||
     KC_CCCV, _________________DVORAK_L2_________________,                       _________________DVORAK_R2_________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP,     KC_OSLG, _________________DVORAK_R3_________________, KC_MRSF,
 | 
			
		||||
                             LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
			
		||||
  ),
 | 
			
		||||
  [_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_C1R3, _________________WORKMAN_L2________________,                       _________________WORKMAN_R2________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP,     KC_LGUI, _________________WORKMAN_R3________________, KC_MRSF,
 | 
			
		||||
                                       LOWER,   KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE
 | 
			
		||||
     KC_CCCV, _________________WORKMAN_L2________________,                       _________________WORKMAN_R2________________, KC_QUOT,
 | 
			
		||||
     KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP,     KC_OSLG, _________________WORKMAN_R3________________, KC_MRSF,
 | 
			
		||||
                             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(
 | 
			
		||||
     KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,                       KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
 | 
			
		||||
  [_LOWER] = LAYOUT_wrapper(
 | 
			
		||||
     _______, _________________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_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, KC_LPRN,      KC_RPRN, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______,
 | 
			
		||||
                                       _______, _______, KC_DEL,          _______, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_RAISE] = LAYOUT(
 | 
			
		||||
      KC_F12,  KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,                        KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
 | 
			
		||||
      _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
			
		||||
      _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_UNDS,                       KC_EQL , KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
			
		||||
      _______, _______, _______, _______, _______, _______, _______,     _______, KC_PLUS, KC_END, _______, _______, _______, _______,
 | 
			
		||||
     _______, _______, _______, _______, _______, _______,                       _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
			
		||||
     _______, _______, _______, _______, _______, _______, _______,     _______, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______,
 | 
			
		||||
                                       _______, _______, _______,         _______, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_ADJUST] = LAYOUT(
 | 
			
		||||
      KC_MAKE, KC_RST,  EPRM,    _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
 | 
			
		||||
      RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______,                       _______, _______, _______, _______, _______, _______,
 | 
			
		||||
      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_RGB_T,RGB_SMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,     _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
 | 
			
		||||
  [_RAISE] = LAYOUT_wrapper(
 | 
			
		||||
      _______, _________________FUNC_LEFT_________________,                      _________________FUNC_RIGHT________________, _______,
 | 
			
		||||
      _______, _______, _______, _______, _______, _______,                      _______, _______, _______, _______, _______, _______,
 | 
			
		||||
      _______, _______, _______, _______, _______, _______,                      _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
			
		||||
      _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END,  _______,
 | 
			
		||||
                                        _______, _______, _______,        _______, _______, _______
 | 
			
		||||
   ),
 | 
			
		||||
 | 
			
		||||
  [_ADJUST] = LAYOUT_wrapper(
 | 
			
		||||
      KC_MAKE, _______, _______, _______, _______, _______,                      KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
 | 
			
		||||
      VRSN,    RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,                      _______, _______, _______, _______, _______, EPRM,
 | 
			
		||||
      _______, _______, CK_TOGG, AU_ON,   AU_OFF,  AG_NORM,                      AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, _______,
 | 
			
		||||
      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) {
 | 
			
		||||
#ifdef INDICATOR_LIGHTS
 | 
			
		||||
  uint8_t modifiders = get_mods();
 | 
			
		||||
  uint8_t led_usb_state = host_keyboard_leds();
 | 
			
		||||
  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, 8);
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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()) {
 | 
			
		||||
    has_status_changed = true;
 | 
			
		||||
    current_mods = get_mods();
 | 
			
		||||
    current_host_leds = host_keyboard_leds();
 | 
			
		||||
    current_oneshot_mods = get_oneshot_mods();
 | 
			
		||||
#ifdef INDICATOR_LIGHTS
 | 
			
		||||
  uint8_t current_mod = get_mods();
 | 
			
		||||
  uint8_t current_led = host_keyboard_leds();
 | 
			
		||||
  uint8_t current_osm =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, 10);
 | 
			
		||||
    } else {
 | 
			
		||||
      rgblight_sethsv_default_helper(5);
 | 
			
		||||
      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, 9);
 | 
			
		||||
    } else {
 | 
			
		||||
      rgblight_sethsv_default_helper(6);
 | 
			
		||||
      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, 8);
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +158,6 @@ void matrix_scan_keymap (void) {
 | 
			
		|||
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,3 +9,4 @@ AUDIO_ENABLE      = yes
 | 
			
		|||
NKRO_ENABLE       = yes
 | 
			
		||||
BACKLIGHT_ENABLE = no
 | 
			
		||||
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 "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.
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
[_QWERTY] = LAYOUT_wrapper(\
 | 
			
		||||
| 
						 | 
				
			
			@ -65,27 +74,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 | 
			
		||||
[_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_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,
 | 
			
		||||
  KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______,         _______, _______, _______, _______, _______, KC_COMM, KC_DOT,  _______, _______
 | 
			
		||||
  _______, _________________FUNC_LEFT_________________,           KC_PGUP, KC_PGDN,         KC_HOME, KC_END,           _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
			
		||||
  _______, _________________FUNC_RIGHT________________,  _______, _______, _______,         _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_RAISE] = LAYOUT_wrapper(\
 | 
			
		||||
  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_COMM, KC_DOT,  _______, _______
 | 
			
		||||
  _______, _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_ADJUST] = LAYOUT_wrapper(\
 | 
			
		||||
  KC_MAKE,KC_RESET, 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),
 | 
			
		||||
  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
 | 
			
		||||
  KC_MAKE, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,                                                               KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RESET,
 | 
			
		||||
  VRSN,    _______, CK_TOGG, AU_ON,   AU_OFF,  AG_NORM,          _______, _______,         _______, _______,          AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, EPRM,
 | 
			
		||||
  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) {
 | 
			
		||||
#ifdef INDICATOR_LIGHTS
 | 
			
		||||
  uint8_t modifiders = get_mods();
 | 
			
		||||
  uint8_t led_usb_state = host_keyboard_leds();
 | 
			
		||||
  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, 8);
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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()) {
 | 
			
		||||
    has_status_changed = true;
 | 
			
		||||
    current_mods = get_mods();
 | 
			
		||||
    current_host_leds = host_keyboard_leds();
 | 
			
		||||
    current_oneshot_mods = get_oneshot_mods();
 | 
			
		||||
#ifdef INDICATOR_LIGHTS
 | 
			
		||||
  uint8_t current_mod = get_mods();
 | 
			
		||||
  uint8_t current_led = host_keyboard_leds();
 | 
			
		||||
  uint8_t current_osm =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, 10);
 | 
			
		||||
    } else {
 | 
			
		||||
      rgblight_sethsv_default_helper(5);
 | 
			
		||||
      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, 9);
 | 
			
		||||
    } else {
 | 
			
		||||
      rgblight_sethsv_default_helper(6);
 | 
			
		||||
      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, 8);
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -146,5 +171,7 @@ void matrix_scan_keymap (void) {
 | 
			
		|||
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,3 +7,4 @@ TAP_DANCE_ENABLE  = no
 | 
			
		|||
RGBLIGHT_ENABLE   = yes
 | 
			
		||||
AUDIO_ENABLE      = yes
 | 
			
		||||
NKRO_ENABLE       = yes
 | 
			
		||||
INDICATOR_LIGHTS  = yes
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,6 @@ extern keymap_config_t keymap_config;
 | 
			
		|||
#define DIABLO   TG(_DIABLO)
 | 
			
		||||
#define GAMEPAD  TG(_GAMEPAD)
 | 
			
		||||
#define MEDIA    TT(_MEDIA)
 | 
			
		||||
#define COVECUBE TG(_COVECUBE)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//enum more_custom_keycodes {
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 | 
			
		||||
  [_NUMLOCK] = LAYOUT_ortho_5x7(
 | 
			
		||||
      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_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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_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(
 | 
			
		||||
      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) {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -57,11 +57,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 */
 | 
			
		||||
  [_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
 | 
			
		||||
        // 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_C1R3, _________________QWERTY_L2_________________,                                   _________________QWERTY_R2_________________, KC_QUOT,
 | 
			
		||||
             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_____________________
 | 
			
		||||
    ),
 | 
			
		||||
/* Keymap 0: COLEMAK layer
 | 
			
		||||
| 
						 | 
				
			
			@ -89,11 +89,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
// Otherwise, it needs KC_*
 | 
			
		||||
  [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper(
 | 
			
		||||
        // 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_C1R3, _________________COLEMAK_L2________________,                                   _________________COLEMAK_R2________________, KC_QUOT,
 | 
			
		||||
             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_____________________
 | 
			
		||||
    ),
 | 
			
		||||
/* Keymap 0: DVORAK Layout
 | 
			
		||||
| 
						 | 
				
			
			@ -121,11 +121,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
// Otherwise, it needs KC_*
 | 
			
		||||
  [_DVORAK] = LAYOUT_ergodox_pretty_wrapper(
 | 
			
		||||
        // 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_C1R3, _________________DVORAK_L2_________________,                                   _________________DVORAK_R2_________________, KC_MINS,
 | 
			
		||||
             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_____________________
 | 
			
		||||
    ),
 | 
			
		||||
/* Keymap 0: WORKMAN layer
 | 
			
		||||
| 
						 | 
				
			
			@ -153,16 +153,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
// Otherwise, it needs KC_*
 | 
			
		||||
  [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper(
 | 
			
		||||
        // 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_C1R3, _________________WORKMAN_L2________________,                                   _________________WORKMAN_R2________________, KC_QUOT,
 | 
			
		||||
             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_____________________
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
// 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
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -226,7 +195,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 *                                 |      |      |  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_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,
 | 
			
		||||
| 
						 | 
				
			
			@ -258,7 +227,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		|||
 *                                 | 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_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,
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
            ),
 | 
			
		||||
 | 
			
		||||
/* Keymap 4: Media and mouse keys
 | 
			
		||||
 *
 | 
			
		||||
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 | 
			
		||||
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
 | 
			
		||||
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 | 
			
		||||
 * |        |      | MsUp |      |      |      |      |           |      |      |      |      |      |      |        |
 | 
			
		||||
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 | 
			
		||||
 * |        |MsLeft|MsDown|MsRght|      |      |------|           |------|      |      | Acc0 | Acc1 | Acc2 |        |
 | 
			
		||||
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 | 
			
		||||
 * |        | Acc0 | Acc1 | Acc2 |      |      |      |           |      |      | Mute |VolDn |VolUp |      |        |
 | 
			
		||||
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 | 
			
		||||
 *   |      |      |      |      |      |                                       | Play | Stop |      |      |      |
 | 
			
		||||
 *   `----------------------------------'                                       `----------------------------------'
 | 
			
		||||
 *                                        ,-------------.       ,-------------.
 | 
			
		||||
 *                                        |      |      |       |      |      |
 | 
			
		||||
 *                                 ,------|------|------|       |------+------+------.
 | 
			
		||||
 *                                 |      |      | 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,
 | 
			
		||||
             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_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,
 | 
			
		||||
             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,
 | 
			
		||||
             KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,                                                       KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
 | 
			
		||||
                                                          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
 | 
			
		||||
  [_LOWER] = LAYOUT_ergodox_pretty_wrapper(
 | 
			
		||||
             _______, _________________FUNC_LEFT_________________, _______,                 _______, _________________FUNC_RIGHT________________, KC_F11,
 | 
			
		||||
             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
             _______, _______, _______, _______, _______, _______,                                   _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
 | 
			
		||||
             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
			
		||||
                                                          _______, _______,                 _______, _______,
 | 
			
		||||
                                                                   _______,                 _______,
 | 
			
		||||
                                                 _______, _______, _______,                 _______, _______, _______
 | 
			
		||||
            ),
 | 
			
		||||
 | 
			
		||||
  [_RAISE] = LAYOUT_ergodox_pretty_wrapper(
 | 
			
		||||
             _______, _________________FUNC_LEFT_________________, _______,                 _______, _________________FUNC_RIGHT________________, _______,
 | 
			
		||||
             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
             _______, _______, _______, _______, _______, _______,                                   _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
 | 
			
		||||
             _______, _______, _______, _______, _______, _______, _______,                 _______, _______, _______, _______, _______, _______, KC_RSFT,
 | 
			
		||||
             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
			
		||||
                                                          _______, _______,                 _______, _______,
 | 
			
		||||
                                                                   _______,                 _______,
 | 
			
		||||
                                                 _______, _______, _______,                 _______, _______, _______
 | 
			
		||||
            ),
 | 
			
		||||
 | 
			
		||||
  [_ADJUST] = LAYOUT_ergodox_pretty_wrapper(
 | 
			
		||||
             KC_MAKE, _______, _______, _______, _______, _______, _______,                 _______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
 | 
			
		||||
             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),
 | 
			
		||||
             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,
 | 
			
		||||
             _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, _______,
 | 
			
		||||
                                                          _______, _______,                 _______, _______,
 | 
			
		||||
                                                                   _______,                 _______,
 | 
			
		||||
                                                 _______, _______, _______,                 _______, _______, _______
 | 
			
		||||
            ),
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,6 @@
 | 
			
		|||
 | 
			
		||||
#ifdef AUDIO_ENABLE
 | 
			
		||||
#define AUDIO_CLICKY
 | 
			
		||||
#define AUDIO_CLICKY_ON
 | 
			
		||||
#define STARTUP_SONG SONG(E1M1_DOOM)
 | 
			
		||||
#define GOODBYE_SONG  SONG(SONIC_RING)
 | 
			
		||||
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
 | 
			
		||||
| 
						 | 
				
			
			@ -43,6 +42,8 @@
 | 
			
		|||
#define IGNORE_MOD_TAP_INTERRUPT
 | 
			
		||||
#undef PERMISSIVE_HOLD
 | 
			
		||||
#undef PREVENT_STUCK_MODIFIERS
 | 
			
		||||
#define TAPPING_FORCE_HOLD
 | 
			
		||||
//#define RETRO_TAPPING
 | 
			
		||||
 | 
			
		||||
#define FORCE_NKRO
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +54,7 @@
 | 
			
		|||
#ifdef TAPPING_TERM
 | 
			
		||||
#undef 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
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +62,7 @@
 | 
			
		|||
#ifndef NO_DEBUG
 | 
			
		||||
#define NO_DEBUG
 | 
			
		||||
#endif // !NO_DEBUG
 | 
			
		||||
#ifndef NO_PRINT
 | 
			
		||||
#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
 | 
			
		||||
#define NO_PRINT
 | 
			
		||||
#endif // !NO_PRINT
 | 
			
		||||
#define NO_ACTION_MACRO
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,10 +38,6 @@ float tone_paste[][2]           = SONG(SCROLL_LOCK_OFF_SOUND);
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
static uint16_t copy_paste_timer;
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
bool rgb_layer_change = true;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
userspace_config_t userspace_config;
 | 
			
		||||
 | 
			
		||||
//  Helper Functions
 | 
			
		||||
| 
						 | 
				
			
			@ -164,11 +160,20 @@ void led_set_keymap(uint8_t usb_led) {}
 | 
			
		|||
// call the keymap's init function
 | 
			
		||||
void matrix_init_user(void) {
 | 
			
		||||
  uint8_t default_layer = eeconfig_read_default_layer();
 | 
			
		||||
  userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
 | 
			
		||||
 | 
			
		||||
#ifdef BOOTLOADER_CATERINA
 | 
			
		||||
  DDRD &= ~(1<<5);
 | 
			
		||||
  PORTD &= ~(1<<5);
 | 
			
		||||
 | 
			
		||||
  DDRB &= ~(1<<0);
 | 
			
		||||
  PORTB &= ~(1<<0);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if (userspace_config.rgb_layer_change) {
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    rgblight_enable();
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    if (default_layer & (1UL << _COLEMAK)) {
 | 
			
		||||
  #ifdef RGBLIGHT_ENABLE
 | 
			
		||||
      rgblight_sethsv_magenta();
 | 
			
		||||
| 
						 | 
				
			
			@ -186,9 +191,11 @@ void matrix_init_user(void) {
 | 
			
		|||
      rgblight_sethsv_teal();
 | 
			
		||||
  #endif // RGBLIGHT_ENABLE
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
 | 
			
		||||
#ifdef AUDIO_CLICKY
 | 
			
		||||
  clicky_enable = userspace_config.clicky_enable;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) )
 | 
			
		||||
	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
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      rgb_layer_change = !rgb_layer_change;
 | 
			
		||||
      if (rgb_layer_change) {
 | 
			
		||||
      userspace_config.rgb_layer_change ^= 1;
 | 
			
		||||
      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)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -374,7 +382,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
  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
 | 
			
		||||
      rgb_layer_change = false;
 | 
			
		||||
      userspace_config.rgb_layer_change = false;
 | 
			
		||||
      eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
 | 
			
		||||
    }
 | 
			
		||||
    return true; break;
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -403,8 +412,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
    return false;
 | 
			
		||||
    break;
 | 
			
		||||
  case CLICKY_TOGGLE:
 | 
			
		||||
#ifdef AUDIO_CLICKY
 | 
			
		||||
    userspace_config.clicky_enable = clicky_enable;
 | 
			
		||||
    eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
 | 
			
		||||
#endif
 | 
			
		||||
    break;
 | 
			
		||||
#ifdef UNICODE_ENABLE
 | 
			
		||||
  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);
 | 
			
		||||
 | 
			
		||||
  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:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
    if (userspace_config.rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_orange();
 | 
			
		||||
      userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    break;
 | 
			
		||||
  case _MEDIA:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
    if (userspace_config.rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_chartreuse();
 | 
			
		||||
      rgblight_mode(22);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    break;
 | 
			
		||||
  case _GAMEPAD:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
    if (userspace_config.rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_orange();
 | 
			
		||||
      rgblight_mode(17);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    break;
 | 
			
		||||
  case _DIABLO:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
    if (userspace_config.rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_red();
 | 
			
		||||
      rgblight_mode(5);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    break;
 | 
			
		||||
  case _RAISE:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
    if (userspace_config.rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_yellow();
 | 
			
		||||
      rgblight_mode(5);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    break;
 | 
			
		||||
  case _LOWER:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
    if (userspace_config.rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_orange();
 | 
			
		||||
      rgblight_mode(5);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    break;
 | 
			
		||||
  case _ADJUST:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
    if (userspace_config.rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_red();
 | 
			
		||||
      rgblight_mode(23);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
    break;
 | 
			
		||||
  case _COVECUBE:
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    if (rgb_layer_change) {
 | 
			
		||||
      rgblight_sethsv_green();
 | 
			
		||||
      rgblight_mode(2);
 | 
			
		||||
    }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    break;
 | 
			
		||||
  default: //  for any other layers, or the default layer
 | 
			
		||||
    if (default_layer & (1UL << _COLEMAK)) {
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
      if (rgb_layer_change) { rgblight_sethsv_magenta(); }
 | 
			
		||||
      if (userspace_config.rgb_layer_change) { rgblight_sethsv_magenta(); }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    else if (default_layer & (1UL << _DVORAK)) {
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
      if (rgb_layer_change) { rgblight_sethsv_green(); }
 | 
			
		||||
      if (userspace_config.rgb_layer_change) { rgblight_sethsv_green(); }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    else if (default_layer & (1UL << _WORKMAN)) {
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
      if (rgb_layer_change) { rgblight_sethsv_goldenrod(); }
 | 
			
		||||
      if (userspace_config.rgb_layer_change) { rgblight_sethsv_goldenrod(); }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
      if (rgb_layer_change) { rgblight_sethsv_teal(); }
 | 
			
		||||
      if (userspace_config.rgb_layer_change) { rgblight_sethsv_teal(); }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
      if (rgb_layer_change) { rgblight_mode(2); }
 | 
			
		||||
      if (userspace_config.rgb_layer_change) { rgblight_mode(2); }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    } else {                       // otherwise, stay solid
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
      if (rgb_layer_change) { rgblight_mode(1); }
 | 
			
		||||
      if (userspace_config.rgb_layer_change) { rgblight_mode(1); }
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,12 +27,8 @@ enum userspace_layers {
 | 
			
		|||
  _DVORAK,
 | 
			
		||||
  _WORKMAN,
 | 
			
		||||
  _MODS,
 | 
			
		||||
  _NAV,
 | 
			
		||||
  _COVECUBE,
 | 
			
		||||
  _SYMB,
 | 
			
		||||
  _GAMEPAD,
 | 
			
		||||
  _DIABLO,
 | 
			
		||||
  _MOUS,
 | 
			
		||||
  _MACROS,
 | 
			
		||||
  _MEDIA,
 | 
			
		||||
  _LOWER,
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +45,6 @@ enum userspace_layers {
 | 
			
		|||
// 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
 | 
			
		||||
 | 
			
		||||
extern bool rgb_layer_change;
 | 
			
		||||
extern bool clicky_enable;
 | 
			
		||||
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -59,9 +54,10 @@ void rgblight_sethsv_default_helper(uint8_t index);
 | 
			
		|||
#define EECONFIG_USERSPACE (uint8_t *)20
 | 
			
		||||
 | 
			
		||||
typedef union {
 | 
			
		||||
  uint32_t raw;
 | 
			
		||||
  uint8_t raw;
 | 
			
		||||
  struct {
 | 
			
		||||
    bool     clicky_enable    :1;
 | 
			
		||||
    bool     rgb_layer_change :1;
 | 
			
		||||
    bool     is_overwatch     :1;
 | 
			
		||||
  };
 | 
			
		||||
} userspace_config_t;
 | 
			
		||||
| 
						 | 
				
			
			@ -236,6 +232,8 @@ enum {
 | 
			
		|||
 | 
			
		||||
#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 _________________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),
 | 
			
		||||
// this allows us to quickly modify the bottom row for all of the layouts
 | 
			
		||||
| 
						 | 
				
			
			@ -247,7 +245,7 @@ enum {
 | 
			
		|||
 | 
			
		||||
#define __________________ERGODOX_THUMB_CLUSTER_____________________           ALT_T(KC_APP), KC_LGUI,                 KC_RGUI, CTL_T(KC_ESCAPE), \
 | 
			
		||||
                                                                                              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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -162,7 +162,7 @@ This tells us where in the EEPROM that the data structure is located, and this s
 | 
			
		|||
 | 
			
		||||
```c
 | 
			
		||||
typedef union {
 | 
			
		||||
  uint32_t raw;
 | 
			
		||||
  uint8_t raw;
 | 
			
		||||
  struct {
 | 
			
		||||
    bool     clicky_enable  :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.  
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
    OPT_DEFS += -DNO_SECRETS
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
 | 
			
		||||
    OPT_DEFS += -DINDICATOR_LIGHTS
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue