From 281fdde31f54671a50aef4901e3f0a496fd6a50f Mon Sep 17 00:00:00 2001
From: Joel Challis <git@zvecr.com>
Date: Mon, 21 Aug 2023 23:20:24 +0100
Subject: [PATCH] Align SENSE75 with recent Drop additions (#21757)

---
 keyboards/drop/lib/common.c                   |  1 +
 keyboards/drop/sense75/config.h               | 65 ++++---------------
 keyboards/drop/sense75/info.json              | 48 ++++++++++++++
 .../drop/sense75/keymaps/default/keymap.c     |  9 +--
 .../drop/sense75/keymaps/default_md/keymap.c  | 18 +----
 keyboards/drop/sense75/keymaps/via/keymap.c   | 26 +-------
 keyboards/drop/sense75/rules.mk               |  2 +-
 keyboards/drop/sense75/sense75.c              |  4 +-
 8 files changed, 66 insertions(+), 107 deletions(-)

diff --git a/keyboards/drop/lib/common.c b/keyboards/drop/lib/common.c
index 515625a68637..b393e7650b4d 100644
--- a/keyboards/drop/lib/common.c
+++ b/keyboards/drop/lib/common.c
@@ -2,6 +2,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 #ifdef RGB_MATRIX_ENABLE
 #    include "host.h"
+#    include "quantum.h"
 #    include "rgb_matrix.h"
 
 #    define LED_FLAG_ANY_SWITCH (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR)
diff --git a/keyboards/drop/sense75/config.h b/keyboards/drop/sense75/config.h
index 13b8257fbba2..b8d47c311c2b 100644
--- a/keyboards/drop/sense75/config.h
+++ b/keyboards/drop/sense75/config.h
@@ -9,58 +9,15 @@
 #define EXTERNAL_EEPROM_WP_PIN B7
 #define EEPROM_I2C_24LC256
 
-#ifdef RGB_MATRIX_ENABLE
-#    define DRIVER_ADDR_1 0b1010000
-#    define DRIVER_ADDR_2 0b1011111
-#    define DRIVER_COUNT 2
-#    define RGB_MATRIX_LED_COUNT (58 + 53)
-#    define ISSI_PWM_FREQUENCY 0b010 // 26k
+#define DRIVER_ADDR_1 0b1010000
+#define DRIVER_ADDR_2 0b1011111
+#define DRIVER_COUNT 2
+#define RGB_MATRIX_LED_COUNT 111
+#define ISSI_PWM_FREQUENCY 0b010 // 26k
 
-#    define RGB_DISABLE_WHEN_USB_SUSPENDED
-#    define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
-#    define RGB_MATRIX_KEYPRESSES
-#    define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#    define ENABLE_RGB_MATRIX_ALPHAS_MODS
-#    define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-#    define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#    define ENABLE_RGB_MATRIX_BREATHING
-#    define ENABLE_RGB_MATRIX_BAND_SAT
-#    define ENABLE_RGB_MATRIX_BAND_VAL
-#    define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-#    define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-#    define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#    define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#    define ENABLE_RGB_MATRIX_CYCLE_ALL
-#    define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#    define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#    define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#    define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#    define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#    define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#    define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#    define ENABLE_RGB_MATRIX_DUAL_BEACON
-#    define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#    define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#    define ENABLE_RGB_MATRIX_RAINDROPS
-#    define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#    define ENABLE_RGB_MATRIX_HUE_BREATHING
-#    define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#    define ENABLE_RGB_MATRIX_PIXEL_FLOW
-#    define ENABLE_RGB_MATRIX_PIXEL_RAIN
-#    define ENABLE_RGB_MATRIX_HUE_PENDULUM
-#    define ENABLE_RGB_MATRIX_HUE_WAVE
-#    define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#    define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#    define ENABLE_RGB_MATRIX_SPLASH
-#    define ENABLE_RGB_MATRIX_MULTISPLASH
-#    define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#    define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#endif
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+#define RGB_MATRIX_CYCLE_ZONES_ENABLE
+#define RGB_MATRIX_CAPS_LOCK_INDEX 62
diff --git a/keyboards/drop/sense75/info.json b/keyboards/drop/sense75/info.json
index f5df3d61524b..d54c4eb6566e 100644
--- a/keyboards/drop/sense75/info.json
+++ b/keyboards/drop/sense75/info.json
@@ -14,6 +14,9 @@
         "pid": "0x0001",
         "device_version": "1.0.0"
     },
+    "eeprom": {
+        "driver": "i2c"
+    },
     "features": {
         "rgb_matrix": true,
         "encoder": true,
@@ -114,6 +117,51 @@
     },
     "rgb_matrix": {
         "driver": "IS31FL3733",
+        "animations": {
+            "alphas_mods": true,
+            "gradient_up_down": true,
+            "gradient_left_right": true,
+            "breathing": true,
+            "band_sat": true,
+            "band_val": true,
+            "band_pinwheel_sat": true,
+            "band_pinwheel_val": true,
+            "band_spiral_sat": true,
+            "band_spiral_val": true,
+            "cycle_all": true,
+            "cycle_left_right": true,
+            "cycle_up_down": true,
+            "cycle_out_in": true,
+            "cycle_out_in_dual": true,
+            "rainbow_moving_chevron": true,
+            "cycle_pinwheel": true,
+            "cycle_spiral": true,
+            "dual_beacon": true,
+            "rainbow_beacon": true,
+            "rainbow_pinwheels": true,
+            "raindrops": true,
+            "jellybean_raindrops": true,
+            "hue_breathing": true,
+            "hue_pendulum": true,
+            "hue_wave": true,
+            "pixel_fractal": true,
+            "pixel_flow": true,
+            "pixel_rain": true,
+            "typing_heatmap": true,
+            "digital_rain": true,
+            "solid_reactive_simple": true,
+            "solid_reactive": true,
+            "solid_reactive_wide": true,
+            "solid_reactive_multiwide": true,
+            "solid_reactive_cross": true,
+            "solid_reactive_multicross": true,
+            "solid_reactive_nexus": true,
+            "solid_reactive_multinexus": true,
+            "splash": true,
+            "multisplash": true,
+            "solid_splash": true,
+            "solid_multisplash": true
+        },
         "layout": [
             {"flags": 2, "x": 2, "y": 0},
             {"flags": 2, "x": 22, "y": 0},
diff --git a/keyboards/drop/sense75/keymaps/default/keymap.c b/keyboards/drop/sense75/keymaps/default/keymap.c
index 44d58b052103..36b17d967ea5 100644
--- a/keyboards/drop/sense75/keymaps/default/keymap.c
+++ b/keyboards/drop/sense75/keymaps/default/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______,          KC_HOME,
         _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______,          _______,          KC_END,
         _______,          RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______,          _______, _______,
-        _______, _______, _______,                            EE_CLR,                             _______, _______, _______, _______, _______, _______
+        _______, _______, _______,                            EE_CLR,                             KC_APP,  _______, _______, _______, _______, _______
     )
 };
 
@@ -44,10 +44,3 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
     [1] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }
 };
 #endif
-
-bool rgb_matrix_indicators_user(void) {
-    if (host_keyboard_led_state().caps_lock) {
-        rgb_matrix_set_color(62, RGB_WHITE);
-    }
-    return false;
-}
diff --git a/keyboards/drop/sense75/keymaps/default_md/keymap.c b/keyboards/drop/sense75/keymaps/default_md/keymap.c
index 871cdb2b6dca..fb81be272134 100644
--- a/keyboards/drop/sense75/keymaps/default_md/keymap.c
+++ b/keyboards/drop/sense75/keymaps/default_md/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______,          KC_HOME,
         _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______,          _______,          KC_END,
         _______,          RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______,          _______, _______,
-        MO(2),   _______, _______,                            EE_CLR,                             _______, _______, _______, _______, _______, _______
+        MO(2),   _______, _______,                            EE_CLR,                             KC_APP,  _______, _______, _______, _______, _______
     ),
     [2] = LAYOUT(
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
@@ -86,22 +86,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
                 rgb_matrix_sethsv_noeeprom(HSV_WHITE);
                 test_mode = true;
                 break;
-            case RGB_TOG:
-                switch (rgb_matrix_get_flags()) {
-                    case LED_FLAG_ALL:
-                        rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
-                        break;
-                    case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR):
-                        rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
-                        break;
-                    case LED_FLAG_UNDERGLOW:
-                        rgb_matrix_set_flags(LED_FLAG_NONE);
-                        break;
-                    default:
-                        rgb_matrix_set_flags(LED_FLAG_ALL);
-                        break;
-                }
-                return false;
         }
     }
     return true;
diff --git a/keyboards/drop/sense75/keymaps/via/keymap.c b/keyboards/drop/sense75/keymaps/via/keymap.c
index 7304ec42d539..12328cc1482d 100644
--- a/keyboards/drop/sense75/keymaps/via/keymap.c
+++ b/keyboards/drop/sense75/keymaps/via/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______,          KC_HOME,
         _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______,          _______,          KC_END,
         _______,          RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______,          _______, _______,
-        MO(2),   _______, _______,                            EE_CLR,                             _______, _______, _______, _______, _______, _______
+        MO(2),   _______, _______,                            EE_CLR,                             KC_APP,  _______, _______, _______, _______, _______
     ),
     [2] = LAYOUT(
         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
@@ -53,27 +53,3 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
     [2] = { ENCODER_CCW_CW(_______, _______) }
 };
 #endif
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    if (!record->event.pressed) {
-        switch (keycode) {
-            case RGB_TOG:
-                switch (rgb_matrix_get_flags()) {
-                    case LED_FLAG_ALL:
-                        rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
-                        break;
-                    case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR):
-                        rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
-                        break;
-                    case LED_FLAG_UNDERGLOW:
-                        rgb_matrix_set_flags(LED_FLAG_NONE);
-                        break;
-                    default:
-                        rgb_matrix_set_flags(LED_FLAG_ALL);
-                        break;
-                }
-                return false;
-        }
-    }
-    return true;
-};
diff --git a/keyboards/drop/sense75/rules.mk b/keyboards/drop/sense75/rules.mk
index 44adba039b51..ed0ad9a493cb 100644
--- a/keyboards/drop/sense75/rules.mk
+++ b/keyboards/drop/sense75/rules.mk
@@ -1 +1 @@
-EEPROM_DRIVER = i2c
+SRC += lib/common.c
diff --git a/keyboards/drop/sense75/sense75.c b/keyboards/drop/sense75/sense75.c
index cbc194ee8fbc..40577054cc13 100644
--- a/keyboards/drop/sense75/sense75.c
+++ b/keyboards/drop/sense75/sense75.c
@@ -1,8 +1,8 @@
 // Copyright 2022 Massdrop, Inc.
 // SPDX-License-Identifier: GPL-2.0-or-later
-#include "rgb_matrix.h"
-
 #ifdef RGB_MATRIX_ENABLE
+#    include "rgb_matrix.h"
+
 const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
 // top underglow sd2-sd17
     { 0, B_2,  A_2,  C_2  },