feat: map controller to mouse with self-defined sticks, buttons, curve expo, pointer velocity.
This commit is contained in:
1 parent
e058839faf
commit
138658c635
18 files changed
+1043
-157
No files matched your search
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
180345E12E819877004AF36F /* libopus-sim.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 180345E02E819877004AF36F /* libopus-sim.a */; };
|
180345E12E819877004AF36F /* libopus-sim.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 180345E02E819877004AF36F /* libopus-sim.a */; };
|
||||||
180E6E372E93BFDB0067C73A /* CountdownAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 180E6E362E93BFDB0067C73A /* CountdownAlertController.swift */; };
|
180E6E372E93BFDB0067C73A /* AlertControllerUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 180E6E362E93BFDB0067C73A /* AlertControllerUtil.swift */; };
|
||||||
1817B61E2E6FD04D000D938D /* SafeTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1817B61D2E6FD04D000D938D /* SafeTimer.swift */; };
|
1817B61E2E6FD04D000D938D /* SafeTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1817B61D2E6FD04D000D938D /* SafeTimer.swift */; };
|
||||||
182760F72E83E2EA00EC1C5C /* DequeModule in Frameworks */ = {isa = PBXBuildFile; productRef = 182760F62E83E2EA00EC1C5C /* DequeModule */; };
|
182760F72E83E2EA00EC1C5C /* DequeModule in Frameworks */ = {isa = PBXBuildFile; productRef = 182760F62E83E2EA00EC1C5C /* DequeModule */; };
|
||||||
182760FA2E83E57D00EC1C5C /* DequeModule in Frameworks */ = {isa = PBXBuildFile; productRef = 182760F92E83E57D00EC1C5C /* DequeModule */; };
|
182760FA2E83E57D00EC1C5C /* DequeModule in Frameworks */ = {isa = PBXBuildFile; productRef = 182760F92E83E57D00EC1C5C /* DequeModule */; };
|
||||||
@@ -164,7 +164,7 @@
|
|||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
180345E02E819877004AF36F /* libopus-sim.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libopus-sim.a"; sourceTree = "<group>"; };
|
180345E02E819877004AF36F /* libopus-sim.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libopus-sim.a"; sourceTree = "<group>"; };
|
||||||
180E6E362E93BFDB0067C73A /* CountdownAlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountdownAlertController.swift; sourceTree = "<group>"; };
|
180E6E362E93BFDB0067C73A /* AlertControllerUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertControllerUtil.swift; sourceTree = "<group>"; };
|
||||||
1817B61D2E6FD04D000D938D /* SafeTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafeTimer.swift; sourceTree = "<group>"; };
|
1817B61D2E6FD04D000D938D /* SafeTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafeTimer.swift; sourceTree = "<group>"; };
|
||||||
1829CE3D2E2154DF0074A99A /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
|
1829CE3D2E2154DF0074A99A /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
|
||||||
1829CE3E2E2154DF0074A99A /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
|
1829CE3E2E2154DF0074A99A /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
|
||||||
@@ -643,7 +643,7 @@
|
|||||||
847D2FDA2DDA015F00937A62 /* MenuSectionView.m */,
|
847D2FDA2DDA015F00937A62 /* MenuSectionView.m */,
|
||||||
FBDE86E419F82297001C18A8 /* UIAppView.h */,
|
FBDE86E419F82297001C18A8 /* UIAppView.h */,
|
||||||
FBDE86E519F82297001C18A8 /* UIAppView.m */,
|
FBDE86E519F82297001C18A8 /* UIAppView.m */,
|
||||||
180E6E362E93BFDB0067C73A /* CountdownAlertController.swift */,
|
180E6E362E93BFDB0067C73A /* AlertControllerUtil.swift */,
|
||||||
1888C1902E24C2C800108730 /* AboutView.swift */,
|
1888C1902E24C2C800108730 /* AboutView.swift */,
|
||||||
1888C1912E24C33100108730 /* AboutViewController.swift */,
|
1888C1912E24C33100108730 /* AboutViewController.swift */,
|
||||||
FB89463719F6473800339C8A /* Launch Screen.xib */,
|
FB89463719F6473800339C8A /* Launch Screen.xib */,
|
||||||
@@ -1068,7 +1068,7 @@
|
|||||||
840751B32BF49C050096B657 /* CustomTapGestureRecognizer.m in Sources */,
|
840751B32BF49C050096B657 /* CustomTapGestureRecognizer.m in Sources */,
|
||||||
187F4B282E04658A00EECC59 /* WidgetPanelStackView.m in Sources */,
|
187F4B282E04658A00EECC59 /* WidgetPanelStackView.m in Sources */,
|
||||||
FB4678FA1A55FFAD00377732 /* DiscoveryManager.m in Sources */,
|
FB4678FA1A55FFAD00377732 /* DiscoveryManager.m in Sources */,
|
||||||
180E6E372E93BFDB0067C73A /* CountdownAlertController.swift in Sources */,
|
180E6E372E93BFDB0067C73A /* AlertControllerUtil.swift in Sources */,
|
||||||
841BAC922DE35D6B00DA639E /* ThemeManager.m in Sources */,
|
841BAC922DE35D6B00DA639E /* ThemeManager.m in Sources */,
|
||||||
98D5856D1C0EA79600F6CC00 /* TemporaryHost.m in Sources */,
|
98D5856D1C0EA79600F6CC00 /* TemporaryHost.m in Sources */,
|
||||||
FB89463519F646E200339C8A /* MainFrameViewController.m in Sources */,
|
FB89463519F646E200339C8A /* MainFrameViewController.m in Sources */,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// CountdownAlertController.swift
|
// AlertControllerUtil.swift
|
||||||
// VoidLink
|
// VoidLink
|
||||||
//
|
//
|
||||||
// Created by Weimin on 2025/10/6.
|
// Created by Weimin on 2025/10/6.
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
//
|
//
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
@objc class CountdownAlertController: NSObject {
|
@objc class AlertControllerUtil: NSObject {
|
||||||
|
|
||||||
/// 类方法,直接在任何 UIViewController 上显示倒计时弹窗
|
/// 类方法,直接在任何 UIViewController 上显示倒计时弹窗
|
||||||
/// - Parameters:
|
/// - Parameters:
|
||||||
@@ -19,6 +19,7 @@ import UIKit
|
|||||||
/// - completion: 点击确认或倒计时结束的回调
|
/// - completion: 点击确认或倒计时结束的回调
|
||||||
|
|
||||||
@objc public static var actionCancelled:Bool = false
|
@objc public static var actionCancelled:Bool = false
|
||||||
|
@objc public static var alertController:UIAlertController = UIAlertController()
|
||||||
|
|
||||||
@objc class func showAlert(
|
@objc class func showAlert(
|
||||||
in viewController: UIViewController,
|
in viewController: UIViewController,
|
||||||
@@ -27,11 +28,12 @@ import UIKit
|
|||||||
withCancel: Bool,
|
withCancel: Bool,
|
||||||
buttonTitle: String,
|
buttonTitle: String,
|
||||||
countdown: Int,
|
countdown: Int,
|
||||||
|
action: (() -> Void)? = nil,
|
||||||
completion: (() -> Void)? = nil
|
completion: (() -> Void)? = nil
|
||||||
) {
|
) {
|
||||||
var remainingSeconds = countdown
|
var remainingSeconds = countdown
|
||||||
|
|
||||||
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
||||||
|
|
||||||
let confirmAction = UIAlertAction(title: "\(remainingSeconds)", style: .default) { _ in
|
let confirmAction = UIAlertAction(title: "\(remainingSeconds)", style: .default) { _ in
|
||||||
actionCancelled = false
|
actionCancelled = false
|
||||||
@@ -45,15 +47,15 @@ import UIKit
|
|||||||
|
|
||||||
confirmAction.isEnabled = false
|
confirmAction.isEnabled = false
|
||||||
|
|
||||||
if withCancel {alert.addAction(cancelAction)}
|
if withCancel {alertController.addAction(cancelAction)}
|
||||||
alert.addAction(confirmAction)
|
if buttonTitle != "" {alertController.addAction(confirmAction)}
|
||||||
|
|
||||||
if(countdown == 0) {
|
if(countdown == 0) {
|
||||||
confirmAction.setValue(buttonTitle, forKey: "title")
|
confirmAction.setValue(buttonTitle, forKey: "title")
|
||||||
confirmAction.isEnabled = true
|
confirmAction.isEnabled = buttonTitle != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
viewController.present(alert, animated: true, completion: nil)
|
viewController.present(alertController, animated: true, completion: action)
|
||||||
|
|
||||||
if(countdown == 0) {return}
|
if(countdown == 0) {return}
|
||||||
|
|
||||||
@@ -1697,6 +1697,66 @@
|
|||||||
<constraint firstAttribute="height" constant="31" id="bkz-ks-hpu"/>
|
<constraint firstAttribute="height" constant="31" id="bkz-ks-hpu"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="0n9-vQ-WC2">
|
||||||
|
<rect key="frame" x="852" y="850" width="300" height="31"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Controller → Mouse" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="P1g-rW-Mgp" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="150" height="31"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ect-CM-odK">
|
||||||
|
<rect key="frame" x="170" y="0.0" width="132" height="31"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="130" id="G04-14-Q74"/>
|
||||||
|
</constraints>
|
||||||
|
</switch>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="31" id="7kp-OR-e5f"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="lBq-CW-xFb">
|
||||||
|
<rect key="frame" x="852" y="899" width="380" height="55.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Pointer Velocity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xnd-C4-8N9" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="380" height="21"/>
|
||||||
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="60" translatesAutoresizingMaskIntoConstraints="NO" id="w6S-nD-AXU">
|
||||||
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
|
</slider>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="380" id="4aR-eF-inq"/>
|
||||||
|
<constraint firstAttribute="height" constant="55.5" id="ScL-Y2-bDH"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="5gN-F1-wWR">
|
||||||
|
<rect key="frame" x="852" y="974" width="380" height="55.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Curve Exponent" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Cy-aH-DXp" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="380" height="21"/>
|
||||||
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="1" maxValue="5" translatesAutoresizingMaskIntoConstraints="NO" id="ciD-6k-n6o">
|
||||||
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
|
</slider>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="380" id="h9D-G7-Nuh"/>
|
||||||
|
<constraint firstAttribute="height" constant="55.5" id="kLV-xF-5SV"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</view>
|
</view>
|
||||||
@@ -1721,6 +1781,12 @@
|
|||||||
<outlet property="citrixX1MouseSwitch" destination="GQM-NR-WIO" id="RNm-18-mrK"/>
|
<outlet property="citrixX1MouseSwitch" destination="GQM-NR-WIO" id="RNm-18-mrK"/>
|
||||||
<outlet property="codecSelector" destination="aFy-0w-YPe" id="DlU-0l-gwz"/>
|
<outlet property="codecSelector" destination="aFy-0w-YPe" id="DlU-0l-gwz"/>
|
||||||
<outlet property="codecStack" destination="gWg-BF-yDI" id="GGc-JQ-N8y"/>
|
<outlet property="codecStack" destination="gWg-BF-yDI" id="GGc-JQ-N8y"/>
|
||||||
|
<outlet property="controllerMouseExpoSlider" destination="ciD-6k-n6o" id="HzO-8E-u9N"/>
|
||||||
|
<outlet property="controllerMouseExpoStack" destination="5gN-F1-wWR" id="hgt-xH-dts"/>
|
||||||
|
<outlet property="controllerMouseVelocitySlider" destination="w6S-nD-AXU" id="rws-D6-zMT"/>
|
||||||
|
<outlet property="controllerMouseVelocityStack" destination="lBq-CW-xFb" id="zOW-iC-wBn"/>
|
||||||
|
<outlet property="controllerToMouseStack" destination="0n9-vQ-WC2" id="DhB-o2-VWn"/>
|
||||||
|
<outlet property="controllerToMouseSwitch" destination="Ect-CM-odK" id="SCB-GH-0hd"/>
|
||||||
<outlet property="ctrlDownForPinchStack" destination="4Jb-ey-ca7" id="Ou2-Qz-VO6"/>
|
<outlet property="ctrlDownForPinchStack" destination="4Jb-ey-ca7" id="Ou2-Qz-VO6"/>
|
||||||
<outlet property="ctrlDownForPinchSwitch" destination="zfr-Wn-dB4" id="GXR-zn-daI"/>
|
<outlet property="ctrlDownForPinchSwitch" destination="zfr-Wn-dB4" id="GXR-zn-daI"/>
|
||||||
<outlet property="customResolutionSwitch" destination="E5w-kK-dOo" id="hrt-v2-8dY"/>
|
<outlet property="customResolutionSwitch" destination="E5w-kK-dOo" id="hrt-v2-8dY"/>
|
||||||
@@ -2667,7 +2733,7 @@
|
|||||||
<image name="tray.full.fill" catalog="system" width="128" height="88"/>
|
<image name="tray.full.fill" catalog="system" width="128" height="88"/>
|
||||||
<image name="video.and.waveform" catalog="system" width="128" height="94"/>
|
<image name="video.and.waveform" catalog="system" width="128" height="94"/>
|
||||||
<systemColor name="linkColor">
|
<systemColor name="linkColor">
|
||||||
<color red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color red="0.0" green="0.47843137254901963" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
<systemColor name="secondarySystemGroupedBackgroundColor">
|
<systemColor name="secondarySystemGroupedBackgroundColor">
|
||||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
@@ -2676,13 +2742,13 @@
|
|||||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
<systemColor name="systemBrownColor">
|
<systemColor name="systemBrownColor">
|
||||||
<color red="0.63529411759999999" green="0.51764705879999995" blue="0.36862745099999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color red="0.67450980392156867" green="0.49803921568627452" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
<systemColor name="systemGray3Color">
|
<systemColor name="systemGray3Color">
|
||||||
<color red="0.78039215689999997" green="0.78039215689999997" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color red="0.7803921568627451" green="0.7803921568627451" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
<systemColor name="systemTealColor">
|
<systemColor name="systemTealColor">
|
||||||
<color red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color red="0.0" green="0.76470588235294112" blue="0.81568627450980391" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="DL0-L5-LOv">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="24412" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="DL0-L5-LOv">
|
||||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24405"/>
|
||||||
<capability name="Image references" minToolsVersion="12.0"/>
|
<capability name="Image references" minToolsVersion="12.0"/>
|
||||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<objects>
|
<objects>
|
||||||
<viewController id="dgh-JZ-Q7z" customClass="MainFrameViewController" sceneMemberID="viewController">
|
<viewController id="dgh-JZ-Q7z" customClass="MainFrameViewController" sceneMemberID="viewController">
|
||||||
<collectionView key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" id="Rtu-AT-Alw" customClass="AppCollectionView">
|
<collectionView key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" id="Rtu-AT-Alw" customClass="AppCollectionView">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="756"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="746"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<color key="backgroundColor" red="0.3333333432674408" green="0.3333333432674408" blue="0.3333333432674408" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.3333333432674408" green="0.3333333432674408" blue="0.3333333432674408" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="15" minimumInteritemSpacing="15" id="YcZ-cR-3tK">
|
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="15" minimumInteritemSpacing="15" id="YcZ-cR-3tK">
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<objects>
|
<objects>
|
||||||
<navigationController id="ftZ-kC-fxI" sceneMemberID="viewController">
|
<navigationController id="ftZ-kC-fxI" sceneMemberID="viewController">
|
||||||
<navigationBar key="navigationBar" contentMode="scaleToFill" barStyle="black" translucent="NO" id="0ZA-Ec-QgD">
|
<navigationBar key="navigationBar" contentMode="scaleToFill" barStyle="black" translucent="NO" id="0ZA-Ec-QgD">
|
||||||
<rect key="frame" x="0.0" y="96" width="414" height="44"/>
|
<rect key="frame" x="0.0" y="96" width="414" height="54"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<color key="backgroundColor" red="0.66666668653488159" green="0.66666668653488159" blue="0.66666668653488159" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.66666668653488159" green="0.66666668653488159" blue="0.66666668653488159" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="barTintColor" red="0.66666668653488159" green="0.66666668653488159" blue="0.66666668653488159" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="barTintColor" red="0.66666668653488159" green="0.66666668653488159" blue="0.66666668653488159" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
@@ -387,7 +387,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.60000002384185791" maxValue="6" translatesAutoresizingMaskIntoConstraints="NO" id="Eke-rc-DVp" userLabel="Size Slider">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.60000002384185791" maxValue="6" translatesAutoresizingMaskIntoConstraints="NO" id="Eke-rc-DVp" userLabel="Size Slider">
|
||||||
<rect key="frame" x="103" y="0.0" width="449" height="21"/>
|
<rect key="frame" x="105" y="0.0" width="445" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -409,7 +409,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.60000002384185791" maxValue="6" translatesAutoresizingMaskIntoConstraints="NO" id="ssl-ip-Ckz" userLabel="Height Slider">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.60000002384185791" maxValue="6" translatesAutoresizingMaskIntoConstraints="NO" id="ssl-ip-Ckz" userLabel="Height Slider">
|
||||||
<rect key="frame" x="103" y="0.0" width="449" height="21"/>
|
<rect key="frame" x="105" y="0.0" width="445" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -431,7 +431,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.83300000429153442" minValue="0.0010000000474974513" maxValue="0.99900001287460327" translatesAutoresizingMaskIntoConstraints="NO" id="8Dt-CC-xry" userLabel="Alpha Slider">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.83300000429153442" minValue="0.0010000000474974513" maxValue="0.99900001287460327" translatesAutoresizingMaskIntoConstraints="NO" id="8Dt-CC-xry" userLabel="Alpha Slider">
|
||||||
<rect key="frame" x="104" y="0.0" width="144" height="21"/>
|
<rect key="frame" x="106" y="0.0" width="140" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="140" id="6X9-AU-vgE"/>
|
<constraint firstAttribute="width" constant="140" id="6X9-AU-vgE"/>
|
||||||
@@ -448,7 +448,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="m00-jb-sl5" userLabel="Widget Border Width Slider">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="m00-jb-sl5" userLabel="Widget Border Width Slider">
|
||||||
<rect key="frame" x="404" y="0.0" width="148" height="21"/>
|
<rect key="frame" x="406" y="0.0" width="144" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -470,7 +470,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="120" minValue="0.0" maxValue="350" translatesAutoresizingMaskIntoConstraints="NO" id="DCr-vG-gM7">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="120" minValue="0.0" maxValue="350" translatesAutoresizingMaskIntoConstraints="NO" id="DCr-vG-gM7">
|
||||||
<rect key="frame" x="163" y="0.0" width="389" height="21"/>
|
<rect key="frame" x="165" y="0.0" width="385" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -492,7 +492,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="Vqk-gH-0xO">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="Vqk-gH-0xO">
|
||||||
<rect key="frame" x="158" y="0.0" width="394" height="21"/>
|
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -514,7 +514,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="W7r-eN-vZJ">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="W7r-eN-vZJ">
|
||||||
<rect key="frame" x="158" y="0.0" width="394" height="21"/>
|
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -536,7 +536,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="EDj-PN-7Vp">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="EDj-PN-7Vp">
|
||||||
<rect key="frame" x="158" y="0.0" width="394" height="21"/>
|
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -558,7 +558,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="Gj9-qp-dlk">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="Gj9-qp-dlk">
|
||||||
<rect key="frame" x="158" y="0.0" width="394" height="21"/>
|
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -580,7 +580,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="ol0-mA-VxW">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="ol0-mA-VxW">
|
||||||
<rect key="frame" x="158" y="0.0" width="394" height="21"/>
|
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -602,7 +602,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="Ple-mD-zK4">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="Ple-mD-zK4">
|
||||||
<rect key="frame" x="158" y="0.0" width="394" height="21"/>
|
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -624,7 +624,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.93000000000000005" minValue="0.5" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="MFc-8O-wdZ">
|
<slider clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.93000000000000005" minValue="0.5" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="MFc-8O-wdZ">
|
||||||
<rect key="frame" x="158" y="0.0" width="394" height="21"/>
|
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||||
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</slider>
|
</slider>
|
||||||
@@ -911,7 +911,7 @@
|
|||||||
<size key="shadowOffset" width="0.0" height="0.0"/>
|
<size key="shadowOffset" width="0.0" height="0.0"/>
|
||||||
</label>
|
</label>
|
||||||
<segmentedControl verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" apportionsSegmentWidthsByContent="YES" segmentControlStyle="plain" selectedSegmentIndex="5" translatesAutoresizingMaskIntoConstraints="NO" id="7Sl-WI-zyo">
|
<segmentedControl verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" apportionsSegmentWidthsByContent="YES" segmentControlStyle="plain" selectedSegmentIndex="5" translatesAutoresizingMaskIntoConstraints="NO" id="7Sl-WI-zyo">
|
||||||
<rect key="frame" x="0.0" y="25.5" width="380" height="32"/>
|
<rect key="frame" x="0.0" y="25.5" width="380" height="35"/>
|
||||||
<segments>
|
<segments>
|
||||||
<segment title="360p" enabled="NO"/>
|
<segment title="360p" enabled="NO"/>
|
||||||
<segment title="720p"/>
|
<segment title="720p"/>
|
||||||
@@ -925,10 +925,10 @@
|
|||||||
<color key="selectedSegmentTintColor" systemColor="linkColor"/>
|
<color key="selectedSegmentTintColor" systemColor="linkColor"/>
|
||||||
</segmentedControl>
|
</segmentedControl>
|
||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="GWt-Kz-lZ9" userLabel="ResolutionInnerStack2">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="GWt-Kz-lZ9" userLabel="ResolutionInnerStack2">
|
||||||
<rect key="frame" x="0.0" y="61.5" width="380" height="31"/>
|
<rect key="frame" x="0.0" y="64.5" width="380" height="28"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Custom Resolution" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ci6-ak-aCa">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Custom Resolution" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ci6-ak-aCa">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
|
<rect key="frame" x="0.0" y="0.0" width="130" height="28"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="width" constant="130" id="6aA-NW-D4E"/>
|
<constraint firstAttribute="width" constant="130" id="6aA-NW-D4E"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -937,7 +937,7 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<switch verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kRO-HO-zKO">
|
<switch verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kRO-HO-zKO">
|
||||||
<rect key="frame" x="150" y="0.0" width="232" height="31"/>
|
<rect key="frame" x="150" y="0.0" width="232" height="28"/>
|
||||||
</switch>
|
</switch>
|
||||||
</subviews>
|
</subviews>
|
||||||
</stackView>
|
</stackView>
|
||||||
@@ -976,15 +976,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="pPC-vs-DwV" userLabel="Bitrate Stack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="pPC-vs-DwV" userLabel="Bitrate Stack">
|
||||||
<rect key="frame" x="16" y="246" width="380" height="55.5"/>
|
<rect key="frame" x="16" y="246" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Bitrate" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="459" translatesAutoresizingMaskIntoConstraints="NO" id="HvT-Ek-DAx">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Bitrate" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="459" translatesAutoresizingMaskIntoConstraints="NO" id="HvT-Ek-DAx">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="20" minValue="1" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="XZQ-na-T3z">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="20" minValue="1" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="XZQ-na-T3z">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1122,15 +1122,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" distribution="equalCentering" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Jp2-5v-Zr0" userLabel="pointerVelocityDivider Stack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" distribution="equalCentering" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Jp2-5v-Zr0" userLabel="pointerVelocityDivider Stack">
|
||||||
<rect key="frame" x="15" y="460" width="380" height="56.5"/>
|
<rect key="frame" x="15" y="460" width="380" height="56.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Divider Position" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hxU-Gq-tIl" userLabel="touchPointerVelocityDividerPosition">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Divider Position" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hxU-Gq-tIl" userLabel="touchPointerVelocityDividerPosition">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="17.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="OMw-Ew-fBX" userLabel="pointerVelocityModeDivider">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="OMw-Ew-fBX" userLabel="pointerVelocityModeDivider">
|
||||||
<rect key="frame" x="-2" y="26.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="22.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1142,15 +1142,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="PAv-Ep-ZJo" userLabel="PointerVelocityFactor stack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="PAv-Ep-ZJo" userLabel="PointerVelocityFactor stack">
|
||||||
<rect key="frame" x="15" y="524" width="380" height="56.5"/>
|
<rect key="frame" x="15" y="524" width="380" height="56.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Touch Pointer Velocity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ECJ-bg-fRJ" userLabel="touchPointerVelocityFactor">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Touch Pointer Velocity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ECJ-bg-fRJ" userLabel="touchPointerVelocityFactor">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="17.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="MSY-s4-iCj" userLabel="touchPointerVelocityFactor">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="MSY-s4-iCj" userLabel="touchPointerVelocityFactor">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="32"/>
|
<rect key="frame" x="0.0" y="22.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1162,15 +1162,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="zxb-vp-LNg" userLabel="touchMoveEventInterval Stack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="zxb-vp-LNg" userLabel="touchMoveEventInterval Stack">
|
||||||
<rect key="frame" x="16" y="671" width="380" height="56.5"/>
|
<rect key="frame" x="16" y="671" width="380" height="56.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Touch Move Event Interval" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XtQ-YN-4jb" userLabel="touchMoveEventIntervalLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Touch Move Event Interval" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XtQ-YN-4jb" userLabel="touchMoveEventIntervalLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="17.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="2667" minValue="0.0" maxValue="20000" translatesAutoresizingMaskIntoConstraints="NO" id="Qqh-Oh-dOV" userLabel="touchMoveEventIntervalSlider">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="2667" minValue="0.0" maxValue="20000" translatesAutoresizingMaskIntoConstraints="NO" id="Qqh-Oh-dOV" userLabel="touchMoveEventIntervalSlider">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="32"/>
|
<rect key="frame" x="0.0" y="22.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1182,15 +1182,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="VfU-iM-hP1" userLabel="mousePointerVelocity Stack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="VfU-iM-hP1" userLabel="mousePointerVelocity Stack">
|
||||||
<rect key="frame" x="17" y="744" width="380" height="56.5"/>
|
<rect key="frame" x="17" y="744" width="380" height="56.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Mouse Pointer Velocity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hn6-X9-TaI">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Mouse Pointer Velocity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hn6-X9-TaI">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="17.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="bXi-Xx-6MW" userLabel="mousePointerVelocityFactor">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="bXi-Xx-6MW" userLabel="mousePointerVelocityFactor">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="32"/>
|
<rect key="frame" x="0.0" y="22.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1202,15 +1202,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Nd5-0L-wpv" userLabel="gyroSensitivityStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Nd5-0L-wpv" userLabel="gyroSensitivityStack">
|
||||||
<rect key="frame" x="472" y="744" width="380" height="56.5"/>
|
<rect key="frame" x="472" y="744" width="380" height="56.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Gyro Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ecj-KO-Jim">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Gyro Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ecj-KO-Jim">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="17.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="mHC-z4-AWQ" userLabel="mousePointerVelocityFactor">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="mHC-z4-AWQ" userLabel="mousePointerVelocityFactor">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="32"/>
|
<rect key="frame" x="0.0" y="22.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1350,15 +1350,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="eom-7m-dH2" userLabel="slideToSettingsDistance Stack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="eom-7m-dH2" userLabel="slideToSettingsDistance Stack">
|
||||||
<rect key="frame" x="16" y="1263" width="380" height="55.5"/>
|
<rect key="frame" x="16" y="1263" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Gesture Slide Distance" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cti-T5-cSE" userLabel="Slide To Settings Distance UI Label">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Gesture Slide Distance" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cti-T5-cSE" userLabel="Slide To Settings Distance UI Label">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.02" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="XNA-Kx-vqV">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.02" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="XNA-Kx-vqV">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1717,15 +1717,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="9eE-iu-W90" userLabel="backgroundSessionTimerStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="9eE-iu-W90" userLabel="backgroundSessionTimerStack">
|
||||||
<rect key="frame" x="437" y="1397" width="380" height="55.5"/>
|
<rect key="frame" x="437" y="1397" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Background Session" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9et-1g-y3D" userLabel="backgroundSessionTimerLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Background Session" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9et-1g-y3D" userLabel="backgroundSessionTimerLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="61" minValue="0.0" maxValue="61" translatesAutoresizingMaskIntoConstraints="NO" id="0bT-5d-w7S">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="61" minValue="0.0" maxValue="61" translatesAutoresizingMaskIntoConstraints="NO" id="0bT-5d-w7S">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1782,17 +1782,17 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="IHx-FO-ctr" userLabel="frameQueueSize Stack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="IHx-FO-ctr" userLabel="frameQueueSize Stack">
|
||||||
<rect key="frame" x="437" y="1973" width="380" height="89.5"/>
|
<rect key="frame" x="437" y="1973" width="380" height="89.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Frames to Buffer" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r8X-jt-JfH">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Frames to Buffer" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r8X-jt-JfH">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="2" minValue="1" maxValue="5" minimumValueImage="1.square" catalog="system" maximumValueImage="5.square" translatesAutoresizingMaskIntoConstraints="NO" id="thv-JE-onX" userLabel="Frame Queue Size Selector">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="2" minValue="1" maxValue="5" minimumValueImage="1.square" catalog="system" maximumValueImage="5.square" translatesAutoresizingMaskIntoConstraints="NO" id="thv-JE-onX" userLabel="Frame Queue Size Selector">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="25.5" width="380" height="34"/>
|
||||||
</slider>
|
</slider>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="The recommended value is 2. 1 frame provides the lowest latency, but may require an Ethernet connection." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ttV-kY-jCi" userLabel="Frame Queue Size Caption">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="The recommended value is 2. 1 frame provides the lowest latency, but may require an Ethernet connection." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ttV-kY-jCi" userLabel="Frame Queue Size Caption">
|
||||||
<rect key="frame" x="0.0" y="60.5" width="380" height="29"/>
|
<rect key="frame" x="0.0" y="64.5" width="380" height="25"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||||
<color key="textColor" systemColor="secondarySystemGroupedBackgroundColor"/>
|
<color key="textColor" systemColor="secondarySystemGroupedBackgroundColor"/>
|
||||||
@@ -1956,15 +1956,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="zmq-ah-Vfh" userLabel="localVolumeStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="zmq-ah-Vfh" userLabel="localVolumeStack">
|
||||||
<rect key="frame" x="437" y="1238" width="380" height="55.5"/>
|
<rect key="frame" x="437" y="1238" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Local Volume" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GbY-52-itv" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Local Volume" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GbY-52-itv" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="7xn-es-SaH">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="7xn-es-SaH">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1996,15 +1996,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="y2W-wf-sBM" userLabel="micVolumeStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="y2W-wf-sBM" userLabel="micVolumeStack">
|
||||||
<rect key="frame" x="437" y="1155" width="380" height="55.5"/>
|
<rect key="frame" x="437" y="1155" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Mic Volume" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n6Z-cT-3a1" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Mic Volume" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n6Z-cT-3a1" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="120" translatesAutoresizingMaskIntoConstraints="NO" id="49s-nP-71W">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="120" translatesAutoresizingMaskIntoConstraints="NO" id="49s-nP-71W">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2113,15 +2113,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="pyS-Cc-IC3" userLabel="yawSensitivityStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="pyS-Cc-IC3" userLabel="yawSensitivityStack">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="55.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Yaw Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aSq-2H-FPk" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Yaw Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aSq-2H-FPk" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="JBP-uF-88R">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="JBP-uF-88R">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2133,15 +2133,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="pYu-QR-UfH" userLabel="pitchSensitivityStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="pYu-QR-UfH" userLabel="pitchSensitivityStack">
|
||||||
<rect key="frame" x="0.0" y="69.5" width="380" height="55.5"/>
|
<rect key="frame" x="0.0" y="69.5" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pitch Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yJv-xb-5HL" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Pitch Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yJv-xb-5HL" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="4AR-S2-QX8">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="4AR-S2-QX8">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="25.5" width="380" height="30"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2155,15 +2155,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="5Zq-ch-iZ4" userLabel="rollSensitivityStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="5Zq-ch-iZ4" userLabel="rollSensitivityStack">
|
||||||
<rect key="frame" x="20" y="2696" width="380" height="55.5"/>
|
<rect key="frame" x="20" y="2696" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Roll Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dxk-33-Nbx" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Roll Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dxk-33-Nbx" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="SQ5-oO-S7X">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="100" minValue="0.0" maxValue="300" translatesAutoresizingMaskIntoConstraints="NO" id="SQ5-oO-S7X">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2175,15 +2175,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Orr-Nz-gJS" userLabel="gyroMinStickOffsetStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Orr-Nz-gJS" userLabel="gyroMinStickOffsetStack">
|
||||||
<rect key="frame" x="20" y="2782" width="380" height="55.5"/>
|
<rect key="frame" x="20" y="2782" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Minimum Stick Offset" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="52u-T9-1Hv" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Minimum Stick Offset" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="52u-T9-1Hv" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="32766" translatesAutoresizingMaskIntoConstraints="NO" id="45X-gK-1ez">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="32766" translatesAutoresizingMaskIntoConstraints="NO" id="45X-gK-1ez">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2195,15 +2195,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="qaV-ZR-fo7">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="qaV-ZR-fo7">
|
||||||
<rect key="frame" x="437" y="2464" width="380" height="55.5"/>
|
<rect key="frame" x="437" y="2464" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Slide Distance Threshold" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bsU-vw-dTl" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Slide Distance Threshold" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bsU-vw-dTl" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="20" translatesAutoresizingMaskIntoConstraints="NO" id="Q2u-xB-TxU">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="20" translatesAutoresizingMaskIntoConstraints="NO" id="Q2u-xB-TxU">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2266,15 +2266,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Nfo-3b-3IK" userLabel="Edge Trigger Sensitivity">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Nfo-3b-3IK" userLabel="Edge Trigger Sensitivity">
|
||||||
<rect key="frame" x="18" y="1326" width="380" height="55.5"/>
|
<rect key="frame" x="18" y="1326" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Edge Trigger Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6PG-vr-boy">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Edge Trigger Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6PG-vr-boy">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="15" minValue="5" maxValue="50" translatesAutoresizingMaskIntoConstraints="NO" id="KRf-2B-Reb">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="15" minValue="5" maxValue="50" translatesAutoresizingMaskIntoConstraints="NO" id="KRf-2B-Reb">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2284,16 +2284,16 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="N0i-z6-WgC" userLabel="singleTapSensitivityStack">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="N0i-z6-WgC" userLabel="singleTapSensitivityStack">
|
||||||
<rect key="frame" x="437" y="2383" width="592" height="55.5"/>
|
<rect key="frame" x="437" y="2383" width="596" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Single Tap Sensitivity" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WzD-wo-Wum">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Single Tap Sensitivity" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WzD-wo-Wum">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="592" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="596" height="20.5"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="2" minValue="0.0" maxValue="5" minimumValueImage="0.square" catalog="system" maximumValueImage="5.square" translatesAutoresizingMaskIntoConstraints="NO" id="uCa-Oa-7mv" userLabel="Single Tap Sensitivity Slider">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="2" minValue="0.0" maxValue="5" minimumValueImage="0.square" catalog="system" maximumValueImage="5.square" translatesAutoresizingMaskIntoConstraints="NO" id="uCa-Oa-7mv" userLabel="Single Tap Sensitivity Slider">
|
||||||
<rect key="frame" x="-2" y="25.5" width="596" height="31"/>
|
<rect key="frame" x="0.0" y="25.5" width="596" height="30"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="30" id="XXP-GP-uhn"/>
|
<constraint firstAttribute="height" constant="30" id="XXP-GP-uhn"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -2410,15 +2410,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="1fy-XH-ApD">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="1fy-XH-ApD">
|
||||||
<rect key="frame" x="437" y="436" width="380" height="55.5"/>
|
<rect key="frame" x="437" y="436" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Scroll Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1hc-yp-cbj" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Scroll Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1hc-yp-cbj" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="3" translatesAutoresizingMaskIntoConstraints="NO" id="Iha-ti-PtK">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="3" translatesAutoresizingMaskIntoConstraints="NO" id="Iha-ti-PtK">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2430,15 +2430,15 @@
|
|||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="ZAC-ju-Qfi">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="ZAC-ju-Qfi">
|
||||||
<rect key="frame" x="437" y="516" width="380" height="55.5"/>
|
<rect key="frame" x="437" y="516" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pinch Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HTs-xj-li6" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Pinch Sensitivity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HTs-xj-li6" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="3" translatesAutoresizingMaskIntoConstraints="NO" id="Vmk-CG-V7l">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="3" translatesAutoresizingMaskIntoConstraints="NO" id="Vmk-CG-V7l">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2491,17 +2491,17 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="muF-2y-dHu">
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="muF-2y-dHu">
|
||||||
<rect key="frame" x="676" y="328" width="380" height="55.5"/>
|
<rect key="frame" x="713" y="328" width="380" height="55.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Left Click Delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5S1-w1-Wnq" userLabel="uiLabel">
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Left Click Delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5S1-w1-Wnq" userLabel="uiLabel">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="380" height="20.5"/>
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1000" translatesAutoresizingMaskIntoConstraints="NO" id="HNu-vj-Q0t">
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1000" translatesAutoresizingMaskIntoConstraints="NO" id="HNu-vj-Q0t">
|
||||||
<rect key="frame" x="-2" y="25.5" width="384" height="31"/>
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
<color key="tintColor" systemColor="linkColor"/>
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
</slider>
|
</slider>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -2530,6 +2530,66 @@
|
|||||||
<constraint firstAttribute="height" constant="31" id="qut-MF-kwq"/>
|
<constraint firstAttribute="height" constant="31" id="qut-MF-kwq"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
</stackView>
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="xyO-r6-abA">
|
||||||
|
<rect key="frame" x="434" y="2708" width="300" height="31"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Controller → Mouse" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.64999997615814209" adjustsLetterSpacingToFitWidth="YES" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="F0O-Ht-fW5" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="150" height="31"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OAq-o7-H0d">
|
||||||
|
<rect key="frame" x="170" y="0.0" width="132" height="31"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="130" id="LDl-c7-M09"/>
|
||||||
|
</constraints>
|
||||||
|
</switch>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="31" id="svn-9D-BlC"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="QuI-NM-qCU">
|
||||||
|
<rect key="frame" x="437" y="2838" width="380" height="55.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Curve Exponent" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AEN-EU-8LZ" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="1" maxValue="5" translatesAutoresizingMaskIntoConstraints="NO" id="scG-Rx-agb">
|
||||||
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
|
</slider>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="55.5" id="28R-1J-Wwa"/>
|
||||||
|
<constraint firstAttribute="width" constant="380" id="auC-uE-Gzq"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
|
<stackView verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="jxy-UY-jFk">
|
||||||
|
<rect key="frame" x="437" y="2763" width="380" height="55.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Pointer Velocity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H3s-ud-yqh" userLabel="uiLabel">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="380" height="16.5"/>
|
||||||
|
<color key="tintColor" red="0.81533776120000001" green="0.85979419950000002" blue="0.91372549020000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<slider verifyAmbiguity="off" opaque="NO" contentMode="scaleToFill" ambiguous="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="60" translatesAutoresizingMaskIntoConstraints="NO" id="CkB-cG-N8r">
|
||||||
|
<rect key="frame" x="0.0" y="21.5" width="380" height="34"/>
|
||||||
|
<color key="tintColor" systemColor="linkColor"/>
|
||||||
|
</slider>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="55.5" id="YOw-2j-9UH"/>
|
||||||
|
<constraint firstAttribute="width" constant="380" id="mG1-Vg-QwM"/>
|
||||||
|
</constraints>
|
||||||
|
</stackView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</view>
|
</view>
|
||||||
@@ -2554,6 +2614,12 @@
|
|||||||
<outlet property="citrixX1MouseSwitch" destination="zw9-ok-nQC" id="5w4-2h-gCP"/>
|
<outlet property="citrixX1MouseSwitch" destination="zw9-ok-nQC" id="5w4-2h-gCP"/>
|
||||||
<outlet property="codecSelector" destination="5Y7-To-ca2" id="Kmt-sp-eXj"/>
|
<outlet property="codecSelector" destination="5Y7-To-ca2" id="Kmt-sp-eXj"/>
|
||||||
<outlet property="codecStack" destination="cVe-Uk-gXv" id="826-Tv-rMl"/>
|
<outlet property="codecStack" destination="cVe-Uk-gXv" id="826-Tv-rMl"/>
|
||||||
|
<outlet property="controllerMouseExpoSlider" destination="scG-Rx-agb" id="K6s-eG-Zcu"/>
|
||||||
|
<outlet property="controllerMouseExpoStack" destination="QuI-NM-qCU" id="Kmp-Cc-bWI"/>
|
||||||
|
<outlet property="controllerMouseVelocitySlider" destination="CkB-cG-N8r" id="AMa-cl-2Wz"/>
|
||||||
|
<outlet property="controllerMouseVelocityStack" destination="jxy-UY-jFk" id="os6-z6-A7h"/>
|
||||||
|
<outlet property="controllerToMouseStack" destination="xyO-r6-abA" id="vWd-Hf-o4C"/>
|
||||||
|
<outlet property="controllerToMouseSwitch" destination="OAq-o7-H0d" id="xk7-q8-bjc"/>
|
||||||
<outlet property="ctrlDownForPinchStack" destination="eYW-eD-LTg" id="eQS-WT-74l"/>
|
<outlet property="ctrlDownForPinchStack" destination="eYW-eD-LTg" id="eQS-WT-74l"/>
|
||||||
<outlet property="ctrlDownForPinchSwitch" destination="q46-JG-pX4" id="jjp-BU-9RP"/>
|
<outlet property="ctrlDownForPinchSwitch" destination="q46-JG-pX4" id="jjp-BU-9RP"/>
|
||||||
<outlet property="customResolutionSwitch" destination="kRO-HO-zKO" id="ZUP-Yd-QDY"/>
|
<outlet property="customResolutionSwitch" destination="kRO-HO-zKO" id="ZUP-Yd-QDY"/>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ typedef NS_ENUM(NSInteger, HapticEnginePreference) {
|
|||||||
RumbleOff
|
RumbleOff
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef NS_ENUM(NSInteger, ControllerToMouseStick) {
|
typedef NS_ENUM(NSInteger, ControllerMouseStick) {
|
||||||
LeftStickToMouse,
|
LeftStickToMouse,
|
||||||
RightStickToMouse,
|
RightStickToMouse,
|
||||||
};
|
};
|
||||||
@@ -142,6 +142,9 @@ typedef NS_ENUM(NSInteger, WidgetSizeTransition) {
|
|||||||
leftClickDelayMs:(CGFloat)leftClickDelayMs
|
leftClickDelayMs:(CGFloat)leftClickDelayMs
|
||||||
settingsMenuOffset:(CGFloat)settingsMenuOffset
|
settingsMenuOffset:(CGFloat)settingsMenuOffset
|
||||||
passthroughGestures:(BOOL)passthroughGestures
|
passthroughGestures:(BOOL)passthroughGestures
|
||||||
|
mapControllerToMouse:(BOOL)mapControllerToMouse
|
||||||
|
controllerMousePointerVelocity:(CGFloat)controllerMousePointerVelocity
|
||||||
|
controllerMouseExpo:(CGFloat)controllerMouseExpo
|
||||||
backgroundSessionTimer:(NSInteger)backgroundSessionTimer;
|
backgroundSessionTimer:(NSInteger)backgroundSessionTimer;
|
||||||
|
|
||||||
- (NSArray*) getHosts;
|
- (NSArray*) getHosts;
|
||||||
|
|||||||
@@ -120,6 +120,9 @@
|
|||||||
leftClickDelayMs:(CGFloat)leftClickDelayMs
|
leftClickDelayMs:(CGFloat)leftClickDelayMs
|
||||||
settingsMenuOffset:(CGFloat)settingsMenuOffset
|
settingsMenuOffset:(CGFloat)settingsMenuOffset
|
||||||
passthroughGestures:(BOOL)passthroughGestures
|
passthroughGestures:(BOOL)passthroughGestures
|
||||||
|
mapControllerToMouse:(BOOL)mapControllerToMouse
|
||||||
|
controllerMousePointerVelocity:(CGFloat)controllerMousePointerVelocity
|
||||||
|
controllerMouseExpo:(CGFloat)controllerMouseExpo
|
||||||
backgroundSessionTimer:(NSInteger)backgroundSessionTimer{
|
backgroundSessionTimer:(NSInteger)backgroundSessionTimer{
|
||||||
|
|
||||||
[_managedObjectContext performBlockAndWait:^{
|
[_managedObjectContext performBlockAndWait:^{
|
||||||
@@ -190,6 +193,9 @@
|
|||||||
settingsToSave.leftClickDelayMs = [NSNumber numberWithFloat:leftClickDelayMs];
|
settingsToSave.leftClickDelayMs = [NSNumber numberWithFloat:leftClickDelayMs];
|
||||||
settingsToSave.settingsMenuOffset = [NSNumber numberWithFloat:settingsMenuOffset];
|
settingsToSave.settingsMenuOffset = [NSNumber numberWithFloat:settingsMenuOffset];
|
||||||
settingsToSave.passthroughGestures = passthroughGestures;
|
settingsToSave.passthroughGestures = passthroughGestures;
|
||||||
|
settingsToSave.mapControllerToMouse = mapControllerToMouse;
|
||||||
|
settingsToSave.controllerMousePointerVelocity = [NSNumber numberWithFloat:controllerMousePointerVelocity];
|
||||||
|
settingsToSave.controllerMouseExpo = [NSNumber numberWithFloat:controllerMouseExpo];
|
||||||
settingsToSave.rememberFoldState = rememberFoldState;
|
settingsToSave.rememberFoldState = rememberFoldState;
|
||||||
[self saveData];
|
[self saveData];
|
||||||
}];
|
}];
|
||||||
|
|||||||
@@ -95,6 +95,13 @@
|
|||||||
@property (nonatomic, retain) NSNumber * relativeTouchSlideThreshold;
|
@property (nonatomic, retain) NSNumber * relativeTouchSlideThreshold;
|
||||||
@property (nonatomic, retain) NSNumber * leftClickDelayMs;
|
@property (nonatomic, retain) NSNumber * leftClickDelayMs;
|
||||||
@property (nonatomic, retain) NSNumber * settingsMenuOffset;
|
@property (nonatomic, retain) NSNumber * settingsMenuOffset;
|
||||||
|
@property (nonatomic, retain) NSNumber * controllerMouseLeftButton;
|
||||||
|
@property (nonatomic, retain) NSNumber * controllerMouseRightButton;
|
||||||
|
@property (nonatomic, retain) NSNumber * controllerMouseStick;
|
||||||
|
@property (nonatomic, retain) NSNumber * controllerMouseSwitch;
|
||||||
|
@property (nonatomic) BOOL mapControllerToMouse;
|
||||||
|
@property (nonatomic, retain) NSNumber * controllerMousePointerVelocity;
|
||||||
|
@property (nonatomic, retain) NSNumber * controllerMouseExpo;
|
||||||
|
|
||||||
- (id) initFromSettings:(Settings*)settings;
|
- (id) initFromSettings:(Settings*)settings;
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,14 @@
|
|||||||
self.ctrlDownForPinch = settings.ctrlDownForPinch;
|
self.ctrlDownForPinch = settings.ctrlDownForPinch;
|
||||||
self.settingsMenuOffset = settings.settingsMenuOffset;
|
self.settingsMenuOffset = settings.settingsMenuOffset;
|
||||||
self.passthroughGestures = settings.passthroughGestures;
|
self.passthroughGestures = settings.passthroughGestures;
|
||||||
|
self.mapControllerToMouse = settings.mapControllerToMouse;
|
||||||
|
self.controllerMouseLeftButton = settings.controllerMouseLeftButton;
|
||||||
|
self.controllerMouseRightButton = settings.controllerMouseRightButton;
|
||||||
|
self.controllerMouseSwitch = settings.controllerMouseSwitch;
|
||||||
|
self.controllerMouseStick = settings.controllerMouseStick;
|
||||||
|
self.controllerMousePointerVelocity = settings.controllerMousePointerVelocity;
|
||||||
|
self.controllerMouseExpo = settings.controllerMouseExpo;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
|||||||
@@ -50,12 +50,21 @@ static const double MOUSE_SPEED_DIVISOR = 1.25;
|
|||||||
float accumulatedScrollX;
|
float accumulatedScrollX;
|
||||||
float accumulatedScrollY;
|
float accumulatedScrollY;
|
||||||
|
|
||||||
ControllerToMouseStick controllerToMouseStick;
|
int _controllerMouseSwitch;
|
||||||
bool _stickToMouseEnabled;
|
bool _mouseSwitchButtonPressed;
|
||||||
|
bool _mouseSwitchButtonBeingClicked;
|
||||||
|
NSTimeInterval mouseSwitchDownTimestamp;
|
||||||
|
int _controllerMouseLeftButton;
|
||||||
|
int _controllerMouseRightButton;
|
||||||
|
ControllerMouseStick _controllerMouseStick;
|
||||||
|
bool _mapControllerToMouse;
|
||||||
|
bool _controllerMouseEnabledFlag;
|
||||||
float stickToMouseInputX;
|
float stickToMouseInputX;
|
||||||
float stickToMouseInputY;
|
float stickToMouseInputY;
|
||||||
float stickToMouseExpo;
|
float stickToWheelInputX;
|
||||||
float stickToMouseVelocity;
|
float stickToWheelInputY;
|
||||||
|
float _stickToMouseExpo;
|
||||||
|
float _stickToMouseVelocity;
|
||||||
CADisplayLink *_displayLink;
|
CADisplayLink *_displayLink;
|
||||||
|
|
||||||
|
|
||||||
@@ -939,19 +948,19 @@ static const double MOUSE_SPEED_DIVISOR = 1.25;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double rc_expo(double x, double gamma) {
|
double rc_expo(double x, double expo) {
|
||||||
if (x == 0.0) return 0.0;
|
if (x == 0.0) return 0.0;
|
||||||
|
|
||||||
double ax = fabs(x);
|
double ax = fabs(x);
|
||||||
double y = pow(ax, gamma);
|
double y = pow(ax, expo);
|
||||||
|
|
||||||
return x > 0 ? y : -y;
|
return x > 0 ? y : -y;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)sendStickToMouseMoveEventWithStickX:(float)stickX stickY:(float)stickY expo:(float)expo {
|
- (void)sendStickToMouseMoveEventWithStickX:(float)stickX stickY:(float)stickY expo:(float)expo {
|
||||||
CGFloat mouseDeltaX = stickToMouseVelocity*rc_expo(stickX, expo);
|
CGFloat mouseDeltaX = _stickToMouseVelocity*rc_expo(stickX, expo);
|
||||||
CGFloat mouseDeltaY = stickToMouseVelocity*rc_expo(stickY, expo);
|
CGFloat mouseDeltaY = _stickToMouseVelocity*rc_expo(stickY, expo);
|
||||||
// NSLog(@"mouseDeltaX %f, mouseDeltaY %f, %f, %ld", mouseDeltaX, mouseDeltaY, CACurrentMediaTime(), (long)_displayLink.preferredFramesPerSecond);
|
NSLog(@"mouseDeltaX %f, mouseDeltaY %f, %f, %ld", mouseDeltaX, mouseDeltaY, CACurrentMediaTime(), (long)_displayLink.preferredFramesPerSecond);
|
||||||
LiSendMouseMoveEvent(mouseDeltaX, -mouseDeltaY);
|
LiSendMouseMoveEvent(mouseDeltaX, -mouseDeltaY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -961,8 +970,26 @@ double rc_expo(double x, double gamma) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)displayLinkCallBack {
|
- (void)displayLinkCallBack {
|
||||||
if(!_stickToMouseEnabled) return;
|
if(!_controllerMouseEnabledFlag){
|
||||||
[self sendStickToMouseMoveEventWithStickX:stickToMouseInputX stickY:stickToMouseInputY expo:stickToMouseExpo];
|
return;
|
||||||
|
}
|
||||||
|
NSTimeInterval delay = 0.5/_displayLink.preferredFramesPerSecond*NSEC_PER_SEC;
|
||||||
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||||
|
[self sendStickToMouseMoveEventWithStickX:self->stickToMouseInputX stickY:self->stickToMouseInputY expo:self->_stickToMouseExpo];
|
||||||
|
LiSendHighResScrollEvent(15*self->stickToWheelInputY);
|
||||||
|
LiSendHighResHScrollEvent(15*self->stickToWheelInputX);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)sendControllerMouseSwitchClick:(VoidController*) voidController{
|
||||||
|
[self setButtonFlag:voidController flags:self->_controllerMouseSwitch];
|
||||||
|
_mouseSwitchButtonBeingClicked = true;
|
||||||
|
[self updateFinished:voidController];
|
||||||
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.03*NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||||
|
[self clearButtonFlag:voidController flags:self->_controllerMouseSwitch];
|
||||||
|
self->_mouseSwitchButtonBeingClicked = false;
|
||||||
|
[self updateFinished:voidController];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void) registerControllerCallbacks:(GCController*) controller
|
-(void) registerControllerCallbacks:(GCController*) controller
|
||||||
@@ -1009,6 +1036,42 @@ double rc_expo(double x, double gamma) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(self->_swapABXYButtons){
|
||||||
|
switch (self->_controllerMouseLeftButton) {
|
||||||
|
case ControllerButtonA:
|
||||||
|
self->_controllerMouseLeftButton = ControllerButtonB;
|
||||||
|
break;
|
||||||
|
case ControllerButtonB:
|
||||||
|
self->_controllerMouseLeftButton = ControllerButtonA;
|
||||||
|
break;
|
||||||
|
case ControllerButtonX:
|
||||||
|
self->_controllerMouseLeftButton = ControllerButtonY;
|
||||||
|
break;
|
||||||
|
case ControllerButtonY:
|
||||||
|
self->_controllerMouseLeftButton = ControllerButtonX;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (self->_controllerMouseRightButton) {
|
||||||
|
case ControllerButtonA:
|
||||||
|
self->_controllerMouseRightButton = ControllerButtonB;
|
||||||
|
break;
|
||||||
|
case ControllerButtonB:
|
||||||
|
self->_controllerMouseRightButton = ControllerButtonA;
|
||||||
|
break;
|
||||||
|
case ControllerButtonX:
|
||||||
|
self->_controllerMouseRightButton = ControllerButtonY;
|
||||||
|
break;
|
||||||
|
case ControllerButtonY:
|
||||||
|
self->_controllerMouseRightButton = ControllerButtonX;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[ControllerUtil listenWithController:controller swapABXY:self->_swapABXYButtons handler:^(NSDictionary * buttonDict, GCExtendedGamepad * gamepad, GCControllerElement * element) {
|
[ControllerUtil listenWithController:controller swapABXY:self->_swapABXYButtons handler:^(NSDictionary * buttonDict, GCExtendedGamepad * gamepad, GCControllerElement * element) {
|
||||||
VoidController* voidController = [self->_voidControllers objectForKey:[NSNumber numberWithInteger:gamepad.controller.playerIndex]];
|
VoidController* voidController = [self->_voidControllers objectForKey:[NSNumber numberWithInteger:gamepad.controller.playerIndex]];
|
||||||
short leftStickX, leftStickY;
|
short leftStickX, leftStickY;
|
||||||
@@ -1017,17 +1080,74 @@ double rc_expo(double x, double gamma) {
|
|||||||
|
|
||||||
for(NSNumber* buttonFlagId in buttonDict){
|
for(NSNumber* buttonFlagId in buttonDict){
|
||||||
GCControllerButtonInput * button = (GCControllerButtonInput *)buttonDict[buttonFlagId];
|
GCControllerButtonInput * button = (GCControllerButtonInput *)buttonDict[buttonFlagId];
|
||||||
UPDATE_BUTTON_FLAG(voidController, buttonFlagId.intValue, button.pressed);
|
if(self->_mapControllerToMouse){
|
||||||
|
|
||||||
|
if(button.pressed){
|
||||||
|
if(buttonFlagId.intValue == self->_controllerMouseSwitch){
|
||||||
|
self->_mouseSwitchButtonPressed = true;
|
||||||
|
self->mouseSwitchDownTimestamp = CACurrentMediaTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
if(buttonFlagId.intValue == self->_controllerMouseSwitch && self->_mouseSwitchButtonPressed){
|
||||||
|
if(CACurrentMediaTime()-self->mouseSwitchDownTimestamp>1){
|
||||||
|
self->_controllerMouseEnabledFlag = !self->_controllerMouseEnabledFlag;
|
||||||
|
}
|
||||||
|
else [self sendControllerMouseSwitchClick:voidController];
|
||||||
|
self->_mouseSwitchButtonPressed = false;
|
||||||
|
self->mouseSwitchDownTimestamp = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* if(buttonFlagId.intValue == self->_controllerMouseSwitch){
|
||||||
|
if(button.pressed){
|
||||||
|
self->_mouseSwitchButtonPressed = true;
|
||||||
|
self->mouseSwitchDownTimestamp = CACurrentMediaTime();
|
||||||
|
}
|
||||||
|
else if(self->_mouseSwitchButtonPressed){
|
||||||
|
if(CACurrentMediaTime()-self->mouseSwitchDownTimestamp>1){
|
||||||
|
self->_controllerMouseEnabledFlag = !self->_controllerMouseEnabledFlag;
|
||||||
|
self->_mouseSwitchButtonPressed = false;
|
||||||
|
self->mouseSwitchDownTimestamp = 0;
|
||||||
|
}
|
||||||
|
else [self sendControllerMouseSwitchClick:voidController];
|
||||||
|
}
|
||||||
|
else self->_mouseSwitchButtonPressed = false;
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
else self->_controllerMouseEnabledFlag = false;
|
||||||
|
|
||||||
|
if(self->_controllerMouseEnabledFlag){
|
||||||
|
if(buttonFlagId.intValue == self->_controllerMouseLeftButton || buttonFlagId.intValue == self->_controllerMouseRightButton){
|
||||||
|
if(buttonFlagId.intValue == self->_controllerMouseLeftButton) LiSendMouseButtonEvent(button.pressed ? BUTTON_ACTION_PRESS : BUTTON_ACTION_RELEASE, BUTTON_LEFT);
|
||||||
|
if(buttonFlagId.intValue == self->_controllerMouseRightButton) LiSendMouseButtonEvent(button.pressed ? BUTTON_ACTION_PRESS : BUTTON_ACTION_RELEASE, BUTTON_RIGHT);
|
||||||
|
UPDATE_BUTTON_FLAG(voidController, buttonFlagId.intValue, NO);
|
||||||
|
}
|
||||||
|
else if(buttonFlagId.intValue!=self->_controllerMouseSwitch) UPDATE_BUTTON_FLAG(voidController, buttonFlagId.intValue, button.pressed);
|
||||||
|
}
|
||||||
|
else if(buttonFlagId.intValue!=self->_controllerMouseSwitch) UPDATE_BUTTON_FLAG(voidController, buttonFlagId.intValue, button.pressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
leftStickX = self->controllerToMouseStick != LeftStickToMouse ? gamepad.leftThumbstick.xAxis.value * 0x7FFE : 0;
|
leftStickX = self->_controllerMouseEnabledFlag ? 0 :gamepad.leftThumbstick.xAxis.value * 0x7FFE;
|
||||||
leftStickY = self->controllerToMouseStick != LeftStickToMouse ? gamepad.leftThumbstick.yAxis.value * 0x7FFE : 0;;
|
leftStickY = self->_controllerMouseEnabledFlag ? 0 : gamepad.leftThumbstick.yAxis.value * 0x7FFE;
|
||||||
|
|
||||||
rightStickX = self->controllerToMouseStick != RightStickToMouse ? gamepad.rightThumbstick.xAxis.value * 0x7FFE : 0;
|
rightStickX = self->_controllerMouseEnabledFlag ? 0 : gamepad.rightThumbstick.xAxis.value * 0x7FFE;
|
||||||
rightStickY = self->controllerToMouseStick != RightStickToMouse ? gamepad.rightThumbstick.yAxis.value * 0x7FFE : 0;
|
rightStickY = self->_controllerMouseEnabledFlag ? 0 : gamepad.rightThumbstick.yAxis.value * 0x7FFE;
|
||||||
|
|
||||||
self->stickToMouseInputX = self->controllerToMouseStick == LeftStickToMouse ? gamepad.leftThumbstick.xAxis.value : gamepad.rightThumbstick.xAxis.value;
|
if(self->_controllerMouseEnabledFlag){
|
||||||
self->stickToMouseInputY = self->controllerToMouseStick == LeftStickToMouse ? gamepad.leftThumbstick.yAxis.value : gamepad.rightThumbstick.yAxis.value;
|
self->stickToMouseInputX = self->_controllerMouseStick == LeftStickToMouse ? gamepad.leftThumbstick.xAxis.value : gamepad.rightThumbstick.xAxis.value;
|
||||||
|
self->stickToMouseInputY = self->_controllerMouseStick == LeftStickToMouse ? gamepad.leftThumbstick.yAxis.value : gamepad.rightThumbstick.yAxis.value;
|
||||||
|
|
||||||
|
self->stickToWheelInputX = self->_controllerMouseStick == LeftStickToMouse ? gamepad.rightThumbstick.xAxis.value: gamepad.leftThumbstick.xAxis.value;
|
||||||
|
self->stickToWheelInputY = self->_controllerMouseStick == LeftStickToMouse ? gamepad.rightThumbstick.yAxis.value: gamepad.leftThumbstick.yAxis.value;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
self->stickToMouseInputX = 0;
|
||||||
|
self->stickToMouseInputY = 0;
|
||||||
|
}
|
||||||
|
|
||||||
leftTrigger = gamepad.leftTrigger.value * 0xFF;
|
leftTrigger = gamepad.leftTrigger.value * 0xFF;
|
||||||
rightTrigger = gamepad.rightTrigger.value * 0xFF;
|
rightTrigger = gamepad.rightTrigger.value * 0xFF;
|
||||||
@@ -1036,6 +1156,19 @@ double rc_expo(double x, double gamma) {
|
|||||||
[self updateRightStick:voidController x:rightStickX y:rightStickY];
|
[self updateRightStick:voidController x:rightStickX y:rightStickY];
|
||||||
[self updateTriggers:voidController left:leftTrigger right:rightTrigger];
|
[self updateTriggers:voidController left:leftTrigger right:rightTrigger];
|
||||||
[self updateFinished:voidController];
|
[self updateFinished:voidController];
|
||||||
|
|
||||||
|
if (@available(iOS 14.0, *)) {
|
||||||
|
if (gamepad.controller.physicalInputProfile.dpads[GCInputDualShockTouchpadOne]) {
|
||||||
|
[self handleControllerTouchpad:voidController
|
||||||
|
touch:gamepad.controller.physicalInputProfile.dpads[GCInputDualShockTouchpadOne]
|
||||||
|
index:0];
|
||||||
|
}
|
||||||
|
if (gamepad.controller.physicalInputProfile.dpads[GCInputDualShockTouchpadTwo]) {
|
||||||
|
[self handleControllerTouchpad:voidController
|
||||||
|
touch:gamepad.controller.physicalInputProfile.dpads[GCInputDualShockTouchpadTwo]
|
||||||
|
index:1];
|
||||||
|
}
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1485,15 +1618,28 @@ double rc_expo(double x, double gamma) {
|
|||||||
_oscEnabled = _oscEnabled || (OnScreenControlsLevel)[tempSettings.onscreenControls integerValue] != OnScreenControlsLevelOff || streamConfig.gyroMode != GyroModeOff;
|
_oscEnabled = _oscEnabled || (OnScreenControlsLevel)[tempSettings.onscreenControls integerValue] != OnScreenControlsLevelOff || streamConfig.gyroMode != GyroModeOff;
|
||||||
_gyroSensitivity = tempSettings.gyroSensitivity.floatValue;
|
_gyroSensitivity = tempSettings.gyroSensitivity.floatValue;
|
||||||
|
|
||||||
_stickToMouseEnabled = true;
|
_mapControllerToMouse = tempSettings.mapControllerToMouse;
|
||||||
controllerToMouseStick = LeftStickToMouse;
|
_controllerMouseSwitch = tempSettings.controllerMouseSwitch.intValue;
|
||||||
stickToMouseExpo = 1.1;
|
mouseSwitchDownTimestamp = 0;
|
||||||
stickToMouseVelocity = 21*60/tempSettings.framerate.intValue;
|
_mouseSwitchButtonPressed = false;
|
||||||
|
_mouseSwitchButtonBeingClicked = false;
|
||||||
|
_controllerMouseStick = tempSettings.controllerMouseStick.intValue;
|
||||||
|
_controllerMouseLeftButton = tempSettings.controllerMouseLeftButton.intValue;
|
||||||
|
_controllerMouseRightButton = tempSettings.controllerMouseRightButton.intValue;
|
||||||
|
_stickToMouseExpo = tempSettings.controllerMouseExpo.floatValue;
|
||||||
|
_stickToMouseVelocity = tempSettings.controllerMousePointerVelocity.floatValue*60/tempSettings.framerate.intValue;
|
||||||
stickToMouseInputX = 0;
|
stickToMouseInputX = 0;
|
||||||
stickToMouseInputY = 0;
|
stickToMouseInputY = 0;
|
||||||
|
stickToWheelInputY = 0;
|
||||||
[self stopDisplayLink];
|
[self stopDisplayLink];
|
||||||
if(_stickToMouseEnabled){
|
if(_mapControllerToMouse){
|
||||||
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCallBack)];
|
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCallBack)];
|
||||||
|
if (@available(iOS 15.0, tvOS 15.0, *)) {
|
||||||
|
[_displayLink setPreferredFrameRateRange:CAFrameRateRangeMake(tempSettings.framerate.intValue,tempSettings.framerate.intValue, tempSettings.framerate.intValue)];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_displayLink.preferredFramesPerSecond = tempSettings.framerate.intValue;
|
||||||
|
}
|
||||||
[_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
|
[_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1688,6 +1834,7 @@ double rc_expo(double x, double gamma) {
|
|||||||
[self initializeControllerHaptics:_oscController];
|
[self initializeControllerHaptics:_oscController];
|
||||||
_gyroMode = AlwaysDevice;
|
_gyroMode = AlwaysDevice;
|
||||||
|
|
||||||
|
_controllerMouseEnabledFlag = false;
|
||||||
[self updateCommonConfig:streamConfig];
|
[self updateCommonConfig:streamConfig];
|
||||||
|
|
||||||
for(VoidController* voidController in _voidControllers.allValues){
|
for(VoidController* voidController in _voidControllers.allValues){
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ import GameController
|
|||||||
case touchpad = 0x100000
|
case touchpad = 0x100000
|
||||||
case misc = 0x200000
|
case misc = 0x200000
|
||||||
|
|
||||||
case leftTrigger, rightTrigger
|
case leftTrigger = 0x400000
|
||||||
|
case rightTrigger = 0x800000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23788.4" systemVersion="24G325" minimumToolsVersion="Xcode 7.3" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="">
|
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="24411" systemVersion="24G325" minimumToolsVersion="Xcode 7.3" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="">
|
||||||
<entity name="App" representedClassName="App" syncable="YES" codeGenerationType="class">
|
<entity name="App" representedClassName="App" syncable="YES" codeGenerationType="class">
|
||||||
<attribute name="hdrSupported" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="hdrSupported" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="hidden" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="hidden" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
@@ -29,6 +29,12 @@
|
|||||||
<attribute name="bitrate" attributeType="Integer 32" defaultValueString="10000" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="bitrate" attributeType="Integer 32" defaultValueString="10000" usesScalarValueType="NO" syncable="YES"/>
|
||||||
<attribute name="btMouseSupport" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="btMouseSupport" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="buttonVisualFeedback" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="buttonVisualFeedback" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
<attribute name="controllerMouseExpo" optional="YES" attributeType="Float" defaultValueString="1.6" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="controllerMouseLeftButton" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="controllerMousePointerVelocity" optional="YES" attributeType="Float" defaultValueString="12" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="controllerMouseRightButton" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="controllerMouseStick" attributeType="Integer 16" defaultValueString="1024" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="controllerMouseSwitch" attributeType="Integer 32" defaultValueString="1024" usesScalarValueType="NO" syncable="YES"/>
|
||||||
<attribute name="ctrlDownForPinch" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="ctrlDownForPinch" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="delayLeftClick" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="delayLeftClick" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="deviceGyroMode" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="deviceGyroMode" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
||||||
@@ -57,6 +63,7 @@
|
|||||||
<attribute name="liftStreamViewForKeyboard" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="liftStreamViewForKeyboard" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="localMousePointerMode" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="localMousePointerMode" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
|
||||||
<attribute name="localVolume" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="localVolume" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
||||||
|
<attribute name="mapControllerToMouse" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
|
||||||
<attribute name="micVolume" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="micVolume" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
||||||
<attribute name="mousePointerVelocityFactor" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
<attribute name="mousePointerVelocityFactor" optional="YES" attributeType="Float" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
|
||||||
<attribute name="multiController" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
<attribute name="multiController" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES" syncable="YES"/>
|
||||||
|
|||||||
@@ -1399,6 +1399,29 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Continue" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "继续"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "繼續"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "繼續"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Controller" : {
|
"Controller" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -1422,6 +1445,35 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"controllerMouseExpoStackTip" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "The larger this value is, the flatter the curve becomes near the zero point (center). When set to 1, it is completely linear."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "该值越大,接近零点(中心点)的曲线越平缓。为 1 时则为完全线性。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "該值越大,接近零點(中心點)的曲線越平緩。為 1 時則為完全線性。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "該值越大,接近零點(中心點)的曲線越平緩。為 1 時則為完全線性。"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Create New" : {
|
"Create New" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -2223,6 +2275,29 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Finished" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "完成"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "完成"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "完成"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Finished!" : {
|
"Finished!" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -3151,6 +3226,29 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Map controller to mouse" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手柄映射为鼠标"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手柄映射為滑鼠"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手柄映射為滑鼠"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"micPermissionTip" : {
|
"micPermissionTip" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -3347,6 +3445,29 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Move the stick you wish to use for mouse control. Another stick will be used for vertical & horizontal scroll." : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "移动用于控制鼠标指针的摇杆。另一侧的摇杆将用于控制垂直、水平滚动。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "移動用於控制滑鼠指標的搖桿。另一側的搖桿將用於控制垂直、水平滾動。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "移動用於控制滑鼠指標的搖桿。另一側的搖桿將用於控制垂直、水平滾動。"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"name" : {
|
"name" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -4136,19 +4257,19 @@
|
|||||||
},
|
},
|
||||||
"zh-Hans" : {
|
"zh-Hans" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "needs_review",
|
"state" : "translated",
|
||||||
"value" : "- App切后台时自动开启画中画, 需要打开 iOS 设置-> 多任务与手势 -> 自动开启画中画。\n\n- 画中画可在工具箱菜单中手动开启。\n\n- 画中画时长由 “其他 -> 后台会话” 设置项控制\n\n- 仅 iOS15+ 支持画中画。"
|
"value" : "- App切后台时自动开启画中画, 需要打开 iOS 设置-> 多任务与手势 -> 自动开启画中画。\n\n- 画中画可在工具箱菜单中手动开启。\n\n- 画中画时长由 “其他 -> 后台会话” 设置项控制\n\n- 仅 iOS15+ 支持画中画。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh-Hant" : {
|
"zh-Hant" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "needs_review",
|
"state" : "translated",
|
||||||
"value" : "- App 切到背景時會自動啟用子母畫面,需開啟 iOS 「設定」→「多工與手勢」→「自動啟用子母畫面」。\n\n- 子母畫面也可透過工具箱選單手動啟用。\n\n- 子母畫面顯示時長由「其他」→「背景執行」設定項目控制。\n\n- 子母畫面功能自 iOS 15 起支援。"
|
"value" : "- App 切到背景時會自動啟用子母畫面,需開啟 iOS 「設定」→「多工與手勢」→「自動啟用子母畫面」。\n\n- 子母畫面也可透過工具箱選單手動啟用。\n\n- 子母畫面顯示時長由「其他」→「背景執行」設定項目控制。\n\n- 子母畫面功能自 iOS 15 起支援。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh-HK" : {
|
"zh-HK" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "needs_review",
|
"state" : "translated",
|
||||||
"value" : "- App 切到背景時會自動啟用子母畫面,需開啟 iOS 「設定」→「多工與手勢」→「自動啟用子母畫面」。\n\n- 子母畫面也可透過工具箱選單手動啟用。\n\n- 子母畫面顯示時長由「其他」→「背景執行」設定項目控制。\n\n- 子母畫面功能自 iOS 15 起支援。"
|
"value" : "- App 切到背景時會自動啟用子母畫面,需開啟 iOS 「設定」→「多工與手勢」→「自動啟用子母畫面」。\n\n- 子母畫面也可透過工具箱選單手動啟用。\n\n- 子母畫面顯示時長由「其他」→「背景執行」設定項目控制。\n\n- 子母畫面功能自 iOS 15 起支援。"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4327,7 +4448,7 @@
|
|||||||
},
|
},
|
||||||
"zh-Hant" : {
|
"zh-Hant" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "needs_review",
|
"state" : "translated",
|
||||||
"value" : "觸控靈敏度:調整螢幕右半邊觸控點的移動速度,讓您可以控制遊戲內攝影機的靈敏度(適用於《原神》和《崩壞:星穹鐵道》)。詳情請參閱線上文件。"
|
"value" : "觸控靈敏度:調整螢幕右半邊觸控點的移動速度,讓您可以控制遊戲內攝影機的靈敏度(適用於《原神》和《崩壞:星穹鐵道》)。詳情請參閱線上文件。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -4362,6 +4483,75 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Press a button for switching to controller mouse mode (long press for 1 second during streaming)" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用于切换手柄鼠标模式的按键(串流时长按1秒切换)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用於切換手柄滑鼠模式的按鍵(串流時長按 1 秒切換)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用於切換手柄滑鼠模式的按鍵(串流時長按 1 秒切換)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Press the button for mouse left button" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用于操作鼠标左键的按键"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用於操作滑鼠左鍵的按鍵"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用於操作滑鼠左鍵的按鍵"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Press the button for mouse right button" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用于操作鼠标右键的按键"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用於操作滑鼠右鍵的按鍵"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "按下用於操作滑鼠右鍵的按鍵"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Profile %@ duplicated from current layout" : {
|
"Profile %@ duplicated from current layout" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
|||||||
@@ -79,6 +79,10 @@
|
|||||||
|
|
||||||
NSTimer *_foregroundHostUpdateTimer;
|
NSTimer *_foregroundHostUpdateTimer;
|
||||||
|
|
||||||
|
id _controllerConnectObserver;
|
||||||
|
id _controllerDisconnectObserver;
|
||||||
|
|
||||||
|
|
||||||
#if TARGET_OS_TV
|
#if TARGET_OS_TV
|
||||||
UITapGestureRecognizer* _menuRecognizer;
|
UITapGestureRecognizer* _menuRecognizer;
|
||||||
#endif
|
#endif
|
||||||
@@ -1626,6 +1630,25 @@ static NSMutableSet* hostList;
|
|||||||
__unused UIView *view = viewController.view;
|
__unused UIView *view = viewController.view;
|
||||||
|
|
||||||
snapshot = nil;
|
snapshot = nil;
|
||||||
|
|
||||||
|
_controllerConnectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidConnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
|
||||||
|
Log(LOG_I, @"Controller connected!");
|
||||||
|
GCController* controller = note.object;
|
||||||
|
if(controller){
|
||||||
|
if (@available(iOS 14.0, tvOS 14.0, *)) {
|
||||||
|
for (GCControllerElement* element in controller.physicalInputProfile.allElements) {
|
||||||
|
element.preferredSystemGestureState = GCSystemGestureStateDisabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
|
_controllerDisconnectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidDisconnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
|
||||||
|
Log(LOG_I, @"Controller disconnected!");
|
||||||
|
|
||||||
|
GCController* controller = note.object;
|
||||||
|
[self unregisterControllerCallbacks:controller];
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)viewDidLayoutSubviews{
|
-(void)viewDidLayoutSubviews{
|
||||||
@@ -1837,7 +1860,6 @@ static NSMutableSet* hostList;
|
|||||||
if([self isFirstLaunch])[self helpButtonTapped];
|
if([self isFirstLaunch])[self helpButtonTapped];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)viewWillDisappear:(BOOL)animated{
|
- (void)viewWillDisappear:(BOOL)animated{
|
||||||
NSLog(@"willDisappear");
|
NSLog(@"willDisappear");
|
||||||
[super viewWillDisappear:animated];
|
[super viewWillDisappear:animated];
|
||||||
@@ -1893,6 +1915,8 @@ static NSMutableSet* hostList;
|
|||||||
|
|
||||||
// Remove our lifetime observers to avoid triggering them
|
// Remove our lifetime observers to avoid triggering them
|
||||||
// while streaming
|
// while streaming
|
||||||
|
[[NSNotificationCenter defaultCenter] removeObserver:_controllerConnectObserver];
|
||||||
|
[[NSNotificationCenter defaultCenter] removeObserver:_controllerDisconnectObserver];
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2296,4 +2320,14 @@ static NSMutableSet* hostList;
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void) unregisterControllerCallbacks:(GCController*) controller
|
||||||
|
{
|
||||||
|
if (controller != NULL) {
|
||||||
|
controller.controllerPausedHandler = NULL;
|
||||||
|
if (controller.extendedGamepad != NULL) {
|
||||||
|
controller.extendedGamepad.valueChangedHandler = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -214,6 +214,15 @@
|
|||||||
@property (strong, nonatomic) IBOutlet UIStackView *passthroughGesturesStack;
|
@property (strong, nonatomic) IBOutlet UIStackView *passthroughGesturesStack;
|
||||||
@property (strong, nonatomic) IBOutlet UISwitch *passthroughGesturesSwitch;
|
@property (strong, nonatomic) IBOutlet UISwitch *passthroughGesturesSwitch;
|
||||||
|
|
||||||
|
@property (strong, nonatomic) IBOutlet UIStackView *controllerToMouseStack;
|
||||||
|
@property (strong, nonatomic) IBOutlet UISwitch *controllerToMouseSwitch;
|
||||||
|
|
||||||
|
@property (strong, nonatomic) IBOutlet UIStackView *controllerMouseVelocityStack;
|
||||||
|
@property (strong, nonatomic) IBOutlet UISlider *controllerMouseVelocitySlider;
|
||||||
|
|
||||||
|
@property (strong, nonatomic) IBOutlet UIStackView *controllerMouseExpoStack;
|
||||||
|
@property (strong, nonatomic) IBOutlet UISlider *controllerMouseExpoSlider;
|
||||||
|
|
||||||
@property (strong, nonatomic) IBOutlet UIStackView *testStack;
|
@property (strong, nonatomic) IBOutlet UIStackView *testStack;
|
||||||
|
|
||||||
@property (nonatomic, strong) MicHandler *micHandler;
|
@property (nonatomic, strong) MicHandler *micHandler;
|
||||||
|
|||||||
@@ -55,6 +55,8 @@
|
|||||||
MenuSectionView *otherSection;
|
MenuSectionView *otherSection;
|
||||||
MenuSectionView *experimentalSection;
|
MenuSectionView *experimentalSection;
|
||||||
NSMutableSet* hiddenStacks;
|
NSMutableSet* hiddenStacks;
|
||||||
|
|
||||||
|
GCController *capturedController;
|
||||||
}
|
}
|
||||||
|
|
||||||
@dynamic overrideUserInterfaceStyle;
|
@dynamic overrideUserInterfaceStyle;
|
||||||
@@ -450,14 +452,15 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self->motionControlSection setExpanded:self->motionControlSection.expandable];
|
[self->motionControlSection setExpanded:self->motionControlSection.expandable];
|
||||||
__weak typeof(self) weakSelf = self;
|
__weak typeof(self) weakSelf = self;
|
||||||
self->motionControlSection.lockedSectionHandler = ^{
|
self->motionControlSection.lockedSectionHandler = ^{
|
||||||
[CountdownAlertController showAlertIn:weakSelf
|
[AlertControllerUtil showAlertIn:weakSelf
|
||||||
title:[LocalizationHelper localizedStringForKey:@"Tips"]
|
title:[LocalizationHelper localizedStringForKey:@"Tips"]
|
||||||
message:[LocalizationHelper localizedStringForKey:@"Tap 'OK' to set on-screen widget to 'Custom' and enable motion control."]
|
message:[LocalizationHelper localizedStringForKey:@"Tap 'OK' to set on-screen widget to 'Custom' and enable motion control."]
|
||||||
withCancel:YES
|
withCancel:YES
|
||||||
buttonTitle:[LocalizationHelper localizedStringForKey:@"OK"]
|
buttonTitle:[LocalizationHelper localizedStringForKey:@"OK"]
|
||||||
countdown:0
|
countdown:0
|
||||||
|
action:^{}
|
||||||
completion:^{
|
completion:^{
|
||||||
if(!CountdownAlertController.actionCancelled){
|
if(!AlertControllerUtil.actionCancelled){
|
||||||
[weakSelf.onScreenWidgetSelector setSelectedSegmentIndex:OnScreenControlsLevelCustom];
|
[weakSelf.onScreenWidgetSelector setSelectedSegmentIndex:OnScreenControlsLevelCustom];
|
||||||
if(weakSelf.touchModeSelector1.selectedSegmentIndex == NativeTouch){
|
if(weakSelf.touchModeSelector1.selectedSegmentIndex == NativeTouch){
|
||||||
[weakSelf.enableOswForNativeTouchSwitch setOn:true];
|
[weakSelf.enableOswForNativeTouchSwitch setOn:true];
|
||||||
@@ -760,6 +763,9 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self addSetting:self.emulatedControllerTypeStack ofId:@"emulatedControllerTypeStack" withInfoTag:YES withDynamicLabel:NO to:controllerSection];
|
[self addSetting:self.emulatedControllerTypeStack ofId:@"emulatedControllerTypeStack" withInfoTag:YES withDynamicLabel:NO to:controllerSection];
|
||||||
[self addSetting:self.gyroModeStack ofId:@"gyroModeStack" withInfoTag:YES withDynamicLabel:YES to:controllerSection];
|
[self addSetting:self.gyroModeStack ofId:@"gyroModeStack" withInfoTag:YES withDynamicLabel:YES to:controllerSection];
|
||||||
[self addSetting:self.gyroSensitivityStack ofId:@"gyroSensitivityStack" withInfoTag:NO withDynamicLabel:YES to:controllerSection];
|
[self addSetting:self.gyroSensitivityStack ofId:@"gyroSensitivityStack" withInfoTag:NO withDynamicLabel:YES to:controllerSection];
|
||||||
|
[self addSetting:self.controllerToMouseStack ofId:@"controllerToMouseStack" withInfoTag:NO withDynamicLabel:YES to:controllerSection];
|
||||||
|
[self addSetting:self.controllerMouseVelocityStack ofId:@"controllerMouseVelocityStack" withInfoTag:NO withDynamicLabel:YES to:controllerSection];
|
||||||
|
[self addSetting:self.controllerMouseExpoStack ofId:@"controllerMouseExpoStack" withInfoTag:YES withDynamicLabel:YES to:controllerSection];
|
||||||
[controllerSection addToParentStack:_parentStack];
|
[controllerSection addToParentStack:_parentStack];
|
||||||
|
|
||||||
motionControlSection = [[MenuSectionView alloc] init];
|
motionControlSection = [[MenuSectionView alloc] init];
|
||||||
@@ -1339,7 +1345,10 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
tipText = [LocalizationHelper localizedStringForKey:@"ctrlDownForPinchStackTip"];
|
tipText = [LocalizationHelper localizedStringForKey:@"ctrlDownForPinchStackTip"];
|
||||||
showOnlineDocAction = false;
|
showOnlineDocAction = false;
|
||||||
}
|
}
|
||||||
|
if([sender.superview.accessibilityIdentifier isEqualToString: @"controllerMouseExpoStack"]){
|
||||||
|
tipText = [LocalizationHelper localizedStringForKey:@"controllerMouseExpoStackTip"];
|
||||||
|
showOnlineDocAction = false;
|
||||||
|
}
|
||||||
|
|
||||||
UIAlertController *tipsAlertController = [UIAlertController alertControllerWithTitle: [LocalizationHelper localizedStringForKey:@"Tips"] message:tipText preferredStyle:UIAlertControllerStyleAlert];
|
UIAlertController *tipsAlertController = [UIAlertController alertControllerWithTitle: [LocalizationHelper localizedStringForKey:@"Tips"] message:tipText preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
|
||||||
@@ -1965,6 +1974,18 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
|
|
||||||
[self.sendDummyEventSwitch setOn:self->tempSettings.sendDummyEvent];// Load old setting
|
[self.sendDummyEventSwitch setOn:self->tempSettings.sendDummyEvent];// Load old setting
|
||||||
|
|
||||||
|
[self.controllerToMouseSwitch setOn:self->tempSettings.mapControllerToMouse];
|
||||||
|
[self.controllerToMouseSwitch addTarget:self action:@selector(controllerToMouseSwitchFlipped:) forControlEvents:UIControlEventValueChanged];
|
||||||
|
[self controllerToMouseSwitchFlipped:self.controllerToMouseSwitch];
|
||||||
|
|
||||||
|
[self.controllerMouseVelocitySlider setValue:self->tempSettings.controllerMousePointerVelocity.floatValue];
|
||||||
|
[self.controllerMouseVelocitySlider addTarget:self action:@selector(controllerMouseVelocitySliderMoved:) forControlEvents:UIControlEventValueChanged];
|
||||||
|
[self controllerMouseVelocitySliderMoved:self.controllerMouseVelocitySlider];
|
||||||
|
|
||||||
|
[self.controllerMouseExpoSlider setValue:self->tempSettings.controllerMouseExpo.floatValue];
|
||||||
|
[self.controllerMouseExpoSlider addTarget:self action:@selector(controllerMouseExpoSliderMoved:) forControlEvents:UIControlEventValueChanged];
|
||||||
|
[self controllerMouseExpoSliderMoved:self.controllerMouseExpoSlider];
|
||||||
|
|
||||||
[self.mapGyroToSelector addTarget:self action:@selector(mapGyroToChanged:) forControlEvents:UIControlEventValueChanged];
|
[self.mapGyroToSelector addTarget:self action:@selector(mapGyroToChanged:) forControlEvents:UIControlEventValueChanged];
|
||||||
[self.yawPitchToRightStickSwitch addTarget:self action:@selector(yawPitchToRightStickSwitchFlipped:) forControlEvents:UIControlEventValueChanged];
|
[self.yawPitchToRightStickSwitch addTarget:self action:@selector(yawPitchToRightStickSwitchFlipped:) forControlEvents:UIControlEventValueChanged];
|
||||||
[self.rollToLeftStickSwitch addTarget:self action:@selector(rollToLeftStickSwitchFlipped:) forControlEvents:UIControlEventValueChanged];
|
[self.rollToLeftStickSwitch addTarget:self action:@selector(rollToLeftStickSwitchFlipped:) forControlEvents:UIControlEventValueChanged];
|
||||||
@@ -2186,14 +2207,15 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
|
|
||||||
if(sender.selectedSegmentIndex == driftCorrection){
|
if(sender.selectedSegmentIndex == driftCorrection){
|
||||||
|
|
||||||
[CountdownAlertController showAlertIn:self
|
[AlertControllerUtil showAlertIn:self
|
||||||
title:[LocalizationHelper localizedStringForKey:@"Drift Correction"]
|
title:[LocalizationHelper localizedStringForKey:@"Drift Correction"]
|
||||||
message:[LocalizationHelper localizedStringForKey:@"Place the device flat on a surface and keep it still, then tap ‘Start’."]
|
message:[LocalizationHelper localizedStringForKey:@"Place the device flat on a surface and keep it still, then tap ‘Start’."]
|
||||||
withCancel:YES
|
withCancel:YES
|
||||||
buttonTitle:[LocalizationHelper localizedStringForKey:@"Start"]
|
buttonTitle:[LocalizationHelper localizedStringForKey:@"Start"]
|
||||||
countdown:0
|
countdown:0
|
||||||
|
action:^{}
|
||||||
completion:^{
|
completion:^{
|
||||||
if(CountdownAlertController.actionCancelled){
|
if(AlertControllerUtil.actionCancelled){
|
||||||
[self.mapGyroToSelector setSelectedSegmentIndex:self->oscProfile.mapGyroTo];
|
[self.mapGyroToSelector setSelectedSegmentIndex:self->oscProfile.mapGyroTo];
|
||||||
[self mapGyroToChanged:self.mapGyroToSelector];
|
[self mapGyroToChanged:self.mapGyroToSelector];
|
||||||
}
|
}
|
||||||
@@ -2206,12 +2228,13 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
currentSettings.gyroBiasZ = [NSNumber numberWithDouble:motionHandler.gyroBiasZ];
|
currentSettings.gyroBiasZ = [NSNumber numberWithDouble:motionHandler.gyroBiasZ];
|
||||||
[self->dataMan saveData];
|
[self->dataMan saveData];
|
||||||
}];
|
}];
|
||||||
[CountdownAlertController showAlertIn:self
|
[AlertControllerUtil showAlertIn:self
|
||||||
title:[LocalizationHelper localizedStringForKey:@"Drift Correction"]
|
title:[LocalizationHelper localizedStringForKey:@"Drift Correction"]
|
||||||
message:[LocalizationHelper localizedStringForKey:@"Calibrating..."]
|
message:[LocalizationHelper localizedStringForKey:@"Calibrating..."]
|
||||||
withCancel:NO
|
withCancel:NO
|
||||||
buttonTitle:[LocalizationHelper localizedStringForKey:@"Finished!"]
|
buttonTitle:[LocalizationHelper localizedStringForKey:@"Finished!"]
|
||||||
countdown:6
|
countdown:6
|
||||||
|
action:^{}
|
||||||
completion:^{
|
completion:^{
|
||||||
[self.mapGyroToSelector setSelectedSegmentIndex:self->oscProfile.mapGyroTo];
|
[self.mapGyroToSelector setSelectedSegmentIndex:self->oscProfile.mapGyroTo];
|
||||||
[self mapGyroToChanged:self.mapGyroToSelector];
|
[self mapGyroToChanged:self.mapGyroToSelector];
|
||||||
@@ -2221,6 +2244,121 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)controllerToMouseSwitchFlipped:(UISwitch* )sender{
|
||||||
|
[self setHidden:!sender.isOn forStack:_controllerMouseVelocityStack];
|
||||||
|
[self setHidden:!sender.isOn forStack:_controllerMouseExpoStack];
|
||||||
|
if(!sender.isOn || settingsViewJustLoaded) return;
|
||||||
|
[self.swapAbxySwitch setOn:false]; // swapAbxy can be enabled after mouse to controller is set
|
||||||
|
__block bool switchButtonCaptured = false;
|
||||||
|
__block bool stickCaptured = false;
|
||||||
|
__block bool leftButtonCaptured = false;
|
||||||
|
__block bool rightButtonCaptured = false;
|
||||||
|
Settings* currentSettings = [dataMan retrieveSettings];
|
||||||
|
[AlertControllerUtil showAlertIn:self
|
||||||
|
title:[LocalizationHelper localizedStringForKey:@"Map controller to mouse"]
|
||||||
|
message:[LocalizationHelper localizedStringForKey:@"Press a button for switching to controller mouse mode (long press for 1 second during streaming)"]
|
||||||
|
withCancel:YES
|
||||||
|
buttonTitle:@""
|
||||||
|
countdown:0
|
||||||
|
action:^{
|
||||||
|
self->capturedController = [GCController controllers].firstObject;
|
||||||
|
if(self->capturedController){
|
||||||
|
__weak typeof(self) weakSelf = self;
|
||||||
|
|
||||||
|
if (@available(iOS 14.0, tvOS 14.0, *)) {
|
||||||
|
for (GCControllerElement* element in self->capturedController.physicalInputProfile.allElements) {
|
||||||
|
element.preferredSystemGestureState = GCSystemGestureStateDisabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ControllerUtil listenWithController:self->capturedController swapABXY:false handler:^(NSDictionary * buttonDict, GCExtendedGamepad * gamepad, GCControllerElement * element) {
|
||||||
|
__strong typeof(weakSelf) self = weakSelf;
|
||||||
|
if (!self) return;
|
||||||
|
|
||||||
|
if(!switchButtonCaptured){
|
||||||
|
for(NSNumber* buttonFlagId in buttonDict){
|
||||||
|
GCControllerButtonInput * button = (GCControllerButtonInput *)buttonDict[buttonFlagId];
|
||||||
|
if(button.isPressed){
|
||||||
|
currentSettings.controllerMouseSwitch = buttonFlagId;
|
||||||
|
switchButtonCaptured = true;
|
||||||
|
AlertControllerUtil.alertController.message = [LocalizationHelper localizedStringForKey:@"Move the stick you wish to use for mouse control. Another stick will be used for vertical & horizontal scroll."];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!stickCaptured && switchButtonCaptured){
|
||||||
|
float leftStickOffset = hypotf(gamepad.leftThumbstick.xAxis.value, gamepad.leftThumbstick.yAxis.value);
|
||||||
|
float rightStickOffset = hypotf(gamepad.rightThumbstick.xAxis.value, gamepad.rightThumbstick.yAxis.value);
|
||||||
|
if(leftStickOffset>0.1||rightStickOffset>0.1){
|
||||||
|
ControllerMouseStick stick = leftStickOffset>rightStickOffset ? LeftStickToMouse : RightStickToMouse;
|
||||||
|
currentSettings.controllerMouseStick = @(stick);
|
||||||
|
stickCaptured = true;
|
||||||
|
AlertControllerUtil.alertController.message = [LocalizationHelper localizedStringForKey:@"Press the button for mouse left button"];
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!leftButtonCaptured && stickCaptured){
|
||||||
|
for(NSNumber* buttonFlagId in buttonDict){
|
||||||
|
GCControllerButtonInput * button = (GCControllerButtonInput *)buttonDict[buttonFlagId];
|
||||||
|
if(button.isPressed){
|
||||||
|
currentSettings.controllerMouseLeftButton = buttonFlagId;
|
||||||
|
leftButtonCaptured = true;
|
||||||
|
AlertControllerUtil.alertController.message = [LocalizationHelper localizedStringForKey:@"Press the button for mouse right button"];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!rightButtonCaptured && leftButtonCaptured){
|
||||||
|
for(NSNumber* buttonFlagId in buttonDict){
|
||||||
|
GCControllerButtonInput * button = (GCControllerButtonInput *)buttonDict[buttonFlagId];
|
||||||
|
if(button.isPressed){
|
||||||
|
currentSettings.controllerMouseRightButton = buttonFlagId;
|
||||||
|
rightButtonCaptured = true;
|
||||||
|
AlertControllerUtil.alertController.message = [LocalizationHelper localizedStringForKey:@"Finished"];
|
||||||
|
gamepad.valueChangedHandler = nil;
|
||||||
|
UIAlertAction* cancelAction = AlertControllerUtil.alertController.actions.firstObject;
|
||||||
|
if(cancelAction) [cancelAction setValue:[LocalizationHelper localizedStringForKey:@"OK"] forKey:@"title"];
|
||||||
|
[self->dataMan saveData];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
[AlertControllerUtil.alertController dismissViewControllerAnimated:NO completion:^{
|
||||||
|
[AlertControllerUtil showAlertIn:self
|
||||||
|
title:[LocalizationHelper localizedStringForKey:@""]
|
||||||
|
message:[LocalizationHelper localizedStringForKey:@"Waiting for controller..."]
|
||||||
|
withCancel:YES
|
||||||
|
buttonTitle:[LocalizationHelper localizedStringForKey:@"Continue"]
|
||||||
|
countdown:2
|
||||||
|
action:^{}
|
||||||
|
completion:^{
|
||||||
|
if(AlertControllerUtil.actionCancelled){
|
||||||
|
[self.controllerToMouseSwitch setOn:NO];
|
||||||
|
[self controllerToMouseSwitchFlipped:self.controllerToMouseSwitch];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
[AlertControllerUtil.alertController dismissViewControllerAnimated:NO completion:^{}];
|
||||||
|
[self controllerToMouseSwitchFlipped:self.controllerToMouseSwitch];
|
||||||
|
}];
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
completion:^{
|
||||||
|
if(AlertControllerUtil.actionCancelled){
|
||||||
|
if(!rightButtonCaptured){
|
||||||
|
[self.controllerToMouseSwitch setOn:rightButtonCaptured];
|
||||||
|
[self controllerToMouseSwitchFlipped:self.controllerToMouseSwitch];
|
||||||
|
}
|
||||||
|
if(self->capturedController && self->capturedController.extendedGamepad) self->capturedController.extendedGamepad.valueChangedHandler = nil;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)rollToLeftStickSwitchFlipped:(UISwitch* )sender{
|
- (void)rollToLeftStickSwitchFlipped:(UISwitch* )sender{
|
||||||
[self setHidden:!sender.isOn forStack:_rollSensitivityStack];
|
[self setHidden:!sender.isOn forStack:_rollSensitivityStack];
|
||||||
}
|
}
|
||||||
@@ -2340,6 +2478,14 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
[self findDynamicLabelFromStack:_relativeTouchSlideThresholdStack].text = [NSString stringWithFormat:@" %.1f ",sender.value];
|
[self findDynamicLabelFromStack:_relativeTouchSlideThresholdStack].text = [NSString stringWithFormat:@" %.1f ",sender.value];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) controllerMouseVelocitySliderMoved:(UISlider* )sender {
|
||||||
|
[self findDynamicLabelFromStack:_controllerMouseVelocityStack].text = [NSString stringWithFormat:@" %.1f ", sender.value];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) controllerMouseExpoSliderMoved:(UISlider* )sender {
|
||||||
|
[self findDynamicLabelFromStack:_controllerMouseExpoStack].text = [NSString stringWithFormat:@" %.1f ", sender.value];
|
||||||
|
}
|
||||||
|
|
||||||
- (uint32_t) getScreenEdgeFromSelector {
|
- (uint32_t) getScreenEdgeFromSelector {
|
||||||
switch (self.slideToSettingsScreenEdgeSelector.selectedSegmentIndex) {
|
switch (self.slideToSettingsScreenEdgeSelector.selectedSegmentIndex) {
|
||||||
case 0: return UIRectEdgeLeft;
|
case 0: return UIRectEdgeLeft;
|
||||||
@@ -3013,6 +3159,9 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
BOOL ctrlDownForPinch = self.ctrlDownForPinchSwitch.isOn;
|
BOOL ctrlDownForPinch = self.ctrlDownForPinchSwitch.isOn;
|
||||||
CGFloat leftClickDelayMs = self.leftClickDelaySlider.value;
|
CGFloat leftClickDelayMs = self.leftClickDelaySlider.value;
|
||||||
BOOL passthroughGestures = self.passthroughGesturesSwitch.isOn;
|
BOOL passthroughGestures = self.passthroughGesturesSwitch.isOn;
|
||||||
|
BOOL mapControllerToMouse = self.controllerToMouseSwitch.isOn;
|
||||||
|
CGFloat controllerMousePointerVelocity = self.controllerMouseVelocitySlider.value;
|
||||||
|
CGFloat controllerMouseExpo = self.controllerMouseExpoSlider.value;
|
||||||
NSInteger backgroundSessionTimer = self.backgroundSessionTimerSlider.value == self.backgroundSessionTimerSlider.maximumValue ? (uint32_t) INT16_MAX : (uint32_t)self.backgroundSessionTimerSlider.value;
|
NSInteger backgroundSessionTimer = self.backgroundSessionTimerSlider.value == self.backgroundSessionTimerSlider.maximumValue ? (uint32_t) INT16_MAX : (uint32_t)self.backgroundSessionTimerSlider.value;
|
||||||
|
|
||||||
[dataMan saveSettingsWithBitrate:_bitrate
|
[dataMan saveSettingsWithBitrate:_bitrate
|
||||||
@@ -3079,6 +3228,9 @@ BOOL isCustomResolution(int resolutionSelected) {
|
|||||||
leftClickDelayMs:leftClickDelayMs
|
leftClickDelayMs:leftClickDelayMs
|
||||||
settingsMenuOffset:settingsMenuOffset
|
settingsMenuOffset:settingsMenuOffset
|
||||||
passthroughGestures:passthroughGestures
|
passthroughGestures:passthroughGestures
|
||||||
|
mapControllerToMouse:mapControllerToMouse
|
||||||
|
controllerMousePointerVelocity:controllerMousePointerVelocity
|
||||||
|
controllerMouseExpo:controllerMouseExpo
|
||||||
backgroundSessionTimer:backgroundSessionTimer];
|
backgroundSessionTimer:backgroundSessionTimer];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -556,12 +556,13 @@
|
|||||||
// 创建弹窗
|
// 创建弹窗
|
||||||
NSString* tipText = [LocalizationHelper localizedStringForKey:@"firstLaunchTip", settingsEdgeSide, slideDist, cmdToolEdgeSide, slideDist];
|
NSString* tipText = [LocalizationHelper localizedStringForKey:@"firstLaunchTip", settingsEdgeSide, slideDist, cmdToolEdgeSide, slideDist];
|
||||||
|
|
||||||
[CountdownAlertController showAlertIn:self
|
[AlertControllerUtil showAlertIn:self
|
||||||
title:[LocalizationHelper localizedStringForKey:@"First Launch Tips"]
|
title:[LocalizationHelper localizedStringForKey:@"First Launch Tips"]
|
||||||
message:tipText
|
message:tipText
|
||||||
withCancel:NO
|
withCancel:NO
|
||||||
buttonTitle:[LocalizationHelper localizedStringForKey:@"Got it!"]
|
buttonTitle:[LocalizationHelper localizedStringForKey:@"Got it!"]
|
||||||
countdown:16
|
countdown:16
|
||||||
|
action:^{}
|
||||||
completion:^{}];
|
completion:^{}];
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -1652,6 +1653,13 @@
|
|||||||
|
|
||||||
- (void)setupDisplayLink {
|
- (void)setupDisplayLink {
|
||||||
if (_displayLink != nil) return;
|
if (_displayLink != nil) return;
|
||||||
|
TemporarySettings* tempSettings = [[[DataManager alloc] init] getSettings]; //StreamFrameViewController retrieve the settings here.
|
||||||
|
if (@available(iOS 15.0, tvOS 15.0, *)) {
|
||||||
|
[_displayLink setPreferredFrameRateRange:CAFrameRateRangeMake(tempSettings.framerate.intValue,tempSettings.framerate.intValue, tempSettings.framerate.intValue)];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_displayLink.preferredFramesPerSecond = tempSettings.framerate.intValue;
|
||||||
|
}
|
||||||
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)];
|
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)];
|
||||||
[_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
|
[_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -313,6 +313,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"6Cy-aH-DXp.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"Curve Exponent\"; ObjectID = \"6Cy-aH-DXp\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "Curve Exponent"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非线性因子"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非線性因子"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非線性因子"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"6GU-ZN-w6X.text" : {
|
"6GU-ZN-w6X.text" : {
|
||||||
"comment" : "Class = \"UILabel\"; text = \"Theme\"; ObjectID = \"6GU-ZN-w6X\";",
|
"comment" : "Class = \"UILabel\"; text = \"Theme\"; ObjectID = \"6GU-ZN-w6X\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
@@ -4009,6 +4039,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"P1g-rW-Mgp.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"Controller → Mouse\"; ObjectID = \"P1g-rW-Mgp\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "Controller → Mouse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手柄映射为鼠标"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手把映射為滑鼠"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手把映射為滑鼠"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"P34-hO-6cX.title" : {
|
"P34-hO-6cX.title" : {
|
||||||
"comment" : "Class = \"UIBarButtonItem\"; title = \"Duplicate\"; ObjectID = \"P34-hO-6cX\";",
|
"comment" : "Class = \"UIBarButtonItem\"; title = \"Duplicate\"; ObjectID = \"P34-hO-6cX\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
@@ -4927,6 +4987,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Xnd-C4-8N9.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"Pointer Velocity\"; ObjectID = \"Xnd-C4-8N9\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "Pointer Velocity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "指针速度"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "指針速度"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "指針速度"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"XU0-qu-2p4.text" : {
|
"XU0-qu-2p4.text" : {
|
||||||
"comment" : "Class = \"UILabel\"; text = \"Yaw&Pitch → Right Stick\"; ObjectID = \"XU0-qu-2p4\";",
|
"comment" : "Class = \"UILabel\"; text = \"Yaw&Pitch → Right Stick\"; ObjectID = \"XU0-qu-2p4\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
|
|||||||
@@ -1189,6 +1189,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"AEN-EU-8LZ.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"Curve Exponent\"; ObjectID = \"AEN-EU-8LZ\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "Curve Exponent"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非线性因子"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非線性因子"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "非線性因子"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"AN9-U4-nUG.text" : {
|
"AN9-U4-nUG.text" : {
|
||||||
"comment" : "Class = \"UILabel\"; text = \"Yaw&Pitch → Right Stick\"; ObjectID = \"AN9-U4-nUG\";",
|
"comment" : "Class = \"UILabel\"; text = \"Yaw&Pitch → Right Stick\"; ObjectID = \"AN9-U4-nUG\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
@@ -2053,6 +2083,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"F0O-Ht-fW5.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"Controller → Mouse\"; ObjectID = \"F0O-Ht-fW5\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "Controller → Mouse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手柄映射为鼠标"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手把映射為滑鼠"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "手把映射為滑鼠"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"f46-Pt-0Pv.text" : {
|
"f46-Pt-0Pv.text" : {
|
||||||
"comment" : "Class = \"UILabel\"; text = \"Profile:\"; ObjectID = \"f46-Pt-0Pv\";",
|
"comment" : "Class = \"UILabel\"; text = \"Profile:\"; ObjectID = \"f46-Pt-0Pv\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
@@ -2197,6 +2257,36 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"H3s-ud-yqh.text" : {
|
||||||
|
"comment" : "Class = \"UILabel\"; text = \"Pointer Velocity\"; ObjectID = \"H3s-ud-yqh\";",
|
||||||
|
"extractionState" : "extracted_with_value",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "new",
|
||||||
|
"value" : "Pointer Velocity"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "指针速度"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "指針速度"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "指針速度"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"hfR-K8-Ti4.segmentTitles[0]" : {
|
"hfR-K8-Ti4.segmentTitles[0]" : {
|
||||||
"comment" : "Class = \"UISegmentedControl\"; hfR-K8-Ti4.segmentTitles[0] = \"Stereo\"; ObjectID = \"hfR-K8-Ti4\";",
|
"comment" : "Class = \"UISegmentedControl\"; hfR-K8-Ti4.segmentTitles[0] = \"Stereo\"; ObjectID = \"hfR-K8-Ti4\";",
|
||||||
"extractionState" : "extracted_with_value",
|
"extractionState" : "extracted_with_value",
|
||||||
|
|||||||
Reference in new issue
Block a user