这个问题是一个非常古老的帖子的后续:
我正在构建Swiftui虚拟键盘。像真正的键盘一样,我的UIBUTTON类似于硬件按钮(键a
,
s
,
d
等),用户可以使用它们的鼠标单击它们。用户还可以切换以保持按钮。我可以使用下面的函数发送键盘事件,但无法保留键盘键。推断我的用户想按下每个按钮,直到发布,我将如何发送一个cgevent,以告诉macOS用户持有
keyCode == a
的密钥?
private func pressButton(_ keyCode: UInt16) {
// create a key down event
let eventDown = CGEvent(keyboardEventSource: nil, virtualKey: keyCode, keyDown: true)
// post the key down event
eventDown?.post(tap: .cghidEventTap)
}
pressButton
方法,以继续发送按钮,但遇到了“事件发送太快或太慢”的问题,相比之下,如果我在键盘上握住该特定按钮会发生什么。有用的线程:
使用swift swift tume键
cgevent不允许这样做。 you have to create an NSEvent instead, using: https://developer.apple.com/documentation/appkit/nsevent/keyevent(with:location:modifierflags:timestamp:windownumber:context:characters:charactersignoringmodifiers:isarepeat:keycode:)