- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在命令行工具项目中复制并粘贴了 main.swift 下面链接中的代码。 How do you use CGEventTapCreate in Swift?
它构建没有错误,但是当我运行时, guard let eventTap = CGEventTapCreate... 失败。我认为 eventTap 从 CGEventTapCreate 中获取 nill。
我假设是因为系统首选项 > 安全和隐私 > 可访问性中不允许该应用程序。不过,我没有收到允许该应用程序进入辅助功能类别的通知。我是否需要在项目设置中设置一些东西来触发它?它虽然从命令行运行。由于某种原因,我无法从 xCode 运行。这是对上述链接稍作修改的代码。
import Foundation
func myCGEventCallback(proxy : CGEventTapProxy, type : CGEventType, event : CGEvent, refcon : UnsafeMutablePointer) -> Unmanaged? {
if [.KeyDown , .KeyUp].contains(type) {
var keyCode = CGEventGetIntegerValueField(event, .KeyboardEventKeycode)
print(keyCode)
if keyCode == 0 {
keyCode = 6
} else if keyCode == 6 {
keyCode = 0
}
CGEventSetIntegerValueField(event, .KeyboardEventKeycode, keyCode)
}
return Unmanaged.passRetained(event)
}
let eventMask = (1 << CGEventType.KeyDown.rawValue) | (1 << CGEventType.KeyUp.rawValue)
guard let eventTap = CGEventTapCreate(.CGSessionEventTap, .HeadInsertEventTap, .Default, CGEventMask(eventMask), myCGEventCallback, nil)
else {
print("failed to create event tap")
exit(1)
}
let runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0)
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes)
CGEventTapEnable(eventTap, true)
CFRunLoopRun()
1 Câu trả lời
如果您使用的是 Swift3,那么 CGEventTap 常量应该以小写字母开头。例如:
.CGSessionEventTap
应该是 .cgSessionEventTap
.keyDown
也是如此, .keyUp
, .headInsertEventTap
vân vân……
为了从 Xcode 运行,您需要将 Xcode.app 添加到:System Preferences > Security & Privacy 面板(不是您正在构建的应用程序)。
要在没有 Xcode 的情况下运行,您需要通过调用 isProcessTrusted
使您的应用程序成为受信任的辅助功能客户端来自你的 applicationDidFinishLaunching
phương pháp.
关于swift - 不能 CGEventTapCreate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39211049/
Tôi đã sao chép và dán mã từ liên kết bên dưới vào main.swift trong dự án công cụ dòng lệnh của tôi. Bạn sử dụng CGEventTapCreate trong Swift như thế nào? Nó xây dựng mà không có lỗi, nhưng khi tôi chạy,
我正在尝试使用以下代码注册全局关键事件: void function() { CFMachPortRef keyUpEventTap = CGEventTapCreate(kCGHIDEven
我正在使用CGEventTapCreate当我的应用程序运行时,从 iTunes 中“窃取”媒体 key 。我传递给 CGEventTapCreate 的回调内部的代码检查该事件,如果发现它是媒体键之
有没有人设法让这个函数在 Swift 中工作? 这是去年的引用 SO 帖子:Using CGEventTapCreate Trouble with parameters in Swift Apple
我正在尝试在 Swift 中使用 CGEventTapCreate 等来捕获按键。我想这样做,以便当我的 child 使用 Mac 程序时,我可以限制哪些键可以做某事。我明白我需要启用辅助技术才能让
我拿起了一个 2012 年的旧项目,该项目在镜像窗口(水平翻转)中修改鼠标事件以使用 CGEventTapCreate 调整鼠标协调。 .该项目可能会在那个时候起作用。但它现在不起作用。经过几次调试尝
我完全坚持多年来一直有效的逻辑。当应用程序在后台时,我正在使用它来监听键盘事件(热键)。 CFMachPortRef eventTap = CGEventTapCreate(kCGSessionEve
我的应用程序的功能之一是检测 keyDown 事件并对某些特定键进行操作。 所以,我使用CGEventTapCreate 来解决我的问题,我的代码是这样的: if let tap = CGEve
Tôi là một lập trình viên xuất sắc, rất giỏi!