feat(trackpad): macos scroll resolution hid descriptor
Some checks failed
Build firmware / build-firmware (default) (push) Failing after 2s
Build firmware / build-firmware (oryx) (push) Failing after 2s

This commit is contained in:
Florian
2025-12-05 16:37:56 +07:00
parent b246a7de74
commit 29ee055e25
4 changed files with 61 additions and 65 deletions

View File

@@ -195,6 +195,20 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = {
HID_RI_LOGICAL_MAXIMUM(16, 32767),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_SIZE(8, 0x10),
# endif
# ifdef POINTING_DEVICE_MACOS_SCROLL_RESOLUTION
// Add physical units for macOS scrolling
HID_RI_UNIT(8, 0x13), // English Linear (inches)
HID_RI_UNIT_EXPONENT(8, -4), // 10^-4 scale
# ifndef WHEEL_EXTENDED_REPORT
// Calculate: (127 / UNITS_PER_INCH) * 10000 for 10^-4 scale
HID_RI_PHYSICAL_MINIMUM(16, -(1270000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
HID_RI_PHYSICAL_MAXIMUM(16, (1270000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
# else
// Calculate: (32767 / UNITS_PER_INCH) * 10000 for 10^-4 scale
HID_RI_PHYSICAL_MINIMUM(16, -(327670000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
HID_RI_PHYSICAL_MAXIMUM(16, (327670000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
# endif
# endif
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
@@ -211,6 +225,20 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = {
HID_RI_LOGICAL_MAXIMUM(16, 32767),
HID_RI_REPORT_COUNT(8, 0x01),
HID_RI_REPORT_SIZE(8, 0x10),
# endif
# ifdef POINTING_DEVICE_MACOS_SCROLL_RESOLUTION
// Add physical units for macOS scrolling
HID_RI_UNIT(8, 0x13), // English Linear (inches)
HID_RI_UNIT_EXPONENT(8, -4), // 10^-4 scale
# ifndef WHEEL_EXTENDED_REPORT
// Calculate: (127 / UNITS_PER_INCH) * 10000 for 10^-4 scale
HID_RI_PHYSICAL_MINIMUM(16, -(1270000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
HID_RI_PHYSICAL_MAXIMUM(16, (1270000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
# else
// Calculate: (32767 / UNITS_PER_INCH) * 10000 for 10^-4 scale
HID_RI_PHYSICAL_MINIMUM(16, -(327670000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
HID_RI_PHYSICAL_MAXIMUM(16, (327670000 / POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH)),
# endif
# endif
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),

View File

@@ -33,6 +33,17 @@
# define RAW_USAGE_ID 0x61
#endif
/////////////////////
// macOS Scroll Resolution (units per inch)
// Lower value = more sensitive scrolling (default: 200 for 2x Apple sensitivity)
// Apple trackpads use 400, but smaller trackpads need lower values
#ifdef POINTING_DEVICE_MACOS_SCROLL_RESOLUTION
# ifndef POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH
# define POINTING_DEVICE_MACOS_SCROLL_UNITS_PER_INCH 200
# endif
#endif
/////////////////////
// Hires Scroll Defaults