Make processMouseKineticState() work with float x,y offsets to accumulate fractions.
This commit is contained in:
@@ -80,17 +80,27 @@ void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
||||
uint16_t distance = kineticState->currentSpeed * elapsedTime / 10;
|
||||
|
||||
if (activeMouseStates[kineticState->leftState]) {
|
||||
kineticState->x = -distance;
|
||||
kineticState->xSum -= distance;
|
||||
} else if (activeMouseStates[kineticState->rightState]) {
|
||||
kineticState->x = distance;
|
||||
kineticState->xSum += distance;
|
||||
}
|
||||
|
||||
float xSumInt;
|
||||
float xSumFrac = modff(kineticState->xSum, &xSumInt);
|
||||
kineticState->xSum = xSumFrac;
|
||||
kineticState->xOut = xSumInt;
|
||||
|
||||
if (activeMouseStates[kineticState->upState]) {
|
||||
kineticState->y = -distance;
|
||||
kineticState->ySum -= distance;
|
||||
} else if (activeMouseStates[kineticState->downState]) {
|
||||
kineticState->y = distance;
|
||||
kineticState->ySum += distance;
|
||||
}
|
||||
}
|
||||
|
||||
float ySumInt;
|
||||
float ySumFrac = modff(kineticState->ySum, &ySumInt);
|
||||
kineticState->ySum = ySumFrac;
|
||||
kineticState->yOut = ySumInt;
|
||||
}
|
||||
|
||||
kineticState->prevMouseSpeed = mouseSpeed;
|
||||
kineticState->wasMoveAction = isMoveAction;
|
||||
@@ -99,10 +109,10 @@ void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
||||
void processMouseActions()
|
||||
{
|
||||
processMouseKineticState(&mouseMoveState);
|
||||
ActiveUsbMouseReport->x = mouseMoveState.x;
|
||||
ActiveUsbMouseReport->y = mouseMoveState.y;
|
||||
mouseMoveState.x = 0;
|
||||
mouseMoveState.y = 0;
|
||||
ActiveUsbMouseReport->x = mouseMoveState.xOut;
|
||||
ActiveUsbMouseReport->y = mouseMoveState.yOut;
|
||||
mouseMoveState.xOut = 0;
|
||||
mouseMoveState.yOut = 0;
|
||||
|
||||
bool isScrollAction = activeMouseStates[SerializedMouseAction_ScrollUp] ||
|
||||
activeMouseStates[SerializedMouseAction_ScrollDown] ||
|
||||
|
||||
@@ -56,8 +56,10 @@
|
||||
float deceleratedSpeed;
|
||||
float baseSpeed;
|
||||
float acceleratedSpeed;
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
float xSum;
|
||||
float ySum;
|
||||
int16_t xOut;
|
||||
int16_t yOut;
|
||||
} mouse_kinetic_state_t;
|
||||
|
||||
// Functions:
|
||||
|
||||
Reference in New Issue
Block a user