diff --git a/VoidLink/Base.lproj/iPad.storyboard b/VoidLink/Base.lproj/iPad.storyboard
index b3f02769..bb8d1122 100644
--- a/VoidLink/Base.lproj/iPad.storyboard
+++ b/VoidLink/Base.lproj/iPad.storyboard
@@ -60,7 +60,7 @@
-
+
@@ -581,7 +581,7 @@
-
+
@@ -847,27 +847,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -930,10 +909,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -1033,7 +1033,7 @@
-
+
diff --git a/VoidLink/Input/StreamView.h b/VoidLink/Input/StreamView.h
index 6b7943c6..1fff07fc 100644
--- a/VoidLink/Input/StreamView.h
+++ b/VoidLink/Input/StreamView.h
@@ -22,7 +22,7 @@
- (void)userInteractionEnded;
- (void)streamExitRequested;
- (void)toggleStatsOverlay;
-- (void)localMousePointerMode;
+- (void)toggleMouseCapture;
- (void)toggleMouseVisible;
@end
diff --git a/VoidLink/Input/StreamView.m b/VoidLink/Input/StreamView.m
index cf7b9963..29e8636d 100644
--- a/VoidLink/Input/StreamView.m
+++ b/VoidLink/Input/StreamView.m
@@ -828,7 +828,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
[interactionDelegate toggleStatsOverlay];
break;
case UIKeyboardHIDUsageKeyboardM:
- [interactionDelegate localMousePointerMode];
+ [interactionDelegate toggleMouseCapture];
break;
case UIKeyboardHIDUsageKeyboardC:
[interactionDelegate toggleMouseVisible];
diff --git a/VoidLink/Localization/Localizable.xcstrings b/VoidLink/Localization/Localizable.xcstrings
index c12b0448..b6719d24 100644
--- a/VoidLink/Localization/Localizable.xcstrings
+++ b/VoidLink/Localization/Localizable.xcstrings
@@ -1641,6 +1641,64 @@
}
}
},
+ "externalDisplayModeStackDoc" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/bu3hki4pezy93g6r?singleDoc# "
+ }
+ },
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/cqbse6t4o6f9hil1?singleDoc#"
+ }
+ },
+ "zh-Hant" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/cqbse6t4o6f9hil1?singleDoc#"
+ }
+ },
+ "zh-HK" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "https://voidlink.yuque.com/org-wiki-voidlink-znirha/fa3tgr/cqbse6t4o6f9hil1?singleDoc#"
+ }
+ }
+ }
+ },
+ "externalDisplayModeStackTip" : {
+ "extractionState" : "manual",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Select “Stage Manager” to enable full screen external display.\n\nKeyboard Shortcuts for VoidLink (Desktop Mode):\n\nCtrl + Alt + Shift + Q — Disconnect the current session\n\nCtrl + Alt + Shift + S — Toggle the statistics overlay style\n\nCtrl + Alt + Shift + M — Toggle mouse capture mode\n\nCtrl + Alt + Shift + C — Toggle mouse pointer visibility\n"
+ }
+ },
+ "zh-Hans" : {
+ "stringUnit" : {
+ "state" : "needs_review",
+ "value" : "VoidLink 桌面模式快捷键:\n\n- Ctrl + Alt + Shift + Q — 断开当前会话\n\n- Ctrl + Alt + Shift + S — 切换性能信息叠加样式\n\n- Ctrl + Alt + Shift + M — 切换鼠标指针捕获模式\n\n- Ctrl + Alt + Shift + C — 切换鼠标指针可见性"
+ }
+ },
+ "zh-Hant" : {
+ "stringUnit" : {
+ "state" : "needs_review",
+ "value" : "VoidLink 桌面模式快捷鍵:\n\nCtrl + Alt + Shift + Q — 中斷目前連線\n\nCtrl + Alt + Shift + S — 切換統計資訊覆蓋樣式\n\nCtrl + Alt + Shift + M — 切換滑鼠指標捕捉模式\n\nCtrl + Alt + Shift + C — 切換滑鼠指標可見性"
+ }
+ },
+ "zh-HK" : {
+ "stringUnit" : {
+ "state" : "needs_review",
+ "value" : "VoidLink 桌面模式快捷鍵:\n\nCtrl + Alt + Shift + Q — 中斷目前連線\n\nCtrl + Alt + Shift + S — 切換統計資訊覆蓋樣式\n\nCtrl + Alt + Shift + M — 切換滑鼠指標捕捉模式\n\nCtrl + Alt + Shift + C — 切換滑鼠指標可見性"
+ }
+ }
+ }
+ },
"Failed to import profiles" : {
"extractionState" : "manual",
"localizations" : {
@@ -4608,13 +4666,13 @@
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
- "value" : "- 觸控板:拖曳方式與 Windows 筆記型電腦觸控板完全相同。快速輕點兩下,從第二次輕點開始進入拖曳模式。\n\n- 原生觸控:即多點觸控傳遞,macOS 不支援。\n\n- 絕對觸控:在 macOS 上提供類似觸控螢幕的體驗。"
+ "value" : "- 觸控板:拖曳方式與 Windows 筆記型電腦觸控板完全相同。快速輕點兩下,從第二次輕點開始進入拖曳模式。\n\n- 多点觸控:macOS 不支援。\n\n- 單點滑鼠:在 macOS 上提供類似觸控螢幕的體驗。"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
- "value" : "- 觸控板:拖曳方式與 Windows 筆記型電腦觸控板完全相同。快速輕點兩下,從第二次輕點開始進入拖曳模式。\n\n- 原生觸控:即多點觸控傳遞,macOS 不支援。\n\n- 絕對觸控:在 macOS 上提供類似觸控螢幕的體驗。"
+ "value" : "- 觸控板:拖曳方式與 Windows 筆記型電腦觸控板完全相同。快速輕點兩下,從第二次輕點開始進入拖曳模式。\n\n- 多点觸控:macOS 不支援。\n\n- 單點滑鼠:在 macOS 上提供類似觸控螢幕的體驗。"
}
}
}
diff --git a/VoidLink/ViewControllers/MainFrameViewController.m b/VoidLink/ViewControllers/MainFrameViewController.m
index fb22b5f6..95d2c879 100644
--- a/VoidLink/ViewControllers/MainFrameViewController.m
+++ b/VoidLink/ViewControllers/MainFrameViewController.m
@@ -1135,7 +1135,7 @@ static NSMutableSet* hostList;
else [revealController buttonsNotInStreaming];
DataManager* dataMan = [[DataManager alloc] init];
- TemporarySettings* currentSettings = [dataMan getSettings];
+ // TemporarySettings* currentSettings = [dataMan getSettings];
[streamFrameViewController setUserInteractionEnabledForStreamView:!_settingsExpandedInStreamView || position == FrontViewPositionLeft];
[settingsViewController setHidden:_settingsExpandedInStreamView forStack:settingsViewController.resolutionStack];
diff --git a/VoidLink/ViewControllers/SettingsViewController.m b/VoidLink/ViewControllers/SettingsViewController.m
index e855b86d..c60fd7e2 100644
--- a/VoidLink/ViewControllers/SettingsViewController.m
+++ b/VoidLink/ViewControllers/SettingsViewController.m
@@ -1009,6 +1009,11 @@ BOOL isCustomResolution(CGSize res) {
showOnlineDocAction = true;
onlineDocLink = [LocalizationHelper localizedStringForKey:@"onScreenWidgetStackDoc"];
}
+ if([sender.superview.accessibilityIdentifier isEqualToString: @"externalDisplayModeStack"]){
+ tipText = [LocalizationHelper localizedStringForKey:@"externalDisplayModeStackTip"];
+ showOnlineDocAction = true;
+ onlineDocLink = [LocalizationHelper localizedStringForKey:@"externalDisplayModeStackDoc"];
+ }
UIAlertController *tipsAlertController = [UIAlertController alertControllerWithTitle: [LocalizationHelper localizedStringForKey:@"Tips"] message: [LocalizationHelper localizedStringForKey:@"%@", tipText] preferredStyle:UIAlertControllerStyleAlert];
diff --git a/VoidLink/mul.lproj/iPad.xcstrings b/VoidLink/mul.lproj/iPad.xcstrings
index b5710063..44f9e595 100644
--- a/VoidLink/mul.lproj/iPad.xcstrings
+++ b/VoidLink/mul.lproj/iPad.xcstrings
@@ -3068,37 +3068,37 @@
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
- "value" : "台前调度"
+ "value" : "台前调度(可全屏)"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
- "value" : "幕前調度"
+ "value" : "幕前調度(可全螢幕)"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
- "value" : "幕前調度"
+ "value" : "幕前調度(可全螢幕)"
}
}
}
},
"VWB-YB-Ptj.segmentTitles[1]" : {
- "comment" : "Class = \"UISegmentedControl\"; VWB-YB-Ptj.segmentTitles[1] = \"AirPlay\"; ObjectID = \"VWB-YB-Ptj\";",
+ "comment" : "Class = \"UISegmentedControl\"; VWB-YB-Ptj.segmentTitles[1] = \"AirPlay (mirroring)\"; ObjectID = \"VWB-YB-Ptj\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
- "value" : "AirPlay"
+ "value" : "AirPlay (mirroring)"
}
},
"zh-Hans" : {
"stringUnit" : {
- "state" : "translated",
- "value" : "隔空播放"
+ "state" : "needs_review",
+ "value" : "隔空播放(镜像)"
}
},
"zh-Hant" : {
@@ -3109,7 +3109,7 @@
},
"zh-HK" : {
"stringUnit" : {
- "state" : "translated",
+ "state" : "needs_review",
"value" : "螢幕鏡像輸出"
}
}
diff --git a/VoidLink/mul.lproj/iPhone.xcstrings b/VoidLink/mul.lproj/iPhone.xcstrings
index a26d0f7f..32b2c72c 100644
--- a/VoidLink/mul.lproj/iPhone.xcstrings
+++ b/VoidLink/mul.lproj/iPhone.xcstrings
@@ -2834,19 +2834,19 @@
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
- "value" : "台前调度"
+ "value" : "台前调度(可全屏)"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
- "value" : "幕前調度"
+ "value" : "幕前調度(可全螢幕)"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
- "value" : "幕前調度"
+ "value" : "幕前調度(可全螢幕)"
}
}
}
@@ -2864,7 +2864,7 @@
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
- "value" : "隔空播放"
+ "value" : "隔空播放(镜像)"
}
},
"zh-Hant" : {