无法在 macOS Mojave 应用程序中模拟击键

Unable to simulate keystrokes in macOS Mojave app

我需要在 macOS Mojave 应用程序 (Xcode 10.3) 中模拟用户键盘输入(例如,键入字母 'a')。我正在尝试在这个问题中使用 posted 代码:

但是,在我的应用程序请求控制系统事件的权限并且我 运行 下面的代码块之后,什么也没有发生(除了让我知道代码块实际上正在执行的语句打印之外) .代码 运行s 没有任何错误,但我没有任何功能。

我已确保我的应用未被沙盒化,并且我的应用有权控制我的计算机和系统事件(在安全和隐私方面)。

这是我正在使用的代码(其中 99% 来自上面链接的 post):

let eventSource = CGEventSource(stateID: CGEventSourceStateID.hidSystemState)
let key: CGKeyCode = 0     // virtual key for 'a'
let eventDown = CGEvent(keyboardEventSource: eventSource, virtualKey: key, keyDown: true)
let eventUp = CGEvent(keyboardEventSource: eventSource, virtualKey: key, keyDown: false)
let location = CGEventTapLocation.cghidEventTap
eventDown?.post(tap: location)
eventUp?.post(tap: location)

知道为什么这对我不起作用吗?

  1. 您需要在info.plist

  2. 中添加"Privacy - AppleEvents Sending Usage Description"
  3. 每当您对代码进行任何更改时,您都必须再次禁用和启用应用程序的安全和隐私权限 -> 辅助功能