From 27d68ef8b9310de40532aade86978ed2a5608ce9 Mon Sep 17 00:00:00 2001
From: Victor <87155454+t4corun@users.noreply.github.com>
Date: Thu, 10 Oct 2024 22:27:15 -0500
Subject: [PATCH] Add Ploopyco functions for host state control (#23953)

---
 keyboards/ploopyco/ploopyco.c | 16 ++++++++++++----
 keyboards/ploopyco/ploopyco.h |  2 ++
 keyboards/ploopyco/readme.md  | 10 +++++-----
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/keyboards/ploopyco/ploopyco.c b/keyboards/ploopyco/ploopyco.c
index a6f76203d6..57f2a26b8c 100644
--- a/keyboards/ploopyco/ploopyco.c
+++ b/keyboards/ploopyco/ploopyco.c
@@ -128,6 +128,16 @@ void encoder_driver_task(void) {
 }
 #endif
 
+void toggle_drag_scroll(void) {
+    is_drag_scroll ^= 1;
+}
+
+void cycle_dpi(void) {
+    keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
+    eeconfig_update_kb(keyboard_config.raw);
+    pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+}
+
 report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
     if (is_drag_scroll) {
         scroll_accumulated_h += (float)mouse_report.x / PLOOPY_DRAGSCROLL_DIVISOR_H;
@@ -174,9 +184,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
     }
 
     if (keycode == DPI_CONFIG && record->event.pressed) {
-        keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
-        eeconfig_update_kb(keyboard_config.raw);
-        pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+        cycle_dpi();
     }
 
     if (keycode == DRAG_SCROLL) {
@@ -184,7 +192,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
         is_drag_scroll = record->event.pressed;
 #else
         if (record->event.pressed) {
-            is_drag_scroll ^= 1;
+            toggle_drag_scroll();
         }
 #endif
     }
diff --git a/keyboards/ploopyco/ploopyco.h b/keyboards/ploopyco/ploopyco.h
index 61a8d58a93..eadd04d3ae 100644
--- a/keyboards/ploopyco/ploopyco.h
+++ b/keyboards/ploopyco/ploopyco.h
@@ -37,3 +37,5 @@ enum ploopy_keycodes {
 
 bool encoder_update_user(uint8_t index, bool clockwise);
 bool encoder_update_kb(uint8_t index, bool clockwise);
+void toggle_drag_scroll(void);
+void cycle_dpi(void);
diff --git a/keyboards/ploopyco/readme.md b/keyboards/ploopyco/readme.md
index b6eecf080e..a9777ca7ce 100644
--- a/keyboards/ploopyco/readme.md
+++ b/keyboards/ploopyco/readme.md
@@ -10,11 +10,11 @@
 # Customizing your PloopyCo Device
 
 There are a number of behavioral settings that you can use to help customize your experience
-|                                 |                   |                                                           |
-|---------------------------------|-------------------|-----------------------------------------------------------|
-| `PLOOPY_IGNORE_SCROLL_CLICK`    | *__not_defined__* | Ignores scroll wheel if it is pressed down.               |
-| `PLOOPY_SCROLL_DEBOUNCE`        | `5`               | Number of milliseconds between scroll events.             |
-| `PLOOPY_SCROLL_BUTTON_DEBOUNCE` | `100`             | Time to ignore scroll events after pressing scroll wheel. |
+|Define                         |Default Value|Description                                              |
+|-------------------------------|-------------|---------------------------------------------------------|
+|`PLOOPY_IGNORE_SCROLL_CLICK`   |*Not defined*|Ignores scroll wheel if it is pressed down.              |
+|`PLOOPY_SCROLL_DEBOUNCE`       |`5`          |Number of milliseconds between scroll events.            |
+|`PLOOPY_SCROLL_BUTTON_DEBOUNCE`|`100`        |Time to ignore scroll events after pressing scroll wheel.|
 
 ## DPI