add lsvpad

This commit is contained in:
True Zhuanjia committed 2026-05-08 21:49:09 +08:00
1 parent d7aa5cc9fc
commit c3a0004c68
4 files changed
+77 -17

No files matched your search

+1 -1
View File
@@ -626,7 +626,7 @@ import ObjectiveC.runtime
self.isFolder = self.cmdString.contains("FOLDER") self.isFolder = self.cmdString.contains("FOLDER")
self.containsShortcutAction = self.cmdString.contains("+") self.containsShortcutAction = self.cmdString.contains("+")
self.hasComponent = self.isStickWheel || (self.hasDisplacementBasedStickPad && self.widgetType == .touchPad && !self.touchPointAnchored) self.hasComponent = self.isStickWheel || (self.isDisplacementBasedStickPad && !self.touchPointAnchored)
self.hasL3R3Indicator = !self.isStickWheel && !self.isDirectionPad && self.widgetType == WidgetTypeEnum.touchPad self.hasL3R3Indicator = !self.isStickWheel && !self.isDirectionPad && self.widgetType == WidgetTypeEnum.touchPad
/* /*
@@ -4195,6 +4195,29 @@
} }
} }
}, },
"Displacement-based left stick pad" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "位移型左摇杆触控板"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "位移型左搖桿觸控板"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "位移型左搖桿觸控板"
}
}
}
},
"Displacement-based right stick pad" : { "Displacement-based right stick pad" : {
"extractionState" : "manual", "extractionState" : "manual",
"localizations" : { "localizations" : {
@@ -13254,6 +13277,29 @@
} }
} }
}, },
"Velocity-based left stick pad" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "矢量型左摇杆触控板"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "矢量型左搖桿觸控板"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "矢量型左搖桿觸控板"
}
}
}
},
"Velocity-based right stick pad" : { "Velocity-based right stick pad" : {
"extractionState" : "manual", "extractionState" : "manual",
"localizations" : { "localizations" : {
+24 -15
View File
@@ -68,8 +68,8 @@ enum GamepadToggleTarget: Hashable {
case .select: return [.select] case .select: return [.select]
case .start: return [.start] case .start: return [.start]
case .home: return [.home] case .home: return [.home]
case .leftStick: return [.ls, .lswheel, .lsPad] case .leftStick: return [.ls, .lswheel, .lsPad, .lsvPad]
case .rightStick: return [.rs, .rsPad, .rsvPad] case .rightStick: return [.rs, .rsvPad, .rsPad, .rsWheel]
case .leftShoulder: return [.leftShoulder] case .leftShoulder: return [.leftShoulder]
case .rightShoulder: return [.rightShoulder] case .rightShoulder: return [.rightShoulder]
case .leftTrigger: return [.leftTrigger, .ltPad] case .leftTrigger: return [.leftTrigger, .ltPad]
@@ -84,7 +84,7 @@ enum GamepadWidget: Hashable {
case a, b, x, y case a, b, x, y
case select, start, home case select, start, home
case dPad, up, down, left, right case dPad, up, down, left, right
case ls, lsPad, lswheel, rs, rsPad, rsvPad, rsWheel case ls, lsPad, lswheel, lsvPad, rs, rsvPad, rsPad, rsWheel
case leftShoulder, rightShoulder case leftShoulder, rightShoulder
case leftTrigger, ltPad, rightTrigger, rtPad case leftTrigger, ltPad, rightTrigger, rtPad
case ds4Touchpad case ds4Touchpad
@@ -107,6 +107,7 @@ enum GamepadWidget: Hashable {
case .ls: return "LS" case .ls: return "LS"
case .lswheel: return "LSWHEEL" case .lswheel: return "LSWHEEL"
case .lsPad: return "LSPAD" case .lsPad: return "LSPAD"
case .lsvPad: return "LSVPAD"
case .rs: return "RS" case .rs: return "RS"
case .rsPad: return "RSPAD" case .rsPad: return "RSPAD"
case .rsvPad: return "RSVPAD" case .rsvPad: return "RSVPAD"
@@ -138,7 +139,8 @@ enum GamepadWidget: Hashable {
case .right: return SwiftLocalizationHelper.localizedString(forKey: "Gamepad Right") case .right: return SwiftLocalizationHelper.localizedString(forKey: "Gamepad Right")
case .ls: return SwiftLocalizationHelper.localizedString(forKey: "LS/L3 button") case .ls: return SwiftLocalizationHelper.localizedString(forKey: "LS/L3 button")
case .lswheel: return SwiftLocalizationHelper.localizedString(forKey: "Left stick wheel") case .lswheel: return SwiftLocalizationHelper.localizedString(forKey: "Left stick wheel")
case .lsPad: return SwiftLocalizationHelper.localizedString(forKey: "Left stick pad") case .lsPad: return SwiftLocalizationHelper.localizedString(forKey: "Displacement-based left stick pad")
case .lsvPad: return SwiftLocalizationHelper.localizedString(forKey: "Velocity-based left stick pad")
case .rs: return SwiftLocalizationHelper.localizedString(forKey: "RS/R3 button") case .rs: return SwiftLocalizationHelper.localizedString(forKey: "RS/R3 button")
case .rsPad: return SwiftLocalizationHelper.localizedString(forKey: "Displacement-based right stick pad") case .rsPad: return SwiftLocalizationHelper.localizedString(forKey: "Displacement-based right stick pad")
case .rsvPad: return SwiftLocalizationHelper.localizedString(forKey: "Velocity-based right stick pad") case .rsvPad: return SwiftLocalizationHelper.localizedString(forKey: "Velocity-based right stick pad")
@@ -460,23 +462,30 @@ struct AbstractGamepadView: View {
private func applyStickSelection(_ widget: GamepadWidget) { private func applyStickSelection(_ widget: GamepadWidget) {
switch widget { switch widget {
case .ls, .lsPad, .lswheel: case .ls, .lsPad, .lswheel, .lsvPad:
leftStickHighlight = nextStickHighlightMode( leftStickHighlight = nextStickHighlightMode(
current: leftStickHighlight, current: leftStickHighlight,
selected: widget, selected: widget,
outerWidget: .ls, outerWidget: .ls,
thumbWidgets: [.lsPad, .lswheel] thumbWidgets: [.lsPad, .lswheel, .lsvPad]
) )
if widget == .ls,
isCommandSelected?(GamepadWidget.lsPad.cmd) == true
|| isCommandSelected?(GamepadWidget.lsvPad.cmd) == true
{
leftStickHighlight = .both
}
case .rs, .rsPad, .rsvPad, .rsWheel: case .rs, .rsPad, .rsvPad, .rsWheel:
rightStickHighlight = nextStickHighlightMode( rightStickHighlight = nextStickHighlightMode(
current: rightStickHighlight, current: rightStickHighlight,
selected: widget, selected: widget,
outerWidget: .rs, outerWidget: .rs,
thumbWidgets: [.rsPad, .rsvPad, .rsWheel] thumbWidgets: [.rsvPad, .rsPad, .rsWheel]
) )
if widget == .rs, if widget == .rs,
isCommandSelected?(GamepadWidget.rsPad.cmd) == true || isCommandSelected?(GamepadWidget.rsvPad.cmd) == true { isCommandSelected?(GamepadWidget.rsPad.cmd) == true
|| isCommandSelected?(GamepadWidget.rsvPad.cmd) == true
{
rightStickHighlight = .both rightStickHighlight = .both
} }
@@ -555,11 +564,11 @@ struct AbstractGamepadView: View {
dpadHighlight = .none dpadHighlight = .none
} }
if widgets.contains(.ls) || widgets.contains(.lsPad) || widgets.contains(.lswheel) { if widgets.contains(.ls) || widgets.contains(.lsPad) || widgets.contains(.lswheel) || widgets.contains(.lsvPad) {
leftStickHighlight = .none leftStickHighlight = .none
} }
if widgets.contains(.rs) || widgets.contains(.rsPad) || widgets.contains(.rsvPad) { if widgets.contains(.rs) || widgets.contains(.rsPad) || widgets.contains(.rsvPad) || widgets.contains(.rsWheel) {
rightStickHighlight = .none rightStickHighlight = .none
} }
@@ -1019,7 +1028,7 @@ struct AbstractGamepadView: View {
.frame(width: leftStickSize, height: leftStickSize) .frame(width: leftStickSize, height: leftStickSize)
.offset(x: leftStickCenterX, y: leftStickCenterY) .offset(x: leftStickCenterX, y: leftStickCenterY)
.onTapGesture { .onTapGesture {
handleTappedWidgets([.ls, .lswheel, .lsPad], sourceIsDPad: false) handleTappedWidgets([.ls, .lswheel, .lsPad, .lsvPad], sourceIsDPad: false)
} }
DPadXboxStyleView( DPadXboxStyleView(
@@ -1052,7 +1061,7 @@ struct AbstractGamepadView: View {
.frame(width: rightStickSize, height: rightStickSize) .frame(width: rightStickSize, height: rightStickSize)
.offset(x: rightStickCenterX, y: sharedLowerControlCenterY) .offset(x: rightStickCenterX, y: sharedLowerControlCenterY)
.onTapGesture { .onTapGesture {
handleTappedWidgets([.rs, .rsPad, .rsvPad, .rsWheel], sourceIsDPad: false) handleTappedWidgets([.rs, .rsvPad, .rsPad, .rsWheel], sourceIsDPad: false)
} }
HomeButtonView( HomeButtonView(
@@ -1155,7 +1164,7 @@ struct AbstractGamepadView: View {
if isCommandSelected(GamepadWidget.ls.cmd) { if isCommandSelected(GamepadWidget.ls.cmd) {
leftStickHighlight = .outerOnly leftStickHighlight = .outerOnly
} }
if isCommandSelected(GamepadWidget.lsPad.cmd) || isCommandSelected(GamepadWidget.lswheel.cmd) { if isCommandSelected(GamepadWidget.lsPad.cmd) || isCommandSelected(GamepadWidget.lswheel.cmd) || isCommandSelected(GamepadWidget.lsvPad.cmd) {
leftStickHighlight = leftStickHighlight == .outerOnly ? .both : .thumbOnly leftStickHighlight = leftStickHighlight == .outerOnly ? .both : .thumbOnly
} }
@@ -1214,7 +1223,7 @@ struct AbstractGamepadView: View {
} else if leftStickHighlight == .outerOnly { } else if leftStickHighlight == .outerOnly {
leftStickHighlight = .none leftStickHighlight = .none
} }
case GamepadWidget.lsPad.cmd, GamepadWidget.lswheel.cmd: case GamepadWidget.lsPad.cmd, GamepadWidget.lswheel.cmd, GamepadWidget.lsvPad.cmd:
if leftStickHighlight == .both { if leftStickHighlight == .both {
leftStickHighlight = .outerOnly leftStickHighlight = .outerOnly
} else if leftStickHighlight == .thumbOnly { } else if leftStickHighlight == .thumbOnly {
+6 -1
View File
@@ -1277,6 +1277,7 @@ struct WidgetPickerView: View {
"DPAD", "DPAD",
"LSWHEEL", "LSWHEEL",
"LSPAD", "LSPAD",
"LSVPAD",
"RSPAD", "RSPAD",
"RSVPAD", "RSVPAD",
"RSWHEEL", "RSWHEEL",
@@ -1314,6 +1315,10 @@ struct WidgetPickerView: View {
return true return true
} }
if cmd == "LS", poolItems.contains(where: { $0.cmd == "LSPAD" || $0.cmd == "LSVPAD" }) {
return true
}
return false return false
} }
@@ -2293,7 +2298,7 @@ struct WidgetPickerView: View {
"HOME", "HOME",
"DPAD", "DPAD",
"OSCUP", "OSCDOWN", "OSCLEFT", "OSCRIGHT", "OSCUP", "OSCDOWN", "OSCLEFT", "OSCRIGHT",
"LS", "LSWHEEL", "LSPAD", "LS", "LSWHEEL", "LSPAD", "LSVPAD",
"RS", "RSPAD", "RSVPAD", "RSWHEEL", "RS", "RSPAD", "RSVPAD", "RSWHEEL",
"LB", "RB", "LB", "RB",
"LT", "LTPAD", "LT", "LTPAD",