tweak RIGHTCLICK_TAP_DOWN_TIME_THRESHOLD_S for relative touch

This commit is contained in:
True Zhuanjia committed 2024-06-18 13:03:01 +08:00
1 parent f2cf788d86
commit 8834f492b4
4 files changed
+10 -8

No files matched your search

+1 -2
View File
@@ -10,14 +10,13 @@
#define CustomTapGestureRecognizer_h
@interface CustomTapGestureRecognizer : UIGestureRecognizer{
CGFloat lowestTouchPointYCoord;
}
@property (nonatomic, assign) uint8_t numberOfTouchesRequired;
@property (nonatomic, assign) bool immediateTriggering; // trigger the signal on touchesBegan stage if enabled.
@property (nonatomic, assign) bool immediateTriggering; // if enabled, trigger the signal on touchesBegan stage.
@property (nonatomic, assign) double tapDownTimeThreshold; // tap down threshold in seconds.
@property (nonatomic, readonly) CGFloat lowestTouchPointHeight;
@property (nonatomic, readonly) bool gestureCaptured;
+6 -3
View File
@@ -11,9 +11,12 @@
#import "CustomTapGestureRecognizer.h"
// The most accurate & reliable tap gesture recognizer of iOS:
// - almost 100% recoginition rate. UITapGestureRecognizer of Apple API is just intractable.
// - instances of different numberOfTouchesRequired barely compete with each other, even when immediateTriggering is set to false.
// - set property immediateTriggering = true, ensures no competition with gestures of less fingers in non-native touch mode.
// - Almost 100% recoginition rate. UITapGestureRecognizer of Apple API fails frequently, just intractable.
// - When immediateTriggering is set to false (for native multi-touch):
// Gesture signal will be triggered on touchesEnded stage, multi finger touch operations will not be interrupted by the arising keyboard.
// Instances of different [numberOfTouchesRequired] barely compete with each other, for example, the chance of 3-finger gesture get triggered by 4 or 5 finger tap is very small.
// - Set property immediateTriggering to true, to ensure the priority of keyboard toggle in non-native touch mode, in compete with 2-finger gestures.
// - This recognizer also provides properties like gestureCapturedTime, to be accessed outside the class for useful purpose.
@implementation CustomTapGestureRecognizer
+1 -1
View File
@@ -19,7 +19,7 @@
@implementation NativeTouchHandler {
StreamView* streamView;
TemporarySettings* currentSettings;
BOOL activateCoordSelector;
bool activateCoordSelector;
}
+2 -2
View File
@@ -10,7 +10,7 @@
#import "CustomTapGestureRecognizer.h"
#include <Limelight.h>
#define RIGHTCLICK_TAP_DOWN_TIME_THRESHOLD_S 0.2
#define RIGHTCLICK_TAP_DOWN_TIME_THRESHOLD_S 0.15
static const int REFERENCE_WIDTH = 1280;
@@ -132,7 +132,7 @@ static const int REFERENCE_HEIGHT = 720;
CGPoint secondLocation = [[[[event allTouches] allObjects] objectAtIndex:1] locationInView:view];
CGPoint avgLocation = CGPointMake((firstLocation.x + secondLocation.x) / 2, (firstLocation.y + secondLocation.y) / 2);
if ((CACurrentMediaTime() - rightClickTapRecognizer.gestureCapturedTime > RIGHTCLICK_TAP_DOWN_TIME_THRESHOLD_S) && touchLocation.y != avgLocation.y) { //prevent sending scrollevent while right click gesture is being recognized. The time threshold is only 100ms, resulting in a barely noticeable delay before the scroll event is activated.
if ((CACurrentMediaTime() - rightClickTapRecognizer.gestureCapturedTime > RIGHTCLICK_TAP_DOWN_TIME_THRESHOLD_S) && touchLocation.y != avgLocation.y) { //prevent sending scrollevent while right click gesture is being recognized. The time threshold is only 150ms, resulting in a barely noticeable delay before the scroll event is activated.
LiSendHighResScrollEvent((avgLocation.y - touchLocation.y) * 10);
}