try to fix again:

fixed: squeeze shortcut keys can't be held down
This commit is contained in:
True Zhuanjia committed 2026-02-11 10:51:47 +08:00
1 parent d3ce55cbd6
commit 94eb4dd8a0
5 files changed
+19 -19

No files matched your search

+9 -9
View File
@@ -600,12 +600,12 @@ import UIKit
} }
} }
@objc public func sendAutoReleaseComboCommand(cmdString: [String]?, delay: TimeInterval = 0.2, index: Int = 0, pressOnly: Bool = false, releaseOnly:Bool = false) { // we need a large delay for WAN streaming @objc public func sendAutoReleaseComboCommand(cmdStrings: [String]?, delay: TimeInterval = 0.2, index: Int = 0, pressOnly: Bool = false, releaseOnly:Bool = false) { // we need a large delay for WAN streaming
// 如果已处理完所有按键,则开始释放按键 // 如果已处理完所有按键,则开始释放按键
guard let cmdString = cmdString else { return } guard let cmdStrings = cmdStrings else { return }
if releaseOnly { if releaseOnly {
for keyStr in cmdString.reversed() { for keyStr in cmdStrings.reversed() {
if let keyCode = CommandManager.keyboardButtonMappings[keyStr] { if let keyCode = CommandManager.keyboardButtonMappings[keyStr] {
LiSendKeyboardEvent(keyCode, Int8(KEY_ACTION_UP), 0) // 释放按键 LiSendKeyboardEvent(keyCode, Int8(KEY_ACTION_UP), 0) // 释放按键
} }
@@ -616,11 +616,11 @@ import UIKit
return return
} }
guard index < cmdString.count else { guard index < cmdStrings.count else {
// 释放按键 // 释放按键
DispatchQueue.main.asyncAfter(deadline: .now()) { DispatchQueue.main.asyncAfter(deadline: .now()) {
if pressOnly {return} if pressOnly {return}
for keyStr in cmdString.reversed() { // 从后往前释放按键 for keyStr in cmdStrings.reversed() { // 从后往前释放按键
if let keyCode = CommandManager.keyboardButtonMappings[keyStr] { if let keyCode = CommandManager.keyboardButtonMappings[keyStr] {
LiSendKeyboardEvent(keyCode, Int8(KEY_ACTION_UP), 0) // 释放按键 LiSendKeyboardEvent(keyCode, Int8(KEY_ACTION_UP), 0) // 释放按键
} }
@@ -632,17 +632,17 @@ import UIKit
return return
} }
// 获取当前按键的映射值 // 获取当前按键的映射值
if let keyCode = CommandManager.keyboardButtonMappings[cmdString[index]] { if let keyCode = CommandManager.keyboardButtonMappings[cmdStrings[index]] {
// 发送当前按键的按下事件 // 发送当前按键的按下事件
LiSendKeyboardEvent(keyCode, Int8(KEY_ACTION_DOWN), 0) LiSendKeyboardEvent(keyCode, Int8(KEY_ACTION_DOWN), 0)
} else if let mouseButtonCode = CommandManager.mouseButtonMappings[cmdString[index]]{ } else if let mouseButtonCode = CommandManager.mouseButtonMappings[cmdStrings[index]]{
LiSendMouseButtonEvent(CChar(BUTTON_ACTION_PRESS), mouseButtonCode) LiSendMouseButtonEvent(CChar(BUTTON_ACTION_PRESS), mouseButtonCode)
} else { } else {
print("No mapping found for \(cmdString[index])") print("No mapping found for \(cmdStrings[index])")
} }
// 延迟后递归处理下一个按键 // 延迟后递归处理下一个按键
DispatchQueue.main.asyncAfter(deadline: .now() + delay) { DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
self.sendAutoReleaseComboCommand(cmdString: cmdString, delay: delay, index: index + 1) self.sendAutoReleaseComboCommand(cmdStrings: cmdStrings, delay: delay, index: index + 1, pressOnly: pressOnly, releaseOnly: releaseOnly)
} }
} }
+3 -3
View File
@@ -398,7 +398,7 @@ import SVGKit
if self.cmdString.contains("ERASER"){ if self.cmdString.contains("ERASER"){
self.functionalButtonString = "ERASER" self.functionalButtonString = "ERASER"
} }
if !self.functionalButtonString.isEmpty { if self.isFunctionalButton {
self.buttonMode = .movable self.buttonMode = .movable
if self.functionalButtonString == "PENCILHOVER" {self.buttonMode = .regular} if self.functionalButtonString == "PENCILHOVER" {self.buttonMode = .regular}
} }
@@ -460,7 +460,7 @@ import SVGKit
self.hasAutoTap = self.widgetType == WidgetTypeEnum.button && self.functionalButtonString == "" && self.motionControlButtonString == "" self.hasAutoTap = self.widgetType == WidgetTypeEnum.button && self.functionalButtonString == "" && self.motionControlButtonString == ""
self.isMousePadWithButtonActions = CommandManager.mousePadWithButtonActions.contains(self.touchPadString) && widgetType == WidgetTypeEnum.touchPad self.isMousePadWithButtonActions = CommandManager.mousePadWithButtonActions.contains(self.touchPadString) && widgetType == WidgetTypeEnum.touchPad
self.hasInertia = CommandManager.inertialTouchPads.contains(self.touchPadString) self.hasInertia = CommandManager.inertialTouchPads.contains(self.touchPadString)
self.isFunctionalButton = self.functionalButtonString != "" self.isFunctionalButton = self.functionalButtonString != "" || self.cmdString.contains("+")
self.hasHapticFeedback = !self.comboButtonStrings.isEmpty || CommandManager.directionPads.contains(self.touchPadString) self.hasHapticFeedback = !self.comboButtonStrings.isEmpty || CommandManager.directionPads.contains(self.touchPadString)
self.isDirectionPad = self.widgetType == WidgetTypeEnum.touchPad && CommandManager.directionPads.contains(self.touchPadString) self.isDirectionPad = self.widgetType == WidgetTypeEnum.touchPad && CommandManager.directionPads.contains(self.touchPadString)
self.isStickWheel = self.widgetType == WidgetTypeEnum.touchPad && CommandManager.stickWheels.contains(self.touchPadString) self.isStickWheel = self.widgetType == WidgetTypeEnum.touchPad && CommandManager.stickWheels.contains(self.touchPadString)
@@ -1509,7 +1509,7 @@ import SVGKit
autoReleaseComboButtons.removeAll{ autoReleaseComboButtons.removeAll{
Set(CommandManager.pencilProButtonCmds).contains($0) Set(CommandManager.pencilProButtonCmds).contains($0)
} }
CommandManager.shared.sendAutoReleaseComboCommand(cmdString: autoReleaseComboButtons) // send multi-key command CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: autoReleaseComboButtons) // send multi-key command
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.buttonUpVisualEffect() self.buttonUpVisualEffect()
} }
+5 -5
View File
@@ -259,7 +259,7 @@ import UIKit
if !pencilProEnabled {return} if !pencilProEnabled {return}
if doubleTapShorcuts.isEmpty {return} if doubleTapShorcuts.isEmpty {return}
let keyStrings = CommandManager.shared.extractAutoReleaseButtonStrings(from: doubleTapShorcuts[shortcutIndex]) let keyStrings = CommandManager.shared.extractAutoReleaseButtonStrings(from: doubleTapShorcuts[shortcutIndex])
CommandManager.shared.sendAutoReleaseComboCommand(cmdString: keyStrings, delay: 0.1) CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: keyStrings, delay: 0.1)
shortcutIndex = (shortcutIndex + 1) % doubleTapShorcuts.count shortcutIndex = (shortcutIndex + 1) % doubleTapShorcuts.count
} }
@@ -278,12 +278,12 @@ import UIKit
switch squeeze.phase { switch squeeze.phase {
case .began: case .began:
if keepPressedUntilRelease {CommandManager.shared.sendAutoReleaseComboCommand(cmdString: squeezePressKeyStrings, delay: 0.1, pressOnly: true)} if keepPressedUntilRelease {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: squeezePressKeyStrings, delay: 0.1, pressOnly: true)}
else {CommandManager.shared.sendAutoReleaseComboCommand(cmdString: squeezePressKeyStrings, delay: 0.1)} else {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: squeezePressKeyStrings, delay: 0.1)}
break break
case .ended, .cancelled: case .ended, .cancelled:
if keepPressedUntilRelease {CommandManager.shared.sendAutoReleaseComboCommand(cmdString: squeezePressKeyStrings, releaseOnly: true)} if keepPressedUntilRelease {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: squeezePressKeyStrings, releaseOnly: true)}
else {CommandManager.shared.sendAutoReleaseComboCommand(cmdString: squeezeReleaseKeyStrings, delay: 0.1)} else {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: squeezeReleaseKeyStrings, delay: 0.1)}
break break
default: default:
break break
@@ -1338,7 +1338,7 @@
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)); dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC));
dispatch_after(delay, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_after(delay, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSArray* hdrCommand = [CommandManager.shared extractAutoReleaseButtonStringsFrom:@"WIN+ALT+B"]; NSArray* hdrCommand = [CommandManager.shared extractAutoReleaseButtonStringsFrom:@"WIN+ALT+B"];
[CommandManager.shared sendAutoReleaseComboCommandWithCmdString:hdrCommand delay:0.15 index:0 pressOnly:false releaseOnly:false]; [CommandManager.shared sendAutoReleaseComboCommandWithCmdStrings:hdrCommand delay:0.15 index:0 pressOnly:false releaseOnly:false];
}); });
} }
} }
@@ -406,7 +406,7 @@ import UIKit
private func sendKeyboardCommand(_ cmd: RemoteCommand) { private func sendKeyboardCommand(_ cmd: RemoteCommand) {
print("Sending key-value") print("Sending key-value")
let keyboardCmdStrings = CommandManager.shared.extractAutoReleaseButtonStrings(from: cmd.cmdString) let keyboardCmdStrings = CommandManager.shared.extractAutoReleaseButtonStrings(from: cmd.cmdString)
CommandManager.shared.sendAutoReleaseComboCommand(cmdString: keyboardCmdStrings!) CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: keyboardCmdStrings!)
} }
public func gestureRecognizer( public func gestureRecognizer(