Skip to content

Commit 078c541

Browse files
committed
fix: ignore Unity keyboard initialization error
1 parent 32ec1cc commit 078c541

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,15 @@ + (NSArray *)hook_GCMouse_mice {
201201
return @[];
202202
}
203203

204+
+ (void)hook_Unity_KeyboardDelegate_Initialize {
205+
@try {
206+
[self hook_Unity_KeyboardDelegate_Initialize];
207+
}
208+
@catch (NSException *exception) {
209+
NSLog(@"Caught exception: %@, reason: %@", exception.name, exception.reason);
210+
}
211+
}
212+
204213
// Hook for UIUserInterfaceIdiom
205214

206215
// - (long long) hook_userInterfaceIdiom {
@@ -353,6 +362,13 @@ + (void)load {
353362
[objc_getClass("GCMouse") swizzleClassMethod:@selector(current) withMethod:@selector(hook_GCMouse_current)];
354363
[objc_getClass("GCMouse") swizzleClassMethod:@selector(mice) withMethod:@selector(hook_GCMouse_mice)];
355364
}
365+
366+
// Delay a frame to wait for some frameworks (such as UnityFramework) to load
367+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
368+
if ([[PlaySettings shared] ignoreUnityKeyboardInitializationError]) {
369+
[objc_getClass("KeyboardDelegate") swizzleClassMethod:NSSelectorFromString(@"Initialize") withMethod:@selector(hook_Unity_KeyboardDelegate_Initialize)];
370+
}
371+
});
356372
}
357373

358374
@end

PlayTools/PlaySettings.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ let settings = PlaySettings.shared
9797
@objc lazy var disableBuiltinMouse = settingsData.disableBuiltinMouse
9898

9999
@objc lazy var blockSleepSpamming = settingsData.blockSleepSpamming
100+
101+
@objc lazy var ignoreUnityKeyboardInitializationError = settingsData.ignoreUnityKeyboardInitializationError
100102
}
101103

102104
struct AppSettingsData: Codable {
@@ -131,4 +133,5 @@ struct AppSettingsData: Codable {
131133
var resizableAspectRatioWidth = 0
132134
var resizableAspectRatioHeight = 0
133135
var blockSleepSpamming = false
136+
var ignoreUnityKeyboardInitializationError = false
134137
}

0 commit comments

Comments
 (0)