summaryrefslogtreecommitdiffstats
path: root/quantum
diff options
context:
space:
mode:
Diffstat (limited to 'quantum')
-rw-r--r--quantum/mousekey.c24
-rw-r--r--quantum/pointing_device.c13
-rw-r--r--quantum/pointing_device.h1
3 files changed, 15 insertions, 23 deletions
diff --git a/quantum/mousekey.c b/quantum/mousekey.c
index 8bafbf977a..0cbb472045 100644
--- a/quantum/mousekey.c
+++ b/quantum/mousekey.c
@@ -209,7 +209,7 @@ static uint8_t wheel_unit(void) {
void mousekey_task(void) {
// report cursor and scroll movement independently
- report_mouse_t const tmpmr = mouse_report;
+ report_mouse_t tmpmr = mouse_report;
mouse_report.x = 0;
mouse_report.y = 0;
@@ -251,8 +251,10 @@ void mousekey_task(void) {
}
}
- if (mouse_report.x || mouse_report.y || mouse_report.v || mouse_report.h) mousekey_send();
- mouse_report = tmpmr;
+ if (has_mouse_report_changed(&mouse_report, &tmpmr)) {
+ mousekey_send();
+ }
+ memcpy(&mouse_report, &tmpmr, sizeof(tmpmr));
}
void mousekey_on(uint8_t code) {
@@ -340,11 +342,11 @@ uint16_t w_intervals[mkspd_COUNT] = {MK_W_INTERVAL_UNMOD, MK_W_INTERVAL_0
void mousekey_task(void) {
// report cursor and scroll movement independently
- report_mouse_t const tmpmr = mouse_report;
- mouse_report.x = 0;
- mouse_report.y = 0;
- mouse_report.v = 0;
- mouse_report.h = 0;
+ report_mouse_t tmpmr = mouse_report;
+ mouse_report.x = 0;
+ mouse_report.y = 0;
+ mouse_report.v = 0;
+ mouse_report.h = 0;
if ((tmpmr.x || tmpmr.y) && timer_elapsed(last_timer_c) > c_intervals[mk_speed]) {
mouse_report.x = tmpmr.x;
@@ -355,8 +357,10 @@ void mousekey_task(void) {
mouse_report.h = tmpmr.h;
}
- if (mouse_report.x || mouse_report.y || mouse_report.v || mouse_report.h) mousekey_send();
- mouse_report = tmpmr;
+ if (has_mouse_report_changed(&mouse_report, &tmpmr)) {
+ mousekey_send();
+ }
+ memcpy(&mouse_report, &tmpmr, sizeof(tmpmr));
}
void adjust_speed(void) {
diff --git a/quantum/pointing_device.c b/quantum/pointing_device.c
index 47a0af45d2..a160647890 100644
--- a/quantum/pointing_device.c
+++ b/quantum/pointing_device.c
@@ -71,17 +71,6 @@ static report_mouse_t local_mouse_report = {};
extern const pointing_device_driver_t pointing_device_driver;
/**
- * @brief Compares 2 mouse reports for difference and returns result
- *
- * @param[in] new_report report_mouse_t
- * @param[in] old_report report_mouse_t
- * @return bool result
- */
-__attribute__((weak)) bool has_mouse_report_changed(report_mouse_t new_report, report_mouse_t old_report) {
- return memcmp(&new_report, &old_report, sizeof(new_report));
-}
-
-/**
* @brief Keyboard level code pointing device initialisation
*
*/
@@ -165,7 +154,7 @@ __attribute__((weak)) void pointing_device_send(void) {
static report_mouse_t old_report = {};
// If you need to do other things, like debugging, this is the place to do it.
- if (has_mouse_report_changed(local_mouse_report, old_report)) {
+ if (has_mouse_report_changed(&local_mouse_report, &old_report)) {
host_mouse_send(&local_mouse_report);
}
// send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device
diff --git a/quantum/pointing_device.h b/quantum/pointing_device.h
index a6bdbf120c..5c0eaeaf34 100644
--- a/quantum/pointing_device.h
+++ b/quantum/pointing_device.h
@@ -80,7 +80,6 @@ void pointing_device_task(void);
void pointing_device_send(void);
report_mouse_t pointing_device_get_report(void);
void pointing_device_set_report(report_mouse_t mouse_report);
-bool has_mouse_report_changed(report_mouse_t new_report, report_mouse_t old_report);
uint16_t pointing_device_get_cpi(void);
void pointing_device_set_cpi(uint16_t cpi);