diff options
| author | user <user@node5.net> | 2024-01-02 06:31:22 +0100 |
|---|---|---|
| committer | user <user@node5.net> | 2024-01-02 06:31:22 +0100 |
| commit | 48a470bac088e3584873f524d1cf2b2042ba66df (patch) | |
| tree | d036beef6451c7480d06d307f56fa28c40d4be65 /keyboards/handwired/node5_1/keymaps | |
| parent | a552e8482ad330da0737a47b7371507bdb54e78f (diff) | |
trackball scroll mode
Diffstat (limited to 'keyboards/handwired/node5_1/keymaps')
| -rw-r--r-- | keyboards/handwired/node5_1/keymaps/default/keymap.c | 33 |
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; } |
