aboutsummaryrefslogtreecommitdiff
path: root/quantum/pointing_device.c
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2021-02-03 17:25:05 -0800
committerGitHub <noreply@github.com>2021-02-03 17:25:05 -0800
commit780ca5565d2bdb8e03aa2669a3203373a0a4d9dd (patch)
treea89235710614eb9d29f2c97b60ca3ee9714aae2c /quantum/pointing_device.c
parent420f6c4b2e1634e82e4bbdcc24691c169c72ac79 (diff)
downloadqmk_firmware-780ca5565d2bdb8e03aa2669a3203373a0a4d9dd.tar.gz
qmk_firmware-780ca5565d2bdb8e03aa2669a3203373a0a4d9dd.zip
Improve Pointing Device report sending (#11064)
* Improve Pointing Device report sending * Hide old report behind preprocessors too * put host_mouse_send() in curly brackets * Remove POINTING_DEVICE_ALWAYS_SEND_REPORT functionality * Fix typo * fix function ref in docs Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Diffstat (limited to 'quantum/pointing_device.c')
-rw-r--r--quantum/pointing_device.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/quantum/pointing_device.c b/quantum/pointing_device.c
index 9b7629f30..fbcc08e6d 100644
--- a/quantum/pointing_device.c
+++ b/quantum/pointing_device.c
@@ -25,18 +25,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
25 25
26static report_mouse_t mouseReport = {}; 26static report_mouse_t mouseReport = {};
27 27
28__attribute__((weak)) bool has_mouse_report_changed(report_mouse_t new, report_mouse_t old) {
29 return (new.buttons != old.buttons) ||
30 (new.x && new.x != old.x) ||
31 (new.y && new.y != old.y) ||
32 (new.h && new.h != old.h) ||
33 (new.v && new.v != old.v);
34}
35
36
28__attribute__((weak)) void pointing_device_init(void) { 37__attribute__((weak)) void pointing_device_init(void) {
29 // initialize device, if that needs to be done. 38 // initialize device, if that needs to be done.
30} 39}
31 40
32__attribute__((weak)) void pointing_device_send(void) { 41__attribute__((weak)) void pointing_device_send(void) {
42 static report_mouse_t old_report = {};
43
33 // If you need to do other things, like debugging, this is the place to do it. 44 // If you need to do other things, like debugging, this is the place to do it.
34 host_mouse_send(&mouseReport); 45 if (has_mouse_report_changed(mouseReport, old_report)) {
46 host_mouse_send(&mouseReport);
47 }
35 // send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device 48 // send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device
36 mouseReport.x = 0; 49 mouseReport.x = 0;
37 mouseReport.y = 0; 50 mouseReport.y = 0;
38 mouseReport.v = 0; 51 mouseReport.v = 0;
39 mouseReport.h = 0; 52 mouseReport.h = 0;
53 old_report = mouseReport;
40} 54}
41 55
42__attribute__((weak)) void pointing_device_task(void) { 56__attribute__((weak)) void pointing_device_task(void) {