aboutsummaryrefslogtreecommitdiff
path: root/quantum/pointing_device
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/pointing_device')
-rw-r--r--quantum/pointing_device/pointing_device.c30
-rw-r--r--quantum/pointing_device/pointing_device.h14
-rw-r--r--quantum/pointing_device/pointing_device_drivers.c10
3 files changed, 32 insertions, 22 deletions
diff --git a/quantum/pointing_device/pointing_device.c b/quantum/pointing_device/pointing_device.c
index 74ce9108a9..7d3be9e524 100644
--- a/quantum/pointing_device/pointing_device.c
+++ b/quantum/pointing_device/pointing_device.c
@@ -377,28 +377,28 @@ void pointing_device_set_cpi_on_side(bool left, uint16_t cpi) {
}
/**
- * @brief clamps int16_t to int8_t
+ * @brief clamps int16_t to int8_t, or int32_t to int16_t
*
- * @param[in] int16_t value
- * @return int8_t clamped value
+ * @param[in] hv_clamp_range_t value
+ * @return mouse_hv_report_t clamped value
*/
-static inline int8_t pointing_device_hv_clamp(int16_t value) {
- if (value < INT8_MIN) {
- return INT8_MIN;
- } else if (value > INT8_MAX) {
- return INT8_MAX;
+static inline mouse_hv_report_t pointing_device_hv_clamp(hv_clamp_range_t value) {
+ if (value < HV_REPORT_MIN) {
+ return HV_REPORT_MIN;
+ } else if (value > HV_REPORT_MAX) {
+ return HV_REPORT_MAX;
} else {
return value;
}
}
/**
- * @brief clamps int16_t to int8_t
+ * @brief clamps int16_t to int8_t, or int32_t to int16_t
*
- * @param[in] clamp_range_t value
+ * @param[in] xy_clamp_range_t value
* @return mouse_xy_report_t clamped value
*/
-static inline mouse_xy_report_t pointing_device_xy_clamp(clamp_range_t value) {
+static inline mouse_xy_report_t pointing_device_xy_clamp(xy_clamp_range_t value) {
if (value < XY_REPORT_MIN) {
return XY_REPORT_MIN;
} else if (value > XY_REPORT_MAX) {
@@ -419,10 +419,10 @@ static inline mouse_xy_report_t pointing_device_xy_clamp(clamp_range_t value) {
* @return combined report_mouse_t of left_report and right_report
*/
report_mouse_t pointing_device_combine_reports(report_mouse_t left_report, report_mouse_t right_report) {
- left_report.x = pointing_device_xy_clamp((clamp_range_t)left_report.x + right_report.x);
- left_report.y = pointing_device_xy_clamp((clamp_range_t)left_report.y + right_report.y);
- left_report.h = pointing_device_hv_clamp((int16_t)left_report.h + right_report.h);
- left_report.v = pointing_device_hv_clamp((int16_t)left_report.v + right_report.v);
+ left_report.x = pointing_device_xy_clamp((xy_clamp_range_t)left_report.x + right_report.x);
+ left_report.y = pointing_device_xy_clamp((xy_clamp_range_t)left_report.y + right_report.y);
+ left_report.h = pointing_device_hv_clamp((hv_clamp_range_t)left_report.h + right_report.h);
+ left_report.v = pointing_device_hv_clamp((hv_clamp_range_t)left_report.v + right_report.v);
left_report.buttons |= right_report.buttons;
return left_report;
}
diff --git a/quantum/pointing_device/pointing_device.h b/quantum/pointing_device/pointing_device.h
index 1cd4b0b5e6..b0f8533d6d 100644
--- a/quantum/pointing_device/pointing_device.h
+++ b/quantum/pointing_device/pointing_device.h
@@ -95,11 +95,21 @@ typedef enum {
#ifdef MOUSE_EXTENDED_REPORT
# define XY_REPORT_MIN INT16_MIN
# define XY_REPORT_MAX INT16_MAX
-typedef int32_t clamp_range_t;
+typedef int32_t xy_clamp_range_t;
#else
# define XY_REPORT_MIN INT8_MIN
# define XY_REPORT_MAX INT8_MAX
-typedef int16_t clamp_range_t;
+typedef int16_t xy_clamp_range_t;
+#endif
+
+#ifdef WHEEL_EXTENDED_REPORT
+# define HV_REPORT_MIN INT16_MIN
+# define HV_REPORT_MAX INT16_MAX
+typedef int32_t hv_clamp_range_t;
+#else
+# define HV_REPORT_MIN INT8_MIN
+# define HV_REPORT_MAX INT8_MAX
+typedef int16_t hv_clamp_range_t;
#endif
void pointing_device_init(void);
diff --git a/quantum/pointing_device/pointing_device_drivers.c b/quantum/pointing_device/pointing_device_drivers.c
index bf131c6eda..6cbe427401 100644
--- a/quantum/pointing_device/pointing_device_drivers.c
+++ b/quantum/pointing_device/pointing_device_drivers.c
@@ -391,7 +391,7 @@ const pointing_device_driver_t pointing_device_driver = {
};
#elif defined(POINTING_DEVICE_DRIVER_pimoroni_trackball)
-mouse_xy_report_t pimoroni_trackball_adapt_values(clamp_range_t* offset) {
+mouse_xy_report_t pimoroni_trackball_adapt_values(xy_clamp_range_t* offset) {
if (*offset > XY_REPORT_MAX) {
*offset -= XY_REPORT_MAX;
return (mouse_xy_report_t)XY_REPORT_MAX;
@@ -406,10 +406,10 @@ mouse_xy_report_t pimoroni_trackball_adapt_values(clamp_range_t* offset) {
}
report_mouse_t pimoroni_trackball_get_report(report_mouse_t mouse_report) {
- static uint16_t debounce = 0;
- static uint8_t error_count = 0;
- pimoroni_data_t pimoroni_data = {0};
- static clamp_range_t x_offset = 0, y_offset = 0;
+ static uint16_t debounce = 0;
+ static uint8_t error_count = 0;
+ pimoroni_data_t pimoroni_data = {0};
+ static xy_clamp_range_t x_offset = 0, y_offset = 0;
if (error_count < PIMORONI_TRACKBALL_ERROR_COUNT) {
i2c_status_t status = read_pimoroni_trackball(&pimoroni_data);