فهرست منبع

[Keymap] Update to Userspace kuchosauronad0 (#6899)

* Add Plover layer, remove unused layers

* Add rgb indicator for success/failed sequences

* Add RGB effects

* Add RGB

* Add effects for start and end of a leader sequence

* Add PLOVER layer

* Add RGB

* Add RBG

* Minor clean up

* Minor clean up

* Minor clean up

* Minor clean up

* Rename rgb_light to rgblight_user and fix all references to it

* Remove unnecessary guards

Remove unnecessary matrix_scan in rgb post_init function

* remove trailing newline
kuchosauronad0 5 سال پیش
والد
کامیت
674fcc474c

+ 40 - 40
users/kuchosauronad0/config.h

@@ -1,61 +1,62 @@
 #pragma once
 #pragma once
 
 
 #ifdef AUDIO_ENABLE
 #ifdef AUDIO_ENABLE
-  #define AUDIO_CLICKY
-  #define STARTUP_SONG SONG(RICK_ROLL)
-  #define GOODBYE_SONG SONG(SONIC_RING)
-  #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
-                                    SONG(COLEMAK_SOUND), \
-                                    SONG(DVORAK_SOUND), \
-                                    SONG(OVERWATCH_THEME) \
-                                  }
-  #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
-  // #ifdef RGBLIGHT_ENABLE
-  // #define NO_MUSIC_MODE
-  // #endif //RGBLIGHT_ENABLE/
-  // #ifndef __arm__
-  //   #undef  NOTE_REST
-  //   #define NOTE_REST         1.00f
-  // #endif // !__arm__
-  #define UNICODE_SONG_OSX SONG(RICK_ROLL)
-  #define UNICODE_SONG_LNX SONG(RICK_ROLL)
-  #define UNICODE_SONG_WIN SONG(RICK_ROLL)
-  #define UNICODE_SONG_BSD SONG(RICK_ROLL)
-  #define UNICODE_SONG_WINC SONG(RICK_ROLL)
+#  define DEFAULT_LAYER_SONGS \
+     { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(PLOVER_SOUND) }
+#  define AUDIO_CLICKY
+#  define STARTUP_SONG SONG(RICK_ROLL)
+#  define GOODBYE_SONG SONG(SONIC_RING)
+#  define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
+#  ifndef __arm__
+#    undef  NOTE_REST
+#    define NOTE_REST 1.00f
+#  endif // !__arm__
+#  define UNICODE_SONG_OSX SONG(RICK_ROLL)
+#  define UNICODE_SONG_LNX SONG(RICK_ROLL)
+#  define UNICODE_SONG_WIN SONG(RICK_ROLL)
+#  define UNICODE_SONG_BSD SONG(RICK_ROLL)
+#  define UNICODE_SONG_WINC SONG(RICK_ROLL)
 #endif // !AUDIO_ENABLE
 #endif // !AUDIO_ENABLE
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-  #define RGBLIGHT_SLEEP
-  #undef RGBLIGHT_ANIMATIONS
-  #define RGBLIGHT_EFFECT_BREATHING
-  #define RGBLIGHT_EFFECT_SNAKE
-  #define RGBLIGHT_EFFECT_KNIGHT
+#  define RGBLIGHT_SLEEP
+#  undef  RGBLIGHT_ANIMATIONS
+#  define RGBLIGHT_HUE_STEP 16
+#  define RGBLIGHT_SAT_STEP 16
+#  define RGBLIGHT_VAL_STEP 16
+#  define RGBLIGHT_LIMIT_VAL 255
+#  define RGBLIGHT_EFFECT_BREATHING
+#  define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//#  define RGBLIGHT_EFFECT_KNIGHT
+//#  define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+//#  define RGBLIGHT_EFFECT_SNAKE
+//#  define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
 #endif // !RGBLIGHT_ENABLE
 #endif // !RGBLIGHT_ENABLE
 
 
 #ifndef ONESHOT_TAP_TOGGLE
 #ifndef ONESHOT_TAP_TOGGLE
-  #define ONESHOT_TAP_TOGGLE 2
+#  define ONESHOT_TAP_TOGGLE 2
 #endif // !ONESHOT_TAP_TOGGLE
 #endif // !ONESHOT_TAP_TOGGLE
 
 
 #ifndef ONESHOT_TIMEOUT
 #ifndef ONESHOT_TIMEOUT
-  #define ONESHOT_TIMEOUT 3000
+#  define ONESHOT_TIMEOUT 3000
 #endif// !ONESHOT_TIMEOUT
 #endif// !ONESHOT_TIMEOUT
 
 
 #ifndef QMK_KEYS_PER_SCAN
 #ifndef QMK_KEYS_PER_SCAN
-  #define QMK_KEYS_PER_SCAN 4
+#  define QMK_KEYS_PER_SCAN 4
 #endif // !QMK_KEYS_PER_SCAN
 #endif // !QMK_KEYS_PER_SCAN
 
 
 #if defined(LEADER_ENABLE)
 #if defined(LEADER_ENABLE)
-  #define LEADER_PER_KEY_TIMING
-  #define LEADER_TIMEOUT 250
+#  define LEADER_PER_KEY_TIMING
+#  define LEADER_TIMEOUT 250
 #endif // !LEADER_ENABLE 
 #endif // !LEADER_ENABLE 
 
 
 #if defined(COMBO_ENABLE)
 #if defined(COMBO_ENABLE)
-  #define COMBO_COUNT 4
-  #define COMBO_TERM 150
+#  define COMBO_COUNT 4
+#  define COMBO_TERM 150
 #endif // !COMBO_ENABLE 
 #endif // !COMBO_ENABLE 
 
 
 #if defined(NKRO_ENABLE)
 #if defined(NKRO_ENABLE)
-  #define FORCE_NKRO
+#  define FORCE_NKRO
 #endif // !NKRO_ENABLE
 #endif // !NKRO_ENABLE
 
 
 // this makes it possible to do rolling combos (zx) with keys that
 // this makes it possible to do rolling combos (zx) with keys that
@@ -68,18 +69,18 @@
 //#define RETRO_TAPPING
 //#define RETRO_TAPPING
 
 
 #ifndef TAPPING_TOGGLE
 #ifndef TAPPING_TOGGLE
-  #define TAPPING_TOGGLE  1
+#  define TAPPING_TOGGLE  1
 #endif
 #endif
 
 
 #ifdef TAPPING_TERM
 #ifdef TAPPING_TERM
-  #undef TAPPING_TERM
+#  undef TAPPING_TERM
 #endif // !TAPPING_TERM
 #endif // !TAPPING_TERM
 #if defined(KEYBOARD_handwired_kuchosauronad0_planckenstein)
 #if defined(KEYBOARD_handwired_kuchosauronad0_planckenstein)
-  #define TAPPING_TERM 185
+#  define TAPPING_TERM 185
 #elif defined(KEYBOARD_c39)
 #elif defined(KEYBOARD_c39)
-  #define TAPPING_TERM 200
+#  define TAPPING_TERM 200
 #else
 #else
-  #define TAPPING_TERM 180
+#  define TAPPING_TERM 180
 #endif
 #endif
 
 
 
 
@@ -87,4 +88,3 @@
 
 
 #define MACRO_TIMER 5 
 #define MACRO_TIMER 5 
 
 
-

+ 7 - 6
users/kuchosauronad0/kuchosauronad0.c

@@ -19,10 +19,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 userspace_config_t userspace_config;
 userspace_config_t userspace_config;
 #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
 #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
-  #define KUCHOSAURONAD0_UNICODE_MODE UC_WINC
+#  define KUCHOSAURONAD0_UNICODE_MODE UC_WINC
 #else
 #else
-  // set to 2 for UC_WIN, set to 4 for UC_WINC
-  #define KUCHOSAURONAD0_UNICODE_MODE 2
+#  define KUCHOSAURONAD0_UNICODE_MODE 2 // set to 2 for UC_WIN, set to 4 for UC_WINC
 #endif
 #endif
 
 
 
 
@@ -70,7 +69,7 @@ void shutdown_user (void) {
   #ifdef RGBLIGHT_ENABLE
   #ifdef RGBLIGHT_ENABLE
     rgblight_enable_noeeprom();
     rgblight_enable_noeeprom();
     rgblight_mode_noeeprom(1);
     rgblight_mode_noeeprom(1);
-    rgblight_setrgb_red();
+    rgblight_setrgb_teal();
   #endif // RGBLIGHT_ENABLE
   #endif // RGBLIGHT_ENABLE
   #ifdef RGB_MATRIX_ENABLE
   #ifdef RGB_MATRIX_ENABLE
     // uint16_t timer_start = timer_read();
     // uint16_t timer_start = timer_read();
@@ -108,11 +107,11 @@ void matrix_scan_user(void){
 
 
 #ifdef TAP_DANCE_ENABLE  // Run Diablo 3 macro checking code.
 #ifdef TAP_DANCE_ENABLE  // Run Diablo 3 macro checking code.
 //  run_diablo_macro_check();
 //  run_diablo_macro_check();
-#endif // TAP_DANCE_ENABLE
+#endif // !TAP_DANCE_ENABLE
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
   matrix_scan_rgb();
   matrix_scan_rgb();
-#endif // RGBLIGHT_ENABLE
+#endif // !RGBLIGHT_ENABLE
 
 
   matrix_scan_keymap();
   matrix_scan_keymap();
 }
 }
@@ -171,6 +170,8 @@ void eeconfig_init_user(void) {
   #else
   #else
     eeprom_update_byte(EECONFIG_UNICODEMODE, KUCHOSAURONAD0_UNICODE_MODE);
     eeprom_update_byte(EECONFIG_UNICODEMODE, KUCHOSAURONAD0_UNICODE_MODE);
   #endif
   #endif
+  eeconfig_init_keymap();
+  keyboard_init();
 }
 }
 
 
 // TMUX stuff
 // TMUX stuff

+ 36 - 38
users/kuchosauronad0/kuchosauronad0.h

@@ -1,7 +1,4 @@
-#ifndef USERSPACE
-#define USERSPACE
-
-//#pragma once
+#pragma once
 
 
 #include "quantum.h"
 #include "quantum.h"
 
 
@@ -11,23 +8,25 @@
 #include "process_records.h"
 #include "process_records.h"
 
 
 #ifdef TAP_DANCE_ENABLE
 #ifdef TAP_DANCE_ENABLE
-  #include "tap_dances.h"
-  #define KC_TMX TD(TD_TMX)   // tap1: 't'  tap2: <CTL>+b
-  #define KC_EOL TD(TD_EOL)   // tap1: 'e'  tap2: <CTL>+e
-  #define KC_BOL TD(TD_BOL)   // tap1: 'a'  tap2: <CTL>+a
-  #define KC_NW TD(TD_NW)     // tap1: 'f'  tap2: <ALT>+f
-  #define KC_PW TD(TD_PW)     // tap1: 'b'  tap2: <ALT>+b
-  #define KC_DW TD(TD_DW)     // tap1: 'w'  tap2: <CTL>+w
+#  include "tap_dances.h"
+#  define KC_TMX TD(TD_TMX)   // tap1: 't'  tap2: <CTL>+b
+#  define KC_EOL TD(TD_EOL)   // tap1: 'e'  tap2: <CTL>+e
+#  define KC_BOL TD(TD_BOL)   // tap1: 'a'  tap2: <CTL>+a
+#  define KC_NW TD(TD_NW)     // tap1: 'f'  tap2: <ALT>+f
+#  define KC_PW TD(TD_PW)     // tap1: 'b'  tap2: <ALT>+b
+#  define KC_DW TD(TD_DW)     // tap1: 'w'  tap2: <CTL>+w
 #endif //!TAP_DANCE_ENABLE
 #endif //!TAP_DANCE_ENABLE
+
 #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
 #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
-  #include "rgb_stuff.h"
+#  include "rgblight_user.h"
 #endif
 #endif
+
 #if defined(UNICODEMAP_ENABLE) || defined(UNICODE_ENABLE)
 #if defined(UNICODEMAP_ENABLE) || defined(UNICODE_ENABLE)
-  #include "unicode.h"
+#  include "unicode.h"
 #endif //!UNICODE_ENABLE
 #endif //!UNICODE_ENABLE
 
 
 // Keycode aliases
 // Keycode aliases
-#define TM_X LCTL(KC_B)     // Tmux control sequence
+#define TM_X LCTL(KC_B)     // Tmux leader key
 // Unix QoL macros
 // Unix QoL macros
 #define MC_BOL LCTL(KC_A)   // jump to beginning of line
 #define MC_BOL LCTL(KC_A)   // jump to beginning of line
 #define MC_EOL LCTL(KC_E)   // jump to end       of line
 #define MC_EOL LCTL(KC_E)   // jump to end       of line
@@ -42,10 +41,11 @@ enum userspace_layers {
   _COLEMAK,
   _COLEMAK,
   _DVORAK,
   _DVORAK,
   _WORKMAN,
   _WORKMAN,
-  _NORMAN,
+/*  _NORMAN,
   _MALTRON,
   _MALTRON,
   _EUCALYN,
   _EUCALYN,
-  _CARPLAX,
+  _CARPLAX, */
+  _PLOVER,
   _UNICODE,
   _UNICODE,
   _MODS, /* layer 8 now 9*/
   _MODS, /* layer 8 now 9*/
   _GAMEPAD,
   _GAMEPAD,
@@ -57,18 +57,18 @@ enum userspace_layers {
   _ADJUST,
   _ADJUST,
 };
 };
 
 
-bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed);
-bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
-bool send_game_macro(const char *str, keyrecord_t *record, bool override);
-void matrix_init_keymap(void);
-void shutdown_keymap(void);
-void suspend_power_down_keymap(void);
-void suspend_wakeup_init_keymap(void);
-void matrix_scan_keymap(void);
+bool     mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed);
+bool     mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
+bool     send_game_macro(const char *str, keyrecord_t *record, bool override);
+void     matrix_init_keymap(void);
+void     shutdown_keymap(void);
+void     suspend_power_down_keymap(void);
+void     suspend_wakeup_init_keymap(void);
+void     matrix_scan_keymap(void);
 uint32_t layer_state_set_keymap (uint32_t state);
 uint32_t layer_state_set_keymap (uint32_t state);
 uint32_t default_layer_state_set_keymap (uint32_t state);
 uint32_t default_layer_state_set_keymap (uint32_t state);
-void led_set_keymap(uint8_t usb_led);
-void eeconfig_init_keymap(void);
+void     led_set_keymap(uint8_t usb_led);
+void     eeconfig_init_keymap(void);
 
 
 void tmux_prefix(void);
 void tmux_prefix(void);
 void tmux_pane_zoom(void);
 void tmux_pane_zoom(void);
@@ -95,17 +95,15 @@ But since TD() doesn't work when tap dance is disabled
 We use custom codes here, so we can substitute the right stuff
 We use custom codes here, so we can substitute the right stuff
 */
 */
 #ifdef TAP_DANCE_ENABLE
 #ifdef TAP_DANCE_ENABLE
-#define KC_D3_1 TD(TD_D3_1)
-#define KC_D3_2 TD(TD_D3_2)
-#define KC_D3_3 TD(TD_D3_3)
-#define KC_D3_4 TD(TD_D3_4)
-#else // TAP_DANCE_ENABLE
-#define KC_D3_1 KC_1
-#define KC_D3_2 KC_2
-#define KC_D3_3 KC_3
-#define KC_D3_4 KC_4
-#endif // TAP_DANCE_ENABLE
-
-#endif // !USERSPACE
+#  define KC_D3_1 TD(TD_D3_1)
+#  define KC_D3_2 TD(TD_D3_2)
+#  define KC_D3_3 TD(TD_D3_3)
+#  define KC_D3_4 TD(TD_D3_4)
+#else
+#  define KC_D3_1 KC_1
+#  define KC_D3_2 KC_2
+#  define KC_D3_3 KC_3
+#  define KC_D3_4 KC_4
+#endif // !TAP_DANCE_ENABLE
 
 
 /* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et */
 /* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et */

+ 68 - 29
users/kuchosauronad0/leader.c

@@ -1,77 +1,116 @@
 #include "leader.h"
 #include "leader.h"
+#ifdef RGBLIGHT_ENABLE
+extern rgblight_config_t rgblight_config;
+#endif
+bool leader_succeed;
 
 
 LEADER_EXTERNS();
 LEADER_EXTERNS();
 
 
-void matrix_scan_user(void){
+void matrix_scan_user(void) {
   static bool has_ran_yet;
   static bool has_ran_yet;
   if (!has_ran_yet) {
   if (!has_ran_yet) {
     has_ran_yet = true;
     has_ran_yet = true;
     startup_user();
     startup_user();
   }
   }
-
 #ifdef TAP_DANCE_ENABLE  // Run Diablo 3 macro checking code.
 #ifdef TAP_DANCE_ENABLE  // Run Diablo 3 macro checking code.
 //  run_diablo_macro_check();
 //  run_diablo_macro_check();
-#endif // TAP_DANCE_ENABLE
-
+#endif 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
   matrix_scan_rgb();
   matrix_scan_rgb();
-#endif // RGBLIGHT_ENABLE
-
+#endif
   LEADER_DICTIONARY() {
   LEADER_DICTIONARY() {
-    leading = false;
-    leader_end();
+    leader_succeed = leading = false;
 
 
     SEQ_ONE_KEY(KC_W) {
     SEQ_ONE_KEY(KC_W) {
       // vim/tmux: Use in command mode in vim: write to file, switch tmux pane in the current session window and repeat the last command
       // vim/tmux: Use in command mode in vim: write to file, switch tmux pane in the current session window and repeat the last command
       SEND_STRING(":w" SS_TAP(X_ENTER));
       SEND_STRING(":w" SS_TAP(X_ENTER));
       tmux_pane_switch_repeat();
       tmux_pane_switch_repeat();
-      }
-    
+      leader_succeed = true;
+    } else
     SEQ_ONE_KEY(KC_T) {
     SEQ_ONE_KEY(KC_T) {
       // Send the Tmux Prefix
       // Send the Tmux Prefix
       tmux_prefix();
       tmux_prefix();
-    }
-
+      leader_succeed = true;
+    } else
     SEQ_ONE_KEY(KC_A) {
     SEQ_ONE_KEY(KC_A) {
        // tmux: Send the prefix and press 'right' arrow
        // tmux: Send the prefix and press 'right' arrow
       tmux_prefix();
       tmux_prefix();
       tap_code(KC_RIGHT);
       tap_code(KC_RIGHT);
-    }
-
+      leader_succeed = true;
+    } else
     SEQ_TWO_KEYS(KC_T, KC_T) {
     SEQ_TWO_KEYS(KC_T, KC_T) {
       // tmux: Send the prefix to a nested session
       // tmux: Send the prefix to a nested session
       tmux_prefix();
       tmux_prefix();
       tmux_prefix();
       tmux_prefix();
-    }
+      leader_succeed = true;
+    } else
     SEQ_TWO_KEYS(KC_T, KC_R) {
     SEQ_TWO_KEYS(KC_T, KC_R) {
       // tmux: Switch pane and repeat last action
       // tmux: Switch pane and repeat last action
       tmux_pane_switch_repeat();
       tmux_pane_switch_repeat();
-    }
-
+      leader_succeed = true;
+    } else
     SEQ_TWO_KEYS(KC_V, KC_Z){
     SEQ_TWO_KEYS(KC_V, KC_Z){
       // vim: Zoom pane
       // vim: Zoom pane
       tap_code16(LCTL(KC_W));
       tap_code16(LCTL(KC_W));
       tap_code16(LSFT(KC_BSLS));
       tap_code16(LSFT(KC_BSLS));
-    }
-
+      leader_succeed = true;
+    } else
     SEQ_TWO_KEYS(KC_V, KC_R) {
     SEQ_TWO_KEYS(KC_V, KC_R) {
       // vim: Substitute and place cursor
       // vim: Substitute and place cursor
       SEND_STRING(":%s///g" SS_TAP(X_LEFT));
       SEND_STRING(":%s///g" SS_TAP(X_LEFT));
       tap_code(KC_LEFT);
       tap_code(KC_LEFT);
       tap_code(KC_LEFT);
       tap_code(KC_LEFT);
-    }
-
+      leader_succeed = true;
+    } else
     SEQ_TWO_KEYS(KC_V, KC_T) {
     SEQ_TWO_KEYS(KC_V, KC_T) {
-     // vim: move current pane to new tab
-     tap_code16(LCTL(KC_W));
-     tap_code16(LSFT(KC_T));
-    }
-
+      // vim: move current pane to new tab
+      tap_code16(LCTL(KC_W));
+      tap_code16(LSFT(KC_T));
+      leader_succeed = true;
+    } else
+    SEQ_ONE_KEY(KC_R){
+      // Toggle RGB Layer indicator
+      tap_code16(KC_RGB_T);
+      leader_succeed = true;
+    } else
+    SEQ_ONE_KEY(KC_SPC){
+      // One Shot Unicode layer
+//TODO      tap_code16(OS_UNI);
+      leader_succeed = true;
+    } else
+    SEQ_TWO_KEYS(KC_SPC, KC_SPC){
+      // Toggle _MODS
+      tap_code16(TG_MODS);
+      leader_succeed = true;
+    } else
     SEQ_THREE_KEYS(KC_BSPC, KC_BSPC, KC_BSPC){
     SEQ_THREE_KEYS(KC_BSPC, KC_BSPC, KC_BSPC){
-        // Reset the keyboard
-        reset_keyboard();
+      // Reset the keyboard
+      reset_keyboard();
+      leader_succeed = true;
     }
     }
+  leader_end();
   }
   }
+//  matrix_scan_keymap();
+}
+
+void leader_start(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_savebase();
+ rgblight_mode_noeeprom(1);
+ rgblight_sethsv_noeeprom_goldenrod();
+#endif
+}
 
 
-  matrix_scan_keymap();
+void leader_end(void) {
+// pick color depending of success /fail
+// fade leader_start from 100 to 0
+// fade new color from  0 to 100 to 0
+// fade old color from 0 to 100
+#ifdef RGBLIGHT_ENABLE
+  if (leader_succeed) {
+    fadeflash_leds(HSV_GREEN);
+  } else {
+    fadeflash_leds(HSV_RED);
+  }
+#endif
 }
 }

+ 2 - 2
users/kuchosauronad0/process_records.c

@@ -25,7 +25,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 #endif //KEYLOGGER_ENABLE
 #endif //KEYLOGGER_ENABLE
 
 
   switch (keycode) {
   switch (keycode) {
-  case KC_QWERTY ... KC_UNICODE:
+  case KC_QWERTY ... KC_PLOVER:
     if (record->event.pressed) {
     if (record->event.pressed) {
       set_single_persistent_default_layer(keycode - KC_QWERTY);
       set_single_persistent_default_layer(keycode - KC_QWERTY);
     }
     }
@@ -168,7 +168,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
   case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
     if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
     if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); }
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-    userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
+//    userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18);
 #endif //RGBLIGHT_ENABLE
 #endif //RGBLIGHT_ENABLE
     break;
     break;
   case KC_SALT:
   case KC_SALT:

+ 43 - 46
users/kuchosauronad0/process_records.h

@@ -2,9 +2,9 @@
 #include "kuchosauronad0.h"
 #include "kuchosauronad0.h"
 
 
 #if defined(KEYMAP_SAFE_RANGE)
 #if defined(KEYMAP_SAFE_RANGE)
-#define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
+#  define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
 #else
 #else
-#define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
+#  define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
 #endif
 #endif
 
 
 enum userspace_custom_keycodes{
 enum userspace_custom_keycodes{
@@ -13,11 +13,7 @@ enum userspace_custom_keycodes{
   KC_COLEMAK,        // Sets default layer to COLEMAK
   KC_COLEMAK,        // Sets default layer to COLEMAK
   KC_DVORAK,         // Sets default layer to DVORAK
   KC_DVORAK,         // Sets default layer to DVORAK
   KC_WORKMAN,        // Sets default layer to WORKMAN
   KC_WORKMAN,        // Sets default layer to WORKMAN
-  KC_NORMAN,         // Sets default layer to NORMAN
-  KC_MALTRON,        // Sets default layer to MALTRON
-  KC_EUCALYN,        // Sets default layer to EUCALYN
-  KC_CARPLAX,        // Sets default layer to CARPLAX
-  KC_UNICODE,        // Sets default layer to UNICODE
+  KC_PLOVER,         // Sets default layer to PLOVER
 
 
   KC_MAKE,           // Run keyboard's customized make command
   KC_MAKE,           // Run keyboard's customized make command
   KC_RGB_T,          // Toggles RGB Layer Indication mode
   KC_RGB_T,          // Toggles RGB Layer Indication mode
@@ -33,36 +29,37 @@ enum userspace_custom_keycodes{
   UC_SHRG,           // ¯\_(ツ)_/¯
   UC_SHRG,           // ¯\_(ツ)_/¯
   UC_DISA,           // ಠ_ಠ
   UC_DISA,           // ಠ_ಠ
 
 
-  MC_QT1,  // ""
-  MC_QT2,  // ''
-  MC_QT3,  // `'
-  MC_PAR,  // Parenthesis
-  MC_CUR,  // Curly bracket
-  MC_SQR,  // Square bracket
-  MC_ABR,  // Angle bracket
-  MCT_NEW, // New Tmux Session
-  MCT_SH,  // Tmux horizontal split
-  MCT_SV,  // Tmux vertical split
-  MCT_ZM,  // Tmux zoom
-  MCT_SCR, // Tmux scroll mode
-  MCT_UP,  // Tmux up
-  MCT_DW,  // Tmux down
-  MCT_LFT, // Tmux left
-  MCT_RGT, // Tmux right
-  MCV_B,   // Vim begin of line
-  MCV_E,   // Vim end of line
-  MCT_F,   // Vim for loop
-  MCG_A, // Git add
-  MCG_C, // Git commit
-  MCG_P, // Git push
-  MCG_R, // Git revert
-  MCG_L, // Git log
-  MCG_S, // Git status
+  MC_QT1,            // ""
+  MC_QT2,            // ''
+  MC_QT3,            // `'
+  MC_PAR,            // Parenthesis
+  MC_CUR,            // Curly bracket
+  MC_SQR,            // Square bracket
+  MC_ABR,            // Angle bracket
+  MCT_NEW,           // New Tmux Session
+  MCT_SH,            // Tmux horizontal split
+  MCT_SV,            // Tmux vertical split
+  MCT_ZM,            // Tmux zoom
+  MCT_SCR,           // Tmux scroll mode
+  MCT_UP,            // Tmux up
+  MCT_DW,            // Tmux down
+  MCT_LFT,           // Tmux left
+  MCT_RGT,           // Tmux right
+  MCV_B,             // Vim begin of line
+  MCV_E,             // Vim end of line
+  MCT_F,             // Vim for loop
+  MCG_A,             // Git add
+  MCG_C,             // Git commit
+  MCG_P,             // Git push
+  MCG_R,             // Git revert
+  MCG_L,             // Git log
+  MCG_S,             // Git status
 
 
   NEW_SAFE_RANGE     //use "NEWPLACEHOLDER for keymap specific codes
   NEW_SAFE_RANGE     //use "NEWPLACEHOLDER for keymap specific codes
   };
   };
 
 
 bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
 bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
+bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
 
 
 #define LOWER MO(_LOWER)
 #define LOWER MO(_LOWER)
@@ -74,21 +71,21 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
 #define OS_RSE OSL(_RAISE)
 #define OS_RSE OSL(_RAISE)
 #define OS_UNI OSL(_UNICODE)
 #define OS_UNI OSL(_UNICODE)
 
 
-#define KC_SEC1 KC_SECRET_1
-#define KC_SEC2 KC_SECRET_2
-#define KC_SEC3 KC_SECRET_3
-#define KC_SEC4 KC_SECRET_4
-#define KC_SEC5 KC_SECRET_5
-#define KC_SEC6 KC_SECRET_6
+#define SEC1     KC_SECRET_1
+#define SEC2     KC_SECRET_2
+#define SEC3     KC_SECRET_3
+#define SEC4     KC_SECRET_4
+#define SEC5     KC_SECRET_5
+#define SEC6     KC_SECRET_6
 
 
-#define QWERTY KC_QWERTY
-#define DVORAK KC_DVORAK
-#define COLEMAK KC_COLEMAK
-#define WORKMAN KC_WORKMAN
-#define UNICODE KC_UNICODE
+#define QWERTY   KC_QWERTY
+#define DVORAK   KC_DVORAK
+#define COLEMAK  KC_COLEMAK
+#define WORKMAN  KC_WORKMAN
+#define PLOVER   KC_PLOVER
 
 
 #define KC_RESET RESET
 #define KC_RESET RESET
-#define KC_RST KC_RESET
+#define KC_RST   KC_RESET
 
 
-#define UC_IRNY UC(0x2E2E)
-#define UC_CLUE UC(0x203D)
+#define UC_IRNY  UC(0x2E2E)
+#define UC_CLUE  UC(0x203D)

+ 156 - 0
users/kuchosauronad0/rgblight_user.c

@@ -0,0 +1,156 @@
+#include "rgblight_user.h"
+extern rgblight_config_t rgblight_config;
+bool                     has_initialized;
+uint8_t                  base_hue;  // Hue value of base state
+uint8_t                  base_sat;  // Saturation value of base state
+uint8_t                  base_val;  // Brightness value of base state
+uint8_t                  base_mod;  // Animation mode of the base state
+
+void rgblight_savebase(void) {  // Save the current settings to ram
+  base_hue = rgblight_config.hue;
+  base_sat = rgblight_config.sat;
+  base_val = rgblight_config.val;
+  base_mod = rgblight_config.mode;
+}
+void rgblight_loadbase(void) {  // Load settings from ram to eeprom
+  rgblight_mode( base_mod );
+  rgblight_sethsv_eeprom_helper(base_hue, base_sat, base_val, true);
+}
+
+
+
+bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
+  if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
+    keycode = keycode & 0xFF;
+  }
+  switch (keycode) {
+    case KC_RGB_T:  // Switch between underglow layer indication and normal qmk behaviour
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+      if (record->event.pressed) {
+        userspace_config.rgb_layer_change ^= 1;
+        xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
+        eeconfig_update_user(userspace_config.raw);
+        if (userspace_config.rgb_layer_change) {
+          layer_state_set(layer_state);  // Immediately set the layer color (looks better)
+        }
+      }
+#endif  // RGBLIGHT_ENABLE
+      return false;
+      break;
+#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
+        if (userspace_config.rgb_layer_change) {
+          userspace_config.rgb_layer_change = false;
+          xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
+          eeconfig_update_user(userspace_config.raw);
+        }
+      }
+      return true;
+      break;
+#endif  // RGBLIGHT_ENABLE
+  }
+  return true;
+}
+
+void keyboard_post_init_rgb(void) {
+# if defined(RGBLIGHT_ENABLE) || defined(RGBLIGHT_STARTUP_ANIMATION)
+  bool is_enabled = rgblight_config.enable;
+  if (userspace_config.rgb_layer_change) {
+    rgblight_enable_noeeprom();
+  }
+  if (rgblight_config.enable) {
+    layer_state_set_user(layer_state);
+    uint16_t old_hue = rgblight_config.hue;
+    rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+    for (uint16_t i = 255; i > 0; i--) {
+      rgblight_sethsv_noeeprom((i + old_hue) % 255, 255, 255);
+      wait_ms(5);
+    }
+  }
+  if (!is_enabled) {
+    rgblight_disable_noeeprom();
+  }
+# endif // !RGBLIGHT_ENABLE || RGBLIGHT_STARTUP_ANIMATION
+  layer_state_set_user(layer_state);
+}
+
+void matrix_scan_rgb(void) {
+# ifdef INDICATOR_LIGHTS
+  matrix_scan_indicator();
+# endif
+}
+
+layer_state_t layer_state_set_rgb(layer_state_t state) {
+# ifdef RGBLIGHT_ENABLE
+  if (userspace_config.rgb_layer_change) {
+    switch (biton32(state)) {  // _RAISE, _LOWER and _ADJUST use a custom color and the breathing effect
+      case _RAISE:
+        rgblight_sethsv_noeeprom_green();
+        rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+        break;
+      case _LOWER:
+        rgblight_sethsv_noeeprom_red();
+        rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+        break;
+      case _ADJUST:
+        rgblight_sethsv_noeeprom_white();
+        rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 2);
+        break;
+      default:  // Use a solid color for normal layers
+        switch (biton32(default_layer_state)) {
+          case _QWERTY:
+            rgblight_sethsv_noeeprom_magenta();
+            break;
+          case _COLEMAK:
+            rgblight_sethsv_noeeprom_green();
+            break;
+          case _DVORAK:
+            rgblight_sethsv_noeeprom_blue();
+            break;
+          case _WORKMAN:
+            rgblight_sethsv_noeeprom_goldenrod();
+            break;
+          case _PLOVER:
+            rgblight_sethsv_noeeprom_pink();
+            break;
+          default:
+            rgblight_sethsv_noeeprom_white();
+            break;
+        }
+        biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);  // if _MODS layer is on, then breath to denote it
+        break;
+    }
+  }
+# endif  // !RGBLIGHT_ENABLE
+  return state;
+}
+
+#ifdef INDICATOR_LIGHTS
+void matrix_scan_indicator(void) {
+  if (has_initialized) {
+    set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
+  }
+}
+#endif // !INDICATOR_LIGHTS
+
+void rgblight_fade_helper(bool direction){
+  // true: increase val = fade in 
+  // false: decrease val = fade out
+  for (uint8_t index = 0; index <  RGBLIGHT_VAL_STEP ; index++) {
+    direction ? rgblight_increase_val()  : rgblight_decrease_val();
+    wait_ms(5);
+  }
+}
+void fadeflash_leds(uint8_t hue, uint8_t sat, uint8_t val){
+  // indicate success / fail of a leader sequence
+  // fade out, set new hue and saturation, fade in, fade out, set old color, fade in
+  // this is used in leader.c
+  // TODO: come up with a better name maybe
+  rgblight_fade_helper(false); 
+  rgblight_sethsv_noeeprom(hue, sat, 0); 
+  rgblight_fade_helper(true); 
+  rgblight_fade_helper(false); 
+  rgblight_sethsv_noeeprom(base_hue, base_sat, 0); 
+  rgblight_fade_helper(true); 
+}

+ 23 - 0
users/kuchosauronad0/rgblight_user.h

@@ -0,0 +1,23 @@
+#pragma once
+#include "kuchosauronad0.h"
+
+typedef struct {
+    bool     enabled;
+    uint8_t  hue;
+    uint16_t timer;
+    uint8_t  life;
+} rgblight_fadeout;
+const uint8_t RGBLIGHT_FADE_SPEED[6] PROGMEM;
+
+layer_state_t layer_state_set_rgb(layer_state_t state);
+layer_state_t default_layer_state_set_rgb(layer_state_t state);
+
+bool          process_record_user_rgb(uint16_t keycode, keyrecord_t *record);
+void          scan_rgblight_fadeout(void);
+void          keyboard_post_init_rgb(void);
+void          matrix_scan_rgb(void);
+void          rgblight_sethsv_default_helper(uint8_t index);
+void          rgblight_savebase(void);
+void          rgblight_loadbase(void);
+void          rgblight_fade_helper(bool direction);
+void          fadeflash_leds(uint8_t hue, uint8_t sat, uint8_t val);

+ 5 - 3
users/kuchosauronad0/rules.mk

@@ -2,10 +2,11 @@ SRC += kuchosauronad0.c \
 	   process_records.c
 	   process_records.c
 
 
 LINK_TIME_OPTIMIZATION_ENABLE = yes
 LINK_TIME_OPTIMIZATION_ENABLE = yes
+SPACE_CADET_ENABLE            = no
 
 
-#ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
-#     SRC += secrets.c
-#endif
+ifneq ($(strip $(RGBLIGHT_ENABLE)),yes )
+     SRC += rgblight_user.c
+endif
 
 
 ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
 ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
      SRC += tap_dances.c
      SRC += tap_dances.c
@@ -14,6 +15,7 @@ endif
 ifeq ($(strip $(ENCODER_ENABLE)), yes)
 ifeq ($(strip $(ENCODER_ENABLE)), yes)
      SRC += encoder.c
      SRC += encoder.c
 endif
 endif
+
 ifeq ($(strip $(COMBO_ENABLE)), yes)
 ifeq ($(strip $(COMBO_ENABLE)), yes)
      SRC += combo.c
      SRC += combo.c
 endif
 endif

+ 79 - 73
users/kuchosauronad0/wrappers.h

@@ -6,7 +6,7 @@ arguments, we need a wrapper in order for these definitions to be
 expanded before being used as arguments to the LAYOUT_xxx macro.
 expanded before being used as arguments to the LAYOUT_xxx macro.
 */
 */
 #if (!defined(LAYOUT) && defined(KEYMAP))
 #if (!defined(LAYOUT) && defined(KEYMAP))
-#define LAYOUT KEYMAP
+#  define LAYOUT KEYMAP
 #endif
 #endif
 
 
 #define LAYOUT_ergodox_wrapper(...)          LAYOUT_ergodox(__VA_ARGS__)
 #define LAYOUT_ergodox_wrapper(...)          LAYOUT_ergodox(__VA_ARGS__)
@@ -16,6 +16,8 @@ expanded before being used as arguments to the LAYOUT_xxx macro.
 #define LAYOUT_ortho_4x12_wrapper(...)       LAYOUT_ortho_4x12(__VA_ARGS__)
 #define LAYOUT_ortho_4x12_wrapper(...)       LAYOUT_ortho_4x12(__VA_ARGS__)
 #define LAYOUT_ortho_5x12_wrapper(...)       LAYOUT_ortho_5x12(__VA_ARGS__)
 #define LAYOUT_ortho_5x12_wrapper(...)       LAYOUT_ortho_5x12(__VA_ARGS__)
 
 
+#define LAYOUT_collide39_base_wrapper(...)   LAYOUT_collide39_base(__VA_ARGS__)
+
 /*
 /*
 Blocks for each of the four major keyboard layouts
 Blocks for each of the four major keyboard layouts
 Organized so we can quickly adapt and modify all of them
 Organized so we can quickly adapt and modify all of them
@@ -26,20 +28,30 @@ NOTE: These are all the same length.  If you do a search/replace
   then you need to add/remove underscores to keep the
   then you need to add/remove underscores to keep the
   lengths consistent.
   lengths consistent.
 */
 */
+
+#define ___________________BLANK___________________        _______, _______, _______, _______, _______
+
 #ifdef TAP_DANCE_ENABLE
 #ifdef TAP_DANCE_ENABLE
-  #define _________________QWERTY_L1_________________        KC_Q,    KC_DW,   KC_EOL,  KC_R,    KC_TMX
-  #define _________________QWERTY_L2_________________        KC_BOL,  KC_S,    KC_D,    KC_NW,   KC_G
-  #define _________________QWERTY_L3_________________        KC_Z,    KC_X,    KC_C,    KC_V,    KC_PW
+#  define _________________QWERTY_L1_________________     KC_Q,    KC_DW,   KC_EOL,  KC_R,    KC_TMX
+#  define _________________QWERTY_L2_________________     KC_BOL,  KC_S,    KC_D,    KC_NW,   KC_G
+#  define _________________QWERTY_L3_________________     KC_Z,    KC_X,    KC_C,    KC_V,    KC_PW
 #else
 #else
-  #define _________________QWERTY_L1_________________        KC_Q,    KC_W,   KC_E,  KC_R,   KC_T
-  #define _________________QWERTY_L2_________________        KC_A,    KC_S,   KC_D,  KC_F,   KC_G
-  #define _________________QWERTY_L3_________________        KC_Z,    KC_X,   KC_C,  KC_V,   KC_B
+#  define _________________QWERTY_L1_________________     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
+#  define _________________QWERTY_L2_________________     KC_A,    KC_S,    KC_D,    KC_F,    KC_G
+#  define _________________QWERTY_L3_________________     KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
 #endif
 #endif
 
 
-#define _________________QWERTY_R1_________________        KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
-#define _________________QWERTY_R2_________________        KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN
-#define _________________QWERTY_R3_________________        KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
+#define _________________QWERTY_R1_________________       KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
+#define _________________QWERTY_R2_________________       KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN
+#define _________________QWERTY_R3_________________       KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
+
+#define _________________PLOVER_L1_________________       KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
+#define _________________PLOVER_L2_________________       KC_A,    KC_S,    KC_D,    KC_F,    KC_G
+#define _________________PLOVER_L3_________________       KC_NO,   KC_NO,   KC_C,    KC_V,    KC_NO
 
 
+#define _________________PLOVER_R1_________________       KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
+#define _________________PLOVER_R2_________________       KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN
+#define _________________PLOVER_R3_________________       KC_NO,   KC_NO,   KC_N,    KC_M,    KC_NO
 
 
 #define _________________COLEMAK_L1________________       KC_Q,    KC_W,    KC_F,    KC_P,    KC_G
 #define _________________COLEMAK_L1________________       KC_Q,    KC_W,    KC_F,    KC_P,    KC_G
 #define _________________COLEMAK_L2________________       KC_A,    KC_R,    KC_S,    KC_T,    KC_D
 #define _________________COLEMAK_L2________________       KC_A,    KC_R,    KC_S,    KC_T,    KC_D
@@ -57,23 +69,21 @@ NOTE: These are all the same length.  If you do a search/replace
 #define ______________COLEMAK_MOD_DH_R2____________       KC_M,    KC_N,    KC_E,    KC_I,    KC_O
 #define ______________COLEMAK_MOD_DH_R2____________       KC_M,    KC_N,    KC_E,    KC_I,    KC_O
 #define ______________COLEMAK_MOD_DH_R3____________       KC_K,    KC_H,    KC_COMM, KC_DOT,  KC_SLASH
 #define ______________COLEMAK_MOD_DH_R3____________       KC_K,    KC_H,    KC_COMM, KC_DOT,  KC_SLASH
 
 
+#define _________________DVORAK_L1_________________       KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
+#define _________________DVORAK_L2_________________       KC_A,    KC_O,    KC_E,   KC_U,     KC_I
+#define _________________DVORAK_L3_________________       KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
 
 
-#define _________________DVORAK_L1_________________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
-#define _________________DVORAK_L2_________________        KC_A,    KC_O,    KC_E,   KC_U,     KC_I
-#define _________________DVORAK_L3_________________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
+#define _________________DVORAK_R1_________________       KC_F,    KC_G,    KC_C,    KC_R,    KC_L
+#define _________________DVORAK_R2_________________       KC_D,    KC_H,    KC_T,    KC_N,    KC_S
+#define _________________DVORAK_R3_________________       KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
 
 
-#define _________________DVORAK_R1_________________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
-#define _________________DVORAK_R2_________________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S
-#define _________________DVORAK_R3_________________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
-
-#define ________________DVORAK_AU_L1_______________        KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
-#define ________________DVORAK_AU_L2_______________        KC_O,    KC_A,    KC_E,   KC_I,     KC_U
-#define ________________DVORAK_AU_L3_______________        KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
-
-#define ________________DVORAK_AU_R1_______________        KC_F,    KC_G,    KC_C,    KC_R,    KC_L
-#define ________________DVORAK_AU_R2_______________        KC_D,    KC_H,    KC_T,    KC_N,    KC_S
-#define ________________DVORAK_AU_R3_______________        KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
+#define ________________DVORAK_AU_L1_______________       KC_QUOT, KC_COMM, KC_DOT, KC_P,     KC_Y
+#define ________________DVORAK_AU_L2_______________       KC_O,    KC_A,    KC_E,   KC_I,     KC_U
+#define ________________DVORAK_AU_L3_______________       KC_SCLN, KC_Q,    KC_J,   KC_K,     KC_X
 
 
+#define ________________DVORAK_AU_R1_______________       KC_F,    KC_G,    KC_C,    KC_R,    KC_L
+#define ________________DVORAK_AU_R2_______________       KC_D,    KC_H,    KC_T,    KC_N,    KC_S
+#define ________________DVORAK_AU_R3_______________       KC_B,    KC_M,    KC_W,    KC_V,    KC_Z
 
 
 #define _________________WORKMAN_L1________________       KC_Q,    KC_D,    KC_R,   KC_W,     KC_B
 #define _________________WORKMAN_L1________________       KC_Q,    KC_D,    KC_R,   KC_W,     KC_B
 #define _________________WORKMAN_L2________________       KC_A,    KC_S,    KC_H,   KC_T,     KC_G
 #define _________________WORKMAN_L2________________       KC_A,    KC_S,    KC_H,   KC_T,     KC_G
@@ -83,7 +93,6 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _________________WORKMAN_R2________________       KC_Y,    KC_N,    KC_E,    KC_O,    KC_I
 #define _________________WORKMAN_R2________________       KC_Y,    KC_N,    KC_E,    KC_O,    KC_I
 #define _________________WORKMAN_R3________________       KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLASH
 #define _________________WORKMAN_R3________________       KC_K,    KC_L,    KC_COMM, KC_DOT,  KC_SLASH
 
 
-
 #define _________________NORMAN_L1_________________       KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
 #define _________________NORMAN_L1_________________       KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
 #define _________________NORMAN_L2_________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_G
 #define _________________NORMAN_L2_________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_G
 #define _________________NORMAN_L3_________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
 #define _________________NORMAN_L3_________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
@@ -92,7 +101,6 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _________________NORMAN_R2_________________       KC_Y,    KC_N,    KC_I,    KC_O,    KC_U
 #define _________________NORMAN_R2_________________       KC_Y,    KC_N,    KC_I,    KC_O,    KC_U
 #define _________________NORMAN_R3_________________       KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
 #define _________________NORMAN_R3_________________       KC_P,    KC_M,    KC_COMM, KC_DOT,  KC_SLASH
 
 
-
 #define _________________MALTRON_L1________________       KC_Q,    KC_P,    KC_Y,    KC_C,    KC_B
 #define _________________MALTRON_L1________________       KC_Q,    KC_P,    KC_Y,    KC_C,    KC_B
 #define _________________MALTRON_L2________________       KC_A,    KC_N,    KC_I,    KC_S,    KC_F
 #define _________________MALTRON_L2________________       KC_A,    KC_N,    KC_I,    KC_S,    KC_F
 #define _________________MALTRON_L3________________       KC_SCLN, KC_SLSH, KC_J,    KC_G,    KC_COMM
 #define _________________MALTRON_L3________________       KC_SCLN, KC_SLSH, KC_J,    KC_G,    KC_COMM
@@ -101,7 +109,6 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _________________MALTRON_R2________________       KC_D,    KC_T,    KC_D,    KC_O,    KC_R
 #define _________________MALTRON_R2________________       KC_D,    KC_T,    KC_D,    KC_O,    KC_R
 #define _________________MALTRON_R3________________       KC_DOT,  KC_W,    KC_K,    KC_MINS, KC_X
 #define _________________MALTRON_R3________________       KC_DOT,  KC_W,    KC_K,    KC_MINS, KC_X
 
 
-
 #define _________________EUCALYN_L1________________       KC_SLSH, KC_COMM, KC_DOT,  KC_F,    KC_Q
 #define _________________EUCALYN_L1________________       KC_SLSH, KC_COMM, KC_DOT,  KC_F,    KC_Q
 #define _________________EUCALYN_L2________________       KC_A,    KC_O,    KC_E,    KC_I,    KC_U
 #define _________________EUCALYN_L2________________       KC_A,    KC_O,    KC_E,    KC_I,    KC_U
 #define _________________EUCALYN_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_W
 #define _________________EUCALYN_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_W
@@ -110,7 +117,6 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _________________EUCALYN_R2________________       KC_G,    KC_T,    KC_K,    KC_S,    KC_N
 #define _________________EUCALYN_R2________________       KC_G,    KC_T,    KC_K,    KC_S,    KC_N
 #define _________________EUCALYN_R3________________       KC_B,    KC_H,    KC_J,    KC_L,    KC_SCLN
 #define _________________EUCALYN_R3________________       KC_B,    KC_H,    KC_J,    KC_L,    KC_SCLN
 
 
-
 #define _____________CARPLAX_QFMLWY_L1_____________       KC_Q,    KC_F,    KC_M,    KC_L,    KC_W
 #define _____________CARPLAX_QFMLWY_L1_____________       KC_Q,    KC_F,    KC_M,    KC_L,    KC_W
 #define _____________CARPLAX_QFMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
 #define _____________CARPLAX_QFMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
 #define _____________CARPLAX_QFMLWY_L3_____________       KC_Z,    KC_V,    KC_G,    KC_C,    KC_X
 #define _____________CARPLAX_QFMLWY_L3_____________       KC_Z,    KC_V,    KC_G,    KC_C,    KC_X
@@ -119,7 +125,6 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _____________CARPLAX_QFMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_H,    KC_SCLN
 #define _____________CARPLAX_QFMLWY_R2_____________       KC_I,    KC_A,    KC_E,    KC_H,    KC_SCLN
 #define _____________CARPLAX_QFMLWY_R3_____________       KC_P,    KC_K,    KC_COMM, KC_DOT,  KC_SLSH
 #define _____________CARPLAX_QFMLWY_R3_____________       KC_P,    KC_K,    KC_COMM, KC_DOT,  KC_SLSH
 
 
-
 #define _____________CARPLAX_QGMLWB_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
 #define _____________CARPLAX_QGMLWB_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
 #define _____________CARPLAX_QGMLWB_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
 #define _____________CARPLAX_QGMLWB_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
 #define _____________CARPLAX_QGMLWB_L3_____________       KC_Z,    KC_X,    KC_C,    KC_F,    KC_J
 #define _____________CARPLAX_QGMLWB_L3_____________       KC_Z,    KC_X,    KC_C,    KC_F,    KC_J
@@ -128,7 +133,6 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _____________CARPLAX_QGMLWB_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H
 #define _____________CARPLAX_QGMLWB_R2_____________       KC_I,    KC_A,    KC_E,    KC_O,    KC_H
 #define _____________CARPLAX_QGMLWB_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
 #define _____________CARPLAX_QGMLWB_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
 
 
-
 #define _____________CARPLAX_QGMLWY_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
 #define _____________CARPLAX_QGMLWY_L1_____________       KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
 #define _____________CARPLAX_QGMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
 #define _____________CARPLAX_QGMLWY_L2_____________       KC_D,    KC_S,    KC_T,    KC_N,    KC_R
 #define _____________CARPLAX_QGMLWY_L3_____________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_J
 #define _____________CARPLAX_QGMLWY_L3_____________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_J
@@ -138,23 +142,23 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _____________CARPLAX_QGMLWY_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
 #define _____________CARPLAX_QGMLWY_R3_____________       KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
 
 
 #ifdef UNICODE_ENABLE
 #ifdef UNICODE_ENABLE
-#define _______________UNICODE_L1__________________        UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
-#define _______________UNICODE_L2__________________        UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
-#define _______________UNICODE_L3__________________        UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
+#  define _______________UNICODE_L1__________________     UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
+#  define _______________UNICODE_L2__________________     UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
+#  define _______________UNICODE_L3__________________     UC_DISA,UC_DISA, UC_DISA, UC_DISA, UC_DISA
 
 
-#define _______________UNICODE_R1__________________        UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
-#define _______________UNICODE_R2__________________        UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
-#define _______________UNICODE_R3__________________        UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
+#  define _______________UNICODE_R1__________________     UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
+#  define _______________UNICODE_R2__________________     UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
+#  define _______________UNICODE_R3__________________     UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG, UC_SHRG
 #endif
 #endif
 
 
 #ifdef UNICODEMAP_ENABLE
 #ifdef UNICODEMAP_ENABLE
-#define _______________UNICODE_L1__________________        X(SMRK),  X(THINK),  X(CLOWN), X(HUNDR), X(BANG)
-#define _______________UNICODE_L2__________________        X(GRIN),  X(MONKEY), X(OKOK), X(EGGPL), X(LIT)
-#define _______________UNICODE_L3__________________        X(WEARY), X(UNAMU),  X(EFFU), X(MONOCL), X(IRONY)
+#  define _______________UNICODE_L1__________________     X(SMRK),  X(THINK),  X(CLOWN), X(HUNDR),  X(BANG)
+#  define _______________UNICODE_L2__________________     X(GRIN),  X(MONKEY), X(OKOK),  X(EGGPL),  X(LIT)
+#  define _______________UNICODE_L3__________________     X(WEARY), X(UNAMU),  X(EFFU),  X(MONOCL), X(IRONY)
 
 
-#define _______________UNICODE_R1__________________        X(DRUG0), X(THUP), X(INUP), X(DIZZY), X(COOL)
-#define _______________UNICODE_R2__________________        X(FIST0), X(FIST2),X(FIST3),X(FIST1), X(OKOK)
-#define _______________UNICODE_R3__________________        X(MNDBLWN), X(THDN), X(SPOCK),X(HOLE),  X(DASH)
+#  define _______________UNICODE_R1__________________     X(DRUG0),   X(THUP),  X(INUP),  X(DIZZY), X(COOL)
+#  define _______________UNICODE_R2__________________     X(FIST0),   X(FIST2), X(FIST3), X(FIST1), X(OKOK)
+#  define _______________UNICODE_R3__________________     X(MNDBLWN), X(THDN),  X(SPOCK), X(HOLE),  X(DASH)
 #endif
 #endif
 
 
 #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
@@ -162,45 +166,47 @@ NOTE: These are all the same length.  If you do a search/replace
 #define _________________FUNC_LEFT_________________       KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5
 #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
 #define _________________FUNC_RIGHT________________       KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10
 
 
-#define ___________________BLANK___________________        _______, _______, _______, _______, _______
+#define _________________MEDIA_RIGHT_______________       KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
+#define _________________MEDIA_LEFT________________       KC_VOLD, KC_VOLD, KC_MUTE, KC_VOLU, KC_VOLU
 
 
+#define _________________LOWER_L1__________________       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC
+#define _________________LOWER_L2__________________       ___________________BLANK___________________
+#define _________________LOWER_L3__________________       _______, _______, _______, OS_UNI,  TM_X
 
 
-#define _________________LOWER_L1__________________        KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC
-#define _________________LOWER_L2__________________        ___________________BLANK___________________
-#define _________________LOWER_L3__________________        ___________________BLANK___________________
+#define _________________LOWER_R1__________________       KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
+#define _________________LOWER_R2__________________       _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
+#define _________________LOWER_R3__________________       _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
 
 
-#define _________________LOWER_R1__________________        KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
-#define _________________LOWER_R2__________________        OS_UNI, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
-#define _________________LOWER_R3__________________        TM_X,    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
+#define _________________RAISE_L1__________________       ________________NUMBER_LEFT________________
+#define _________________RAISE_L2__________________       ___________________BLANK___________________
+#define _________________RAISE_L3__________________       ___________________BLANK___________________
 
 
+#define _________________RAISE_R1__________________       ________________NUMBER_RIGHT_______________
+#define _________________RAISE_R2__________________       _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC
+#define _________________RAISE_R3__________________       _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
 
 
+#define _________________ADJUST_L1_________________       QWERTY,  COLEMAK, DVORAK,  WORKMAN, PLOVER
+#define _________________ADJUST_L2_________________       _________________FUNC_LEFT_________________
+#define _________________ADJUST_L3_________________       _________________MEDIA_LEFT________________
 
 
-#define _________________RAISE_L1__________________        ________________NUMBER_LEFT________________
-#define _________________RAISE_L2__________________        ___________________BLANK___________________
-#define _________________RAISE_L3__________________        ___________________BLANK___________________
+#define _________________ADJUST_R1_________________       SEC1,    SEC2,    SEC3,    SEC4,    SEC5
+#define _________________ADJUST_R2_________________       _________________FUNC_RIGHT________________
+#define _________________ADJUST_R3_________________       _________________MEDIA_RIGHT_______________
 
 
-#define _________________RAISE_R1__________________        ________________NUMBER_RIGHT_______________
-#define _________________RAISE_R2__________________        _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC
-#define _________________RAISE_R3__________________        _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+#define _________________RGB_UP____________________       RGB_MOD,  RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
+#define _________________RGB_CENTER________________       MU_TOG ,  CK_TOGG, AU_ON,   AU_OFF,  AG_NORM
+#define _________________RGB_DOWN__________________       RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T
 
 
+#define _________________RGB_R1____________________       RGB_MOD,  RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
+#define _________________RGB_R2____________________       MU_TOG ,  CK_TOGG, AU_ON,   AU_OFF,  AG_NORM
+#define _________________RGB_R3____________________       RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T
 
 
+#define __________________GAMEPAD_L1_______________       _______,  KC_Q,    KC_W,    KC_E,     _______
+#define __________________GAMEPAD_L2_______________       _______,  KC_A,    KC_S,    KC_D,     _______
+#define __________________GAMEPAD_L3_______________       KC_1,     KC_2,    KC_3,    KC_4,     KC_5
 
 
-#define _________________ADJUST_L1_________________        ___________________BLANK___________________
-#define _________________ADJUST_L2_________________        _________________FUNC_LEFT_________________
-#define _________________ADJUST_L3_________________        AG_SWAP, QWERTY,  COLEMAK, DVORAK,  WORKMAN
+#define __________________GAMEPAD_R1_______________       _______,  KC_U,    KC_UP,   KC_O,     _______
+#define __________________GAMEPAD_R2_______________       _______,  KC_LEFT, KC_DOWN, KC_RIGHT, _______
+#define __________________GAMEPAD_R3_______________       KC_6,     KC_7,    KC_8,    KC_9,     KC_0
+/* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et */
 
 
-#define _________________ADJUST_R1_________________        KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
-#define _________________ADJUST_R2_________________        _________________FUNC_RIGHT________________
-#define _________________ADJUST_R3_________________        KC_MUTE, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
-
-
-/*
-#define _________________RGB_L1____________________       RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
-#define _________________RGB_L2____________________       MU_TOG , CK_TOGG, AU_ON,   AU_OFF,  AG_NORM
-#define _________________RGB_L3____________________       RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
-#define _________________RGB_R1____________________       RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
-#define _________________RGB_R2____________________       MU_TOG , CK_TOGG, AU_ON,   AU_OFF,  AG_NORM
-#define _________________RGB_R3____________________       RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
-*/
-/* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et
-     */