From ac299287e462ce79ba12f276a278788aae121514 Mon Sep 17 00:00:00 2001 From: TrueZhuanjia Date: Wed, 2 Jul 2025 01:21:47 +0800 Subject: [PATCH] tap to stall trackball scrolling --- VoidLink/Input/OnScreenWidgetView.swift | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/VoidLink/Input/OnScreenWidgetView.swift b/VoidLink/Input/OnScreenWidgetView.swift index e44f27aa..80e81913 100644 --- a/VoidLink/Input/OnScreenWidgetView.swift +++ b/VoidLink/Input/OnScreenWidgetView.swift @@ -124,7 +124,7 @@ import UIKit // trackball private var trackballVelocity: CGPoint = .zero private var trackballDecelerationTimer: Timer? - private let trackballDecelerationRate: CGFloat = 0.90 + private let trackballDecelerationRate: CGFloat = 1.0 private let trackballVelocityThreshold: CGFloat = 0.1 @@ -828,7 +828,7 @@ import UIKit private func startTrackballMomentum() { stopTrackballMomentum() - trackballDecelerationTimer = Timer.scheduledTimer(withTimeInterval: 0.016, repeats: true) { [weak self] _ in + trackballDecelerationTimer = Timer.scheduledTimer(withTimeInterval: 1/60, repeats: true) { [weak self] _ in guard let self = self else { return } LiSendMouseMoveEvent( @@ -1272,7 +1272,13 @@ import UIKit } if !OnScreenWidgetView.editMode && self.widgetType == WidgetTypeEnum.touchPad && self.touchPadString == "TRACKBALL" && allCapturedTouchesCount == 1 && !twoTouchesDetected { - self.startTrackballMomentum() + if(mousePointerMoved){ + self.startTrackballMomentum() + mousePointerMoved = false //reset flag + } + else{ + self.stopTrackballMomentum() + } } if !OnScreenWidgetView.editMode && self.widgetType == WidgetTypeEnum.touchPad && self.touchPadString == "MOUSEPAD" && twoTouchesDetected && touches.count == allCapturedTouchesCount { // need to enable multi-touch first