[Core] Move has_mouse_report_changed
function to report.c
(#16543)
* Move 'has_mouse_report_changed' checkto report.c * change mousekeys to use memcpy * fix linting issues
This commit is contained in:
parent
cc9a2aef0f
commit
921b9dad6c
5 changed files with 32 additions and 23 deletions
|
@ -209,7 +209,7 @@ static uint8_t wheel_unit(void) {
|
||||||
|
|
||||||
void mousekey_task(void) {
|
void mousekey_task(void) {
|
||||||
// report cursor and scroll movement independently
|
// 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.x = 0;
|
||||||
mouse_report.y = 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();
|
if (has_mouse_report_changed(&mouse_report, &tmpmr)) {
|
||||||
mouse_report = tmpmr;
|
mousekey_send();
|
||||||
|
}
|
||||||
|
memcpy(&mouse_report, &tmpmr, sizeof(tmpmr));
|
||||||
}
|
}
|
||||||
|
|
||||||
void mousekey_on(uint8_t code) {
|
void mousekey_on(uint8_t code) {
|
||||||
|
@ -340,7 +342,7 @@ uint16_t w_intervals[mkspd_COUNT] = {MK_W_INTERVAL_UNMOD, MK_W_INTERVAL_0
|
||||||
|
|
||||||
void mousekey_task(void) {
|
void mousekey_task(void) {
|
||||||
// report cursor and scroll movement independently
|
// 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.x = 0;
|
||||||
mouse_report.y = 0;
|
mouse_report.y = 0;
|
||||||
mouse_report.v = 0;
|
mouse_report.v = 0;
|
||||||
|
@ -355,8 +357,10 @@ void mousekey_task(void) {
|
||||||
mouse_report.h = tmpmr.h;
|
mouse_report.h = tmpmr.h;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mouse_report.x || mouse_report.y || mouse_report.v || mouse_report.h) mousekey_send();
|
if (has_mouse_report_changed(&mouse_report, &tmpmr)) {
|
||||||
mouse_report = tmpmr;
|
mousekey_send();
|
||||||
|
}
|
||||||
|
memcpy(&mouse_report, &tmpmr, sizeof(tmpmr));
|
||||||
}
|
}
|
||||||
|
|
||||||
void adjust_speed(void) {
|
void adjust_speed(void) {
|
||||||
|
|
|
@ -70,17 +70,6 @@ static report_mouse_t local_mouse_report = {};
|
||||||
|
|
||||||
extern const pointing_device_driver_t pointing_device_driver;
|
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
|
* @brief Keyboard level code pointing device initialisation
|
||||||
*
|
*
|
||||||
|
@ -165,7 +154,7 @@ __attribute__((weak)) void pointing_device_send(void) {
|
||||||
static report_mouse_t old_report = {};
|
static report_mouse_t old_report = {};
|
||||||
|
|
||||||
// If you need to do other things, like debugging, this is the place to do it.
|
// 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);
|
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
|
// send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device
|
||||||
|
|
|
@ -80,7 +80,6 @@ void pointing_device_task(void);
|
||||||
void pointing_device_send(void);
|
void pointing_device_send(void);
|
||||||
report_mouse_t pointing_device_get_report(void);
|
report_mouse_t pointing_device_get_report(void);
|
||||||
void pointing_device_set_report(report_mouse_t mouse_report);
|
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);
|
uint16_t pointing_device_get_cpi(void);
|
||||||
void pointing_device_set_cpi(uint16_t cpi);
|
void pointing_device_set_cpi(uint16_t cpi);
|
||||||
|
|
||||||
|
|
|
@ -278,3 +278,16 @@ void clear_keys_from_report(report_keyboard_t* keyboard_report) {
|
||||||
#endif
|
#endif
|
||||||
memset(keyboard_report->keys, 0, sizeof(keyboard_report->keys));
|
memset(keyboard_report->keys, 0, sizeof(keyboard_report->keys));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MOUSE_ENABLE
|
||||||
|
/**
|
||||||
|
* @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(report_mouse_t));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -320,6 +320,10 @@ void add_key_to_report(report_keyboard_t* keyboard_report, uint8_t key);
|
||||||
void del_key_from_report(report_keyboard_t* keyboard_report, uint8_t key);
|
void del_key_from_report(report_keyboard_t* keyboard_report, uint8_t key);
|
||||||
void clear_keys_from_report(report_keyboard_t* keyboard_report);
|
void clear_keys_from_report(report_keyboard_t* keyboard_report);
|
||||||
|
|
||||||
|
#ifdef MOUSE_ENABLE
|
||||||
|
bool has_mouse_report_changed(report_mouse_t* new_report, report_mouse_t* old_report);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue