Skip to content

Commit

Permalink
Merge pull request #817 from UltimateHackingKeyboard/fix_dont_spin_ev…
Browse files Browse the repository at this point in the history
…entloop_on_touchpad

Fix dont spin eventloop on touchpad
  • Loading branch information
kareltucek authored Dec 6, 2024
2 parents f47d3dd + cf20900 commit a39d626
Showing 1 changed file with 36 additions and 15 deletions.
51 changes: 36 additions & 15 deletions right/src/slave_drivers/touchpad_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,25 +164,46 @@ slave_result_t TouchpadDriver_Update(uint8_t uhkModuleDriverId)

ModuleConnectionStates[UhkModuleDriverId_RightModule].lastTimeConnected = CurrentTime;

TouchpadEvents.singleTap = gestureEvents.events0.singleTap;
TouchpadEvents.twoFingerTap = gestureEvents.events1.twoFingerTap;
TouchpadEvents.tapAndHold = gestureEvents.events0.tapAndHold;
TouchpadEvents.noFingers = noFingers;

if (gestureEvents.events1.scroll) {
TouchpadEvents.wheelX -= deltaX;
TouchpadEvents.wheelY += deltaY;
} else if (gestureEvents.events1.zoom) {
TouchpadEvents.zoomLevel -= deltaY;
} else {
TouchpadEvents.x -= deltaX;
TouchpadEvents.y += deltaY;
if (deltaX || deltaY || *(uint16_t*)&gestureEvents) {
bool somethingChanged = false;

if (
TouchpadEvents.singleTap != gestureEvents.events0.singleTap
|| TouchpadEvents.twoFingerTap != gestureEvents.events1.twoFingerTap
|| TouchpadEvents.tapAndHold != gestureEvents.events0.tapAndHold
|| TouchpadEvents.noFingers != noFingers
) {
TouchpadEvents.singleTap = gestureEvents.events0.singleTap;
TouchpadEvents.twoFingerTap = gestureEvents.events1.twoFingerTap;
TouchpadEvents.tapAndHold = gestureEvents.events0.tapAndHold;
TouchpadEvents.noFingers = noFingers;
somethingChanged = true;
}

if (deltaX != 0 || deltaY != 0) {
if (gestureEvents.events1.scroll) {
TouchpadEvents.wheelX -= deltaX;
TouchpadEvents.wheelY += deltaY;
somethingChanged = true;
} else if (gestureEvents.events1.zoom) {
TouchpadEvents.zoomLevel -= deltaY;
somethingChanged = true;
} else {
TouchpadEvents.x -= deltaX;
TouchpadEvents.y += deltaY;
somethingChanged = true;
}
}

if (somethingChanged) {
EventVector_Set(EventVector_MouseController);
EventVector_WakeMain();
}
}

res.status = I2cAsyncWrite(address, closeCommunicationWindow, sizeof(closeCommunicationWindow));
res.hold = false;
EventVector_Set(EventVector_MouseController);
EventVector_WakeMain();

phase = 3;
break;
}
Expand Down

0 comments on commit a39d626

Please sign in to comment.