summary refs log tree commit diff
path: root/keyboards/handwired/node5_1
diff options
context:
space:
mode:
authoruser <user@node5.net>2024-01-02 06:31:20 +0100
committeruser <user@node5.net>2024-01-02 06:31:20 +0100
commit164a497463fc65be48454f1a3182a00219286b90 (patch)
tree26b09b1e491c0830a9aa043d640a2f706351f5c7 /keyboards/handwired/node5_1
parent880b2092c20e5491d7c506435300cf45bdc976a6 (diff)
click trackball to change cpi
Diffstat (limited to 'keyboards/handwired/node5_1')
-rw-r--r--keyboards/handwired/node5_1/keymaps/default/keymap.c34
-rw-r--r--keyboards/handwired/node5_1/rules.mk1
2 files changed, 33 insertions, 2 deletions
diff --git a/keyboards/handwired/node5_1/keymaps/default/keymap.c b/keyboards/handwired/node5_1/keymaps/default/keymap.c
index 84a11d7b48..fd600d5e90 100644
--- a/keyboards/handwired/node5_1/keymaps/default/keymap.c
+++ b/keyboards/handwired/node5_1/keymaps/default/keymap.c
@@ -93,6 +93,11 @@ const struct color trackball_normal_color = {
 
 bool scrolled = false;
 
+// First one is the default
+int cpis[] = {20000, 40000};
+int cpi_index = 0;
+bool cpi_changed = false;
+
 void set_trackball_normal_color(void) {
     pimoroni_trackball_set_rgbw(
             trackball_normal_color.red,
@@ -105,7 +110,7 @@ void set_trackball_normal_color(void) {
 void keyboard_post_init_user(void) {
     // Call the post init code.
     set_trackball_normal_color();
-    pointing_device_set_cpi(30000);
+    pointing_device_set_cpi(cpis[cpi_index]);
 
     debug_enable=true;
 }
@@ -113,6 +118,29 @@ void keyboard_post_init_user(void) {
 bool set_scrolling = false;
 
 report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+    // Only fires on pointing device click, not keyboard mouse buttons
+    if (!mouse_report.buttons) {
+        cpi_changed = false;
+    } else {
+        // Don't send a mouse button event
+        mouse_report.buttons = 0;
+
+        if(!cpi_changed){
+            cpi_changed = true;
+
+            // Cycle CPI
+            cpi_index++;
+            if (cpi_index == sizeof(cpis) / sizeof(cpis[0])) {
+                cpi_index = 0;
+            }
+
+            // Set CPI
+            pointing_device_set_cpi(cpis[cpi_index]);
+
+            dprintf("CPI: %d\n", cpis[cpi_index]);
+        }
+    }
+
     if (set_scrolling) {
         if (mouse_report.x || mouse_report.y) {
             // Used for middle mouse button scroll logic
@@ -144,7 +172,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         } else {
             // Stop scrolling mode
             set_scrolling = false;
-            pointing_device_set_cpi(30000);
+
+            // Reset CPI
+            pointing_device_set_cpi(cpis[cpi_index]);
             set_trackball_normal_color();
 
             // Middle mouse button wasn't sent earlier,
diff --git a/keyboards/handwired/node5_1/rules.mk b/keyboards/handwired/node5_1/rules.mk
index 94eda5fd52..e51f88dea9 100644
--- a/keyboards/handwired/node5_1/rules.mk
+++ b/keyboards/handwired/node5_1/rules.mk
@@ -6,6 +6,7 @@ VIA_ENABLE = yes
 # https://shop.pimoroni.com/products/trackball-breakout
 POINTING_DEVICE_ENABLE = yes
 POINTING_DEVICE_DRIVER = pimoroni_trackball
+PIMORONI_TRACKBALL_SCALE = 10
 
 # Enable RP2040-Zero WS2812 On board led
 # https://www.waveshare.com/img/devkit/RP2040-Zero/RP2040-Zero-details-7.jpg