]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - layouts/community/ergodox/drashna/keymap.c
[Keymap] Drashna's Feature madness (#6128)
[qmk_firmware.git] / layouts / community / ergodox / drashna / keymap.c
index e0100de8f126b3b17141244c0637f59f1c30733a..763b218f7476fadf2c069e8c253a935bb286e215 100644 (file)
@@ -18,22 +18,20 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "drashna.h"
 
 #ifdef UNICODEMAP_ENABLE
-#include "drashna_unicode.h"
-#endif // UNICODEMAP_ENABLE
-
-#ifdef RGB_MATRIX_ENABLE
-extern bool g_suspend_state;
-extern rgb_config_t rgb_matrix_config;
+#    include "drashna_unicode.h"
+#endif  // UNICODEMAP_ENABLE
+#ifndef UNICODE_ENABLE
+#    define UC(x) KC_NO
 #endif
+
 extern userspace_config_t userspace_config;
 
-enum more_custom_keycodes {
-   KC_SWAP_NUM = NEW_SAFE_RANGE
-};
+enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE };
 
-//define layer change stuff for underglow indicator
+// define layer change stuff for underglow indicator
 bool skip_leds = false;
 
+// clang-format off
 #define LAYOUT_ergodox_pretty_base( \
     K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
     K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -43,11 +41,11 @@ bool skip_leds = false;
       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_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_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), \
-                                                           KC_HOME,                 KC_PGUP, \
-                             LT(_LOWER, KC_SPACE),KC_BSPC, KC_END,                  KC_PGDN, KC_DEL,  LT(_RAISE, KC_ENTER)                          \
+      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),        \
+                                                  OS_LALT, OS_LGUI,                 OS_RGUI, CTL_T(KC_ESCAPE),                                      \
+                                                           KC_APP,                  KC_MENU,                                                        \
+                              KC_SPC, LT(_LOWER, KC_BSPC), OS_LWR,                  OS_RSE, LT(_RAISE, KC_DEL), KC_ENT                              \
     )
 
 #define LAYOUT_ergodox_pretty_base_wrapper(...)       LAYOUT_ergodox_pretty_base(__VA_ARGS__)
@@ -270,8 +268,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
   [_LOWER] = LAYOUT_ergodox_pretty_wrapper(
              KC_F12,  _________________FUNC_LEFT_________________, _______,                 _______, _________________FUNC_RIGHT________________, KC_F11,
-             KC_TILD, _________________LOWER_L1__________________, _______,                 _______, _________________LOWER_R1__________________, _______,
-             _______, ___________________BLANK___________________,                                   _________________LOWER_R2__________________, KC_PIPE,
+             KC_TILD, _________________LOWER_L1__________________, _______,                 _______, _________________LOWER_R1__________________, KC_PIPE,
+             _______, ___________________BLANK___________________,                                   _________________LOWER_R2__________________, KC_DQUO,
              _______, ___________________BLANK___________________, _______,                 _______, _________________LOWER_R3__________________, KC_PSCR,
              _______, _______, _______, _______, _______,                                                     _______, _______, _______, _______, KC_PAUS,
                                                           _______, _______,                 _______, _______,
@@ -281,8 +279,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
   [_RAISE] = LAYOUT_ergodox_pretty_wrapper(
              KC_F12,  _________________FUNC_LEFT_________________, _______,                 _______, _________________FUNC_RIGHT________________, KC_F11,
-             KC_GRV,  _________________RAISE_L1__________________, _______,                 _______, _________________RAISE_R1__________________, _______,
-             _______, _________________RAISE_L2__________________,                                   _________________RAISE_R2__________________, KC_BSLS,
+             KC_GRV,  _________________RAISE_L1__________________, _______,                 _______, _________________RAISE_R1__________________, KC_BSLS,
+             _______, _________________RAISE_L2__________________,                                   _________________RAISE_R2__________________, KC_QUOT,
              _______, _________________RAISE_L3__________________, _______,                 _______, _________________RAISE_R3__________________, KC_PSCR,
              _______, _______, _______, _______, _______,                                                     KC_HOME, KC_PGDN, KC_PGUP, KC_END,  KC_SLCK,
                                                           _______, _______,                 _______, _______,
@@ -302,194 +300,167 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
             ),
 
 };
+// clang-format on
 
 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
-  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 & MODS_SHIFT_MASK || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MODS_SHIFT_MASK) {
-      ergodox_right_led_2_on();
-      ergodox_right_led_2_set( 50 );
-    }
-    if (modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) {
-      ergodox_right_led_1_on();
-      ergodox_right_led_1_set( 10 );
-    }
-    if (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) {
-      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) {
-  switch (index) {
-    case 13 ... 14:
-      return true;
-      break;
-    default:
-    return false;
-  }
+    switch (index) {
+        case 13 ... 14:
+            return true;
+            break;
+        default:
+            return false;
+    }
 }
 
-
 #ifdef RGB_MATRIX_ENABLE
 
-void suspend_power_down_keymap(void) {
-    rgb_matrix_set_suspend_state(true);
-    rgb_matrix_config.enable = false;
-}
+void suspend_power_down_keymap(void) { rgb_matrix_set_suspend_state(true); }
 
-void suspend_wakeup_init_keymap(void) {
-    rgb_matrix_config.enable = true;
-    rgb_matrix_set_suspend_state(false);
-}
-
-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 (led.matrix_co.raw < 0xFF) {
-      if (led.modifier) {
-          rgb_matrix_set_color( i, red, green, blue );
-      }
-    }
-  }
-}
+void suspend_wakeup_init_keymap(void) { rgb_matrix_set_suspend_state(false); }
 
 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 & MODS_SHIFT_MASK || this_led & (1<<USB_LED_CAPS_LOCK) || this_osm & MODS_SHIFT_MASK) {
-    rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
-    rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
-  }
-  if (this_mod & MODS_CTRL_MASK || this_osm & MODS_CTRL_MASK) {
-    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 & MODS_GUI_MASK || this_osm & MODS_GUI_MASK) {
-    rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
-  }
-  if (this_mod & MODS_ALT_MASK || this_osm & MODS_ALT_MASK) {
-    rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
-  }
-#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
+        rgb_matrix_config.enable
+#    endif
+    ) {
+        switch (biton32(layer_state)) {
+            case _GAMEPAD:
+                rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                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(userspace_config.swapped_numbers ? 27 : 26, 0xFF, 0xFF, 0xFF);  // 1
+                rgb_matrix_set_color(userspace_config.swapped_numbers ? 26 : 27, 0x00, 0xFF, 0x00);  // 2
+                rgb_matrix_set_color(25, 0x7A, 0x00, 0xFF);                                          // 3
+                break;
+            case _DIABLO:
+                rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER);
+                break;
+            case _RAISE:
+                rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                break;
+            case _LOWER:
+                rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                break;
+            case _ADJUST:
+                rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                break;
+            default: {
+                bool mods_enabled = IS_LAYER_ON(_MODS);
+                switch (biton32(default_layer_state)) {
+                    case _QWERTY:
+                        rgb_matrix_layer_helper(HSV_CYAN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                    case _COLEMAK:
+                        rgb_matrix_layer_helper(HSV_MAGENTA, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                    case _DVORAK:
+                        rgb_matrix_layer_helper(HSV_SPRINGGREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                    case _WORKMAN:
+                        rgb_matrix_layer_helper(HSV_GOLDENROD, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                    case _NORMAN:
+                        rgb_matrix_layer_helper(HSV_CORAL, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                    case _MALTRON:
+                        rgb_matrix_layer_helper(HSV_YELLOW, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                    case _EUCALYN:
+                        rgb_matrix_layer_helper(HSV_PINK, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                    case _CARPLAX:
+                        rgb_matrix_layer_helper(HSV_BLUE, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
+                        break;
+                }
+                break;
+            }
+        }
+    }
 }
 
-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
-#endif
-}
-#endif //RGB_MATRIX_INIT
+#endif  // RGB_MATRIX_INIT