Macos Cocoa中的系统级密钥模拟
我正在为OSX 10.10(swift)开发Mac应用程序。有一个功能具有迷你虚拟键盘,需要大量的键盘按键模拟Macos Cocoa中的系统级密钥模拟,macos,cocoa,Macos,Cocoa,我正在为OSX 10.10(swift)开发Mac应用程序。有一个功能具有迷你虚拟键盘,需要大量的键盘按键模拟 (任何事件都会按顺序生成数十次按键模拟) 目前我正在使用CGEvent中的此方法 CGEventCreateKeyboardEvent(source: CGEventSource!, virtualKey: CGKeyCode, keyDown: Bool) 但是它非常慢。(我可以看到模拟一个接一个地发生) 我特别期待着,使用低级别的系统调用来完成这项工作,以便在时间范围内获得更好
(任何事件都会按顺序生成数十次按键模拟) 目前我正在使用CGEvent中的此方法
CGEventCreateKeyboardEvent(source: CGEventSource!, virtualKey: CGKeyCode, keyDown: Bool)
但是它非常慢。(我可以看到模拟一个接一个地发生)
我特别期待着,使用低级别的系统调用来完成这项工作,以便在时间范围内获得更好的结果 有人能推荐一些资源来学习/了解如何做到这一点吗。或者有开源库吗
下面是我的代码
class func postKey(key : Int , flags : CGEventFlags!) {
let source = CGEventSourceCreate(CGEventSourceStateID(kCGEventSourceStateCombinedSessionState)).takeRetainedValue()
let downKey = CGEventCreateKeyboardEvent(source, UInt16(key), true).takeRetainedValue()
let upKey = CGEventCreateKeyboardEvent(source, UInt16(key), false).takeRetainedValue()
if flags != nil {
CGEventSetFlags(downKey, flags);
}
let loc = CGEventTapLocation(kCGHIDEventTap)
CGEventPost(loc, downKey)
CGEventPost(loc, upKey)
}
并按照下面的示例顺序调用它
self.postKey(kVK_ANSI_A, flags: CGEventFlags(kCGEventFlagMaskCommand))
self.postKey(kVK_ANSI_C, flags: CGEventFlags(kCGEventFlagMaskCommand))
self.postKey(kVK_ANSI_V, flags: CGEventFlags(kCGEventFlagMaskCommand))
注意:应用程序没有沙盒。“但速度非常慢”这可能是线程问题吗?显示实际代码和使用它的上下文…@matt我已经更新了问题