Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
@ -255,9 +255,11 @@ Additionally, by default, `pointing_device_send()` will only send a report when
|
||||
|
||||
Also, you use the `has_mouse_report_changed(new, old)` function to check to see if the report has changed.
|
||||
|
||||
## Example
|
||||
## Examples
|
||||
|
||||
In the following example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function. Listen, this is an example:
|
||||
### Custom Mouse Keycode
|
||||
|
||||
In this example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function.
|
||||
|
||||
```c
|
||||
case MS_SPECIAL:
|
||||
@ -278,6 +280,36 @@ case MS_SPECIAL:
|
||||
|
||||
Recall that the mouse report is set to zero (except the buttons) whenever it is sent, so the scrolling would only occur once in each case.
|
||||
|
||||
### Drag Scroll or Mouse Scroll
|
||||
|
||||
A very common implementation is to use the mouse movement to scroll instead of moving the cursor on the system. This uses the `pointing_device_task_user` callback to intercept and modify the mouse report before it's sent to the host system.
|
||||
|
||||
```c
|
||||
enum custom_keycodes {
|
||||
DRAG_SCROLL = SAFE_RANGE,
|
||||
};
|
||||
|
||||
bool set_scrolling = false;
|
||||
|
||||
report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
|
||||
if (set_scrolling) {
|
||||
mouse_report.h = mouse_report.x;
|
||||
mouse_report.v = mouse_report.y;
|
||||
mouse_report.x = mouse_report.y = 0
|
||||
}
|
||||
return mouse_report;
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (keycode == DRAG_SCROLL && record->event.pressed) {
|
||||
set_scrolling = !set_scrolling;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key.
|
||||
|
||||
## Split Examples
|
||||
|
||||
The following examples make use the `SPLIT_POINTING_ENABLE` functionality and show how to manipulate the mouse report for a scrolling mode.
|
||||
@ -315,7 +347,6 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
|
||||
}
|
||||
return mouse_report;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### Combined Pointing Devices
|
||||
@ -336,3 +367,4 @@ report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, re
|
||||
return pointing_device_combine_reports(left_report, right_report);
|
||||
}
|
||||
```
|
||||
=======
|
||||
|
Reference in New Issue
Block a user