feat: on-screen button auto tap repeats
This commit is contained in:
@@ -2748,8 +2748,26 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" alpha="0.77000000000000002" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="yLM-jp-jMl">
|
||||
<rect key="frame" x="105" y="0.0" width="545" height="34"/>
|
||||
<rect key="frame" x="105" y="0.0" width="350" height="34"/>
|
||||
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="350" id="ipN-en-gmD"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Repeats" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iiK-9g-N5s">
|
||||
<rect key="frame" x="455" y="0.0" width="86" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="86" id="QAo-Xh-fHl"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" alpha="0.76999998092651367" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="nm3-To-lZo">
|
||||
<rect key="frame" x="541" y="0.0" width="109" height="34"/>
|
||||
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
@@ -3718,6 +3736,7 @@
|
||||
<outlet property="autoDockTimerStack" destination="ASP-yY-swx" id="rpi-Kn-8xH"/>
|
||||
<outlet property="autoTapField" destination="yLM-jp-jMl" id="t0v-tj-IZ3"/>
|
||||
<outlet property="autoTapLabel" destination="And-W9-9NR" id="r5A-4a-XZP"/>
|
||||
<outlet property="autoTapRepeatsField" destination="nm3-To-lZo" id="R4r-5w-aZH"/>
|
||||
<outlet property="autoTapStack" destination="e4b-0v-36Z" id="PZd-KE-lPb"/>
|
||||
<outlet property="borderWidthAlphaStack" destination="9ZS-28-txW" id="qxV-2E-g8m"/>
|
||||
<outlet property="bulkAlphaLabel" destination="yF0-Tu-L8X" id="Z1J-vy-z4i"/>
|
||||
@@ -3939,22 +3958,22 @@
|
||||
<image name="tray.full.fill" catalog="system" width="128" height="88"/>
|
||||
<image name="video.and.waveform" catalog="system" width="128" height="94"/>
|
||||
<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 name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
<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 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 name="systemGray5Color">
|
||||
<color red="0.8980392157" green="0.8980392157" blue="0.91764705879999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.89803921568627454" green="0.89803921568627454" blue="0.91764705882352937" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<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>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -155,10 +155,10 @@
|
||||
<rect key="frame" x="515" y="190" width="410" height="45"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleAspectFill" distribution="fillEqually" alignment="center" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="4he-pe-kYB">
|
||||
<rect key="frame" x="0.0" y="-2.5" width="1300" height="50"/>
|
||||
<rect key="frame" x="0.0" y="-2.5" width="410" height="50"/>
|
||||
<subviews>
|
||||
<button opaque="NO" tag="40" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="fill" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nHH-6h-4D1" userLabel="Exit">
|
||||
<rect key="frame" x="0.0" y="9.5" width="177" height="31"/>
|
||||
<rect key="frame" x="0.0" y="9.5" width="50" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="sBF-hd-nF8"/>
|
||||
</constraints>
|
||||
@@ -174,7 +174,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Pdg-l4-BvF" userLabel="Undo">
|
||||
<rect key="frame" x="187" y="0.0" width="177.5" height="50"/>
|
||||
<rect key="frame" x="60" y="0.0" width="50" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="7KW-Xe-OEK"/>
|
||||
<constraint firstAttribute="width" constant="50" id="gHD-A0-AVS"/>
|
||||
@@ -191,7 +191,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rXW-Ms-2cJ" userLabel="Load">
|
||||
<rect key="frame" x="374.5" y="0.0" width="177" height="50"/>
|
||||
<rect key="frame" x="120" y="0.0" width="50" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="91g-27-mVH"/>
|
||||
<constraint firstAttribute="height" constant="50" id="kRj-b6-Bx1"/>
|
||||
@@ -207,7 +207,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LPA-ea-YHC" userLabel="Save">
|
||||
<rect key="frame" x="561.5" y="0.0" width="177" height="50"/>
|
||||
<rect key="frame" x="180" y="0.0" width="50" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="Lot-pn-o60"/>
|
||||
<constraint firstAttribute="height" constant="50" id="uWO-So-qxr"/>
|
||||
@@ -223,7 +223,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="20" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dhG-Fo-0GK" userLabel="Trash">
|
||||
<rect key="frame" x="748.5" y="0.0" width="177" height="50"/>
|
||||
<rect key="frame" x="240" y="0.0" width="50" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="0vV-wV-Efz"/>
|
||||
<constraint firstAttribute="width" constant="50" id="j9W-Ja-bVn"/>
|
||||
@@ -239,7 +239,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Up4-28-sgF" userLabel="Add">
|
||||
<rect key="frame" x="935.5" y="0.0" width="177.5" height="50"/>
|
||||
<rect key="frame" x="300" y="0.0" width="50" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="rWU-US-9dl"/>
|
||||
<constraint firstAttribute="width" constant="50" id="wWj-wB-MRd"/>
|
||||
@@ -254,7 +254,7 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4pE-po-Zn1" userLabel="Edit">
|
||||
<rect key="frame" x="1123" y="0.0" width="177" height="50"/>
|
||||
<rect key="frame" x="360" y="0.0" width="50" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="oFn-jm-orG"/>
|
||||
<constraint firstAttribute="height" constant="50" id="sls-Vh-uxz"/>
|
||||
@@ -273,7 +273,7 @@
|
||||
</subviews>
|
||||
</stackView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zll-IP-PFt" userLabel="Chevron View">
|
||||
<rect key="frame" x="624" y="45" width="52" height="25"/>
|
||||
<rect key="frame" x="179" y="45" width="52" height="25"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ChevronCompactUp" translatesAutoresizingMaskIntoConstraints="NO" id="76O-3K-aa8">
|
||||
<rect key="frame" x="0.0" y="0.0" width="52" height="25"/>
|
||||
@@ -351,7 +351,25 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" alpha="0.76999998092651367" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="DOu-sG-eRq">
|
||||
<rect key="frame" x="90" y="0.0" width="460" height="20"/>
|
||||
<rect key="frame" x="90" y="0.0" width="300" height="20"/>
|
||||
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="300" id="DAa-oe-M5S"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Repeats" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gSL-YJ-0ME" userLabel="autoTapLabel">
|
||||
<rect key="frame" x="390" y="0.0" width="90" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="90" id="EUV-YB-ax6"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" alpha="0.76999998092651367" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ROc-Na-NLt">
|
||||
<rect key="frame" x="480" y="0.0" width="70" height="20"/>
|
||||
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
@@ -1377,6 +1395,7 @@
|
||||
<outlet property="autoDockTimerStack" destination="BBR-0E-XE9" id="L9l-bR-MO4"/>
|
||||
<outlet property="autoTapField" destination="DOu-sG-eRq" id="Ubj-og-ThW"/>
|
||||
<outlet property="autoTapLabel" destination="IuG-44-1Je" id="YWb-0d-zbB"/>
|
||||
<outlet property="autoTapRepeatsField" destination="ROc-Na-NLt" id="cPr-UQ-bK3"/>
|
||||
<outlet property="autoTapStack" destination="tDJ-cy-BYU" id="moT-DJ-jwF"/>
|
||||
<outlet property="borderWidthAlphaStack" destination="50p-sC-ObU" id="2Xq-p7-31z"/>
|
||||
<outlet property="bulkAlphaLabel" destination="MgK-KI-3y7" id="CV9-VA-K3K"/>
|
||||
|
||||
@@ -470,6 +470,7 @@ static CGRect layoutViewBounds;
|
||||
buttonState.borderWidth = widgetView.borderWidth;
|
||||
buttonState.highlightSizeFactor = widgetView.highlightSizeFactor;
|
||||
buttonState.autoTapInterval = widgetView.autoTapInterval;
|
||||
buttonState.autoTapRepeats = widgetView.autoTapRepeats;
|
||||
buttonState.vibrationStyle = widgetView.vibrationStyle;
|
||||
buttonState.mouseButtonAction = widgetView.mouseButtonAction;
|
||||
buttonState.animatesTransition = widgetView.animatesTransition;
|
||||
|
||||
@@ -66,6 +66,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, assign) uint8_t mouseButtonAction;
|
||||
@property (nonatomic, assign) bool animatesTransition;
|
||||
@property (nonatomic, assign) uint16_t autoTapInterval;
|
||||
@property (nonatomic, assign) uint32_t autoTapRepeats;
|
||||
|
||||
@property (nonatomic, assign) uint8_t walkKeyActionType;
|
||||
@property (nonatomic, assign) CGFloat walkKeyThreshold;
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
[encoder encodeBool:self.animatesTransition forKey:@"animatesTransition"];
|
||||
[encoder encodeInt:self.buttonMode forKey:@"slideMode"]; // buttonMode: previously slideMode, keep it for consistency
|
||||
[encoder encodeInt:self.autoTapInterval forKey:@"autoTapInterval"];
|
||||
[encoder encodeInt:self.autoTapRepeats forKey:@"autoTapRepeats"];
|
||||
[encoder encodeCGPoint:self.position forKey:@"position"];
|
||||
[encoder encodeBool:self.isHidden forKey:@"isHidden"];
|
||||
[encoder encodeFloat:self.widthFactor forKey:@"widthFactor"];
|
||||
@@ -100,6 +101,7 @@
|
||||
self.animatesTransition = [decoder containsValueForKey:@"animatesTransition"] ? [decoder decodeBoolForKey:@"animatesTransition"] : true;
|
||||
self.buttonMode = [decoder containsValueForKey:@"slideMode"] ? [decoder decodeIntForKey:@"slideMode"] : 0;
|
||||
self.autoTapInterval = [decoder containsValueForKey:@"autoTapInterval"] ? [decoder decodeIntForKey:@"autoTapInterval"] : 45;
|
||||
self.autoTapRepeats = [decoder containsValueForKey:@"autoTapRepeats"] ? [decoder decodeIntForKey:@"autoTapRepeats"] : 0;
|
||||
self.position = [decoder decodeCGPointForKey:@"position"];
|
||||
self.isHidden = [decoder decodeBoolForKey:@"isHidden"];
|
||||
self.widthFactor = [decoder decodeFloatForKey:@"widthFactor"];
|
||||
|
||||
@@ -194,6 +194,8 @@ import ObjectiveC.runtime
|
||||
|
||||
//autoTapTimer
|
||||
@objc public var autoTapInterval: Int = 49;
|
||||
@objc public var autoTapRepeats: UInt32 = 0;
|
||||
private var autoTapCount: UInt32 = 0;
|
||||
private var autoTapTimer: SafeTimer?
|
||||
|
||||
private let appWindow: UIView
|
||||
@@ -676,6 +678,15 @@ import ObjectiveC.runtime
|
||||
if self.widgetType == WidgetTypeEnum.button, autoTapInterval >= OnScreenWidgetView.MinAutotapInterval {
|
||||
self.autoTapTimer = SafeTimer(interval:0.001 * Double(autoTapInterval)) {
|
||||
// print("timer instance \(Unmanaged.passUnretained(self.autoTapTimer!).toOpaque()), \(CACurrentMediaTime())")
|
||||
if self.autoTapRepeats > 0 {
|
||||
self.autoTapCount += 1
|
||||
if self.autoTapCount >= self.autoTapRepeats {
|
||||
self.autoTapTimer?.pause()
|
||||
if self.buttonMode == .tapToToggle {
|
||||
self.tapToToggleFlag = !self.tapToToggleFlag
|
||||
}
|
||||
}
|
||||
}
|
||||
self.handleButtonDown()
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.025) {
|
||||
self.handleButtonUp()
|
||||
@@ -1580,6 +1591,7 @@ import ObjectiveC.runtime
|
||||
handleButtonDown()
|
||||
}
|
||||
else{
|
||||
self.autoTapCount = 0
|
||||
self.autoTapTimer?.restart()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -744,6 +744,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
||||
widgetView.borderWidth = buttonState.borderWidth;
|
||||
widgetView.highlightSizeFactor = buttonState.highlightSizeFactor;
|
||||
widgetView.autoTapInterval = buttonState.autoTapInterval;
|
||||
widgetView.autoTapRepeats = buttonState.autoTapRepeats;
|
||||
[widgetView setVibrationWithStyle:buttonState.vibrationStyle];
|
||||
widgetView.mouseButtonAction = buttonState.mouseButtonAction;
|
||||
widgetView.animatesTransition = buttonState.animatesTransition;
|
||||
|
||||
@@ -1985,6 +1985,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"0 - infinite" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "0 - 无限"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "0 - 無限"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "0 - 無限"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"A button with touchpad functionality will be created" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -2549,6 +2572,35 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoTapTimerTip" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Min: 50ms. 0 - disable. ms(milliSec),s(sec),m(min). ⏎ save"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "最低: 50ms, 输入0关闭. 单位: ms毫秒, s秒, m分钟. ⏎ 保存."
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "最低: 50 ms, 輸入 0 關閉. 單位:ms 秒, s秒, m分鐘. ⏎ 儲存."
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "最低: 50 ms, 輸入 0 關閉. 單位:ms 秒, s秒, m分鐘. ⏎ 儲存."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Back" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -7136,6 +7188,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Insert trigger interval" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "插入触发间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "插入觸發間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "插入觸發間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Interval of Multi-Touch Move Events: %d μs" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -8087,6 +8162,52 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Manually enter press duration in milliseconds" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手动输入按压时长, 单位毫秒"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手動輸入按壓時長, 單位毫秒"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手動輸入按壓時長, 單位毫秒"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Manually enter trigger interval in milliseconds" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手动输入间隔,单位毫秒"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手動輸入間隔,單位毫秒"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手動輸入間隔,單位毫秒"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Map controller to mouse" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -8289,29 +8410,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Minimum: 50ms. 0 to disable. ms(milliSec),s(sec),m(min). ⏎ to save" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "最低: 50ms, 输入0关闭. 单位: ms毫秒, s秒, m分钟. 按 ⏎ 保存设定值."
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "最低: 50 ms, 輸入 0 關閉. 單位:ms 秒, s秒, m分鐘. 按 ⏎ 儲存設定值."
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "最低: 50 ms, 輸入 0 關閉. 單位:ms 秒, s秒, m分鐘. 按 ⏎ 儲存設定值."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ML_TEST_RESULT_INCONCLUSIVE" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -8825,6 +8923,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Not enough room to insert trigger interval slots" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "没有足够空间插入触发间隔格"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "沒有足夠空間插入觸發間隔格"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "沒有足夠空間插入觸發間隔格"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Nothing to Undo" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -10321,52 +10442,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Manually enter press duration in milliseconds" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手动输入按压时长, 单位毫秒"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手動輸入按壓時長, 單位毫秒"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "手動輸入按壓時長, 單位毫秒"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Manually enter trigger interval in milliseconds" : {
|
||||
"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 left button" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -11879,6 +11954,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Select at least two button controls before inserting trigger intervals" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "请至少先选择两个按钮型控件,再插入触发间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "請至少先選擇兩個按鈕型控制項,再插入觸發間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "請至少先選擇兩個按鈕型控制項,再插入觸發間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Select brush shortcut keys" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -12138,6 +12236,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Set all" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "统一设置间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "統一設定間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "統一設定間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Set PC/Game resolution:" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -12161,6 +12282,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Set this" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "单独设置间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "單獨設定間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "單獨設定間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Settings" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -13867,6 +14011,52 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Trigger interval cannot be inserted when WASDPAD or ARROWPAD is in the pool" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "池中存在 WASDPAD 或 ARROWPAD 时,不能插入触发间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "池中存在 WASDPAD 或 ARROWPAD 時,不能插入觸發間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "池中存在 WASDPAD 或 ARROWPAD 時,不能插入觸發間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Trigger interval slots are already inserted" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "触发间隔格已经插入"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "觸發間隔格已經插入"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "觸發間隔格已經插入"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Tutorial" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -14763,167 +14953,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Insert trigger interval" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "插入触发间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "插入觸發間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "插入觸發間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Not enough room to insert trigger interval slots" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "没有足够空间插入触发间隔格"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "沒有足夠空間插入觸發間隔格"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "沒有足夠空間插入觸發間隔格"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Select at least two button controls before inserting trigger intervals" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "请至少先选择两个按钮型控件,再插入触发间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "請至少先選擇兩個按鈕型控制項,再插入觸發間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "請至少先選擇兩個按鈕型控制項,再插入觸發間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Set all" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "统一设置间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "統一設定間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "統一設定間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Set this" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "单独设置间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "單獨設定間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "單獨設定間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Trigger interval cannot be inserted when WASDPAD or ARROWPAD is in the pool" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "池中存在 WASDPAD 或 ARROWPAD 时,不能插入触发间隔"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "池中存在 WASDPAD 或 ARROWPAD 時,不能插入觸發間隔"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "池中存在 WASDPAD 或 ARROWPAD 時,不能插入觸發間隔"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Trigger interval slots are already inserted" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "触发间隔格已经插入"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "觸發間隔格已經插入"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "觸發間隔格已經插入"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Your network connection isn't performing well. Reduce your video bitrate setting or try a faster connection." : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -15010,4 +15039,4 @@
|
||||
}
|
||||
},
|
||||
"version" : "1.1"
|
||||
}
|
||||
}
|
||||
+26
-2
@@ -97,9 +97,12 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
@IBOutlet weak var mouseButtonDownSelector: UISegmentedControl!
|
||||
@IBOutlet weak var buttonModeStack: UIStackView!
|
||||
@IBOutlet weak var buttonModeSelector: UISegmentedControl!
|
||||
|
||||
@IBOutlet weak var autoTapStack: UIStackView!
|
||||
@IBOutlet weak var autoTapLabel: UILabel!
|
||||
@IBOutlet weak var autoTapField: UITextField!
|
||||
@IBOutlet weak var autoTapRepeatsField: UITextField!
|
||||
|
||||
@IBOutlet weak var slideThresholdStack: UIStackView!
|
||||
@IBOutlet weak var slideThresholdLabel: UILabel!
|
||||
@IBOutlet weak var slideThresholdSlider: UISlider!
|
||||
@@ -407,6 +410,7 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
widgetView.borderWidth = buttonState.borderWidth
|
||||
widgetView.highlightSizeFactor = buttonState.highlightSizeFactor
|
||||
widgetView.autoTapInterval = Int(buttonState.autoTapInterval)
|
||||
widgetView.autoTapRepeats = UInt32(buttonState.autoTapRepeats)
|
||||
widgetView.setVibration(style: Int(buttonState.vibrationStyle))
|
||||
widgetView.mouseButtonAction = MouseButtonAction(rawValue: Int(buttonState.mouseButtonAction)) ?? .hovering
|
||||
widgetView.animatesTransition = buttonState.animatesTransition
|
||||
@@ -966,9 +970,18 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
autoTapField.textColor = .white
|
||||
autoTapField.keyboardType = .numbersAndPunctuation
|
||||
autoTapField.attributedPlaceholder = NSAttributedString(
|
||||
string: LocalizationHelper.localizedString(forKey: "Minimum: 50ms. 0 to disable. ms(milliSec),s(sec),m(min). ⏎ to save"),
|
||||
attributes: [.foregroundColor: UIColor.white.withAlphaComponent(0.77)]
|
||||
string: LocalizationHelper.localizedString(forKey: "autoTapTimerTip"),
|
||||
attributes: [.foregroundColor: UIColor.white.withAlphaComponent(0.77), .font: UIFont.systemFont(ofSize: 10)]
|
||||
)
|
||||
|
||||
autoTapRepeatsField.text = widgetView.autoTapRepeats == 0 ? "∞" : "\(widgetView.autoTapRepeats)"
|
||||
autoTapRepeatsField.textColor = .white
|
||||
autoTapRepeatsField.keyboardType = .numbersAndPunctuation
|
||||
autoTapRepeatsField.attributedPlaceholder = NSAttributedString(
|
||||
string: LocalizationHelper.localizedString(forKey: "0 - infinite"),
|
||||
attributes: [.foregroundColor: UIColor.white.withAlphaComponent(0.77), .font: UIFont.systemFont(ofSize: 10)]
|
||||
)
|
||||
|
||||
autoFitLabel(autoTapLabel)
|
||||
|
||||
decelerationRateStack.isHidden = !widgetView.hasInertia
|
||||
@@ -1220,6 +1233,7 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
newWidget.borderWidth = widget.borderWidth
|
||||
newWidget.highlightSizeFactor = widget.highlightSizeFactor
|
||||
newWidget.autoTapInterval = widget.autoTapInterval
|
||||
newWidget.autoTapRepeats = widget.autoTapRepeats
|
||||
newWidget.sensitivityFactorY = widget.sensitivityFactorY
|
||||
newWidget.slideThreshold = widget.slideThreshold
|
||||
newWidget.yawFactor = widget.yawFactor
|
||||
@@ -1743,9 +1757,12 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
widgetBorderWidthLabel.isUserInteractionEnabled = true
|
||||
widgetBorderWidthLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(switchBorderWidthSlider(_:))))
|
||||
borderWidthAlphaStack.isHidden = true
|
||||
|
||||
autoTapLabel.text = LocalizationHelper.localizedString(forKey: "Autotap timer ")
|
||||
autoTapField.delegate = self
|
||||
autoTapRepeatsField.delegate = self
|
||||
autoTapStack.isHidden = true
|
||||
|
||||
sensitivityXSlider.addTarget(self, action: #selector(sensitivityXSliderMoved(_:)), for: .valueChanged)
|
||||
sensitivityXLabel.text = LocalizationHelper.localizedString(forKey: "SensitivityX")
|
||||
sensitivityXStack.isHidden = true
|
||||
@@ -1915,6 +1932,13 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
textField.resignFirstResponder()
|
||||
selectedWidget?.setAutoTapIntervalByText(str: textField.text ?? "")
|
||||
}
|
||||
if textField == autoTapRepeatsField {
|
||||
textField.resignFirstResponder()
|
||||
if let repeats = UInt32(textField.text ?? "") {
|
||||
selectedWidget?.autoTapRepeats = repeats
|
||||
}
|
||||
else {selectedWidget?.autoTapRepeats = 0}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
@@ -3620,6 +3620,36 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"iiK-9g-N5s.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Repeats\"; ObjectID = \"iiK-9g-N5s\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Repeats"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "循环次数"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "循環次數"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "循環次數"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"iPd-Ra-Lbl.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Full Color Range\"; ObjectID = \"iPd-Ra-Lbl\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
|
||||
@@ -2677,6 +2677,36 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"gSL-YJ-0ME.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Repeats\"; ObjectID = \"gSL-YJ-0ME\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Repeats"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "循环次数"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "循環次數"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "循環次數"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"GX4-zV-pQ8.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Map Gyro to\"; ObjectID = \"GX4-zV-pQ8\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
|
||||
Reference in New Issue
Block a user