Reset mouseMoveCurrentSpeed when the mouse movement keys are no longer pressed, even if a mouse button key stays pressed due to drag and drop or selection purposes.

This commit is contained in:
László Monda
2017-11-22 02:34:37 +01:00
parent 8429ee2b71
commit 4d211f0fe1

View File

@@ -20,7 +20,7 @@ static uint32_t elapsedTime;
static float mouseMoveSpeed = 0.4;
static float mouseMoveInitialSpeed = 1;
static float mouseMoveAcceleration = 5;
static float mouseMoveAcceleration = 4;
static float mouseMoveMaxSpeed = 5;
static float mouseScrollSpeed = 0.1;
@@ -29,14 +29,13 @@ static float mouseScrollMaxSpeed = 0.1;
static float mouseAccelerateFactor = 2;
static float mouseDecelerateFactor = 0.5;
static bool isMouseActionProcessed;
static bool wasMouseActionProcessed;
static bool isMouseMoving;
static bool wasMouseMoving;
void processMouseAction(key_action_t *action)
{
static float mouseMoveCurrentSpeed;
isMouseActionProcessed = true;
if (!wasMouseActionProcessed) {
if (!wasMouseMoving) {
mouseMoveCurrentSpeed = mouseMoveInitialSpeed;
}
@@ -53,6 +52,7 @@ void processMouseAction(key_action_t *action)
}
if (action->mouse.moveActions) {
isMouseMoving = true;
mouseMoveCurrentSpeed += mouseMoveAcceleration * elapsedTime / 1000;
if (mouseMoveCurrentSpeed > mouseMoveMaxSpeed) {
mouseMoveCurrentSpeed = mouseMoveMaxSpeed;
@@ -148,8 +148,8 @@ static secondary_role_t secondaryRole;
void updateActiveUsbReports(void)
{
wasMouseActionProcessed = isMouseActionProcessed;
isMouseActionProcessed = false;
wasMouseMoving = isMouseMoving;
isMouseMoving = false;
static uint8_t previousModifiers = 0;
elapsedTime = Timer_GetElapsedTime(&UsbReportUpdateTime);