summaryrefslogtreecommitdiffstats
path: root/quantum/mousekey.c
diff options
context:
space:
mode:
authorYorick Peterse <git@yorickpeterse.com>2022-05-14 07:26:12 +0200
committerGitHub <noreply@github.com>2022-05-14 15:26:12 +1000
commit90eef4cd153cdc1b00d973e6abb029828f656294 (patch)
treee8c09ec925e1193fa7637538740cefc0e3b6ce13 /quantum/mousekey.c
parent787a68948fa0d5e251e22a623071082c8c0561b1 (diff)
Fix kinetic mouse mode (#16951)
Co-authored-by: Jan Christoph Ebersbach <jceb@e-jc.de>
Diffstat (limited to 'quantum/mousekey.c')
-rw-r--r--quantum/mousekey.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/quantum/mousekey.c b/quantum/mousekey.c
index 64d0e66682..a15bd8f13e 100644
--- a/quantum/mousekey.c
+++ b/quantum/mousekey.c
@@ -66,11 +66,16 @@ uint8_t mk_time_to_max = MOUSEKEY_TIME_TO_MAX;
/* milliseconds between the initial key press and first repeated motion event (0-2550) */
uint8_t mk_wheel_delay = MOUSEKEY_WHEEL_DELAY / 10;
/* milliseconds between repeated motion events (0-255) */
-uint8_t mk_wheel_interval = MOUSEKEY_WHEEL_INTERVAL;
+# ifndef MK_KINETIC_SPEED
+uint8_t mk_wheel_interval = MOUSEKEY_WHEEL_INTERVAL;
+# else /* #ifndef MK_KINETIC_SPEED */
+float mk_wheel_interval = 1000.0f / MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;
+# endif /* #ifndef MK_KINETIC_SPEED */
uint8_t mk_wheel_max_speed = MOUSEKEY_WHEEL_MAX_SPEED;
uint8_t mk_wheel_time_to_max = MOUSEKEY_WHEEL_TIME_TO_MAX;
# ifndef MK_COMBINED
+# ifndef MK_KINETIC_SPEED
static uint8_t move_unit(void) {
uint16_t unit;
@@ -108,8 +113,7 @@ static uint8_t wheel_unit(void) {
return (unit > MOUSEKEY_WHEEL_MAX ? MOUSEKEY_WHEEL_MAX : (unit == 0 ? 1 : unit));
}
-# else /* #ifndef MK_COMBINED */
-# ifdef MK_KINETIC_SPEED
+# else /* #ifndef MK_KINETIC_SPEED */
/*
* Kinetic movement acceleration algorithm
@@ -129,7 +133,7 @@ const uint16_t mk_decelerated_speed = MOUSEKEY_DECELERATED_SPEED;
const uint16_t mk_initial_speed = MOUSEKEY_INITIAL_SPEED;
static uint8_t move_unit(void) {
- float speed = mk_initial_speed;
+ float speed = (float)mk_initial_speed;
if (mousekey_accel & ((1 << 0) | (1 << 2))) {
speed = mousekey_accel & (1 << 2) ? mk_accelerated_speed : mk_decelerated_speed;
@@ -147,8 +151,6 @@ static uint8_t move_unit(void) {
return speed > MOUSEKEY_MOVE_MAX ? MOUSEKEY_MOVE_MAX : speed;
}
-float mk_wheel_interval = 1000.0f / MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;
-
static uint8_t wheel_unit(void) {
float speed = MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;
@@ -167,7 +169,8 @@ static uint8_t wheel_unit(void) {
return 1;
}
-# else /* #ifndef MK_KINETIC_SPEED */
+# endif /* #ifndef MK_KINETIC_SPEED */
+# else /* #ifndef MK_COMBINED */
static uint8_t move_unit(void) {
uint16_t unit;
@@ -205,8 +208,7 @@ static uint8_t wheel_unit(void) {
return (unit > MOUSEKEY_WHEEL_MAX ? MOUSEKEY_WHEEL_MAX : (unit == 0 ? 1 : unit));
}
-# endif /* #ifndef MK_KINETIC_SPEED */
-# endif /* #ifndef MK_COMBINED */
+# endif /* #ifndef MK_COMBINED */
void mousekey_task(void) {
// report cursor and scroll movement independently