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:22 +0100
committeruser <user@node5.net>2024-01-02 06:31:22 +0100
commit48a470bac088e3584873f524d1cf2b2042ba66df (patch)
treed036beef6451c7480d06d307f56fa28c40d4be65 /keyboards/handwired/node5_1
parenta552e8482ad330da0737a47b7371507bdb54e78f (diff)
trackball scroll mode
Diffstat (limited to 'keyboards/handwired/node5_1')
-rw-r--r--keyboards/handwired/node5_1/keymaps/default/keymap.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/keyboards/handwired/node5_1/keymaps/default/keymap.c b/keyboards/handwired/node5_1/keymaps/default/keymap.c
index e33fa23b50..e2fd57bb38 100644
--- a/keyboards/handwired/node5_1/keymaps/default/keymap.c
+++ b/keyboards/handwired/node5_1/keymaps/default/keymap.c
@@ -124,6 +124,8 @@ typedef struct {
     int cpi;
 } cpi_type;
 
+bool trackball_volume_mode = false;
+
 // Trackball cpi. First one is the default This is also the default color
 cpi_type cpis[] = {
     {
@@ -167,10 +169,10 @@ 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 {
+    	// Only fires on pointing device click, not keyboard mouse buttons
         // Don't send a mouse button event
         mouse_report.buttons = 0;
 
@@ -199,8 +201,23 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
             // dprintf("X: %d\nY: %d\n", mouse_report.x, mouse_report.y);
         }
 
+	// Convert cursor movement to scroll movement
         mouse_report.h = mouse_report.x;
         mouse_report.v = -mouse_report.y;
+	
+	// Prevent cursor movement
+        mouse_report.x = 0;
+        mouse_report.y = 0;
+    } else if(trackball_volume_mode){
+	if (mouse_report.y) {
+		if (mouse_report.y < 0) {
+			SEND_STRING(SS_TAP(X_VOLU));
+		} else if (mouse_report.y > 0){
+			SEND_STRING(SS_TAP(X_VOLD));
+		}
+	}
+
+	// Prevent cursor movement
         mouse_report.x = 0;
         mouse_report.y = 0;
     }
@@ -211,8 +228,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 	//dprintf("keycode: %d\n", keycode);
 	switch (keycode) {
 		case KC_BTN3:
+			// Middle mouse button
 			if (record->event.pressed) {
-				// Middle mouse button pressed
 				// Start scrolling mode
 				set_scrolling = true;
 				pointing_device_set_cpi(8000);
@@ -241,10 +258,22 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 			}
 			break;
 		case PB_1:
+			// Programmable button 1
 			if (record->event.pressed) {
 				SEND_STRING("https://node5.net");
 			}
 			break;
+		case MO(_FN):
+			// Programmable button 1
+			if (record->event.pressed) {
+				pimoroni_trackball_set_rgbw(255, 0, 255, 0);
+				trackball_volume_mode = true;
+			}
+			else {
+				set_trackball_normal_color();
+				trackball_volume_mode = false;
+			}
+			break;		
 	}
 	return true;
 }