summaryrefslogtreecommitdiff
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
parenta552e8482ad330da0737a47b7371507bdb54e78f (diff)
trackball scroll mode
-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;
}