我想创建一个强制用户在特定时间休息的应用。 我找不到办法做到这一点。到目前为止,我正要使用CGEvent在按下某个键时重新发送通知,但仅适用于鼠标输入。
let eventMask = CGEventType.keyDown.rawValue //| (1 << CGEventType.keyUp.rawValue)
guard let eventTap = CGEvent.tapCreate(tap: .cgSessionEventTap,
place: .headInsertEventTap,
options: .defaultTap,
eventsOfInterest: CGEventMask(eventMask),
callback: myCGEventCallback,
userInfo: nil) else {
print("failed to create event tap")
exit(1)
}
let runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0)
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, .commonModes)
CGEvent.tapEnable(tap: eventTap, enable: true)
CFRunLoopRun()
设置哪个事件掩码无关紧要,只有鼠标操作才会触发回调。
所以我的问题分为两部分:
感谢。
答案 0 :(得分:1)
您可以使用CGEventTap
执行此操作,但它要求在“系统偏好设置 - 安全性”和“安全性”中为应用程序提供辅助功能权限。隐私 - 隐私 - 辅助功能&#34;。
有关完整示例,请参阅this answer。
如果您需要帮助将其转换为Swift,请与我们联系。