浏览代码

[Keymap] RGB Changes for Drashna Keyboards (#5803)

* Disable a bunch of reactive modes

* Enable rgb matrix for Corne Keyboard

* Convert CRKBD to rgb matrix

* Add Gergo keyboard layout

* Make Diablo 3 tap dance better

* Add basic support for Planck EZ

* Fix RGB Matrix stuff

* Fix keycodes for Planck EZ

* Update CRKBD OLED stuff

* Fix typo for sleep on ergodox glow

* Improve my gergo layout

* Scrolling OLED key logger!

* Change gergo layout

* Hnadle unicode keycodes if unicode is disabled

* Disable COMMAND/CONSOLE for gergo

* Fix right side control

* Re-enable LTO for all platforms

Since I got updated arm gcc binaries that no longer error out on lto

* Update formatting to match newer community standards

Poor 2 space

* Re-alight startup animation to use new HUE range

* Streamline gitlab ci scripts

* Disabled Space Cadet

* Add support for breathing table

* Enable new LTO Option

And clean up defines that will now be repeatitive

* Remove vscode settings

* Additional formatting cleanup of config.h files
Drashna Jaelre 6 年之前
父节点
当前提交
f3d5b1091d
共有 38 个文件被更改,包括 1421 次插入1451 次删除
  1. 34 8
      keyboards/crkbd/keymaps/drashna/config.h
  2. 117 261
      keyboards/crkbd/keymaps/drashna/keymap.c
  3. 6 1
      keyboards/crkbd/keymaps/drashna/rules.mk
  4. 4 10
      keyboards/gergo/keymaps/drashna/keymap.c
  5. 2 0
      keyboards/gergo/keymaps/drashna/rules.mk
  6. 15 16
      keyboards/keebio/iris/keymaps/drashna/config.h
  7. 8 8
      keyboards/keebio/iris/keymaps/drashna/keymap.c
  8. 1 0
      keyboards/keebio/iris/keymaps/drashna/rules.mk
  9. 5 5
      keyboards/keebio/iris/keymaps/drashna_lp/config.h
  10. 5 5
      keyboards/keebio/iris/keymaps/drashna_old/config.h
  11. 10 20
      keyboards/keebio/viterbi/keymaps/drashna/config.h
  12. 1 0
      keyboards/keebio/viterbi/keymaps/drashna/rules.mk
  13. 2 2
      keyboards/keebio/viterbi/keymaps/drashna_old/config.h
  14. 17 18
      keyboards/orthodox/keymaps/drashna/config.h
  15. 4 4
      keyboards/orthodox/keymaps/drashna/keymap.c
  16. 1 0
      keyboards/orthodox/keymaps/drashna/rules.mk
  17. 4 5
      layouts/community/ergodox/drashna/config.h
  18. 142 158
      layouts/community/ergodox/drashna/keymap.c
  19. 12 11
      layouts/community/ergodox/drashna/rules.mk
  20. 13 2
      layouts/community/ergodox/drashna_glow/config.h
  21. 9 10
      layouts/community/numpad_5x6/drashna/config.h
  22. 31 28
      layouts/community/ortho_4x12/drashna/config.h
  23. 176 136
      layouts/community/ortho_4x12/drashna/keymap.c
  24. 18 7
      layouts/community/ortho_4x12/drashna/rules.mk
  25. 14 15
      layouts/community/ortho_5x12/drashna/config.h
  26. 2 33
      users/drashna/.gitlab-ci.yml
  27. 34 38
      users/drashna/config.h
  28. 99 99
      users/drashna/drashna.c
  29. 38 38
      users/drashna/drashna.h
  30. 116 116
      users/drashna/process_records.c
  31. 38 38
      users/drashna/process_records.h
  32. 202 239
      users/drashna/rgb_stuff.c
  33. 116 0
      users/drashna/rgblight_breathe_table.h
  34. 23 23
      users/drashna/rules.mk
  35. 52 52
      users/drashna/send_unicode.h
  36. 39 38
      users/drashna/tap_dances.c
  37. 9 6
      users/drashna/tap_dances.h
  38. 2 1
      users/drashna/wrappers.h

+ 34 - 8
keyboards/crkbd/keymaps/drashna/config.h

@@ -27,7 +27,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // #define MASTER_RIGHT
 // #define MASTER_RIGHT
 #define EE_HANDS
 #define EE_HANDS
 
 
-// #define SSD1306OLED
+#undef USE_I2C
+#undef SSD1306OLED
 
 
 #define USE_SERIAL_PD2
 #define USE_SERIAL_PD2
 
 
@@ -35,17 +36,42 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // #define TAPPING_TERM 100
 // #define TAPPING_TERM 100
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 27
+#   undef RGBLED_NUM
+#   define RGBLED_NUM 27
 
 
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#define RGBLIGHT_LIMIT_VAL 100
+#   define RGBLIGHT_HUE_STEP 8
+#   define RGBLIGHT_SAT_STEP 8
+#   define RGBLIGHT_VAL_STEP 8
+#   define RGBLIGHT_LIMIT_VAL 100
 #endif
 #endif
 
 
+#ifdef RGB_MATRIX_ENABLE
+#   define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+#   define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+
+#   define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#   define DISABLE_RGB_MATRIX_CYCLE_ALL
+#   define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#   define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#   define DISABLE_RGB_MATRIX_DUAL_BEACON
+#   define DISABLE_RGB_MATRIX_RAINBOW_BEACON
+#   define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define DISABLE_RGB_MATRIX_RAINDROPS
+// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#   define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#   define DISABLE_RGB_MATRIX_SOLID_SPLASH
+#   define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
 #ifdef AUDIO_ENABLE
 #ifdef AUDIO_ENABLE
-#define B6_AUDIO
+#   define B6_AUDIO
 // #define NO_MUSIC_MODE
 // #define NO_MUSIC_MODE
 #endif
 #endif
 
 

+ 117 - 261
keyboards/crkbd/keymaps/drashna/keymap.c

@@ -1,15 +1,5 @@
 #include QMK_KEYBOARD_H
 #include QMK_KEYBOARD_H
 #include "drashna.h"
 #include "drashna.h"
-#ifdef PROTOCOL_LUFA
-  #include "lufa.h"
-  #include "split_util.h"
-#endif
-#ifdef SSD1306OLED
-  #include "ssd1306.h"
-#endif
-#ifdef OLED_DRIVER_ENABLE
-  #include "oled_driver.h"
-#endif
 
 
 extern keymap_config_t keymap_config;
 extern keymap_config_t keymap_config;
 extern uint8_t is_master;
 extern uint8_t is_master;
@@ -20,7 +10,7 @@ extern rgblight_config_t rgblight_config;
 #endif
 #endif
 
 
 enum crkbd_keycodes {
 enum crkbd_keycodes {
-  RGBRST = NEW_SAFE_RANGE
+    RGBRST = NEW_SAFE_RANGE
 };
 };
 
 
 #define LAYOUT_crkbd_base( \
 #define LAYOUT_crkbd_base( \
@@ -31,7 +21,7 @@ enum crkbd_keycodes {
   LAYOUT_wrapper( \
   LAYOUT_wrapper( \
     KC_ESC,  K01,    K02,     K03,      K04,     K05,                        K06,     K07,     K08,     K09,     K0A,     KC_MINS, \
     KC_ESC,  K01,    K02,     K03,      K04,     K05,                        K06,     K07,     K08,     K09,     K0A,     KC_MINS, \
     KC_TAB, ALT_T(K11),  K12, K13,      K14,     K15,                        K16,     K17,     K18,     K19,     K1A, RGUI_T(KC_QUOT), \
     KC_TAB, ALT_T(K11),  K12, K13,      K14,     K15,                        K16,     K17,     K18,     K19,     K1A, RGUI_T(KC_QUOT), \
-    OS_LSFT, CTL_T(K21), K22, K23,      K24,     K25,                        K26,     K27,     K28,     K29,  CTL_T(K2A), OS_RSFT, \
+    OS_LSFT, CTL_T(K21), K22, K23,      K24,     K25,                        K26,     K27,     K28,     K29, RCTL_T(K2A), OS_RSFT, \
                            LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,     KC_DEL,  KC_ENT,  RAISE                                        \
                            LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,     KC_DEL,  KC_ENT,  RAISE                                        \
   )
   )
 #define LAYOUT_crkbd_base_wrapper(...)       LAYOUT_crkbd_base(__VA_ARGS__)
 #define LAYOUT_crkbd_base_wrapper(...)       LAYOUT_crkbd_base(__VA_ARGS__)
@@ -115,35 +105,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 };
 };
 
 
 void matrix_init_keymap(void) {
 void matrix_init_keymap(void) {
-  //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
-  #ifdef SSD1306OLED
-    iota_gfx_init(!has_usb());   // turns on the display
-  #endif
-
-  #ifndef CONVERT_TO_PROTON_C
+#ifndef CONVERT_TO_PROTON_C
     setPinOutput(D5);
     setPinOutput(D5);
     writePinHigh(D5);
     writePinHigh(D5);
 
 
     setPinOutput(B0);
     setPinOutput(B0);
     writePinHigh(B0);
     writePinHigh(B0);
-  #endif
+#endif
 }
 }
 
 
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
 
 
-// When add source files to SRC in rules.mk, you can use functions.
-const char *read_logo(void);
-char layer_state_str[24];
-char modifier_state_str[24];
-char host_led_state_str[24];
-char keylog_str[24] = {};
-char keylogs_str[21] = {};
-int keylogs_str_idx = 0;
+#ifdef OLED_DRIVER_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+    if (is_master) {
+        return OLED_ROTATION_270;
+    } else {
+        return rotation;
+    }
+}
+
+void render_crkbd_logo(void) {
+    static const char PROGMEM crkbd_logo[] = {
+        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+        0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+        0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+        0};
+    oled_write_P(crkbd_logo, false);
+}
 
 
-// const char *read_mode_icon(bool swap);
-// void set_timelog(void);
-// const char *read_timelog(void);
+#define KEYLOG_LEN (int)(32 / OLED_FONT_WIDTH)
+char keylog_str[KEYLOG_LEN] = {};
+uint8_t keylogs_str_idx = 0;
+uint16_t log_timer = 0;
 
 
 const char code_to_name[60] = {
 const char code_to_name[60] = {
     ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
     ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
@@ -153,261 +146,124 @@ const char code_to_name[60] = {
     'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
     'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
     '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
     '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
 
 
-void set_keylog(uint16_t keycode, keyrecord_t *record) {
-  char name = ' ';
-  if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
-  if (keycode < 60) {
-    name = code_to_name[keycode];
-  }
-  // update keylog
-  snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
-           record->event.key.row, record->event.key.col,
-           keycode, name);
-
-  // update keylogs
-  if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
-    keylogs_str_idx = 0;
-    for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
-      keylogs_str[i] = ' ';
-    }
-  }
-
-  keylogs_str[keylogs_str_idx] = name;
-  keylogs_str_idx++;
-}
+void add_keylog(uint16_t keycode) {
+    if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+        (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
 
 
-const char *read_keylog(void) {
-  return keylog_str;
+    for (uint8_t i = KEYLOG_LEN - 1; i > 0; i--) {
+        keylog_str[i] = keylog_str[i - 1];
+    }
+    if (keycode < 60) {
+        keylog_str[0] = code_to_name[keycode];
+    }
+    log_timer = timer_read();
 }
 }
 
 
-const char *read_keylogs(void) {
-  return keylogs_str;
+void update_log(void) {
+    if (timer_elapsed(log_timer) > 750) {
+        add_keylog(0);
+    }
 }
 }
 
 
 
 
-const char* read_modifier_state(void) {
-  uint8_t modifiers = get_mods();
-  uint8_t one_shot = get_oneshot_mods();
-
-  snprintf(modifier_state_str, sizeof(modifier_state_str), "Mods:%s %s %s %s",
-    (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL) ? "CTL" : "   ",
-    (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI) ? "GUI" : "   ",
-    (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT) ? "ALT" : "   ",
-    (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? "SFT" : "   "
-  );
-
-  return modifier_state_str;
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+    if (record->event.pressed) {  add_keylog(keycode); }
+    return true;
 }
 }
 
 
-const char *read_host_led_state(void) {
-  uint8_t leds = host_keyboard_leds();
-
-  snprintf(host_led_state_str, sizeof(host_led_state_str), "NL:%s CL:%s SL:%s",
-    (leds & (1 << USB_LED_NUM_LOCK)) ? "on" : "- ",
-    (leds & (1 << USB_LED_CAPS_LOCK)) ? "on" : "- ",
-    (leds & (1 << USB_LED_SCROLL_LOCK)) ? "on" : "- "
-  );
-
-  return host_led_state_str;
-}
+void render_status(void) {
 
 
-const char* read_layer_state(void) {
-  switch (biton32(layer_state)) {
-    case _RAISE:
-      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise  ");
-      break;
-    case _LOWER:
-      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower  ");
-      break;
-    case _ADJUST:
-      snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust ");
-      break;
-    default:
-      switch (biton32(default_layer_state)) {
+    oled_write_P(PSTR("Layer"), false);
+    switch (biton32(layer_state)) {
+        case 0:
+            oled_write_P(PSTR("Base "), false);
+            break;
+        case _RAISE:
+            oled_write_P(PSTR("Raise"), false);
+            break;
+        case _LOWER:
+            oled_write_P(PSTR("Lower"), false);
+            break;
+        case _ADJUST:
+            oled_write_P(PSTR("Adjst"), false);
+            break;
+        default:
+            oled_write_P(PSTR("Unkn "), false);
+            break;
+    }
+    oled_write_P(PSTR("Lyout"), false);
+    switch (biton32(default_layer_state)) {
         case _QWERTY:
         case _QWERTY:
-          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty ");
-          break;
+            oled_write_P(PSTR("QWRTY"), false);
+            break;
         case _COLEMAK:
         case _COLEMAK:
-          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak");
-          break;
+            oled_write_P(PSTR("COLMK"), false);
+            break;
         case _DVORAK:
         case _DVORAK:
-          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dvorak ");
-          break;
+            oled_write_P(PSTR("DVRAK"), false);
+            break;
         case _WORKMAN:
         case _WORKMAN:
-          snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Workman");
-          break;
-      }
-      break;
-  }
-
-    return layer_state_str;
-}
-
-void matrix_scan_keymap(void) {
-   iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
-  if (is_master) {
-    //If you want to change the display of OLED, you need to change here
-    matrix_write_ln(matrix, read_layer_state());
-    matrix_write_ln(matrix, read_modifier_state());
-    // matrix_write_ln(matrix, read_keylog());
-    matrix_write_ln(matrix, read_keylogs());
-    // matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
-    // matrix_write(matrix, read_host_led_state());
-    //matrix_write_ln(matrix, read_timelog());
-  } else {
-    matrix_write(matrix, read_logo());
-  }
-}
-
-void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
-  if (memcmp(dest->display, source->display, sizeof(dest->display))) {
-    memcpy(dest->display, source->display, sizeof(dest->display));
-    dest->dirty = true;
-  }
-}
-
-void iota_gfx_task_user(void) {
-  struct CharacterMatrix matrix;
-  matrix_clear(&matrix);
-  matrix_render_user(&matrix);
-  matrix_update(&display, &matrix);
-}
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    case KC_A ... KC_SLASH:
-    case KC_F1 ... KC_F12:
-    case KC_INSERT ... KC_UP:
-    case KC_KP_SLASH ... KC_KP_DOT:
-    case KC_F13 ... KC_F24:
-    if (record->event.pressed) { set_keylog(keycode, record); }
-      break;
-    // set_timelog();
-  }
-  return true;
-}
+            oled_write_P(PSTR("WRKMN"), false);
+            break;
+        case _NORMAN:
+            oled_write_P(PSTR("NORMN"), false);
+            break;
+        case _MALTRON:
+            oled_write_P(PSTR("MLTRN"), false);
+            break;
+        case _EUCALYN:
+            oled_write_P(PSTR("ECLYN"), false);
+            break;
+        case _CARPLAX:
+            oled_write_P(PSTR("CRPLX"), false);
+            break;
+    }
 
 
-#endif
+    uint8_t modifiers = get_mods();
+    uint8_t one_shot = get_oneshot_mods();
 
 
+    oled_write_P(PSTR("Mods:"), false);
+    oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR("     "), false);
+    oled_write_P( (modifiers & MOD_MASK_CTRL  || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR("     "), false);
+    oled_write_P( (modifiers & MOD_MASK_ALT   || one_shot & MOD_MASK_ALT  ) ? PSTR(" ALT ") : PSTR("     "), false);
+    oled_write_P( (modifiers & MOD_MASK_GUI   || one_shot & MOD_MASK_GUI  ) ? PSTR(" GUI ") : PSTR("     "), false);
 
 
-#ifdef OLED_DRIVER_ENABLE
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
-  if (is_master) {
-    return OLED_ROTATION_270;
-  } else {
-    return rotation;
-  }
-}
 
 
-void render_crkbd_logo(void) {
-  static const char PROGMEM crkbd_logo[] = {
-      0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
-      0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
-      0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
-      0};
-  oled_write_P(crkbd_logo, false);
-}
+    oled_write_P(PSTR("BTMGK"), false);
 
 
+    if (keymap_config.swap_lalt_lgui) {
+        oled_write_P(PSTR(" Mac "), false);
+    } else {
+        oled_write_P(PSTR(" Win "), false);
+    }
 
 
-void render_status(void) {
+    uint8_t led_usb_state = host_keyboard_leds();
+    oled_write_P(PSTR("Lock:"), false);
+    oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK)    ? PSTR(" NUM ") : PSTR("     "), false);
+    oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK)   ? PSTR(" CAPS") : PSTR("     "), false);
+    oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : PSTR("     "), false);
 
 
-  oled_write_P(PSTR("Layer"), false);
-  switch (biton32(layer_state)) {
-    case 0:
-      oled_write_P(PSTR("Base "), false);
-      break;
-    case _RAISE:
-      oled_write_P(PSTR("Raise"), false);
-      break;
-    case _LOWER:
-      oled_write_P(PSTR("Lower"), false);
-      break;
-    case _ADJUST:
-      oled_write_P(PSTR("Adjst"), false);
-      break;
-    default:
-      oled_write_P(PSTR("Unkn "), false);
-      break;
-  }
-  oled_write_P(PSTR("Lyout"), false);
-  switch (biton32(default_layer_state)) {
-    case _QWERTY:
-      oled_write_P(PSTR("QWRTY"), false);
-      break;
-    case _COLEMAK:
-      oled_write_P(PSTR("COLMK"), false);
-      break;
-    case _DVORAK:
-      oled_write_P(PSTR("DVRAK"), false);
-      break;
-    case _WORKMAN:
-      oled_write_P(PSTR("WRKMN"), false);
-      break;
-    case _NORMAN:
-      oled_write_P(PSTR("NORMN"), false);
-      break;
-    case _MALTRON:
-      oled_write_P(PSTR("MLTRN"), false);
-      break;
-    case _EUCALYN:
-      oled_write_P(PSTR("ECLYN"), false);
-      break;
-    case _CARPLAX:
-      oled_write_P(PSTR("CRPLX"), false);
-      break;
-  }
-
-  uint8_t modifiers = get_mods();
-  uint8_t one_shot = get_oneshot_mods();
-
-  oled_write_P(PSTR("Mods:"), false);
-  oled_write_P( (modifiers & MOD_MASK_CTRL  || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR("     "), false);
-  oled_write_P( (modifiers & MOD_MASK_GUI   || one_shot & MOD_MASK_GUI  ) ? PSTR(" GUI ") : PSTR("     "), false);
-  oled_write_P( (modifiers & MOD_MASK_ALT   || one_shot & MOD_MASK_ALT  ) ? PSTR(" ALT ") : PSTR("     "), false);
-  oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR("     "), false);
-
-
-  oled_write_P(PSTR("BTMGK"), false);
-  static const char PROGMEM mode_logo[4][4] = {
-    {0x95,0x96,0x0a,0},
-    {0xb5,0xb6,0x0a,0},
-    {0x97,0x98,0x0a,0},
-    {0xb7,0xb8,0x0a,0} };
-
-  if (keymap_config.swap_lalt_lgui != false) {
-    oled_write_P(mode_logo[0], false);
-    oled_write_P(mode_logo[1], false);
-  } else {
-    oled_write_P(mode_logo[2], false);
-    oled_write_P(mode_logo[3], false);
-  }
-
-  uint8_t led_usb_state = host_keyboard_leds();
-  oled_write_P(PSTR("Lock:"), false);
-  oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK)    ? PSTR(" NUM ") : PSTR("     "), false);
-  oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK)   ? PSTR(" CAPS") : PSTR("     "), false);
-  oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : PSTR("     "), false);
+    oled_write(keylog_str, false);
 }
 }
 
 
 
 
 void oled_task_user(void) {
 void oled_task_user(void) {
-  if (is_master) {
-    render_status();     // Renders the current keyboard state (layer, lock, caps, scroll, etc)
-  } else {
-    render_crkbd_logo();
-    oled_scroll_left();  // Turns on scrolling
-  }
+    if (is_master) {
+        render_status();     // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+    } else {
+        render_crkbd_logo();
+        oled_scroll_left();  // Turns on scrolling
+    }
 }
 }
+
+void matrix_scan_keymap(void) { update_log(); }
 #endif
 #endif
 
 
 uint16_t get_tapping_term(uint16_t keycode) {
 uint16_t get_tapping_term(uint16_t keycode) {
-  switch (keycode) {
-    case ALT_T(KC_A):
-      return TAPPING_TERM + 100;
-    default:
-      return TAPPING_TERM;
-  }
+    switch (keycode) {
+        case ALT_T(KC_A):
+            return TAPPING_TERM + 100;
+        default:
+            return TAPPING_TERM;
+    }
 }
 }

+ 6 - 1
keyboards/crkbd/keymaps/drashna/rules.mk

@@ -14,9 +14,10 @@ MIDI_ENABLE                = no  # MIDI controls
 AUDIO_ENABLE               = no  # Audio output on port C6
 AUDIO_ENABLE               = no  # Audio output on port C6
 UNICODE_ENABLE             = no  # Unicode
 UNICODE_ENABLE             = no  # Unicode
 BLUETOOTH_ENABLE           = no  # Enable Bluetooth with the Adafruit EZ-Key HID
 BLUETOOTH_ENABLE           = no  # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE            = yes # Enable WS2812 RGB underlight.
+RGBLIGHT_ENABLE            = no  # Enable WS2812 RGB underlight.
 SWAP_HANDS_ENABLE          = no  # Enable one-hand typing
 SWAP_HANDS_ENABLE          = no  # Enable one-hand typing
 RGBLIGHT_STARTUP_ANIMATION = yes
 RGBLIGHT_STARTUP_ANIMATION = yes
+RGB_MATRIX_ENABLE = WS2812
 
 
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
@@ -24,3 +25,7 @@ SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 BOOTLOADER = qmk-dfu
 BOOTLOADER = qmk-dfu
 
 
 OLED_DRIVER_ENABLE = yes
 OLED_DRIVER_ENABLE = yes
+
+ifneq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+    RGB_MATRIX_SPLIT_RIGHT=yes
+endif

+ 4 - 10
keyboards/gergo/keymaps/drashna/keymap.c

@@ -9,23 +9,17 @@
 #include QMK_KEYBOARD_H
 #include QMK_KEYBOARD_H
 #include "drashna.h"
 #include "drashna.h"
 
 
-// Blank template at the bottom
 
 
-enum customKeycodes {
-	URL  = 1
-};
-
-#define LAYOUT_gergo_wrapper(...)       LAYOUT_gergo(__VA_ARGS__)
 #define LAYOUT_gergo_base( \
 #define LAYOUT_gergo_base( \
     K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
     K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
     K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
     K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
     K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A  \
     K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A  \
   ) \
   ) \
   LAYOUT_gergo_wrapper( \
   LAYOUT_gergo_wrapper( \
-    KC_ESC,  K01,    K02,     K03,      K04,     K05,                                              K06,     K07,     K08,     K09,     K0A,    KC_PIPE,      \
-    KC_TAB, ALT_T(K11),  K12, K13,      K14,     K15,   _______,                         _______,  K16,     K17,     K18,     K19,     K1A, RGUI_T(KC_QUOT), \
-    OS_LSFT, CTL_T(K21), K22, K23,      K24,     K25,   _______, _______,       _______, _______,  K26,     K27,     K28,     K29, CTL_T(K2A), OS_RSFT,      \
-                            _______, _______, KC_SPC, LT(_LOWER, KC_BSPC),      LT(_RAISE, KC_DEL), KC_ENT, _______, _______                            \
+    KC_ESC,  K01,    K02,     K03,      K04,     K05,                                                K06,     K07,     K08,     K09,     K0A,    KC_PIPE,      \
+    KC_TAB,  K11,    K12,     K13,      K14,     K15,     _______,                         _______,  K16,     K17,     K18,     K19,     K1A,    KC_QUOT, \
+    OS_LSFT, CTL_T(K21), K22, K23,      K24,     K25,     _______, _______,       _______, _______,  K26,     K27,     K28,     K29, RCTL_T(K2A), OS_RSFT,      \
+                                       KC_GRV,   KC_SPC,  BK_LWER, OS_LALT,       OS_RGUI, DL_RAIS, KC_ENT, _______                            \
     )
     )
 
 
 #define LAYOUT_gergo_base_wrapper(...)       LAYOUT_gergo_base(__VA_ARGS__)
 #define LAYOUT_gergo_base_wrapper(...)       LAYOUT_gergo_base(__VA_ARGS__)

+ 2 - 0
keyboards/gergo/keymaps/drashna/rules.mk

@@ -0,0 +1,2 @@
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no

+ 15 - 16
keyboards/keebio/iris/keymaps/drashna/config.h

@@ -29,24 +29,23 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define EE_HANDS
 #define EE_HANDS
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 18     // Number of LEDs
-#define RGBLED_SPLIT { 9, 9 }
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 12
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
-
-#define RGBLIGHT_LIMIT_VAL 225
+#   undef RGBLED_NUM
+#   define RGBLED_NUM 18     // Number of LEDs
+#   define RGBLED_SPLIT { 9, 9 }
+#   define RGBLIGHT_HUE_STEP 12
+#   define RGBLIGHT_SAT_STEP 12
+#   define RGBLIGHT_VAL_STEP 12
+#   define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+#   define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
+
+#   define RGBLIGHT_LIMIT_VAL 225
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 #ifdef AUDIO_ENABLE
 #ifdef AUDIO_ENABLE
-#define C6_AUDIO
-#ifdef RGBLIGHT_ENABLE
-#define NO_MUSIC_MODE
-#endif //RGBLIGHT_ENABLE
+#   define C6_AUDIO
+#   ifdef RGBLIGHT_ENABLE
+#       define NO_MUSIC_MODE
+#   endif //RGBLIGHT_ENABLE
 #endif //AUDIO_ENABLE
 #endif //AUDIO_ENABLE
 
 
 #define QMK_ESC_OUTPUT F6 // usually COL
 #define QMK_ESC_OUTPUT F6 // usually COL
@@ -56,7 +55,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 #undef PRODUCT
 #undef PRODUCT
 #ifdef KEYBOARD_keebio_iris_rev2
 #ifdef KEYBOARD_keebio_iris_rev2
-#define PRODUCT         Drashna Hacked Iris Rev.2
+#   define PRODUCT         Drashna Hacked Iris Rev.2
 #endif
 #endif
 
 
 #define SHFT_LED1 6
 #define SHFT_LED1 6

+ 8 - 8
keyboards/keebio/iris/keymaps/drashna/keymap.c

@@ -12,7 +12,7 @@
      KC_ESC,  ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS, \
      KC_ESC,  ________________NUMBER_LEFT________________,                       ________________NUMBER_RIGHT_______________, KC_MINS, \
      KC_TAB , K01,    K02,     K03,      K04,     K05,                           K06,     K07,     K08,     K09,     K0A,     KC_BSLS, \
      KC_TAB , K01,    K02,     K03,      K04,     K05,                           K06,     K07,     K08,     K09,     K0A,     KC_BSLS, \
      KC_C1R3, K11,    K12,     K13,      K14,     K15,                           K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
      KC_C1R3, K11,    K12,     K13,      K14,     K15,                           K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
-     OS_LSFT, CTL_T(K21), K22, K23,      K24,     K25,     OS_LALT,     OS_RGUI, K26,     K27,     K28,     K29,  CTL_T(K2A), OS_RSFT, \
+     OS_LSFT, CTL_T(K21), K22, K23,      K24,     K25,     OS_LALT,     OS_RGUI, K26,     K27,     K28,     K29, RCTL_T(K2A), OS_RSFT, \
                              LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE                                      \
                              LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE                                      \
   )
   )
 #define LAYOUT_iris_base_wrapper(...)       LAYOUT_iris_base(__VA_ARGS__)
 #define LAYOUT_iris_base_wrapper(...)       LAYOUT_iris_base(__VA_ARGS__)
@@ -113,22 +113,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 
 
 
 void matrix_init_keymap(void) {
 void matrix_init_keymap(void) {
-  #ifndef CONVERT_TO_PROTON_C
+#ifndef CONVERT_TO_PROTON_C
     setPinOutput(D5);
     setPinOutput(D5);
     writePinHigh(D5);
     writePinHigh(D5);
 
 
     setPinOutput(B0);
     setPinOutput(B0);
     writePinHigh(B0);
     writePinHigh(B0);
-  #endif
+#endif
 }
 }
 
 
 
 
 void keyboard_post_init_keymap(void) {
 void keyboard_post_init_keymap(void) {
 #if BACKLIGHT_ENABLE
 #if BACKLIGHT_ENABLE
-  backlight_enable();
-  backlight_level(5);
-  #ifdef BACKLIGHT_BREATHING
-    breathing_enable();
-  #endif
+    backlight_enable();
+    backlight_level(5);
+    #ifdef BACKLIGHT_BREATHING
+        breathing_enable();
+    #endif
 #endif
 #endif
 }
 }

+ 1 - 0
keyboards/keebio/iris/keymaps/drashna/rules.mk

@@ -9,6 +9,7 @@ AUDIO_ENABLE      = no
 NKRO_ENABLE       = yes
 NKRO_ENABLE       = yes
 BACKLIGHT_ENABLE  = no
 BACKLIGHT_ENABLE  = no
 SWAP_HANDS_ENABLE = no
 SWAP_HANDS_ENABLE = no
+SPACE_CADET_ENABLE = no
 
 
 INDICATOR_LIGHTS  = no
 INDICATOR_LIGHTS  = no
 MACROS_ENABLED    = no
 MACROS_ENABLED    = no

+ 5 - 5
keyboards/keebio/iris/keymaps/drashna_lp/config.h

@@ -21,15 +21,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "../drashna/config.h"
 #include "../drashna/config.h"
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 16     // Number of LEDs
-#undef RGBLED_SPLIT
-#define RGBLED_SPLIT { 8, 8 }
+#   undef RGBLED_NUM
+#   define RGBLED_NUM 16     // Number of LEDs
+#   undef RGBLED_SPLIT
+#   define RGBLED_SPLIT { 8, 8 }
 #endif
 #endif
 
 
 #undef PRODUCT
 #undef PRODUCT
 #ifdef KEYBOARD_keebio_iris_rev2
 #ifdef KEYBOARD_keebio_iris_rev2
-#define PRODUCT         Drashna Hacked Iris LP Rev.2 (Backlit)
+#   define PRODUCT         Drashna Hacked Iris LP Rev.2 (Backlit)
 #endif
 #endif
 
 
 #undef SHFT_LED1
 #undef SHFT_LED1

+ 5 - 5
keyboards/keebio/iris/keymaps/drashna_old/config.h

@@ -21,15 +21,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "../drashna/config.h"
 #include "../drashna/config.h"
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 16     // Number of LEDs
-#undef RGBLED_SPLIT
-#define RGBLED_SPLIT { 8, 8 }
+#   undef RGBLED_NUM
+#   define RGBLED_NUM 16     // Number of LEDs
+#   undef RGBLED_SPLIT
+#   define RGBLED_SPLIT { 8, 8 }
 #endif
 #endif
 
 
 #undef PRODUCT
 #undef PRODUCT
 #ifdef KEYBOARD_keebio_iris_rev2
 #ifdef KEYBOARD_keebio_iris_rev2
-#define PRODUCT         Drashna Hacked Iris Rev.2 (16 LED)
+#   define PRODUCT         Drashna Hacked Iris Rev.2 (16 LED)
 #endif
 #endif
 
 
 #undef SHFT_LED1
 #undef SHFT_LED1

+ 10 - 20
keyboards/keebio/viterbi/keymaps/drashna/config.h

@@ -21,35 +21,25 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROWS 5
 #define MATRIX_ROWS 5
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 16
-
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+#   undef RGBLED_NUM
+#   define RGBLED_NUM 16
+
+#   define RGBLIGHT_HUE_STEP 8
+#   define RGBLIGHT_SAT_STEP 8
+#   define RGBLIGHT_VAL_STEP 8
+#   define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+#   define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 
 
-#undef LOCKING_SUPPORT_ENABLE
-#undef LOCKING_RESYNC_ENABLE
-
 
 
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
 
 
 #undef PRODUCT
 #undef PRODUCT
 #define PRODUCT   Drashnas Viterbi Macro Pad
 #define PRODUCT   Drashnas Viterbi Macro Pad
 
 
 #ifdef AUDIO_ENABLE
 #ifdef AUDIO_ENABLE
-#define C6_AUDIO
-#define NO_MUSIC_MODE
+#   define C6_AUDIO
+#   define NO_MUSIC_MODE
 #endif
 #endif
 
 
 #define LAYOUT_ortho_5x7( \
 #define LAYOUT_ortho_5x7( \

+ 1 - 0
keyboards/keebio/viterbi/keymaps/drashna/rules.mk

@@ -8,6 +8,7 @@ RGBLIGHT_ENABLE   = yes
 AUDIO_ENABLE      = yes
 AUDIO_ENABLE      = yes
 NKRO_ENABLE       = yes
 NKRO_ENABLE       = yes
 SPLIT_KEYBOARD    = no
 SPLIT_KEYBOARD    = no
+SPACE_CADET_ENABLE = no
 
 
 NO_SECRETS        = yes
 NO_SECRETS        = yes
 MACROS_ENABLED    = yes
 MACROS_ENABLED    = yes

+ 2 - 2
keyboards/keebio/viterbi/keymaps/drashna_old/config.h

@@ -20,6 +20,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "../drashna/config.h"
 #include "../drashna/config.h"
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#undef RGBLED_NUM
-#define RGBLED_NUM 12
+#   undef RGBLED_NUM
+#   define RGBLED_NUM 12
 #endif
 #endif

+ 17 - 18
keyboards/orthodox/keymaps/drashna/config.h

@@ -39,37 +39,36 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 )
 )
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#define RGB_DI_PIN D3
-#define RGBLED_NUM 16     // Number of LEDs
-#define RGBLED_SPLIT { 8, 8 }
-
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 12
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+#   define RGB_DI_PIN D3
+#   define RGBLED_NUM 16     // Number of LEDs
+#   define RGBLED_SPLIT { 8, 8 }
+
+#   define RGBLIGHT_HUE_STEP 12
+#   define RGBLIGHT_SAT_STEP 12
+#   define RGBLIGHT_VAL_STEP 12
+#   define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+#   define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 #ifdef AUDIO_ENABLE
 #ifdef AUDIO_ENABLE
-#define C6_AUDIO
-#ifdef RGBLIGHT_ENABLE
-#define NO_MUSIC_MODE
-#endif
+#   define C6_AUDIO
+#   ifdef RGBLIGHT_ENABLE
+#       define NO_MUSIC_MODE
+#   endif
 #endif //AUDIO_ENABLE
 #endif //AUDIO_ENABLE
 
 
 #undef PRODUCT
 #undef PRODUCT
 #ifdef KEYBOARD_orthodox_rev1
 #ifdef KEYBOARD_orthodox_rev1
-#define PRODUCT         Drashna Hacked Orthodox Rev.1
+#   define PRODUCT         Drashna Hacked Orthodox Rev.1
 #elif KEYBOARD_orthodox_rev3
 #elif KEYBOARD_orthodox_rev3
-#define PRODUCT         Drashna Hacked Orthodox Rev.3
+#   define PRODUCT         Drashna Hacked Orthodox Rev.3
 #endif
 #endif
 
 
 #define QMK_ESC_OUTPUT D7 // usually COL
 #define QMK_ESC_OUTPUT D7 // usually COL
 #ifdef KEYBOARD_orthodox_rev1
 #ifdef KEYBOARD_orthodox_rev1
-#define QMK_ESC_INPUT D4 // usually ROW
+#   define QMK_ESC_INPUT D4 // usually ROW
 #else
 #else
-#define QMK_ESC_INPUT D2 // usually ROW
+#   define QMK_ESC_INPUT D2 // usually ROW
 #endif
 #endif
 #define QMK_LED B0
 #define QMK_LED B0
 #define QMK_SPEAKER C6
 #define QMK_SPEAKER C6

+ 4 - 4
keyboards/orthodox/keymaps/drashna/keymap.c

@@ -38,8 +38,8 @@ uint8_t last_osm;
   ) \
   ) \
   LAYOUT_wrapper( \
   LAYOUT_wrapper( \
     KC_ESC,  K01,    K02,     K03,      K04,     K05,                                                             K06,     K07,     K08,     K09,     K0A,     KC_BSPC, \
     KC_ESC,  K01,    K02,     K03,      K04,     K05,                                                             K06,     K07,     K08,     K09,     K0A,     KC_BSPC, \
-    KC_TAB,  K11,    K12,     K13,      K14,     K15,              OS_LALT, OS_LGUI,   OS_RALT, RAISE,          K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
-    KC_MLSF, CTL_T(K21), K22, K23,      K24,     K25,     LOWER,   KC_SPACE,KC_BSPC,   KC_DEL,  KC_ENT,  RAISE,   K26,     K27,     K28,     K29,  CTL_T(K2A), KC_MRSF  \
+    KC_TAB,  K11,    K12,     K13,      K14,     K15,              OS_LALT, OS_LGUI,   OS_RALT, RAISE,            K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
+    KC_MLSF, CTL_T(K21), K22, K23,      K24,     K25,     LOWER,   KC_SPACE,KC_BSPC,   KC_DEL,  KC_ENT,  RAISE,   K26,     K27,     K28,     K29, RCTL_T(K2A), KC_MRSF  \
   )
   )
 #define LAYOUT_orthodox_base_wrapper(...)       LAYOUT_orthodox_base(__VA_ARGS__)
 #define LAYOUT_orthodox_base_wrapper(...)       LAYOUT_orthodox_base(__VA_ARGS__)
 
 
@@ -123,11 +123,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 };
 };
 
 
 void matrix_init_keymap(void) {
 void matrix_init_keymap(void) {
-  #ifndef CONVERT_TO_PROTON_C
+#ifndef CONVERT_TO_PROTON_C
     setPinOutput(D5);
     setPinOutput(D5);
     writePinHigh(D5);
     writePinHigh(D5);
 
 
     setPinOutput(B0);
     setPinOutput(B0);
     writePinHigh(B0);
     writePinHigh(B0);
-  #endif
+#endif
 }
 }

+ 1 - 0
keyboards/orthodox/keymaps/drashna/rules.mk

@@ -7,6 +7,7 @@ TAP_DANCE_ENABLE  = no
 RGBLIGHT_ENABLE   = yes
 RGBLIGHT_ENABLE   = yes
 AUDIO_ENABLE      = no
 AUDIO_ENABLE      = no
 NKRO_ENABLE       = yes
 NKRO_ENABLE       = yes
+SPACE_CADET_ENABLE = no
 
 
 INDICATOR_LIGHTS  = yes
 INDICATOR_LIGHTS  = yes
 MACROS_ENABLED    = no
 MACROS_ENABLED    = no

+ 4 - 5
layouts/community/ergodox/drashna/config.h

@@ -1,12 +1,11 @@
 #pragma once
 #pragma once
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-#undef RGBLIGHT_SAT_STEP
-#define RGBLIGHT_SAT_STEP 12
+#   undef RGBLIGHT_SAT_STEP
+#   define RGBLIGHT_SAT_STEP 12
 
 
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+#   define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3
+#   define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 
 

+ 142 - 158
layouts/community/ergodox/drashna/keymap.c

@@ -20,6 +20,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifdef UNICODEMAP_ENABLE
 #ifdef UNICODEMAP_ENABLE
 #include "drashna_unicode.h"
 #include "drashna_unicode.h"
 #endif // UNICODEMAP_ENABLE
 #endif // UNICODEMAP_ENABLE
+#ifndef UNICODE_ENABLE
+#   define UC(x) KC_NO
+#endif
 
 
 #ifdef RGB_MATRIX_ENABLE
 #ifdef RGB_MATRIX_ENABLE
 extern bool g_suspend_state;
 extern bool g_suspend_state;
@@ -28,7 +31,7 @@ extern rgb_config_t rgb_matrix_config;
 extern userspace_config_t userspace_config;
 extern userspace_config_t userspace_config;
 
 
 enum more_custom_keycodes {
 enum more_custom_keycodes {
-   KC_SWAP_NUM = NEW_SAFE_RANGE
+    KC_SWAP_NUM = NEW_SAFE_RANGE
 };
 };
 
 
 //define layer change stuff for underglow indicator
 //define layer change stuff for underglow indicator
@@ -43,7 +46,7 @@ bool skip_leds = false;
       KC_ESC,  ________________NUMBER_LEFT________________, UC_FLIP,                 UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
       KC_ESC,  ________________NUMBER_LEFT________________, UC_FLIP,                 UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
       KC_TAB,  K01,    K02,     K03,      K04,     K05,     TG(_DIABLO),         TG(_DIABLO), K06,     K07,     K08,     K09,     K0A,     KC_BSLS, \
       KC_TAB,  K01,    K02,     K03,      K04,     K05,     TG(_DIABLO),         TG(_DIABLO), K06,     K07,     K08,     K09,     K0A,     KC_BSLS, \
       KC_C1R3, K11,    K12,     K13,      K14,     K15,                                       K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
       KC_C1R3, K11,    K12,     K13,      K14,     K15,                                       K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
-      KC_MLSF, CTL_T(K21), K22, K23,      K24,     K25,     TG(_GAMEPAD),       TG(_GAMEPAD), K26,     K27,     K28,     K29,  CTL_T(K2A), KC_MRSF, \
+      KC_MLSF, CTL_T(K21), K22, K23,      K24,     K25,     TG(_GAMEPAD),       TG(_GAMEPAD), K26,     K27,     K28,     K29,  RCTL_T(K2A), KC_MRSF, \
       KC_GRV,  OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC,                                            KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, UC(0x2E2E),        \
       KC_GRV,  OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC,                                            KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, UC(0x2E2E),        \
                                                   OS_LALT, OS_LGUI,                 OS_RGUI, CTL_T(KC_ESCAPE),                                      \
                                                   OS_LALT, OS_LGUI,                 OS_RGUI, CTL_T(KC_ESCAPE),                                      \
                                                            KC_APP,                  KC_MENU,                                                        \
                                                            KC_APP,                  KC_MENU,                                                        \
@@ -305,87 +308,88 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 
 
-  switch (keycode) {
-    case KC_1:
-      if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
-        if (record->event.pressed) {
-          register_code(KC_2);
-        } else {
-          unregister_code(KC_2);
-        }
-        return false;
-      }
-      break;
-    case KC_2:
-      if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
-        if (record->event.pressed) {
-          register_code(KC_1);
-        } else {
-          unregister_code(KC_1);
-        }
-        return false;
-      }
-      break;
-    case KC_SWAP_NUM:
-      if (record->event.pressed) {
-        userspace_config.swapped_numbers ^= 1;
-        eeconfig_update_user(userspace_config.raw);
-      }
-  }
-  //switch (keycode) {
-  //  case KC_P00:
-  //    if (!record->event.pressed) {
-  //      register_code(KC_KP_0);
-  //      unregister_code(KC_KP_0);
-  //      register_code(KC_KP_0);
-  //      unregister_code(KC_KP_0);
-  //    }
-  //    return false;
-  //    break;
-  //}
-  return true;
+    switch (keycode) {
+        case KC_1:
+            if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
+                if (record->event.pressed) {
+                    register_code(KC_2);
+                } else {
+                    unregister_code(KC_2);
+                }
+                return false;
+            }
+            break;
+        case KC_2:
+            if (IS_LAYER_ON(_GAMEPAD) && userspace_config.swapped_numbers) {
+                if (record->event.pressed) {
+                    register_code(KC_1);
+                } else {
+                    unregister_code(KC_1);
+                }
+                return false;
+            }
+            break;
+        case KC_SWAP_NUM:
+            if (record->event.pressed) {
+                userspace_config.swapped_numbers ^= 1;
+                eeconfig_update_user(userspace_config.raw);
+            }
+            break;
+    }
+    //switch (keycode) {
+    //  case KC_P00:
+    //    if (!record->event.pressed) {
+    //      register_code(KC_KP_0);
+    //      unregister_code(KC_KP_0);
+    //      register_code(KC_KP_0);
+    //      unregister_code(KC_KP_0);
+    //    }
+    //    return false;
+    //    break;
+    //}
+    return true;
 }
 }
 
 
 void matrix_scan_keymap(void) {  // runs frequently to update info
 void matrix_scan_keymap(void) {  // runs frequently to update info
-  uint8_t modifiers = get_mods();
-  uint8_t led_usb_state = host_keyboard_leds();
-  uint8_t one_shot = get_oneshot_mods();
-
-  if (!skip_leds) {
-    ergodox_board_led_off();
-    ergodox_right_led_1_off();
-    ergodox_right_led_2_off();
-    ergodox_right_led_3_off();
-
-    // Since we're not using the LEDs here for layer indication anymore,
-    // then lets use them for modifier indicators.  Shame we don't have 4...
-    // Also, no "else", since we want to know each, independently.
-    if ( ( modifiers | one_shot ) & MOD_MASK_SHIFT || led_usb_state & (1<<USB_LED_CAPS_LOCK) ) {
-      ergodox_right_led_2_on();
-      ergodox_right_led_2_set( 50 );
-    }
-    if ( ( modifiers | one_shot ) & MOD_MASK_CTRL) {
-      ergodox_right_led_1_on();
-      ergodox_right_led_1_set( 10 );
-    }
-    if ( ( modifiers | one_shot ) & MOD_MASK_ALT) {
-      ergodox_right_led_3_on();
-      ergodox_right_led_3_set( 10 );
-    }
+    uint8_t modifiers = get_mods();
+    uint8_t led_usb_state = host_keyboard_leds();
+    uint8_t one_shot = get_oneshot_mods();
+
+    if (!skip_leds) {
+        ergodox_board_led_off();
+        ergodox_right_led_1_off();
+        ergodox_right_led_2_off();
+        ergodox_right_led_3_off();
+
+        // Since we're not using the LEDs here for layer indication anymore,
+        // then lets use them for modifier indicators.  Shame we don't have 4...
+        // Also, no "else", since we want to know each, independently.
+        if ( ( modifiers | one_shot ) & MOD_MASK_SHIFT || led_usb_state & (1<<USB_LED_CAPS_LOCK) ) {
+            ergodox_right_led_2_on();
+            ergodox_right_led_2_set( 50 );
+        }
+        if ( ( modifiers | one_shot ) & MOD_MASK_CTRL) {
+            ergodox_right_led_1_on();
+            ergodox_right_led_1_set( 10 );
+        }
+        if ( ( modifiers | one_shot ) & MOD_MASK_ALT) {
+            ergodox_right_led_3_on();
+            ergodox_right_led_3_set( 10 );
+        }
 
 
-  }
+    }
 
 
-};
+}
 
 
 
 
 bool indicator_is_this_led_used_keyboard(uint8_t index) {
 bool indicator_is_this_led_used_keyboard(uint8_t index) {
-  switch (index) {
-    case 13 ... 14:
-      return true;
-      break;
-    default:
-    return false;
-  }
+    switch (index) {
+        case 13 ... 14:
+            return true;
+            break;
+        default:
+            return false;
+    }
 }
 }
 
 
 
 
@@ -393,101 +397,81 @@ bool indicator_is_this_led_used_keyboard(uint8_t index) {
 
 
 void suspend_power_down_keymap(void) {
 void suspend_power_down_keymap(void) {
     rgb_matrix_set_suspend_state(true);
     rgb_matrix_set_suspend_state(true);
-    rgb_matrix_config.enable = false;
 }
 }
 
 
 void suspend_wakeup_init_keymap(void) {
 void suspend_wakeup_init_keymap(void) {
-    rgb_matrix_config.enable = true;
     rgb_matrix_set_suspend_state(false);
     rgb_matrix_set_suspend_state(false);
 }
 }
 
 
 void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
 void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
-  rgb_led led;
-  for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
-    led = g_rgb_leds[i];
-    if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
-        rgb_matrix_set_color( i, red, green, blue );
+    rgb_led led;
+    for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+        led = g_rgb_leds[i];
+        if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
+            rgb_matrix_set_color( i, red, green, blue );
+        }
     }
     }
-  }
 }
 }
 
 
 void rgb_matrix_indicators_user(void) {
 void rgb_matrix_indicators_user(void) {
-  if (g_suspend_state || !rgb_matrix_config.enable || !userspace_config.rgb_layer_change) { return; }
-
-  switch (biton32(layer_state)) {
-    case _MODS:
-      rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
-    case _GAMEPAD:
-      rgb_matrix_layer_helper(0xFF, 0x80, 0x00);
-      rgb_matrix_set_color(32, 0x00, 0xFF, 0x00); // Q
-      rgb_matrix_set_color(31, 0x00, 0xFF, 0xFF); // W
-      rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); // E
-      rgb_matrix_set_color(29, 0xFF, 0x80, 0x00); // R
-      rgb_matrix_set_color(37, 0x00, 0xFF, 0xFF); // A
-      rgb_matrix_set_color(36, 0x00, 0xFF, 0xFF); // S
-      rgb_matrix_set_color(35, 0x00, 0xFF, 0xFF); // D
-      rgb_matrix_set_color(34, 0x7A, 0x00, 0xFF); // F
-
-      rgb_matrix_set_color(27, 0xFF, 0xFF, 0xFF); // 1
-      rgb_matrix_set_color(26, 0x00, 0xFF, 0x00); // 2
-      rgb_matrix_set_color(25, 0x7A, 0x00, 0xFF); // 3
-
-      break;
-    case _DIABLO:
-      rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
-    case _RAISE:
-      rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
-    case _LOWER:
-      rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
-    case _ADJUST:
-      rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
-    default:
-      switch (biton32(default_layer_state)) {
-        case _QWERTY:
-          rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
-        case _COLEMAK:
-          rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
-        case _DVORAK:
-          rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
-        case _WORKMAN:
-          rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
-        case _NORMAN:
-          rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D); break;
-        case _MALTRON:
-          rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
-        case _EUCALYN:
-          rgb_matrix_layer_helper(0xFF, 0x80, 0xBF); break;
-        case _CARPLAX:
-          rgb_matrix_layer_helper(0x00, 0x00, 0xFF); break;
-      }
-  }
-#if 0
-  if (this_mod & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) || this_osm & MOD_MASK_SHIFT) {
-    rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
-    rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
-  }
-  if (this_mod & MOD_MASK_CTRL || this_osm & MOD_MASK_CTRL) {
-    rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
-    rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
-    rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
-
-  }
-  if (this_mod & MOD_MASK_GUI || this_osm & MOD_MASK_GUI) {
-    rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
-  }
-  if (this_mod & MOD_MASK_ALT || this_osm & MOD_MASK_ALT) {
-    rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
-  }
+    if ( userspace_config.rgb_layer_change &&
+#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
+        !g_suspend_state &&
 #endif
 #endif
-}
-
-void matrix_init_keymap(void) {
-#if 0
-  #ifdef RGB_MATRIX_KEYPRESSES
-    rgblight_mode(RGB_MATRIX_MULTISPLASH);
-  #else
-    rgblight_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
-  #endif
+#if defined(RGBLIGHT_ENABLE)
+        (!rgblight_config.enable && rgb_matrix_config.enable)
+#else
+        rgb_matrix_config.enable
 #endif
 #endif
+    ) {
+        switch (biton32(layer_state)) {
+            case _MODS:
+                rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
+            case _GAMEPAD:
+                rgb_matrix_layer_helper(0xFF, 0x80, 0x00);
+                rgb_matrix_set_color(32, 0x00, 0xFF, 0x00); // Q
+                rgb_matrix_set_color(31, 0x00, 0xFF, 0xFF); // W
+                rgb_matrix_set_color(30, 0xFF, 0x00, 0x00); // E
+                rgb_matrix_set_color(29, 0xFF, 0x80, 0x00); // R
+                rgb_matrix_set_color(37, 0x00, 0xFF, 0xFF); // A
+                rgb_matrix_set_color(36, 0x00, 0xFF, 0xFF); // S
+                rgb_matrix_set_color(35, 0x00, 0xFF, 0xFF); // D
+                rgb_matrix_set_color(34, 0x7A, 0x00, 0xFF); // F
+
+                rgb_matrix_set_color(27, 0xFF, 0xFF, 0xFF); // 1
+                rgb_matrix_set_color(26, 0x00, 0xFF, 0x00); // 2
+                rgb_matrix_set_color(25, 0x7A, 0x00, 0xFF); // 3
+
+                break;
+            case _DIABLO:
+                rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
+            case _RAISE:
+                rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
+            case _LOWER:
+                rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
+            case _ADJUST:
+                rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
+            default:
+                switch (biton32(default_layer_state)) {
+                    case _QWERTY:
+                        rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
+                    case _COLEMAK:
+                        rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
+                    case _DVORAK:
+                        rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
+                    case _WORKMAN:
+                        rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
+                    case _NORMAN:
+                        rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D); break;
+                    case _MALTRON:
+                        rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
+                    case _EUCALYN:
+                        rgb_matrix_layer_helper(0xFF, 0x80, 0xBF); break;
+                    case _CARPLAX:
+                        rgb_matrix_layer_helper(0x00, 0x00, 0xFF); break;
+                }
+        }
+    }
 }
 }
+
 #endif //RGB_MATRIX_INIT
 #endif //RGB_MATRIX_INIT

+ 12 - 11
layouts/community/ergodox/drashna/rules.mk

@@ -1,19 +1,20 @@
-TAP_DANCE_ENABLE  = yes
-SLEEP_LED_ENABLE  = no  # Breathing sleep LED during USB suspend
-COMMAND_ENABLE    = no  # Commands for debug and configuration
+TAP_DANCE_ENABLE   = yes
+SLEEP_LED_ENABLE   = no  # Breathing sleep LED during USB suspend
+COMMAND_ENABLE     = no  # Commands for debug and configuration
+SPACE_CADET_ENABLE = no
 ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
 ifneq (,$(findstring ergodox_ez,$(KEYBOARD)))
-  RGBLIGHT_ENABLE = yes
+  RGBLIGHT_ENABLE   = yes
   RGB_MATRIX_ENABLE = no
   RGB_MATRIX_ENABLE = no
 endif
 endif
-CONSOLE_ENABLE    = no
-BOOTMAGIC_ENABLE  = yes
+CONSOLE_ENABLE     = no
+BOOTMAGIC_ENABLE   = yes
 
 
-UNICODE_ENABLE    = yes
-UNICDOEMAP_ENABLE = no
+UNICODE_ENABLE     = yes
+UNICDOEMAP_ENABLE  = no
 
 
-MACROS_ENABLED    = no
-RGBLIGHT_TWINKLE  = no
-INDICATOR_LIGHTS  = no
+MACROS_ENABLED     = no
+RGBLIGHT_TWINKLE   = no
+INDICATOR_LIGHTS   = no
 RGBLIGHT_STARTUP_ANIMATION = yes
 RGBLIGHT_STARTUP_ANIMATION = yes
 
 
 DEBOUNCE_TYPE     = eager_pk
 DEBOUNCE_TYPE     = eager_pk

+ 13 - 2
layouts/community/ergodox/drashna_glow/config.h

@@ -6,10 +6,21 @@
 #define PRODUCT         DrashnaDox - Hacked ErgoDox EZ Glow
 #define PRODUCT         DrashnaDox - Hacked ErgoDox EZ Glow
 
 
 #ifdef RGB_MATRIX_ENABLE
 #ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
+#   define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
 // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
 // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
 // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
 // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-#define RGB_DISABLE_WHEN_USB_SUSPENDED  true// turn off effects when suspended
+#   define RGB_DISABLE_WHEN_USB_SUSPENDED  true// turn off effects when suspended
 // #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
 // #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
 // #define EECONFIG_RGB_MATRIX (uint32_t *)16
 // #define EECONFIG_RGB_MATRIX (uint32_t *)16
+
+#   define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#   define DISABLE_RGB_MATRIX_CYCLE_ALL
+#   define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#   define DISABLE_RGB_MATRIX_DUAL_BEACON
+#   define DISABLE_RGB_MATRIX_RAINBOW_BEACON
+#   define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#   define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+
 #endif
 #endif

+ 9 - 10
layouts/community/numpad_5x6/drashna/config.h

@@ -3,18 +3,17 @@
 // #define B6_AUDIO
 // #define B6_AUDIO
 
 
 #if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
 #if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
-#define RGB_DI_PIN B1
-#define RGBLED_NUM 16     // Number of LEDs
+#   define RGB_DI_PIN B1
+#   define RGBLED_NUM 16     // Number of LEDs
 
 
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 12
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+#   define RGBLIGHT_HUE_STEP 12
+#   define RGBLIGHT_SAT_STEP 12
+#   define RGBLIGHT_VAL_STEP 12
+#   define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+#   define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 #if defined(KEYBOARD_primekb_prime_m)
 #if defined(KEYBOARD_primekb_prime_m)
-#undef PRODUCT
-#define PRODUCT Drashna Hacked Prime_M Macro Pad
+#   undef PRODUCT
+#   define PRODUCT Drashna Hacked Prime_M Macro Pad
 #endif
 #endif

+ 31 - 28
layouts/community/ortho_4x12/drashna/config.h

@@ -2,49 +2,52 @@
 
 
 
 
 #if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
 #if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
-#define RGB_DI_PIN B3
-#define RGBLED_NUM 13     // Number of LEDs
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_HUE_STEP 12
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 12
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
-#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
+#   define RGB_DI_PIN B3
+#   define RGBLED_NUM 13     // Number of LEDs
+#   define RGBLIGHT_ANIMATIONS
+#   define RGBLIGHT_HUE_STEP 12
+#   define RGBLIGHT_SAT_STEP 12
+#   define RGBLIGHT_VAL_STEP 12
+#   define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
+#   define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
+#   ifdef RGB_MATRIX_ENABLE
+#       define RGBLIGHT_DISABLE_KEYCODES
+#   endif
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 #ifdef RGB_MATRIX_ENABLE
 #ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
+#   define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
 // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
 // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
 // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
 // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-#define RGB_DISABLE_WHEN_USB_SUSPENDED true// turn off effects when suspended
 // #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
 // #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
-#define EECONFIG_RGB_MATRIX (uint32_t *)15
+#   define RGB_DISABLE_WHEN_USB_SUSPENDED true// turn off effects when suspended
+#   ifndef KEYBOARD_planck_ez
+#       define EECONFIG_RGB_MATRIX (uint32_t *)15
+#   endif
 #endif
 #endif
 
 
 #if defined(KEYBOARD_lets_split_rev2)
 #if defined(KEYBOARD_lets_split_rev2)
-#define USE_SERIAL
-#undef USE_I2C
-
-#define EE_HANDS
+#   define USE_SERIAL
+#   undef USE_I2C
+#   define EE_HANDS
 #endif
 #endif
 
 
 #if !defined(KEYBOARD_planck_light)
 #if !defined(KEYBOARD_planck_light)
-#ifdef RGBLIGHT_ENABLE
-#define NO_MUSIC_MODE
-#endif // RGBLIGHT_ENABLE
+#   ifdef RGBLIGHT_ENABLE
+#       define NO_MUSIC_MODE
+#   endif // RGBLIGHT_ENABLE
 #endif // KEYBOARD_planck_light
 #endif // KEYBOARD_planck_light
 
 
 
 
 #if defined(KEYBOARD_planck)
 #if defined(KEYBOARD_planck)
-#undef PRODUCT
-#if defined(KEYBOARD_planck_light)
-#define PRODUCT Drashna Hacked RGB Beacon (Planck Light)
-#elif defined(KEYBOARD_planck_rev6)
-#define PRODUCT Drashna Hacked Planck Rev6
-#elif defined(KEYBOARD_planck_EZ)
-#define PRODUCT Drashna Hacked Planck EZ
-#endif
+#   undef PRODUCT
+#   if defined(KEYBOARD_planck_light)
+#       define PRODUCT Drashna Hacked RGB Beacon (Planck Light)
+#   elif defined(KEYBOARD_planck_rev6)
+#       define PRODUCT Drashna Hacked Planck Rev6
+#   elif defined(KEYBOARD_planck_EZ)
+#   define PRODUCT Drashna Hacked Planck EZ
+#   endif
 #endif
 #endif
 
 
 /*
 /*
@@ -58,7 +61,7 @@
    - MIDI notes can be sent when in Music mode is on
    - MIDI notes can be sent when in Music mode is on
 */
 */
 
 
-#define MIDI_BASIC
+// #define MIDI_BASIC
 
 
 /* enable advanced MIDI features:
 /* enable advanced MIDI features:
    - MIDI notes can be added to the keymap
    - MIDI notes can be added to the keymap

+ 176 - 136
layouts/community/ortho_4x12/drashna/keymap.c

@@ -34,6 +34,18 @@ enum planck_keycodes {
   #define BACKLIT OSM(MOD_LSFT)
   #define BACKLIT OSM(MOD_LSFT)
 #endif
 #endif
 
 
+#ifdef KEYBOARD_planck_ez
+#   define PLNK_1 BK_LWER
+#   define PLNK_2 SP_LWER
+#   define PLNK_3 KC_NO
+#   define PLNK_4 ET_RAIS
+#else
+#   define PLNK_1 SP_LWER
+#   define PLNK_2 BK_LWER
+#   define PLNK_3 DL_RAIS
+#   define PLNK_4 ET_RAIS
+#endif
+
 #define LAYOUT_ortho_4x12_base( \
 #define LAYOUT_ortho_4x12_base( \
     K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
     K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
     K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
     K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -42,8 +54,8 @@ enum planck_keycodes {
   LAYOUT_ortho_4x12_wrapper( \
   LAYOUT_ortho_4x12_wrapper( \
     KC_ESC,  K01,    K02,     K03,      K04,     K05,     K06,     K07,     K08,     K09,     K0A,     KC_BSPC, \
     KC_ESC,  K01,    K02,     K03,      K04,     K05,     K06,     K07,     K08,     K09,     K0A,     KC_BSPC, \
     KC_TAB,  K11,    K12,     K13,      K14,     K15,     K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
     KC_TAB,  K11,    K12,     K13,      K14,     K15,     K16,     K17,     K18,     K19,     K1A,     KC_QUOT, \
-    KC_MLSF, CTL_T(K21), K22, K23,      K24,     K25,     K26,     K27,     K28,     K29,  CTL_T(K2A), KC_ENT,  \
-    BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT  \
+    KC_MLSF, CTL_T(K21), K22, K23,      K24,     K25,     K26,     K27,     K28,     K29, RCTL_T(K2A), KC_ENT,  \
+    BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1,  PLNK_2,  PLNK_3,  PLNK_4,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT  \
   )
   )
 #define LAYOUT_ortho_4x12_base_wrapper(...)       LAYOUT_ortho_4x12_base(__VA_ARGS__)
 #define LAYOUT_ortho_4x12_base_wrapper(...)       LAYOUT_ortho_4x12_base(__VA_ARGS__)
 
 
@@ -130,128 +142,132 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 
 
 
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-
-#ifdef BACKLIGHT_ENABLE
-    case BACKLIT:
-      if (record->event.pressed) {
-        register_code(KC_RSFT);
-        #ifdef BACKLIGHT_ENABLE
-          backlight_step();
-        #endif
-      } else {
-        unregister_code(KC_RSFT);
-      }
-      return false;
-      break;
+    switch (keycode) {
+ #ifdef BACKLIGHT_ENABLE
+        case BACKLIT:
+            if (record->event.pressed) {
+                register_code(KC_RSFT);
+                #ifdef BACKLIGHT_ENABLE
+                backlight_step();
+                #endif
+            } else {
+                unregister_code(KC_RSFT);
+            }
+            return false;
+            break;
 #endif
 #endif
-  }
-  return true;
+    }
+    return true;
 }
 }
 
 
 bool music_mask_user(uint16_t keycode) {
 bool music_mask_user(uint16_t keycode) {
-  switch (keycode) {
-    case RAISE:
-    case LOWER:
-    case BK_LWER:
-    case SP_LWER:
-    case DL_RAIS:
-    case ET_RAIS:
-      return false;
-    default:
-      return true;
-  }
+    switch (keycode) {
+        case RAISE:
+        case LOWER:
+        case BK_LWER:
+        case SP_LWER:
+        case DL_RAIS:
+        case ET_RAIS:
+            return false;
+        default:
+            return true;
+    }
 }
 }
 
 
 #ifdef RGB_MATRIX_ENABLE
 #ifdef RGB_MATRIX_ENABLE
 
 
 void suspend_power_down_keymap(void) {
 void suspend_power_down_keymap(void) {
     rgb_matrix_set_suspend_state(true);
     rgb_matrix_set_suspend_state(true);
-    rgb_matrix_config.enable = false;
 }
 }
 
 
 void suspend_wakeup_init_keymap(void) {
 void suspend_wakeup_init_keymap(void) {
-    rgb_matrix_config.enable = true;
     rgb_matrix_set_suspend_state(false);
     rgb_matrix_set_suspend_state(false);
 }
 }
 
 
-void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
-  rgb_led led;
-  for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
-    led = g_rgb_leds[i];
-    if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
-        rgb_matrix_set_color( i, red, green, blue );
+void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
+    rgb_led led;
+    for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+        led = g_rgb_leds[i];
+        if (HAS_FLAGS(led.flags, LED_FLAG_MODIFIER)) {
+            rgb_matrix_set_color( i, red, green, blue );
+        }
     }
     }
-  }
 }
 }
 
 
 void rgb_matrix_indicators_user(void) {
 void rgb_matrix_indicators_user(void) {
-  uint8_t this_mod = get_mods();
-  uint8_t this_led = host_keyboard_leds();
-  uint8_t this_osm = get_oneshot_mods();
-
-  if (!g_suspend_state && userspace_config.rgb_layer_change &&
-#if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
-    (!rgblight_config.enable && rgb_matrix_config.enable)
+    uint8_t this_mod = get_mods();
+    uint8_t this_led = host_keyboard_leds();
+    uint8_t this_osm = get_oneshot_mods();
+    bool is_ez;
+    #ifdef KEYBOARD_planck_ez
+    is_ez = true;
+    #endif
+
+    if ( userspace_config.rgb_layer_change &&
+#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
+        !g_suspend_state &&
+#endif
+#if defined(RGBLIGHT_ENABLE)
+            (!rgblight_config.enable && rgb_matrix_config.enable)
 #else
 #else
-    rgb_matrix_config.enable
+            rgb_matrix_config.enable
 #endif
 #endif
-    ) {
-    switch (biton32(layer_state)) {
-      case _RAISE:
-        rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
-      case _LOWER:
-        rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
-      case _ADJUST:
-        rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
-      default:
-        switch (biton32(default_layer_state)) {
-          case _QWERTY:
-            rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, true); break;
-          case _COLEMAK:
-            rgb_matrix_layer_helper(0xFF, 0x00, 0xFF, true); break;
-          case _DVORAK:
-            rgb_matrix_layer_helper(0x00, 0xFF, 0x00, true); break;
-          case _WORKMAN:
-            rgb_matrix_layer_helper(0xD9, 0xA5, 0x21, true); break;
-          case _NORMAN:
-            rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D, true); break;
-          case _MALTRON:
-            rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, true); break;
-          case _EUCALYN:
-            rgb_matrix_layer_helper(0xFF, 0x80, 0xBF, true); break;
-          case _CARPLAX:
-            rgb_matrix_layer_helper(0x00, 0x00, 0xFF, true); break;
+        ) {
+        switch (biton32(layer_state)) {
+            case _RAISE:
+                rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
+            case _LOWER:
+                rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
+            case _ADJUST:
+                rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
+            default:
+                switch (biton32(default_layer_state)) {
+                case _QWERTY:
+                    rgb_matrix_layer_helper(0x00, 0xFF, 0xFF); break;
+                case _COLEMAK:
+                    rgb_matrix_layer_helper(0xFF, 0x00, 0xFF); break;
+                case _DVORAK:
+                    rgb_matrix_layer_helper(0x00, 0xFF, 0x00); break;
+                case _WORKMAN:
+                    rgb_matrix_layer_helper(0xD9, 0xA5, 0x21); break;
+                case _NORMAN:
+                    rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D); break;
+                case _MALTRON:
+                    rgb_matrix_layer_helper(0xFF, 0xFF, 0x00); break;
+                case _EUCALYN:
+                    rgb_matrix_layer_helper(0xFF, 0x80, 0xBF); break;
+                case _CARPLAX:
+                    rgb_matrix_layer_helper(0x00, 0x00, 0xFF); break;
+                }
         }
         }
     }
     }
-  }
-
-  switch (biton32(default_layer_state)) {
-    case _QWERTY:
-      rgb_matrix_set_color(42, 0x00, 0xFF, 0xFF); break;
-    case _COLEMAK:
-      rgb_matrix_set_color(42, 0xFF, 0x00, 0xFF); break;
-    case _DVORAK:
-      rgb_matrix_set_color(42, 0x00, 0xFF, 0x00); break;
-    case _WORKMAN:
-      rgb_matrix_set_color(42, 0xD9, 0xA5, 0x21); break;
-  }
-  if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK)) {
-    rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
-    rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
-  }
-  if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
-    rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
-    rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
-    rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
-
-  }
-  if ( (this_mod | this_osm) & MOD_MASK_GUI) {
-    rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
-  }
-  if ( (this_mod | this_osm) & MOD_MASK_ALT) {
-    rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
-  }
+
+    switch (biton32(default_layer_state)) {
+        case _QWERTY:
+            rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF); break;
+        case _COLEMAK:
+            rgb_matrix_set_color(is_ez ? 41 : 42, 0xFF, 0x00, 0xFF); break;
+        case _DVORAK:
+            rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0x00); break;
+        case _WORKMAN:
+            rgb_matrix_set_color(is_ez ? 41 : 42, 0xD9, 0xA5, 0x21); break;
+    }
+    if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK)) {
+        rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
+        rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
+    }
+    if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
+        rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
+        rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
+        rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
+
+    }
+    if ( (this_mod | this_osm) & MOD_MASK_GUI) {
+        rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
+    }
+    if ( (this_mod | this_osm) & MOD_MASK_ALT) {
+        rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
+    }
 }
 }
 
 
 void matrix_init_keymap(void) {
 void matrix_init_keymap(void) {
@@ -260,57 +276,81 @@ void matrix_init_keymap(void) {
 #else //RGB_MATRIX_INIT
 #else //RGB_MATRIX_INIT
 
 
 void matrix_init_keymap(void) {
 void matrix_init_keymap(void) {
-  #if !defined(CONVERT_TO_PROTON_C) && !defined(KEYBOARD_planck)
+#if !defined(CONVERT_TO_PROTON_C) && !defined(KEYBOARD_planck)
     setPinOutput(D5);
     setPinOutput(D5);
     writePinHigh(D5);
     writePinHigh(D5);
 
 
     setPinOutput(B0);
     setPinOutput(B0);
     writePinHigh(B0);
     writePinHigh(B0);
-  #endif
+#endif
 }
 }
 #endif //RGB_MATRIX_INIT
 #endif //RGB_MATRIX_INIT
 
 
 #ifdef ENCODER_ENABLE
 #ifdef ENCODER_ENABLE
 void encoder_update(bool clockwise) {
 void encoder_update(bool clockwise) {
-  switch (biton32(layer_state)) {
-    case _RAISE:
-      clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
-      break;
-    case _LOWER:
-      #ifdef RGB_MATRIX_ENABLE
-        clockwise ? rgb_matrix_step() : rgblight_step_reverse();
-      #else
-      clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
-      #endif
-    case _ADJUST:
-      #ifdef AUDIO_CLICKY
-        clockwise ? clicky_freq_up() : clicky_freq_down();
-      #endif
-      break;
-    default:
-      clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP);
-  }
-  #ifdef AUDIO_CLICKY
+    switch (biton32(layer_state)) {
+        case _RAISE:
+            clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
+            break;
+        case _LOWER:
+#ifdef RGB_MATRIX_ENABLE
+            clockwise ? rgb_matrix_step() : rgblight_step_reverse();
+#else
+            clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
+#endif
+            break;
+        case _ADJUST:
+#ifdef AUDIO_CLICKY
+            clockwise ? clicky_freq_up() : clicky_freq_down();
+#endif
+            break;
+        default:
+            clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP);
+    }
+#ifdef AUDIO_CLICKY
     clicky_play();
     clicky_play();
-  #endif
+#endif
 }
 }
 #endif // ENCODER_ENABLE
 #endif // ENCODER_ENABLE
 
 
 #ifdef KEYBOARD_planck_rev6
 #ifdef KEYBOARD_planck_rev6
 void dip_update(uint8_t index, bool active) {
 void dip_update(uint8_t index, bool active) {
-  switch (index) {
-    case 0:
-      if(active) { audio_on(); } else { audio_off(); }
-      break;
-    case 1:
-      if(active) { clicky_on(); } else { clicky_off(); }
-      break;
-    case 2:
-      keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = active;
-      break;
-    case 3:
-      userspace_config.nuke_switch = active;
-      break;
-   }
+    switch (index) {
+        case 0:
+            if(active) { audio_on(); } else { audio_off(); }
+            break;
+        case 1:
+            if(active) { clicky_on(); } else { clicky_off(); }
+            break;
+        case 2:
+            keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = active;
+            break;
+        case 3:
+            userspace_config.nuke_switch = active;
+            break;
+    }
 }
 }
 #endif // KEYBOARD_planck_rev6
 #endif // KEYBOARD_planck_rev6
+
+#ifdef KEYBOARD_planck_ez
+uint32_t layer_state_set_keymap(uint32_t state) {
+
+    palClearPad(GPIOB, 8);
+    palClearPad(GPIOB, 9);
+    switch (biton32(state)) {
+        case _LOWER:
+            palSetPad(GPIOB, 9);
+            break;
+        case _RAISE:
+            palSetPad(GPIOB, 8);
+            break;
+        case _ADJUST:
+            palSetPad(GPIOB, 9);
+            palSetPad(GPIOB, 8);
+            break;
+        default:
+            break;
+    }
+    return state;
+}
+#endif

+ 18 - 7
layouts/community/ortho_4x12/drashna/rules.mk

@@ -5,16 +5,27 @@ CONSOLE_ENABLE    = no         # Console for debug(+400)
 COMMAND_ENABLE    = no        # Commands for debug and configuration
 COMMAND_ENABLE    = no        # Commands for debug and configuration
 TAP_DANCE_ENABLE  = no
 TAP_DANCE_ENABLE  = no
 AUDIO_ENABLE      = yes
 AUDIO_ENABLE      = yes
+SPACE_CADET_ENABLE = no
+
 ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
 ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
-  RGBLIGHT_ENABLE             = yes
-  INDICATOR_LIGHTS            = yes
-  RGBLIGHT_TWINKLE            = yes
-  RGBLIGHT_STARTUP_ANIMATION  = yes
+    RGBLIGHT_ENABLE             = yes
+    INDICATOR_LIGHTS            = yes
+    RGBLIGHT_TWINKLE            = yes
+    RGBLIGHT_STARTUP_ANIMATION  = yes
 endif
 endif
 ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
 ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
-  RGB_MATRIX_ENABLE           = yes
-  RGBLIGHT_ENABLE             = no
-  RGBLIGHT_STARTUP_ANIMATION  = no
+    RGB_MATRIX_ENABLE           = yes
+    RGBLIGHT_ENABLE             = no
+    RGBLIGHT_STARTUP_ANIMATION  = no
+endif
+ifneq (,$(findstring planck/ez,$(KEYBOARD))) # Make sure it IS the Planck Light
+    RGBLIGHT_ENABLE = no
+    # SERIAL_LINK_ENABLE = yes
+    ENCODER_ENABLE = no
+    RGB_MATRIX_ENABLE = IS31FL3737
+    INDICATOR_LIGHTS            = yes
+    RGBLIGHT_TWINKLE            = yes
+    RGBLIGHT_STARTUP_ANIMATION  = yes
 endif
 endif
 
 
 ifeq ($(strip $(PROTOCOL)), VUSB)
 ifeq ($(strip $(PROTOCOL)), VUSB)

+ 14 - 15
layouts/community/ortho_5x12/drashna/config.h

@@ -3,20 +3,19 @@
 
 
 /* ws2812 RGB LED */
 /* ws2812 RGB LED */
 #if defined(KEYBOARD_fractal)
 #if defined(KEYBOARD_fractal)
-  #define RGB_DI_PIN D2
-  #undef RGBLED_NUM
-  #define RGBLIGHT_ANIMATIONS
-  #define RGBLED_NUM 29     // Number of LEDs
-  #undef RGBLIGHT_HUE_STEP
-  #define RGBLIGHT_HUE_STEP 8
-  #undef RGBLIGHT_SAT_STEP
-  #define RGBLIGHT_SAT_STEP 8
-  #undef RGBLIGHT_VAL_STEP
-  #define RGBLIGHT_VAL_STEP 8
-  #define RGBLIGHT_LIMIT_VAL 175
-  #define RGBLIGHT_SLEEP
-
-  #define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3
-  #define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14
+#   define RGB_DI_PIN D2
+#   undef RGBLED_NUM
+#   define RGBLIGHT_ANIMATIONS
+#   define RGBLED_NUM 29     // Number of LEDs
+#   undef RGBLIGHT_HUE_STEP
+#   define RGBLIGHT_HUE_STEP 8
+#   undef RGBLIGHT_SAT_STEP
+#   define RGBLIGHT_SAT_STEP 8
+#   undef RGBLIGHT_VAL_STEP
+#   define RGBLIGHT_VAL_STEP 8
+#   define RGBLIGHT_LIMIT_VAL 175
+#   define RGBLIGHT_SLEEP
 
 
+#   define RGBLIGHT_EFFECT_KNIGHT_OFFSET 3
+#   define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 14
 #endif
 #endif

+ 2 - 33
users/drashna/.gitlab-ci.yml

@@ -1,9 +1,7 @@
 stages:
 stages:
   - test
   - test
-  - build
-  - deploy
 
 
-Preliminary Test:
+QMK Firmware:
   stage: test
   stage: test
   variables:
   variables:
     GIT_SUBMODULE_STRATEGY: recursive
     GIT_SUBMODULE_STRATEGY: recursive
@@ -18,36 +16,7 @@ Preliminary Test:
   script:
   script:
     - make test:all
     - make test:all
     - make planck/rev6:default planck/rev5:default
     - make planck/rev6:default planck/rev5:default
-
-QMK Firmware Defaults:
-  stage: deploy
-  variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-  tags:
-    - linux
-  image: ubuntu:18.10
-  before_script:
-    - apt-get update -qy
-    - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip
-    - avr-gcc --version
-    - uname -a
-  script:
-    - make test:all
-    - make all:default -j16
-
-Drashna Firmware:
-  stage: build
-  variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-  tags:
-    - linux
-  image: ubuntu:18.10
-  before_script:
-    - apt-get update -qy
-    - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip
-    - avr-gcc --version
-  script:
-    - make keebio/iris/rev2:drashna keebio/iris/rev2:drashna_old ergodox_ez:drashna ergodox_ez:drashna_glow keebio/viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna planck/rev6:drashna fractal:drashna primekb/prime_m:drashna -j16 --output-sync
+    - make keebio/iris/rev2:drashna keebio/iris/rev2:drashna_old ergodox_ez:drashna ergodox_ez:drashna_glow keebio/viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna planck/rev6:drashna fractal:drashna primekb/prime_m:drashna -j2 --output-sync
   artifacts:
   artifacts:
     name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
     name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
     paths:
     paths:

+ 34 - 38
users/drashna/config.h

@@ -2,50 +2,43 @@
 
 
 
 
 #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), \
+#   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(COLEMAK_SOUND), \
                                     SONG(DVORAK_SOUND), \
                                     SONG(DVORAK_SOUND), \
                                     SONG(OVERWATCH_THEME) \
                                     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 AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
+
+#   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_EFFECT_BREATHING
+#   define RGBLIGHT_EFFECT_SNAKE
+#   define RGBLIGHT_EFFECT_KNIGHT
 #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
 
 
 
 
@@ -62,24 +55,27 @@
 #define FORCE_NKRO
 #define FORCE_NKRO
 
 
 #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_ergodox_ez)
 #if defined(KEYBOARD_ergodox_ez)
-  #define TAPPING_TERM 185
+#   define TAPPING_TERM 185
 #elif defined(KEYBOARD_crkbd)
 #elif defined(KEYBOARD_crkbd)
-  #define TAPPING_TERM 200
+#   define TAPPING_TERM 200
 #else
 #else
-  #define TAPPING_TERM 175
+#   define TAPPING_TERM 175
 #endif
 #endif
 
 
 
 
-// Disable action_get_macro and fn_actions, since we don't use these
-// and it saves on space in the firmware.
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
-
 #define TAP_CODE_DELAY 5
 #define TAP_CODE_DELAY 5
+
+/* Disable unused and unneeded features to reduce on firmware size */
+#ifdef LOCKING_SUPPORT_ENABLE
+#   undef LOCKING_SUPPORT_ENABLE
+#endif
+#ifdef LOCKING_RESYNC_ENABLE
+#   undef LOCKING_RESYNC_ENABLE
+#endif

+ 99 - 99
users/drashna/drashna.c

@@ -19,78 +19,78 @@ 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 DRASHNA_UNICODE_MODE UC_WIN
+    #define DRASHNA_UNICODE_MODE UC_WIN
 #else
 #else
   // set to 2 for UC_WIN, set to 4 for UC_WINC
   // set to 2 for UC_WIN, set to 4 for UC_WINC
-  #define DRASHNA_UNICODE_MODE 2
+    #define DRASHNA_UNICODE_MODE 2
 #endif
 #endif
 
 
 
 
 // This block is for all of the gaming macros, as they were all doing
 // This block is for all of the gaming macros, as they were all doing
 // the same thing, but with differring text sent.
 // the same thing, but with differring text sent.
 bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
 bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
-  if (!record->event.pressed || override) {
-    uint16_t keycode;
-    if (userspace_config.is_overwatch) {
-      keycode = KC_BSPC;
-    } else {
-      keycode = KC_ENTER;
+    if (!record->event.pressed || override) {
+        uint16_t keycode;
+        if (userspace_config.is_overwatch) {
+        keycode = KC_BSPC;
+        } else {
+        keycode = KC_ENTER;
+        }
+        clear_keyboard();
+        tap_code(keycode);
+        wait_ms(TAP_CODE_DELAY);
+        send_string_with_delay(str, TAP_CODE_DELAY);
+        wait_ms(TAP_CODE_DELAY);
+        tap_code(KC_ENTER);
     }
     }
-    clear_keyboard();
-    tap_code(keycode);
-    wait_ms(TAP_CODE_DELAY);
-    send_string_with_delay(str, TAP_CODE_DELAY);
-    wait_ms(TAP_CODE_DELAY);
-    tap_code(KC_ENTER);
-  }
-  if (override) wait_ms(3000);
-  return false;
+    if (override) wait_ms(3000);
+    return false;
 }
 }
 
 
 bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
 bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed) {
-  static uint16_t this_timer;
-  if(pressed) {
-      this_timer= timer_read();
-  } else {
-      if (timer_elapsed(this_timer) < TAPPING_TERM){
-          tap_code(code);
-      } else {
-          register_code(mod_code);
-          tap_code(code);
-          unregister_code(mod_code);
-      }
-  }
-  return false;
+    static uint16_t this_timer;
+    if(pressed) {
+        this_timer= timer_read();
+    } else {
+        if (timer_elapsed(this_timer) < TAPPING_TERM){
+            tap_code(code);
+        } else {
+            register_code(mod_code);
+            tap_code(code);
+            unregister_code(mod_code);
+        }
+    }
+    return false;
 }
 }
 
 
 bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
 bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
-  if(pressed) {
-      this_timer= timer_read();
-  } else {
-      if (timer_elapsed(this_timer) < TAPPING_TERM){
-          tap_code(code);
-      } else {
-          register_code(mod_code);
-          tap_code(code);
-          unregister_code(mod_code);
-      }
-  }
-  return false;
+    if(pressed) {
+        this_timer= timer_read();
+    } else {
+        if (timer_elapsed(this_timer) < TAPPING_TERM){
+            tap_code(code);
+        } else {
+            register_code(mod_code);
+            tap_code(code);
+            unregister_code(mod_code);
+        }
+    }
+    return false;
 }
 }
 
 
 void bootmagic_lite(void) {
 void bootmagic_lite(void) {
-  matrix_scan();
-  #if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
-    wait_ms(DEBOUNCING_DELAY * 2);
-  #elif defined(DEBOUNCE) && DEBOUNCE > 0
-    wait_ms(DEBOUNCE * 2);
-  #else
-    wait_ms(30);
-  #endif
-  matrix_scan();
-   if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
-    bootloader_jump();
-  }
+    matrix_scan();
+    #if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
+        wait_ms(DEBOUNCING_DELAY * 2);
+    #elif defined(DEBOUNCE) && DEBOUNCE > 0
+        wait_ms(DEBOUNCE * 2);
+    #else
+        wait_ms(30);
+    #endif
+    matrix_scan();
+    if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
+        bootloader_jump();
+    }
 }
 }
 
 
 // Add reconfigurable functions here, for keymap customization
 // Add reconfigurable functions here, for keymap customization
@@ -103,21 +103,21 @@ void matrix_init_keymap(void) {}
 // Call user matrix init, set default RGB colors and then
 // Call user matrix init, set default RGB colors and then
 // call the keymap's init function
 // call the keymap's init function
 void matrix_init_user(void) {
 void matrix_init_user(void) {
-  userspace_config.raw = eeconfig_read_user();
+    userspace_config.raw = eeconfig_read_user();
 
 
-  #ifdef BOOTLOADER_CATERINA
-    DDRD &= ~(1<<5);
-    PORTD &= ~(1<<5);
+    #ifdef BOOTLOADER_CATERINA
+        DDRD &= ~(1<<5);
+        PORTD &= ~(1<<5);
 
 
-    DDRB &= ~(1<<0);
-    PORTB &= ~(1<<0);
-  #endif
+        DDRB &= ~(1<<0);
+        PORTB &= ~(1<<0);
+    #endif
 
 
-  #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
-    set_unicode_input_mode(DRASHNA_UNICODE_MODE);
-    get_unicode_input_mode();
-  #endif //UNICODE_ENABLE
-  matrix_init_keymap();
+    #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
+        set_unicode_input_mode(DRASHNA_UNICODE_MODE);
+        get_unicode_input_mode();
+    #endif //UNICODE_ENABLE
+    matrix_init_keymap();
 }
 }
 
 
 __attribute__((weak))
 __attribute__((weak))
@@ -125,26 +125,26 @@ void keyboard_post_init_keymap(void){ }
 
 
 void keyboard_post_init_user(void){
 void keyboard_post_init_user(void){
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-  keyboard_post_init_rgb();
+    keyboard_post_init_rgb();
 #endif
 #endif
-  keyboard_post_init_keymap();
+    keyboard_post_init_keymap();
 }
 }
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
 void shutdown_keymap(void) {}
 void shutdown_keymap(void) {}
 
 
 void shutdown_user (void) {
 void shutdown_user (void) {
-  #ifdef RGBLIGHT_ENABLE
-    rgblight_enable_noeeprom();
-    rgblight_mode_noeeprom(1);
-    rgblight_setrgb_red();
-  #endif // RGBLIGHT_ENABLE
-  #ifdef RGB_MATRIX_ENABLE
-    // uint16_t timer_start = timer_read();
-    // rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
-    // while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
-  #endif //RGB_MATRIX_ENABLE
-  shutdown_keymap();
+    #ifdef RGBLIGHT_ENABLE
+        rgblight_enable_noeeprom();
+        rgblight_mode_noeeprom(1);
+        rgblight_setrgb_red();
+    #endif // RGBLIGHT_ENABLE
+    #ifdef RGB_MATRIX_ENABLE
+        // uint16_t timer_start = timer_read();
+        // rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 );
+        // while(timer_elapsed(timer_start) < 250) { wait_ms(1); }
+    #endif //RGB_MATRIX_ENABLE
+    shutdown_keymap();
 }
 }
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
@@ -158,7 +158,7 @@ __attribute__ ((weak))
 void suspend_wakeup_init_keymap(void) {}
 void suspend_wakeup_init_keymap(void) {}
 
 
 void suspend_wakeup_init_user(void) {
 void suspend_wakeup_init_user(void) {
-  suspend_wakeup_init_keymap();
+    suspend_wakeup_init_keymap();
 }
 }
 
 
 
 
@@ -168,54 +168,54 @@ void matrix_scan_keymap(void) {}
 // No global matrix scan code, so just run keymap's matrix
 // No global matrix scan code, so just run keymap's matrix
 // scan function
 // scan function
 void matrix_scan_user(void) {
 void matrix_scan_user(void) {
-  static bool has_ran_yet;
-  if (!has_ran_yet) {
-    has_ran_yet = true;
-    startup_user();
-  }
+    static bool has_ran_yet;
+    if (!has_ran_yet) {
+        has_ran_yet = true;
+        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 // 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();
 }
 }
 
 
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
 uint32_t layer_state_set_keymap (uint32_t state) {
 uint32_t layer_state_set_keymap (uint32_t state) {
-  return state;
+    return state;
 }
 }
 
 
 // on layer change, no matter where the change was initiated
 // on layer change, no matter where the change was initiated
 // Then runs keymap's layer change check
 // Then runs keymap's layer change check
 uint32_t layer_state_set_user(uint32_t state) {
 uint32_t layer_state_set_user(uint32_t state) {
-  state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+    state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-  state = layer_state_set_rgb(state);
+    state = layer_state_set_rgb(state);
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
-  return layer_state_set_keymap (state);
+    return layer_state_set_keymap (state);
 }
 }
 
 
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
 uint32_t default_layer_state_set_keymap (uint32_t state) {
 uint32_t default_layer_state_set_keymap (uint32_t state) {
-  return state;
+    return state;
 }
 }
 
 
 // Runs state check and changes underglow color and animation
 // Runs state check and changes underglow color and animation
 uint32_t default_layer_state_set_user(uint32_t state) {
 uint32_t default_layer_state_set_user(uint32_t state) {
-  state = default_layer_state_set_keymap(state);
+    state = default_layer_state_set_keymap(state);
 #if 0
 #if 0
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
   state = default_layer_state_set_rgb(state);
   state = default_layer_state_set_rgb(state);
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 #endif
 #endif
-  return state;
+    return state;
 }
 }
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
@@ -225,16 +225,16 @@ void led_set_keymap(uint8_t usb_led) {}
 // So far, I only have keyboard specific code,
 // So far, I only have keyboard specific code,
 // So nothing goes here.
 // So nothing goes here.
 void led_set_user(uint8_t usb_led) {
 void led_set_user(uint8_t usb_led) {
-  led_set_keymap(usb_led);
+    led_set_keymap(usb_led);
 }
 }
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
 void eeconfig_init_keymap(void) {}
 void eeconfig_init_keymap(void) {}
 
 
 void eeconfig_init_user(void) {
 void eeconfig_init_user(void) {
-  userspace_config.raw = 0;
-  userspace_config.rgb_layer_change = true;
-  eeconfig_update_user(userspace_config.raw);
+    userspace_config.raw = 0;
+    userspace_config.rgb_layer_change = true;
+    eeconfig_update_user(userspace_config.raw);
   #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
   #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE))
     set_unicode_input_mode(DRASHNA_UNICODE_MODE);
     set_unicode_input_mode(DRASHNA_UNICODE_MODE);
     get_unicode_input_mode();
     get_unicode_input_mode();

+ 38 - 38
users/drashna/drashna.h

@@ -22,36 +22,36 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "wrappers.h"
 #include "wrappers.h"
 #include "process_records.h"
 #include "process_records.h"
 #ifdef TAP_DANCE_ENABLE
 #ifdef TAP_DANCE_ENABLE
-  #include "tap_dances.h"
+#   include "tap_dances.h"
 #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 "rgb_stuff.h"
 #endif
 #endif
 #if defined(AUDIO_ENABLE) && __GNUC__ > 7
 #if defined(AUDIO_ENABLE) && __GNUC__ > 7
-  #if __has_include("drashna_song_list.h")
-    #include "drashna_song_list.h"
-  #endif
+#   if __has_include("drashna_song_list.h")
+#       include "drashna_song_list.h"
+#   endif
 #endif
 #endif
 
 
 /* Define layer names */
 /* Define layer names */
 enum userspace_layers {
 enum userspace_layers {
-  _QWERTY = 0,
-  _NUMLOCK = 0,
-  _COLEMAK,
-  _DVORAK,
-  _WORKMAN,
-  _NORMAN,
-  _MALTRON,
-  _EUCALYN,
-  _CARPLAX,
-  _MODS, /* layer 8 */
-  _GAMEPAD,
-  _DIABLO,
-  _MACROS,
-  _MEDIA,
-  _LOWER,
-  _RAISE,
-  _ADJUST,
+    _QWERTY = 0,
+    _NUMLOCK = 0,
+    _COLEMAK,
+    _DVORAK,
+    _WORKMAN,
+    _NORMAN,
+    _MALTRON,
+    _EUCALYN,
+    _CARPLAX,
+    _MODS, /* layer 8 */
+    _GAMEPAD,
+    _DIABLO,
+    _MACROS,
+    _MEDIA,
+    _LOWER,
+    _RAISE,
+    _ADJUST,
 };
 };
 
 
 /*
 /*
@@ -73,14 +73,14 @@ void led_set_keymap(uint8_t usb_led);
 void eeconfig_init_keymap(void);
 void eeconfig_init_keymap(void);
 
 
 typedef union {
 typedef union {
-  uint32_t raw;
-  struct {
-    bool     rgb_layer_change :1;
-    bool     is_overwatch     :1;
-    bool     nuke_switch      :1;
-    uint8_t  unicode_mod      :4;
-    bool     swapped_numbers  :1;
-  };
+    uint32_t raw;
+    struct {
+        bool     rgb_layer_change :1;
+        bool     is_overwatch     :1;
+        bool     nuke_switch      :1;
+        uint8_t  unicode_mod      :4;
+        bool     swapped_numbers  :1;
+    };
 } userspace_config_t;
 } userspace_config_t;
 
 
 extern userspace_config_t userspace_config;
 extern userspace_config_t userspace_config;
@@ -92,13 +92,13 @@ 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)
+#   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
 #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
+#   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 // TAP_DANCE_ENABLE

+ 116 - 116
users/drashna/process_records.c

@@ -4,12 +4,12 @@ uint16_t copy_paste_timer;
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-  return true;
+    return true;
 }
 }
 
 
 __attribute__ ((weak))
 __attribute__ ((weak))
 bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
 bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
-  return true;
+    return true;
 }
 }
 
 
 // Defines actions tor my global custom keycodes. Defined in drashna.h file
 // Defines actions tor my global custom keycodes. Defined in drashna.h file
@@ -18,140 +18,140 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
 
   // If console is enabled, it will print the matrix position and status of each key pressed
   // If console is enabled, it will print the matrix position and status of each key pressed
 #ifdef KEYLOGGER_ENABLE
 #ifdef KEYLOGGER_ENABLE
-  #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2)
-    xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
-  #else
-    xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
-  #endif
+#   if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_keebio_iris_rev2)
+        xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.row, record->event.key.col, record->event.pressed);
+#   else
+        xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+#   endif
 #endif //KEYLOGGER_ENABLE
 #endif //KEYLOGGER_ENABLE
 
 
-  switch (keycode) {
-  case KC_QWERTY ... KC_CARPLAX:
-    if (record->event.pressed) {
-      set_single_persistent_default_layer(keycode - KC_QWERTY);
-    }
-    break;
+    switch (keycode) {
+    case KC_QWERTY ... KC_CARPLAX:
+        if (record->event.pressed) {
+            set_single_persistent_default_layer(keycode - KC_QWERTY);
+        }
+        break;
 
 
-  case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
-    if (!record->event.pressed) {
-      uint8_t temp_mod = get_mods();
-      uint8_t temp_osm = get_oneshot_mods();
-      clear_mods(); clear_oneshot_mods();
-      send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
+    case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
+        if (!record->event.pressed) {
+            uint8_t temp_mod = get_mods();
+            uint8_t temp_osm = get_oneshot_mods();
+            clear_mods(); clear_oneshot_mods();
+            send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), TAP_CODE_DELAY);
 #ifndef MAKE_BOOTLOADER
 #ifndef MAKE_BOOTLOADER
-      if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT )
+        if ( ( temp_mod | temp_osm ) & MOD_MASK_SHIFT )
 #endif
 #endif
-      {
-        #if defined(__arm__)
-          send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
-        #elif defined(BOOTLOADER_DFU)
-          send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
-        #elif defined(BOOTLOADER_HALFKAY)
-          send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
-        #elif defined(BOOTLOADER_CATERINA)
-          send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
-        #endif // bootloader options
-       }
-      if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); }
-      send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
-    }
-    break;
+        {
+            #if defined(__arm__)
+            send_string_with_delay_P(PSTR(":dfu-util"), TAP_CODE_DELAY);
+            #elif defined(BOOTLOADER_DFU)
+            send_string_with_delay_P(PSTR(":dfu"), TAP_CODE_DELAY);
+            #elif defined(BOOTLOADER_HALFKAY)
+            send_string_with_delay_P(PSTR(":teensy"), TAP_CODE_DELAY);
+            #elif defined(BOOTLOADER_CATERINA)
+            send_string_with_delay_P(PSTR(":avrdude"), TAP_CODE_DELAY);
+            #endif // bootloader options
+        }
+        if ( ( temp_mod | temp_osm ) & MOD_MASK_CTRL) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), TAP_CODE_DELAY); }
+            send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
+        }
+        break;
 
 
-  case VRSN: // Prints firmware version
-    if (record->event.pressed) {
-      send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
-    }
-    break;
+    case VRSN: // Prints firmware version
+        if (record->event.pressed) {
+            send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
+        }
+        break;
 
 
-// These are a serious of gaming macros.
-// Only enables for the viterbi, basically,
-// to save on firmware space, since it's limited.
+    // These are a serious of gaming macros.
+    // Only enables for the viterbi, basically,
+    // to save on firmware space, since it's limited.
 #ifdef MACROS_ENABLED
 #ifdef MACROS_ENABLED
-  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); }
+    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); }
 #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;
-  case KC_SALT:
-    return send_game_macro("Salt, salt, salt...", record, false);
-  case KC_MORESALT:
-    return  send_game_macro("Please sir, can I have some more salt?!", record, false);
-  case KC_SALTHARD:
-    return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
-  case KC_GOODGAME:
-    return send_game_macro("Good game, everyone!", record, false);
-  case KC_GLHF:
-    return send_game_macro("Good luck, have fun!!!", record, false);
-  case KC_SYMM:
-    return send_game_macro("Left click to win!", record, false);
-  case KC_JUSTGAME:
-    return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
-  case KC_TORB:
-    return send_game_macro("That was positively riveting!", record, false);
-  case KC_AIM:
-    send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
-    return send_game_macro("Wait! That aim is TOO good!  You're clearly using an aim hack! CHEATER!", record, false);
-  case KC_C9:
-    return send_game_macro("OMG!!!  C9!!!", record, false);
-  case KC_GGEZ:
-    return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
+        break;
+    case KC_SALT:
+        return send_game_macro("Salt, salt, salt...", record, false);
+    case KC_MORESALT:
+        return  send_game_macro("Please sir, can I have some more salt?!", record, false);
+    case KC_SALTHARD:
+        return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
+    case KC_GOODGAME:
+        return send_game_macro("Good game, everyone!", record, false);
+    case KC_GLHF:
+        return send_game_macro("Good luck, have fun!!!", record, false);
+    case KC_SYMM:
+        return send_game_macro("Left click to win!", record, false);
+    case KC_JUSTGAME:
+        return send_game_macro("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.", record, false);
+    case KC_TORB:
+        return send_game_macro("That was positively riveting!", record, false);
+    case KC_AIM:
+        send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
+        return send_game_macro("Wait! That aim is TOO good!  You're clearly using an aim hack! CHEATER!", record, false);
+    case KC_C9:
+        return send_game_macro("OMG!!!  C9!!!", record, false);
+    case KC_GGEZ:
+        return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
 #endif // MACROS_ENABLED
 #endif // MACROS_ENABLED
 
 
 
 
-  case KC_DIABLO_CLEAR:  // reset all Diablo timers, disabling them
+    case KC_DIABLO_CLEAR:  // reset all Diablo timers, disabling them
 #ifdef TAP_DANCE_ENABLE
 #ifdef TAP_DANCE_ENABLE
-    if (record->event.pressed) {
-      uint8_t dtime;
-      for (dtime = 0; dtime < 4; dtime++) {
-        diablo_key_time[dtime] = diablo_times[0];
-      }
-    }
+        if (record->event.pressed) {
+            uint8_t dtime;
+            for (dtime = 0; dtime < 4; dtime++) {
+                diablo_timer[dtime].key_time = diablo_times[0];
+            }
+        }
 #endif // TAP_DANCE_ENABLE
 #endif // TAP_DANCE_ENABLE
-    break;
+        break;
 
 
 
 
   case KC_CCCV:                                    // One key copy/paste
   case KC_CCCV:                                    // One key copy/paste
-    if(record->event.pressed){
-      copy_paste_timer = timer_read();
-    } else {
-      if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {   // Hold, copy
-        register_code(KC_LCTL);
-        tap_code(KC_C);
-        unregister_code(KC_LCTL);
-      } else {                                // Tap, paste
-        register_code(KC_LCTL);
-        tap_code(KC_V);
-        unregister_code(KC_LCTL);
-      }
-    }
-    break;
+        if(record->event.pressed){
+            copy_paste_timer = timer_read();
+            } else {
+            if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) {   // Hold, copy
+                register_code(KC_LCTL);
+                tap_code(KC_C);
+                unregister_code(KC_LCTL);
+            } else {                                // Tap, paste
+                register_code(KC_LCTL);
+                tap_code(KC_V);
+                unregister_code(KC_LCTL);
+            }
+        }
+        break;
 #ifdef UNICODE_ENABLE
 #ifdef UNICODE_ENABLE
-  case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
-    if (record->event.pressed) {
-      send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
-    }
-    break;
-  case UC_TABL: // ┬─┬ノ( º _ ºノ)
-    if (record->event.pressed) {
-      send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
-    }
-    break;
-  case UC_SHRG: // ¯\_(ツ)_/¯
-    if (record->event.pressed) {
-      send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
-    }
-    break;
-  case UC_DISA: // ಠ_ಠ
-    if (record->event.pressed) {
-      send_unicode_hex_string("0CA0 005F 0CA0");
-    }
-    break;
+    case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
+        if (record->event.pressed) {
+            send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
+        }
+        break;
+    case UC_TABL: // ┬─┬ノ( º _ ºノ)
+        if (record->event.pressed) {
+            send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029");
+        }
+        break;
+    case UC_SHRG: // ¯\_(ツ)_/¯
+        if (record->event.pressed) {
+            send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
+        }
+        break;
+    case UC_DISA: // ಠ_ಠ
+        if (record->event.pressed) {
+            send_unicode_hex_string("0CA0 005F 0CA0");
+        }
+        break;
 #endif
 #endif
-  }
-  return process_record_keymap(keycode, record) &&
+    }
+    return process_record_keymap(keycode, record) &&
 #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
 #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
-    process_record_user_rgb(keycode, record) &&
+        process_record_user_rgb(keycode, record) &&
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
-    process_record_secrets(keycode, record);
+        process_record_secrets(keycode, record);
 }
 }

+ 38 - 38
users/drashna/process_records.h

@@ -2,48 +2,48 @@
 #include "drashna.h"
 #include "drashna.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 {
-  VRSN = PLACEHOLDER_SAFE_RANGE,              // Prints QMK Firmware and board info
-  KC_QWERTY,         // Sets default layer to QWERTY
-  KC_COLEMAK,        // Sets default layer to COLEMAK
-  KC_DVORAK,         // Sets default layer to DVORAK
-  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_DIABLO_CLEAR,   // Clears all Diablo Timers
-  KC_OVERWATCH,      // Toggles game macro input mode (so in OW, it defaults to game chat)
-  KC_SALT,           // See drashna.c for details
-  KC_MORESALT,
-  KC_SALTHARD,
-  KC_GOODGAME,
-  KC_SYMM,
-  KC_JUSTGAME,
-  KC_GLHF,
-  KC_TORB,
-  KC_AIM,
-  KC_C9,
-  KC_GGEZ,
-  KC_MAKE,           // Run keyboard's customized make command
-  KC_RGB_T,          // Toggles RGB Layer Indication mode
-  KC_SECRET_1,       // test1
-  KC_SECRET_2,       // test2
-  KC_SECRET_3,       // test3
-  KC_SECRET_4,       // test4
-  KC_SECRET_5,       // test5
-  KC_CCCV,           // Hold to copy, tap to paste
-  KC_NUKE,           // NUCLEAR LAUNCH DETECTED!!!
-  UC_FLIP,           // (ಠ痊ಠ)┻━┻
-  UC_TABL,           // ┬─┬ノ( º _ ºノ)
-  UC_SHRG,           // ¯\_(ツ)_/¯
-  UC_DISA,           // ಠ_ಠ
-  NEW_SAFE_RANGE     //use "NEWPLACEHOLDER for keymap specific codes
+    VRSN = PLACEHOLDER_SAFE_RANGE,              // Prints QMK Firmware and board info
+    KC_QWERTY,         // Sets default layer to QWERTY
+    KC_COLEMAK,        // Sets default layer to COLEMAK
+    KC_DVORAK,         // Sets default layer to DVORAK
+    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_DIABLO_CLEAR,   // Clears all Diablo Timers
+    KC_OVERWATCH,      // Toggles game macro input mode (so in OW, it defaults to game chat)
+    KC_SALT,           // See drashna.c for details
+    KC_MORESALT,
+    KC_SALTHARD,
+    KC_GOODGAME,
+    KC_SYMM,
+    KC_JUSTGAME,
+    KC_GLHF,
+    KC_TORB,
+    KC_AIM,
+    KC_C9,
+    KC_GGEZ,
+    KC_MAKE,           // Run keyboard's customized make command
+    KC_RGB_T,          // Toggles RGB Layer Indication mode
+    KC_SECRET_1,       // test1
+    KC_SECRET_2,       // test2
+    KC_SECRET_3,       // test3
+    KC_SECRET_4,       // test4
+    KC_SECRET_5,       // test5
+    KC_CCCV,           // Hold to copy, tap to paste
+    KC_NUKE,           // NUCLEAR LAUNCH DETECTED!!!
+    UC_FLIP,           // (ಠ痊ಠ)┻━┻
+    UC_TABL,           // ┬─┬ノ( º _ ºノ)
+    UC_SHRG,           // ¯\_(ツ)_/¯
+    UC_DISA,           // ಠ_ಠ
+    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);

+ 202 - 239
users/drashna/rgb_stuff.c

@@ -11,80 +11,80 @@ extern rgb_config_t rgb_matrix_config;
 
 
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
 void rgblight_sethsv_default_helper(uint8_t index) {
 void rgblight_sethsv_default_helper(uint8_t index) {
-  rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index);
+    rgblight_sethsv_at(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, index);
 }
 }
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 #ifdef INDICATOR_LIGHTS
 #ifdef INDICATOR_LIGHTS
 void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
 void set_rgb_indicators(uint8_t this_mod, uint8_t this_led, uint8_t this_osm) {
-  if (userspace_config.rgb_layer_change && biton32(layer_state) == 0) {
-    if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) ) {
-      #ifdef SHFT_LED1
-        rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
-      #endif // SHFT_LED1
-      #ifdef SHFT_LED2
-        rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
-      #endif // SHFT_LED2
-    } else {
-      #ifdef SHFT_LED1
-        rgblight_sethsv_default_helper(SHFT_LED1);
-      #endif // SHFT_LED1
-      #ifdef SHFT_LED2
-        rgblight_sethsv_default_helper(SHFT_LED2);
-      #endif // SHFT_LED2
-    }
-    if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
-      #ifdef CTRL_LED1
-        rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
-      #endif // CTRL_LED1
-      #ifdef CTRL_LED2
-        rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
-      #endif // CTRL_LED2
-    } else {
-      #ifdef CTRL_LED1
-        rgblight_sethsv_default_helper(CTRL_LED1);
-      #endif // CTRL_LED1
-      #ifdef CTRL_LED2
-        rgblight_sethsv_default_helper(CTRL_LED2);
-      #endif // CTRL_LED2
-    }
-    if ( (this_mod | this_osm) & MOD_MASK_GUI) {
-      #ifdef GUI_LED1
-        rgblight_sethsv_at(51, 255, 255, GUI_LED1);
-      #endif // GUI_LED1
-      #ifdef GUI_LED2
-        rgblight_sethsv_at(51, 255, 255, GUI_LED2);
-      #endif // GUI_LED2
-    } else {
-      #ifdef GUI_LED1
-        rgblight_sethsv_default_helper(GUI_LED1);
-      #endif // GUI_LED1
-      #ifdef GUI_LED2
-        rgblight_sethsv_default_helper(GUI_LED2);
-      #endif // GUI_LED2
-    }
-    if ( (this_mod | this_osm) & MOD_MASK_ALT) {
-      #ifdef ALT_LED1
-        rgblight_sethsv_at(240, 255, 255, ALT_LED1);
-      #endif // ALT_LED1
-      #ifdef GUI_LED2
-        rgblight_sethsv_at(240, 255, 255, ALT_LED2);
-      #endif // GUI_LED2
-    } else {
-      #ifdef GUI_LED1
-        rgblight_sethsv_default_helper(ALT_LED1);
-      #endif // GUI_LED1
-      #ifdef GUI_LED2
-        rgblight_sethsv_default_helper(ALT_LED2);
-      #endif // GUI_LED2
+    if (userspace_config.rgb_layer_change && biton32(layer_state) == 0) {
+        if ( (this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1<<USB_LED_CAPS_LOCK) ) {
+        #ifdef SHFT_LED1
+            rgblight_sethsv_at(120, 255, 255, SHFT_LED1);
+        #endif // SHFT_LED1
+        #ifdef SHFT_LED2
+            rgblight_sethsv_at(120, 255, 255, SHFT_LED2);
+        #endif // SHFT_LED2
+        } else {
+        #ifdef SHFT_LED1
+            rgblight_sethsv_default_helper(SHFT_LED1);
+        #endif // SHFT_LED1
+        #ifdef SHFT_LED2
+            rgblight_sethsv_default_helper(SHFT_LED2);
+        #endif // SHFT_LED2
+        }
+        if ( (this_mod | this_osm) & MOD_MASK_CTRL) {
+        #ifdef CTRL_LED1
+            rgblight_sethsv_at(0, 255, 255, CTRL_LED1);
+        #endif // CTRL_LED1
+        #ifdef CTRL_LED2
+            rgblight_sethsv_at(0, 255, 255, CTRL_LED2);
+        #endif // CTRL_LED2
+        } else {
+        #ifdef CTRL_LED1
+            rgblight_sethsv_default_helper(CTRL_LED1);
+        #endif // CTRL_LED1
+        #ifdef CTRL_LED2
+            rgblight_sethsv_default_helper(CTRL_LED2);
+        #endif // CTRL_LED2
+        }
+        if ( (this_mod | this_osm) & MOD_MASK_GUI) {
+        #ifdef GUI_LED1
+            rgblight_sethsv_at(51, 255, 255, GUI_LED1);
+        #endif // GUI_LED1
+        #ifdef GUI_LED2
+            rgblight_sethsv_at(51, 255, 255, GUI_LED2);
+        #endif // GUI_LED2
+        } else {
+        #ifdef GUI_LED1
+            rgblight_sethsv_default_helper(GUI_LED1);
+        #endif // GUI_LED1
+        #ifdef GUI_LED2
+            rgblight_sethsv_default_helper(GUI_LED2);
+        #endif // GUI_LED2
+        }
+        if ( (this_mod | this_osm) & MOD_MASK_ALT) {
+        #ifdef ALT_LED1
+            rgblight_sethsv_at(240, 255, 255, ALT_LED1);
+        #endif // ALT_LED1
+        #ifdef GUI_LED2
+            rgblight_sethsv_at(240, 255, 255, ALT_LED2);
+        #endif // GUI_LED2
+        } else {
+        #ifdef GUI_LED1
+            rgblight_sethsv_default_helper(ALT_LED1);
+        #endif // GUI_LED1
+        #ifdef GUI_LED2
+            rgblight_sethsv_default_helper(ALT_LED2);
+        #endif // GUI_LED2
+        }
     }
     }
-  }
 }
 }
 
 
 void matrix_scan_indicator(void) {
 void matrix_scan_indicator(void) {
-  if (has_initialized) {
-    set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
-  }
+    if (has_initialized) {
+        set_rgb_indicators(get_mods(), host_keyboard_leds(), get_oneshot_mods());
+    }
 }
 }
 #endif //INDICATOR_LIGHTS
 #endif //INDICATOR_LIGHTS
 
 
@@ -95,69 +95,71 @@ __attribute__ ((weak))
 bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; }
 bool rgblight_twinkle_is_led_used_keymap(uint8_t index) { return false; }
 
 
 bool rgblight_twinkle_is_led_used(uint8_t index) {
 bool rgblight_twinkle_is_led_used(uint8_t index) {
-  switch (index) {
+    switch (index) {
 #ifdef INDICATOR_LIGHTS
 #ifdef INDICATOR_LIGHTS
 #ifdef SHFT_LED1
 #ifdef SHFT_LED1
-    case SHFT_LED1:
-      return true;
+        case SHFT_LED1:
+            return true;
 #endif //SHFT_LED1
 #endif //SHFT_LED1
 #ifdef SHFT_LED2
 #ifdef SHFT_LED2
-    case SHFT_LED2:
-      return true;
+        case SHFT_LED2:
+            return true;
 #endif //SHFT_LED2
 #endif //SHFT_LED2
 #ifdef CTRL_LED1
 #ifdef CTRL_LED1
-    case CTRL_LED1:
-      return true;
+        case CTRL_LED1:
+            return true;
 #endif //CTRL_LED1
 #endif //CTRL_LED1
 #ifdef CTRL_LED2
 #ifdef CTRL_LED2
-    case CTRL_LED2:
-      return true;
+        case CTRL_LED2:
+            return true;
 #endif //CTRL_LED2
 #endif //CTRL_LED2
 #ifdef GUI_LED1
 #ifdef GUI_LED1
-    case GUI_LED1:
-      return true;
+        case GUI_LED1:
+            return true;
 #endif //GUI_LED1
 #endif //GUI_LED1
 #ifdef GUI_LED2
 #ifdef GUI_LED2
-    case GUI_LED2:
-      return true;
+        case GUI_LED2:
+            return true;
 #endif //GUI_LED2
 #endif //GUI_LED2
 #ifdef ALT_LED1
 #ifdef ALT_LED1
-    case ALT_LED1:
-      return true;
+        case ALT_LED1:
+            return true;
 #endif //ALT_LED1
 #endif //ALT_LED1
 #ifdef ALT_LED2
 #ifdef ALT_LED2
-    case ALT_LED2:
-      return true;
+        case ALT_LED2:
+            return true;
 #endif //ALT_LED2
 #endif //ALT_LED2
 #endif //INDICATOR_LIGHTS
 #endif //INDICATOR_LIGHTS
-    default:
-    return rgblight_twinkle_is_led_used_keymap(index);
+        default:
+            return rgblight_twinkle_is_led_used_keymap(index);
   }
   }
 }
 }
 
 
 void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive
 void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive
-  bool litup = false;
-  for (uint8_t light_index = 0 ; light_index < RGBLED_NUM ; ++light_index ) {
-    if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) {
-      rgblight_fadeout *light = &lights[light_index];
-      litup = true;
+    bool litup = false;
+    for (uint8_t light_index = 0 ; light_index < RGBLED_NUM ; ++light_index ) {
+        if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) {
+        rgblight_fadeout *light = &lights[light_index];
+        litup = true;
 
 
-      if (light->life) {
-        light->life -= 1;
-        if (biton32(layer_state) == 0) {
-          sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
+        if (light->life) {
+            light->life -= 1;
+            if (biton32(layer_state) == 0) {
+                sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]);
+            }
+            light->timer = timer_read();
+        }
+        else {
+            if (light->enabled && biton32(layer_state) == 0) {
+                rgblight_sethsv_default_helper(light_index);
+            }
+            litup = light->enabled = false;
+        }
         }
         }
-        light->timer = timer_read();
-      }
-      else {
-        if (light->enabled && biton32(layer_state) == 0) { rgblight_sethsv_default_helper(light_index); }
-        litup = light->enabled = false;
-      }
     }
     }
-  }
-  if (litup && biton32(layer_state) == 0) {
-    rgblight_set();
-  }
+    if (litup && biton32(layer_state) == 0) {
+        rgblight_set();
+    }
 }
 }
 
 
 void start_rgb_light(void) {
 void start_rgb_light(void) {
@@ -203,42 +205,42 @@ void start_rgb_light(void) {
 
 
 
 
 bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
 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) {
+    if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
+        keycode = keycode & 0xFF;
+    }
+    switch (keycode) {
 #ifdef RGBLIGHT_TWINKLE
 #ifdef RGBLIGHT_TWINKLE
-    case KC_A ... KC_SLASH:
-    case KC_F1 ... KC_F12:
-    case KC_INSERT ... KC_UP:
-    case KC_KP_SLASH ... KC_KP_DOT:
-    case KC_F13 ... KC_F24:
-    case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
-      if (record->event.pressed) { start_rgb_light(); }
-      return true; break;
+        case KC_A ... KC_SLASH:
+        case KC_F1 ... KC_F12:
+        case KC_INSERT ... KC_UP:
+        case KC_KP_SLASH ... KC_KP_DOT:
+        case KC_F13 ... KC_F24:
+        case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
+            if (record->event.pressed) { start_rgb_light(); }
+            return true; break;
 #endif // RGBLIGHT_TWINKLE
 #endif // RGBLIGHT_TWINKLE
-  case KC_RGB_T:  // This allows me to use underglow as layer indication, or as normal
+        case KC_RGB_T:  // This allows me to use underglow as layer indication, or as normal
 #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
 #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); // This is needed to immediately set the layer color (looks better)
-      }
-    }
+            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); // This is needed to immediately set the layer color (looks better)
+                }
+            }
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
-    return false; break;
+            return false; break;
 #ifdef RGBLIGHT_ENABLE
 #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;
+        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
 #endif // RGBLIGHT_ENABLE
   }
   }
     return true;
     return true;
@@ -248,28 +250,28 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
 
 
 void keyboard_post_init_rgb(void) {
 void keyboard_post_init_rgb(void) {
 #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
 #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
-  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 = 360; i > 0; i--) {
-      rgblight_sethsv_noeeprom( ( i + old_hue) % 360, 255, 255);
-      matrix_scan();
-      wait_ms(10);
+    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);
+            matrix_scan();
+            wait_ms(10);
+        }
     }
     }
-  }
 #endif
 #endif
-  layer_state_set_user(layer_state);
+    layer_state_set_user(layer_state);
 }
 }
 
 
 void matrix_scan_rgb(void) {
 void matrix_scan_rgb(void) {
 #ifdef RGBLIGHT_TWINKLE
 #ifdef RGBLIGHT_TWINKLE
-  scan_rgblight_fadeout();
+    scan_rgblight_fadeout();
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
 #ifdef INDICATOR_LIGHTS
 #ifdef INDICATOR_LIGHTS
-  matrix_scan_indicator();
+    matrix_scan_indicator();
 #endif
 #endif
 
 
 }
 }
@@ -277,99 +279,60 @@ void matrix_scan_rgb(void) {
 
 
 uint32_t layer_state_set_rgb(uint32_t state) {
 uint32_t layer_state_set_rgb(uint32_t state) {
 #ifdef RGBLIGHT_ENABLE
 #ifdef RGBLIGHT_ENABLE
-  if (userspace_config.rgb_layer_change) {
-    switch (biton32(state)) {
-    case _MACROS:
-      rgblight_sethsv_noeeprom_orange();
-      userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3);
-      break;
-    case _MEDIA:
-      rgblight_sethsv_noeeprom_chartreuse();
-      rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 1);
-      break;
-    case _GAMEPAD:
-      rgblight_sethsv_noeeprom_orange();
-      rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2);
-      break;
-    case _DIABLO:
-      rgblight_sethsv_noeeprom_red();
-      rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
-      break;
-    case _RAISE:
-      rgblight_sethsv_noeeprom_yellow();
-      rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
-      break;
-    case _LOWER:
-      rgblight_sethsv_noeeprom_green();
-      rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
-      break;
-    case _ADJUST:
-      rgblight_sethsv_noeeprom_red();
-      rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
-      break;
-    default: //  for any other layers, or the default layer
-      switch (biton32(default_layer_state)) {
-        case _COLEMAK:
-          rgblight_sethsv_noeeprom_magenta(); break;
-        case _DVORAK:
-          rgblight_sethsv_noeeprom_springgreen(); break;
-        case _WORKMAN:
-          rgblight_sethsv_noeeprom_goldenrod(); break;
-        case _NORMAN:
-          rgblight_sethsv_noeeprom_coral(); break;
-        case _MALTRON:
-          rgblight_sethsv_noeeprom_yellow(); break;
-        case _EUCALYN:
-          rgblight_sethsv_noeeprom_pink(); break;
-        case _CARPLAX:
-          rgblight_sethsv_noeeprom_blue(); break;
-        default:
-          rgblight_sethsv_noeeprom_cyan(); 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;
+    if (userspace_config.rgb_layer_change) {
+        switch (biton32(state)) {
+            case _MACROS:
+                rgblight_sethsv_noeeprom_orange();
+                userspace_config.is_overwatch ? rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2) : rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 3);
+                break;
+            case _MEDIA:
+                rgblight_sethsv_noeeprom_chartreuse();
+                rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 1);
+                break;
+            case _GAMEPAD:
+                rgblight_sethsv_noeeprom_orange();
+                rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 2);
+                break;
+            case _DIABLO:
+                rgblight_sethsv_noeeprom_red();
+                rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+                break;
+            case _RAISE:
+                rgblight_sethsv_noeeprom_yellow();
+                rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+                break;
+            case _LOWER:
+                rgblight_sethsv_noeeprom_green();
+                rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
+                break;
+            case _ADJUST:
+                rgblight_sethsv_noeeprom_red();
+                rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);
+                break;
+            default: //  for any other layers, or the default layer
+                switch (biton32(default_layer_state)) {
+                    case _COLEMAK:
+                        rgblight_sethsv_noeeprom_magenta(); break;
+                    case _DVORAK:
+                        rgblight_sethsv_noeeprom_springgreen(); break;
+                    case _WORKMAN:
+                        rgblight_sethsv_noeeprom_goldenrod(); break;
+                    case _NORMAN:
+                        rgblight_sethsv_noeeprom_coral(); break;
+                    case _MALTRON:
+                        rgblight_sethsv_noeeprom_yellow(); break;
+                    case _EUCALYN:
+                        rgblight_sethsv_noeeprom_pink(); break;
+                    case _CARPLAX:
+                        rgblight_sethsv_noeeprom_blue(); break;
+                    default:
+                        rgblight_sethsv_noeeprom_cyan(); 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;
+        }
     }
     }
-//    layer_state_set_indicator(); // Runs every scan, so need to call this here .... since I can't get it working "right" anyhow
-  }
 #endif // RGBLIGHT_ENABLE
 #endif // RGBLIGHT_ENABLE
 
 
-  return state;
-}
-
-#if 0
-uint32_t default_layer_state_set_rgb(uint32_t state) {
-#ifdef RGBLIGHT_ENABLE
-  if (userspace_config.rgb_layer_change) {
-    rgblight_config_t temp_rgblight_config = rgblight_config;
-    switch (biton32(state)) {
-      case _COLEMAK:
-        temp_rgblight_config.hue = 300;
-        temp_rgblight_config.val = 255;
-        temp_rgblight_config.sat = 255;
-        temp_rgblight_config.mode = 1;
-        break;
-      case _DVORAK:
-        temp_rgblight_config.hue = 150;
-        temp_rgblight_config.val = 255;
-        temp_rgblight_config.sat = 255;
-        temp_rgblight_config.mode = 1;
-      case _WORKMAN:
-        temp_rgblight_config.hue = 43;
-        temp_rgblight_config.val = 218;
-        temp_rgblight_config.sat = 218;
-        temp_rgblight_config.mode = 1;
-      default:
-        temp_rgblight_config.hue = 180;
-        temp_rgblight_config.val = 255;
-        temp_rgblight_config.sat = 255;
-        temp_rgblight_config.mode = 1;
-    }
-    if (temp_rgblight_config.raw != eeconfig_read_rgblight()) {
-      xprintf("rgblight set default layer hsv [EEPROM]: %u,%u,%u,%u\n", temp_rgblight_config.hue, temp_rgblight_config.sat, temp_rgblight_config.val, temp_rgblight_config.mode);
-      eeconfig_update_rgblight(temp_rgblight_config.raw);
-    }
-  }
-#endif // RGBLIGHT_ENABLE
-  return state;
+    return state;
 }
 }
-#endif

+ 116 - 0
users/drashna/rgblight_breathe_table.h

@@ -0,0 +1,116 @@
+#ifndef RGBLIGHT_EFFECT_BREATHE_TABLE
+#define RGBLIGHT_EFFECT_BREATHE_TABLE
+
+const uint8_t rgblight_effect_breathe_table[] PROGMEM = {
+  /* #define RGBLIGHT_EFFECT_BREATHE_CENTER   0.00 */
+  /* #define RGBLIGHT_EFFECT_BREATHE_MAX      255 */
+
+ #if RGBLIGHT_BREATHE_TABLE_SIZE == 256
+  0x44,  0x45,  0x47,  0x48,  0x4a,  0x4b,  0x4c,  0x4e,
+  0x4f,  0x51,  0x52,  0x54,  0x55,  0x57,  0x58,  0x5a,
+  0x5c,  0x5d,  0x5f,  0x60,  0x62,  0x64,  0x65,  0x67,
+  0x69,  0x6a,  0x6c,  0x6e,  0x70,  0x72,  0x73,  0x75,
+  0x77,  0x79,  0x7b,  0x7c,  0x7e,  0x80,  0x82,  0x84,
+  0x86,  0x88,  0x8a,  0x8b,  0x8d,  0x8f,  0x91,  0x93,
+  0x95,  0x97,  0x99,  0x9b,  0x9d,  0x9f,  0xa1,  0xa3,
+  0xa5,  0xa7,  0xa9,  0xaa,  0xac,  0xae,  0xb0,  0xb2,
+  0xb4,  0xb6,  0xb8,  0xba,  0xbc,  0xbe,  0xbf,  0xc1,
+  0xc3,  0xc5,  0xc7,  0xc9,  0xca,  0xcc,  0xce,  0xd0,
+  0xd1,  0xd3,  0xd5,  0xd6,  0xd8,  0xda,  0xdb,  0xdd,
+  0xde,  0xe0,  0xe1,  0xe3,  0xe4,  0xe5,  0xe7,  0xe8,
+  0xe9,  0xeb,  0xec,  0xed,  0xee,  0xef,  0xf0,  0xf1,
+  0xf2,  0xf3,  0xf4,  0xf5,  0xf6,  0xf7,  0xf8,  0xf8,
+  0xf9,  0xfa,  0xfa,  0xfb,  0xfc,  0xfc,  0xfc,  0xfd,
+  0xfd,  0xfe,  0xfe,  0xfe,  0xfe,  0xfe,  0xfe,  0xfe,
+  0xfe,  0xfe,  0xfe,  0xfe,  0xfe,  0xfe,  0xfe,  0xfd,
+  0xfd,  0xfc,  0xfc,  0xfc,  0xfb,  0xfa,  0xfa,  0xf9,
+  0xf8,  0xf8,  0xf7,  0xf6,  0xf5,  0xf4,  0xf3,  0xf2,
+  0xf1,  0xf0,  0xef,  0xee,  0xed,  0xec,  0xeb,  0xe9,
+  0xe8,  0xe7,  0xe5,  0xe4,  0xe3,  0xe1,  0xe0,  0xde,
+  0xdd,  0xdb,  0xda,  0xd8,  0xd6,  0xd5,  0xd3,  0xd1,
+  0xd0,  0xce,  0xcc,  0xca,  0xc9,  0xc7,  0xc5,  0xc3,
+  0xc1,  0xbf,  0xbe,  0xbc,  0xba,  0xb8,  0xb6,  0xb4,
+  0xb2,  0xb0,  0xae,  0xac,  0xaa,  0xa9,  0xa7,  0xa5,
+  0xa3,  0xa1,  0x9f,  0x9d,  0x9b,  0x99,  0x97,  0x95,
+  0x93,  0x91,  0x8f,  0x8d,  0x8b,  0x8a,  0x88,  0x86,
+  0x84,  0x82,  0x80,  0x7e,  0x7c,  0x7b,  0x79,  0x77,
+  0x75,  0x73,  0x72,  0x70,  0x6e,  0x6c,  0x6a,  0x69,
+  0x67,  0x65,  0x64,  0x62,  0x60,  0x5f,  0x5d,  0x5c,
+  0x5a,  0x58,  0x57,  0x55,  0x54,  0x52,  0x51,  0x4f,
+  0x4e,  0x4c,  0x4b,  0x4a,  0x48,  0x47,  0x45,  0x44
+ #endif /* 256 bytes table */
+
+ #if RGBLIGHT_BREATHE_TABLE_SIZE == 128
+  0x44,  0x47,  0x4a,  0x4c,
+  0x4f,  0x52,  0x55,  0x58,
+  0x5c,  0x5f,  0x62,  0x65,
+  0x69,  0x6c,  0x70,  0x73,
+  0x77,  0x7b,  0x7e,  0x82,
+  0x86,  0x8a,  0x8d,  0x91,
+  0x95,  0x99,  0x9d,  0xa1,
+  0xa5,  0xa9,  0xac,  0xb0,
+  0xb4,  0xb8,  0xbc,  0xbf,
+  0xc3,  0xc7,  0xca,  0xce,
+  0xd1,  0xd5,  0xd8,  0xdb,
+  0xde,  0xe1,  0xe4,  0xe7,
+  0xe9,  0xec,  0xee,  0xf0,
+  0xf2,  0xf4,  0xf6,  0xf8,
+  0xf9,  0xfa,  0xfc,  0xfc,
+  0xfd,  0xfe,  0xfe,  0xfe,
+  0xfe,  0xfe,  0xfe,  0xfe,
+  0xfd,  0xfc,  0xfb,  0xfa,
+  0xf8,  0xf7,  0xf5,  0xf3,
+  0xf1,  0xef,  0xed,  0xeb,
+  0xe8,  0xe5,  0xe3,  0xe0,
+  0xdd,  0xda,  0xd6,  0xd3,
+  0xd0,  0xcc,  0xc9,  0xc5,
+  0xc1,  0xbe,  0xba,  0xb6,
+  0xb2,  0xae,  0xaa,  0xa7,
+  0xa3,  0x9f,  0x9b,  0x97,
+  0x93,  0x8f,  0x8b,  0x88,
+  0x84,  0x80,  0x7c,  0x79,
+  0x75,  0x72,  0x6e,  0x6a,
+  0x67,  0x64,  0x60,  0x5d,
+  0x5a,  0x57,  0x54,  0x51,
+  0x4e,  0x4b,  0x48,  0x45
+ #endif /* 128 bytes table */
+
+ #if RGBLIGHT_BREATHE_TABLE_SIZE == 64
+  0x44,  0x4a,
+  0x4f,  0x55,
+  0x5c,  0x62,
+  0x69,  0x70,
+  0x77,  0x7e,
+  0x86,  0x8d,
+  0x95,  0x9d,
+  0xa5,  0xac,
+  0xb4,  0xbc,
+  0xc3,  0xca,
+  0xd1,  0xd8,
+  0xde,  0xe4,
+  0xe9,  0xee,
+  0xf2,  0xf6,
+  0xf9,  0xfc,
+  0xfd,  0xfe,
+  0xfe,  0xfe,
+  0xfd,  0xfb,
+  0xf8,  0xf5,
+  0xf1,  0xed,
+  0xe8,  0xe3,
+  0xdd,  0xd6,
+  0xd0,  0xc9,
+  0xc1,  0xba,
+  0xb2,  0xaa,
+  0xa3,  0x9b,
+  0x93,  0x8b,
+  0x84,  0x7c,
+  0x75,  0x6e,
+  0x67,  0x60,
+  0x5a,  0x54,
+  0x4e,  0x48
+ #endif /* 64 bytes table */
+};
+
+static const int table_scale = 256/sizeof(rgblight_effect_breathe_table);
+
+#endif /* RGBLIGHT_EFFECT_BREATHE_TABLE */

+ 23 - 23
users/drashna/rules.mk

@@ -1,40 +1,40 @@
 SRC += drashna.c \
 SRC += drashna.c \
        process_records.c
        process_records.c
 
 
+LINK_TIME_OPTIMIZATION_ENABLE = yes
+
 ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
 ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
-  SRC += secrets.c
+    SRC += secrets.c
 endif
 endif
 
 
 ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
 ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
-  SRC += tap_dances.c
+    SRC += tap_dances.c
 endif
 endif
 
 
-ifeq ($(PLATFORM),AVR)
-  EXTRAFLAGS += -flto
-endif
+
 
 
 ifeq ($(strip $(NO_SECRETS)), yes)
 ifeq ($(strip $(NO_SECRETS)), yes)
     OPT_DEFS += -DNO_SECRETS
     OPT_DEFS += -DNO_SECRETS
 endif
 endif
 
 
 ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
 ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
-  SRC += rgb_stuff.c
-  ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
-      OPT_DEFS += -DINDICATOR_LIGHTS
-  endif
-  ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes)
-    OPT_DEFS += -DRGBLIGHT_TWINKLE
-  endif
-  ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
-    OPT_DEFS += -DRGBLIGHT_NOEEPROM
-  endif
-  ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes)
-    OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION
-  endif
+    SRC += rgb_stuff.c
+    ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
+        OPT_DEFS += -DINDICATOR_LIGHTS
+    endif
+    ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes)
+        OPT_DEFS += -DRGBLIGHT_TWINKLE
+    endif
+    ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
+        OPT_DEFS += -DRGBLIGHT_NOEEPROM
+    endif
+    ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes)
+        OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION
+    endif
 endif
 endif
 
 
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
-  SRC += rgb_stuff.c
+ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
+    SRC += rgb_stuff.c
 endif
 endif
 
 
 
 
@@ -43,9 +43,9 @@ ifeq ($(strip $(MACROS_ENABLED)), yes)
 endif
 endif
 
 
 ifdef CONSOLE_ENABLE
 ifdef CONSOLE_ENABLE
-  ifeq ($(strip $(KEYLOGGER_ENABLE)), yes)
-    OPT_DEFS += -DKEYLOGGER_ENABLE
-  endif
+    ifeq ($(strip $(KEYLOGGER_ENABLE)), yes)
+        OPT_DEFS += -DKEYLOGGER_ENABLE
+    endif
 endif
 endif
 
 
 ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
 ifeq ($(strip $(MAKE_BOOTLOADER)), yes)

+ 52 - 52
users/drashna/send_unicode.h

@@ -7,65 +7,65 @@ void send_unicode_hex_string(const char* str);
 /* use X(n) to call the  */
 /* use X(n) to call the  */
 #ifdef UNICODEMAP_ENABLE
 #ifdef UNICODEMAP_ENABLE
 enum unicode_name {
 enum unicode_name {
-  THINK, // thinking face 🤔
-  GRIN, // grinning face 😊
-  SMRK, // smirk 😏
-  WEARY, // good shit 😩
-  UNAMU, // unamused 😒
+    THINK, // thinking face 🤔
+    GRIN, // grinning face 😊
+    SMRK, // smirk 😏
+    WEARY, // good shit 😩
+    UNAMU, // unamused 😒
 
 
-  SNEK, // snke 🐍
-  PENGUIN, // 🐧
-  DRAGON, // 🐉
-  MONKEY, // 🐒
-  CHICK, // 🐥
-  BOAR, // 🐗
+    SNEK, // snke 🐍
+    PENGUIN, // 🐧
+    DRAGON, // 🐉
+    MONKEY, // 🐒
+    CHICK, // 🐥
+    BOAR, // 🐗
 
 
-  OKOK, // 👌
-  EFFU, // 🖕
-  INUP, // 👆
-  THUP, // 👍
-  THDN, // 👎
+    OKOK, // 👌
+    EFFU, // 🖕
+    INUP, // 👆
+    THUP, // 👍
+    THDN, // 👎
 
 
-  BBB, // dat B 🅱
-  POO, // poop 💩
-  HUNDR, // 100 💯
-  EGGPL, // EGGPLANT 🍆
-  WATER, // wet 💦
-  TUMBLER, // 🥃
+    BBB, // dat B 🅱
+    POO, // poop 💩
+    HUNDR, // 100 💯
+    EGGPL, // EGGPLANT 🍆
+    WATER, // wet 💦
+    TUMBLER, // 🥃
 
 
-  LIT, // fire 🔥
-  BANG, // ‽
-  IRONY, // ⸮
-  DEGREE // °
+    LIT, // fire 🔥
+    BANG, // ‽
+    IRONY, // ⸮
+    DEGREE // °
 };
 };
 
 
 
 
 const uint32_t PROGMEM unicode_map[] = {
 const uint32_t PROGMEM unicode_map[] = {
-  [THINK]     = 0x1F914,
-  [GRIN]      = 0x1F600,
-  [BBB]       = 0x1F171,
-  [POO]       = 0x1F4A9,
-  [HUNDR]     = 0x1F4AF,
-  [SMRK]      = 0x1F60F,
-  [WEARY]     = 0x1F629,
-  [EGGPL]     = 0x1F346,
-  [WATER]     = 0x1F4A6,
-  [LIT]       = 0x1F525,
-  [UNAMU]     = 0x1F612,
-  [SNEK]      = 0x1F40D,
-  [PENGUIN]   = 0x1F427,
-  [BOAR]      = 0x1F417,
-  [MONKEY]    = 0x1F412,
-  [CHICK]     = 0x1F425,
-  [DRAGON]    = 0x1F409,
-  [OKOK]      = 0x1F44C,
-  [EFFU]      = 0x1F595,
-  [INUP]      = 0x1F446,
-  [THDN]      = 0x1F44E,
-  [THUP]      = 0x1F44D,
-  [TUMBLER]   = 0x1F943,
-  [BANG]      = 0x0203D,
-  [IRONY]     = 0x02E2E,
-  [DEGREE]    = 0x000B0
+    [THINK]     = 0x1F914,
+    [GRIN]      = 0x1F600,
+    [BBB]       = 0x1F171,
+    [POO]       = 0x1F4A9,
+    [HUNDR]     = 0x1F4AF,
+    [SMRK]      = 0x1F60F,
+    [WEARY]     = 0x1F629,
+    [EGGPL]     = 0x1F346,
+    [WATER]     = 0x1F4A6,
+    [LIT]       = 0x1F525,
+    [UNAMU]     = 0x1F612,
+    [SNEK]      = 0x1F40D,
+    [PENGUIN]   = 0x1F427,
+    [BOAR]      = 0x1F417,
+    [MONKEY]    = 0x1F412,
+    [CHICK]     = 0x1F425,
+    [DRAGON]    = 0x1F409,
+    [OKOK]      = 0x1F44C,
+    [EFFU]      = 0x1F595,
+    [INUP]      = 0x1F446,
+    [THDN]      = 0x1F44E,
+    [THUP]      = 0x1F44D,
+    [TUMBLER]   = 0x1F943,
+    [BANG]      = 0x0203D,
+    [IRONY]     = 0x02E2E,
+    [DEGREE]    = 0x000B0
  };
  };
 #endif // UNICODEMAP_ENABLE
 #endif // UNICODEMAP_ENABLE

+ 39 - 38
users/drashna/tap_dances.c

@@ -2,63 +2,64 @@
 
 
 
 
 //define diablo macro timer variables
 //define diablo macro timer variables
-uint16_t diablo_timer[4];
-uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
-uint8_t diablo_key_time[4];
+diablo_timer_t diablo_timer[4];
+
+uint8_t diablo_times[] = { 0, 0, 1, 3, 5, 10, 30 };
 
 
 // has the correct number of seconds elapsed (as defined by diablo_times)
 // has the correct number of seconds elapsed (as defined by diablo_times)
-bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true; };
+bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer].key_time) < (diablo_timer[dtimer].timer * 1000)) ? false : true; };
 
 
 // Cycle through the times for the macro, starting at 0, for disabled.
 // Cycle through the times for the macro, starting at 0, for disabled.
 // Max of six values, so don't exceed
 // Max of six values, so don't exceed
-void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) {
-  if (state->count >= 7) {
-    diablo_key_time[diablo_key] = diablo_times[0];
-    reset_tap_dance(state);
-  }  else {
-    diablo_key_time[diablo_key] = diablo_times[state->count - 1];
-  }
+void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
+    int index = (int)user_data;
+    if (state->count >= 7) {
+        diablo_timer[index].key_time = diablo_times[0];
+        reset_tap_dance(state);
+    }  else {
+        diablo_timer[index].key_time = diablo_times[state->count];
+    }
 }
 }
 
 
-// Would rather have one function for all of this, but no idea how to do that...
-void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 0); }
-void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 1); }
-void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 2); }
-void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 3); }
+// One funtion to rule them all!!
+#define ACTION_TAP_DANCE_DIABLO(arg) {  \
+    .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
+    .user_data = (void *)arg,  \
+  }
 
 
 //Tap Dance Definitions
 //Tap Dance Definitions
 qk_tap_dance_action_t tap_dance_actions[] = {
 qk_tap_dance_action_t tap_dance_actions[] = {
-  // tap once to disable, and more to enable timed micros
-  [TD_D3_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
-  [TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
-  [TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
-  [TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
+    // tap once to disable, and more to enable timed micros
+    [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0),
+    [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1),
+    [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2),
+    [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3),
 };
 };
 
 
 // Sends the key press to system, but only if on the Diablo layer
 // Sends the key press to system, but only if on the Diablo layer
 void send_diablo_keystroke(uint8_t diablo_key) {
 void send_diablo_keystroke(uint8_t diablo_key) {
-  if (IS_LAYER_ON(_DIABLO)) {
-    switch (diablo_key) {
-      case 0:
-        tap_code(KC_1); break;
-      case 1:
-        tap_code(KC_2); break;
-      case 2:
-        tap_code(KC_3); break;
-      case 3:
-        tap_code(KC_4); break;
+    if (IS_LAYER_ON(_DIABLO)) {
+        switch (diablo_key) {
+        case 0:
+            tap_code(KC_1); break;
+        case 1:
+            tap_code(KC_2); break;
+        case 2:
+            tap_code(KC_3); break;
+        case 3:
+            tap_code(KC_4); break;
+        }
     }
     }
-  }
 }
 }
 
 
 // Checks each of the 4 timers/keys to see if enough time has elapsed
 // Checks each of the 4 timers/keys to see if enough time has elapsed
 // Runs the "send string" command if enough time has passed, and resets the timer.
 // Runs the "send string" command if enough time has passed, and resets the timer.
 void run_diablo_macro_check(void) {
 void run_diablo_macro_check(void) {
-  uint8_t dtime;
-  for (dtime = 0; dtime < 4; dtime++) {
-    if (check_dtimer(dtime) && diablo_key_time[dtime]) {
-      diablo_timer[dtime] = timer_read();
-      send_diablo_keystroke(dtime);
+    uint8_t dtime;
+    for (dtime = 0; dtime < 4; dtime++) {
+        if (check_dtimer(dtime) && diablo_timer[dtime].key_time) {
+        diablo_timer[dtime].timer = timer_read();
+        send_diablo_keystroke(dtime);
+        }
     }
     }
-  }
 }
 }

+ 9 - 6
users/drashna/tap_dances.h

@@ -2,18 +2,21 @@
 #include "drashna.h"
 #include "drashna.h"
 
 
 //define diablo macro timer variables
 //define diablo macro timer variables
-extern uint16_t diablo_timer[4];
 extern uint8_t diablo_times[];
 extern uint8_t diablo_times[];
-extern uint8_t diablo_key_time[4];
+typedef struct {
+    uint16_t timer;
+    uint8_t key_time;
+} diablo_timer_t;
 
 
+extern diablo_timer_t diablo_timer[4];
 
 
 void run_diablo_macro_check(void);
 void run_diablo_macro_check(void);
 
 
 #ifdef TAP_DANCE_ENABLE
 #ifdef TAP_DANCE_ENABLE
 enum {
 enum {
-  TD_D3_1 = 0,
-  TD_D3_2,
-  TD_D3_3,
-  TD_D3_4
+    TD_D3_1 = 0,
+    TD_D3_2,
+    TD_D3_3,
+    TD_D3_4
 };
 };
 #endif // TAP_DANCE_ENABLE
 #endif // TAP_DANCE_ENABLE

+ 2 - 1
users/drashna/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__)
@@ -15,6 +15,7 @@ expanded before being used as arguments to the LAYOUT_xxx macro.
 #define LAYOUT_wrapper(...)                  LAYOUT(__VA_ARGS__)
 #define LAYOUT_wrapper(...)                  LAYOUT(__VA_ARGS__)
 #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_gergo_wrapper(...)            LAYOUT_gergo(__VA_ARGS__)
 
 
 /*
 /*
 Blocks for each of the four major keyboard layouts
 Blocks for each of the four major keyboard layouts