Skip to content

Commit 40bf8a2

Browse files
committed
Add release delay for virtual keyboard/mouse in case some games ignore instant key release
1 parent 12d26d6 commit 40bf8a2

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
steps:
2525
- uses: maxim-lobanov/setup-xcode@v1
2626
with:
27-
xcode-version: "15.3"
27+
xcode-version: "16.4"
2828
- name: Checkout
2929
uses: actions/checkout@v3
3030
with:

OpenParsec/ParsecSDKBridge.swift

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,17 @@ class ParsecSDKBridge: ParsecService
379379
}
380380
keyboardMessagePress.keyboard.code = keyCode
381381
ParsecClientSendMessage(_parsec, &keyboardMessagePress)
382-
keyboardMessagePress.keyboard.pressed = false
383-
if !isVirtualShiftOn && useShift {
384-
keyboardMessagePress.keyboard.code = ParsecKeycode(rawValue: 225)
385-
ParsecClientSendMessage(_parsec, &keyboardMessagePress)
386-
keyboardMessagePress.keyboard.code = keyCode
382+
383+
// add release delay in case some games ignore instant key release
384+
DispatchQueue.global().asyncAfter(deadline: .now() + 0.02) {
385+
keyboardMessagePress.keyboard.pressed = false
386+
if !self.isVirtualShiftOn && useShift {
387+
keyboardMessagePress.keyboard.code = ParsecKeycode(rawValue: 225)
388+
ParsecClientSendMessage(self._parsec, &keyboardMessagePress)
389+
keyboardMessagePress.keyboard.code = keyCode
390+
}
391+
ParsecClientSendMessage(self._parsec, &keyboardMessagePress)
387392
}
388-
ParsecClientSendMessage(_parsec, &keyboardMessagePress)
389393
}
390394

391395
func sendVirtualKeyboardInput(text: String, isOn: Bool) {

OpenParsec/TouchHandlingView.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,17 @@ class TouchController
3737
let y = Int32(location.y)
3838

3939
// Send the mouse input to the host
40-
40+
// add release delay in case some games ignore instant key release
4141
CParsec.sendMouseMessage(parsecTap, x, y, true)
42-
CParsec.sendMouseMessage(parsecTap, x, y, false)
42+
DispatchQueue.global().asyncAfter(deadline: .now() + 0.02) {
43+
CParsec.sendMouseMessage(parsecTap, x, y, false)
44+
}
45+
4346
} else {
4447
CParsec.sendMouseClickMessage(parsecTap, true)
45-
CParsec.sendMouseClickMessage(parsecTap, false)
48+
DispatchQueue.global().asyncAfter(deadline: .now() + 0.02) {
49+
CParsec.sendMouseClickMessage(parsecTap, false)
50+
}
4651
}
4752

4853
}

0 commit comments

Comments
 (0)