From 53a6501d71cabbe4c5c41652cf24fdc059609e5d Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 15 May 2018 19:34:34 -0700 Subject: 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 --- users/drashna/drashna.c | 132 +++++++++++++++++++++++------------------------- 1 file changed, 62 insertions(+), 70 deletions(-) (limited to 'users/drashna/drashna.c') diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index 86c16b826..6ce541bfb 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c @@ -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,31 +160,42 @@ 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 RGBLIGHT_ENABLE - rgblight_enable(); -#endif // RGBLIGHT_ENABLE +#ifdef BOOTLOADER_CATERINA + DDRD &= ~(1<<5); + PORTD &= ~(1<<5); - 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 { + DDRB &= ~(1<<0); + PORTB &= ~(1<<0); +#endif + + if (userspace_config.rgb_layer_change) { #ifdef RGBLIGHT_ENABLE - rgblight_sethsv_teal(); + 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; +#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; } -- cgit v1.2.3