High resolution scrolling (without feature report parsing) (#24423)
* hires scrolling without feature report parsing * fix valid range for exponent * fix incorrect minimum exponent value documentation
This commit is contained in:
		
							parent
							
								
									83818d1d6f
								
							
						
					
					
						commit
						7a2cd0fa96
					
				
					 6 changed files with 119 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -25,6 +25,10 @@
 | 
			
		|||
#    include "mousekey.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef POINTING_DEVICE_HIRES_SCROLL_ENABLE
 | 
			
		||||
#    include "usb_descriptor_common.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (defined(POINTING_DEVICE_ROTATION_90) + defined(POINTING_DEVICE_ROTATION_180) + defined(POINTING_DEVICE_ROTATION_270)) > 1
 | 
			
		||||
#    error More than one rotation selected.  This is not supported.
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -78,6 +82,9 @@ uint16_t pointing_device_get_shared_cpi(void) {
 | 
			
		|||
 | 
			
		||||
static report_mouse_t local_mouse_report         = {};
 | 
			
		||||
static bool           pointing_device_force_send = false;
 | 
			
		||||
#ifdef POINTING_DEVICE_HIRES_SCROLL_ENABLE
 | 
			
		||||
static uint16_t hires_scroll_resolution;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define POINTING_DEVICE_DRIVER_CONCAT(name) name##_pointing_device_driver
 | 
			
		||||
#define POINTING_DEVICE_DRIVER(name) POINTING_DEVICE_DRIVER_CONCAT(name)
 | 
			
		||||
| 
						 | 
				
			
			@ -176,6 +183,12 @@ __attribute__((weak)) void pointing_device_init(void) {
 | 
			
		|||
#    endif
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
#ifdef POINTING_DEVICE_HIRES_SCROLL_ENABLE
 | 
			
		||||
    hires_scroll_resolution = POINTING_DEVICE_HIRES_SCROLL_MULTIPLIER;
 | 
			
		||||
    for (int i = 0; i < POINTING_DEVICE_HIRES_SCROLL_EXPONENT; i++) {
 | 
			
		||||
        hires_scroll_resolution *= 10;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    pointing_device_init_kb();
 | 
			
		||||
    pointing_device_init_user();
 | 
			
		||||
| 
						 | 
				
			
			@ -523,3 +536,9 @@ __attribute__((weak)) void pointing_device_keycode_handler(uint16_t keycode, boo
 | 
			
		|||
        pointing_device_send();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef POINTING_DEVICE_HIRES_SCROLL_ENABLE
 | 
			
		||||
uint16_t pointing_device_get_hires_scroll_resolution(void) {
 | 
			
		||||
    return hires_scroll_resolution;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -122,6 +122,10 @@ uint8_t        pointing_device_handle_buttons(uint8_t buttons, bool pressed, poi
 | 
			
		|||
report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report);
 | 
			
		||||
void           pointing_device_keycode_handler(uint16_t keycode, bool pressed);
 | 
			
		||||
 | 
			
		||||
#ifdef POINTING_DEVICE_HIRES_SCROLL_ENABLE
 | 
			
		||||
uint16_t pointing_device_get_hires_scroll_resolution(void);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(SPLIT_POINTING_ENABLE)
 | 
			
		||||
void     pointing_device_set_shared_report(report_mouse_t report);
 | 
			
		||||
uint16_t pointing_device_get_shared_cpi(void);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue