我想将正在运行的MacOS应用程序收到的所有按键事件转发给iOS模拟器。
我使用runningApplications(withBundleIdentifier:)
来获取正在运行的iOS模拟器的pid
。
然后我让我的MacOS应用程序收听任何按键事件,并使用CGEvent
postToPID
转发收到的密钥代码。
var pid: pid_t!
override func viewDidLoad() {
super.viewDidLoad()
let runningApplications = NSRunningApplication.runningApplications(withBundleIdentifier: "com.apple.iphonesimulator")
pid = runningApplications[0].processIdentifier
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
(event) -> NSEvent? in
self.keyPressDown(with: event)
return event
}
}
func keyPressDown(with event: NSEvent) {
print(event.keyCode)
let cgEvent = CGEvent(keyboardEventSource: nil, virtualKey: event.keyCode, keyDown: true)
cgEvent?.postToPid(pid)
}
这是我正在使用的代码。此代码段用于将按键事件从正在运行的MacOS应用程序转发到其他应用程序,我在Firefox浏览器,Sublime Text上进行了测试。
为什么iOS模拟器无法接收这些按键事件。