diff --git a/Limelight/Database/TemporarySettings.h b/Limelight/Database/TemporarySettings.h index b82b2a8d..45d36ba0 100644 --- a/Limelight/Database/TemporarySettings.h +++ b/Limelight/Database/TemporarySettings.h @@ -11,6 +11,7 @@ #define REGULAR_NATIVE_TOUCH 1 #define PURE_NATIVE_TOUCH 2 #define ABSOLUTE_TOUCH 3 +#define OSC_TOOL_FINGERS 5 @interface TemporarySettings : NSObject diff --git a/Limelight/Input/StreamView.m b/Limelight/Input/StreamView.m index b86faf2d..bc70b97f 100644 --- a/Limelight/Input/StreamView.m +++ b/Limelight/Input/StreamView.m @@ -105,14 +105,14 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5; switch (settings.touchMode.intValue) { case REGULAR_NATIVE_TOUCH: keyboardToggleRecognizer.immediateTriggering = false; - if(settings.onscreenControls.intValue == OnScreenControlsLevelCustom) keyboardToggleRecognizer.numberOfTouchesRequired = 3; //fixing keyboard taps to 3, in order to invoke OSC rebase in stream view by 4-finger tap. + // if(settings.onscreenControls.intValue == OnScreenControlsLevelCustom) keyboardToggleRecognizer.numberOfTouchesRequired = 3; //deprecated: fixing keyboard taps to 3, in order to invoke OSC rebase in stream view by 4-finger tap. case PURE_NATIVE_TOUCH: self->touchHandler = [[NativeTouchHandler alloc] initWithView:self andSettings:settings];break; case RELATIVE_TOUCH: self->touchHandler = [[RelativeTouchHandler alloc] initWithView:self andSettings:settings]; keyboardToggleRecognizer.immediateTriggering = false; - if(settings.onscreenControls.intValue == OnScreenControlsLevelCustom) keyboardToggleRecognizer.numberOfTouchesRequired = 3; //fixing keyboard taps to 3, in order to invoke OSC rebase in stream view by 4-finger tap. + // if(settings.onscreenControls.intValue == OnScreenControlsLevelCustom) keyboardToggleRecognizer.numberOfTouchesRequired = 3; //deprecated: fixing keyboard taps to 3, in order to invoke OSC rebase in stream view by 4-finger tap. break; case ABSOLUTE_TOUCH: self->touchHandler = [[AbsoluteTouchHandler alloc] initWithView:self]; diff --git a/Limelight/Localization/Localizable.xcstrings b/Limelight/Localization/Localizable.xcstrings index 1b3d7d6d..61ea437a 100644 --- a/Limelight/Localization/Localizable.xcstrings +++ b/Limelight/Localization/Localizable.xcstrings @@ -2119,48 +2119,48 @@ } } }, - "Tap 4 fingers to change on-screen controller layout in stream view" : { + "Tap 5 fingers to change on-screen controller layout in stream view" : { "extractionState" : "manual", "localizations" : { "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "在串流视图中轻按4根手指修改虚拟手柄布局" + "value" : "在串流视图中轻按5根手指修改虚拟手柄布局" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "在串流视图中轻按4根手指修改虚拟手柄布局" + "value" : "在串流视图中轻按5根手指修改虚拟手柄布局" } }, "zh-HK" : { "stringUnit" : { "state" : "translated", - "value" : "在串流视图中轻按4根手指修改虚拟手柄布局" + "value" : "在串流视图中轻按5根手指修改虚拟手柄布局" } } } }, - "Tap 4 Fingers to Change OSC Layout in Stream View" : { + "Tap 5 Fingers to Change OSC Layout in Stream View" : { "extractionState" : "manual", "localizations" : { "zh-Hans" : { "stringUnit" : { "state" : "translated", - "value" : "在串流视图中轻按4根手指修改虚拟手柄布局" + "value" : "在串流视图中轻按5根手指修改虚拟手柄布局" } }, "zh-Hant" : { "stringUnit" : { "state" : "translated", - "value" : "在串流视图中轻按4根手指修改虚拟手柄布局" + "value" : "在串流视图中轻按5根手指修改虚拟手柄布局" } }, "zh-HK" : { "stringUnit" : { "state" : "translated", - "value" : "在串流视图中轻按4根手指修改虚拟手柄布局" + "value" : "在串流视图中轻按5根手指修改虚拟手柄布局" } } } diff --git a/Limelight/ViewControllers/SettingsViewController.m b/Limelight/ViewControllers/SettingsViewController.m index bad9465f..1c27ee97 100644 --- a/Limelight/ViewControllers/SettingsViewController.m +++ b/Limelight/ViewControllers/SettingsViewController.m @@ -483,7 +483,7 @@ BOOL isCustomResolution(CGSize res) { - (void)showCustomOSCTip { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:[LocalizationHelper localizedStringForKey:@"Rebase in Stream View"] - message:[LocalizationHelper localizedStringForKey:@"Tap 4 fingers to change on-screen controller layout in stream view"] + message:[LocalizationHelper localizedStringForKey:@"Tap 5 fingers to change on-screen controller layout in stream view"] preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:[LocalizationHelper localizedStringForKey: @"Got it!"] style:UIAlertActionStyleDefault @@ -513,11 +513,12 @@ BOOL isCustomResolution(CGSize res) { bool oscEnabled = ([self.touchModeSelector selectedSegmentIndex] == RELATIVE_TOUCH || [self.touchModeSelector selectedSegmentIndex] == REGULAR_NATIVE_TOUCH) && [self.onscreenControlSelector selectedSegmentIndex] != OnScreenControlsLevelOff; bool customOscEnabled = oscEnabled && [self.onscreenControlSelector selectedSegmentIndex] == OnScreenControlsLevelCustom; - [self widget:self.keyboardToggleFingerNumSlider setEnabled:!customOscEnabled]; + // [self widget:self.keyboardToggleFingerNumSlider setEnabled:!customOscEnabled]; if(customOscEnabled && !justEnteredSettingsViewDoNotOpenOscLayoutTool) { - [self.keyboardToggleFingerNumSlider setValue:3.0]; - [self keyboardToggleFingerNumSliderMoved]; - [self.onscreenControllerLabel setText:[LocalizationHelper localizedStringForKey: @"Tap 4 Fingers to Change OSC Layout in Stream View"]]; + // [self.keyboardToggleFingerNumSlider setValue:3.0]; + // [self keyboardToggleFingerNumSliderMoved]; + [self keyboardToggleFingerNumSliderMoved]; // go to exclude 5 fingers + [self.onscreenControllerLabel setText:[LocalizationHelper localizedStringForKey: @"Tap 5 Fingers to Change OSC Layout in Stream View"]]; [self showCustomOSCTip]; justEnteredSettingsViewDoNotOpenOscLayoutTool = false; //if (self.layoutOnScreenControlsVC.isBeingPresented == NO) @@ -605,12 +606,13 @@ BOOL isCustomResolution(CGSize res) { [self widget:self.mousePointerVelocityFactorSlider setEnabled:[self.touchModeSelector selectedSegmentIndex] == RELATIVE_TOUCH]; // mouse velocity scaling works only in relative touch mode. // number of touches required to toggle keyboard will be fixed to 3 when OSC is enabled. - [self widget:self.keyboardToggleFingerNumSlider setEnabled: !customOscEnabled]; // cancel OSC limitation for regular native touch, + // [self widget:self.keyboardToggleFingerNumSlider setEnabled: !customOscEnabled]; // cancel OSC limitation for regular native touch, // when CustomOSC is enabled: if(customOscEnabled) { - [self.keyboardToggleFingerNumSlider setValue:3.0]; - [self.keyboardToggleFingerNumLabel setText:[LocalizationHelper localizedStringForKey:@"To Toggle Local Keyboard: Tap %d Fingers", (uint16_t)self.keyboardToggleFingerNumSlider.value]]; - [self.onscreenControllerLabel setText:[LocalizationHelper localizedStringForKey: @"Tap 4 Fingers to Change OSC Layout in Stream View"]]; + // [self.keyboardToggleFingerNumSlider setValue:3.0]; + // [self.keyboardToggleFingerNumLabel setText:[LocalizationHelper localizedStringForKey:@"To Toggle Local Keyboard: Tap %d Fingers", (uint16_t)self.keyboardToggleFingerNumSlider.value]]; + [self.onscreenControllerLabel setText:[LocalizationHelper localizedStringForKey: @"Tap 5 Fingers to Change OSC Layout in Stream View"]]; + [self keyboardToggleFingerNumSliderMoved]; // go exclude 5 fingers //if (self.layoutOnScreenControlsVC.isBeingPresented == NO) } else{ @@ -807,8 +809,19 @@ BOOL isCustomResolution(CGSize res) { } - (void) keyboardToggleFingerNumSliderMoved{ - if (self.keyboardToggleFingerNumSlider.value > 10.5f) [self.keyboardToggleFingerNumLabel setText:[LocalizationHelper localizedStringForKey:@"Local Keyboard Toggle Disabled"]]; - else [self.keyboardToggleFingerNumLabel setText:[LocalizationHelper localizedStringForKey:@"To Toggle Local Keyboard: Tap %d Fingers", (uint16_t)self.keyboardToggleFingerNumSlider.value]]; // Initiate label display + bool oscEnabled = ([self.touchModeSelector selectedSegmentIndex] == RELATIVE_TOUCH || [self.touchModeSelector selectedSegmentIndex] == REGULAR_NATIVE_TOUCH) && [self.onscreenControlSelector selectedSegmentIndex] != OnScreenControlsLevelOff; + bool customOscEnabled = oscEnabled && [self.onscreenControlSelector selectedSegmentIndex] == OnScreenControlsLevelCustom; + + CGFloat sliderValue = self.keyboardToggleFingerNumSlider.value; + if(customOscEnabled){ + // exclude 5 fingers when custom osc is enabled + if(sliderValue > OSC_TOOL_FINGERS - 1 && sliderValue < OSC_TOOL_FINGERS) [self.keyboardToggleFingerNumSlider setValue:4.0]; + if(sliderValue >= OSC_TOOL_FINGERS && sliderValue < OSC_TOOL_FINGERS + 1) [self.keyboardToggleFingerNumSlider setValue:6.0]; + } + + sliderValue = self.keyboardToggleFingerNumSlider.value; + if(sliderValue > 10.5f) [self.keyboardToggleFingerNumLabel setText:[LocalizationHelper localizedStringForKey:@"Local Keyboard Toggle Disabled"]]; + else [self.keyboardToggleFingerNumLabel setText:[LocalizationHelper localizedStringForKey:@"To Toggle Local Keyboard: Tap %d Fingers", (uint16_t)sliderValue]]; // Initiate label display, exclude 5 fingers. } - (void) slideToMenuDistanceSliderMoved{ diff --git a/Limelight/ViewControllers/StreamFrameViewController.m b/Limelight/ViewControllers/StreamFrameViewController.m index 7a20f966..70b1edc8 100644 --- a/Limelight/ViewControllers/StreamFrameViewController.m +++ b/Limelight/ViewControllers/StreamFrameViewController.m @@ -66,7 +66,7 @@ [self->_streamView removeGestureRecognizer:_oscLayoutTapRecoginizer]; if((_settings.touchMode.intValue == RELATIVE_TOUCH || _settings.touchMode.intValue == REGULAR_NATIVE_TOUCH) && _settings.onscreenControls.intValue == OnScreenControlsLevelCustom){ _oscLayoutTapRecoginizer = [[CustomTapGestureRecognizer alloc] initWithTarget:self action:@selector(layoutOSC)]; - _oscLayoutTapRecoginizer.numberOfTouchesRequired = 4; //tap 4 fingers to invoke OSC rebase + _oscLayoutTapRecoginizer.numberOfTouchesRequired = OSC_TOOL_FINGERS; //tap a predefined number of fingers to open osc layout tool _oscLayoutTapRecoginizer.tapDownTimeThreshold = 1; _oscLayoutTapRecoginizer.delaysTouchesBegan = NO; _oscLayoutTapRecoginizer.delaysTouchesEnded = NO;