forked from mirrors/qmk_userspace
		
	[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…
	
	Add table
		Add a link
		
	
		Reference in a new issue