Skip to content

Commit

Permalink
Fix kinetic mouse mode (#16951)
Browse files Browse the repository at this point in the history
Co-authored-by: Jan Christoph Ebersbach <jceb@e-jc.de>
  • Loading branch information
yorickpeterse and jceb committed May 14, 2022
1 parent 787a689 commit 90eef4c
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions quantum/mousekey.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand All @@ -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;
Expand All @@ -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;

Expand All @@ -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;
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 90eef4c

Please sign in to comment.