CGEventTapCreate 的 kCG EventTap 选项默认值不起作用

kCGEventTapOptionDefault for CGEventTapCreate dose not work

我选择了 2012 年的一个旧项目,该项目在镜像 window(水平翻转)中修改鼠标事件,以使用 CGEventTapCreate 调整鼠标协调。该项目可能在那一刻工作。但它现在不起作用。经过几次调试尝试,我发现带有 kCGEventTapOptionDefault 的第三个参数导致 CGEventTapCreate 到 return rull。将其更改为 kCGEventTapOptionListenOnly 后,函数 return 是一个有效的 CFMachPortRef,如 <NSMachPort: 0x600003705380>,但我想要一个活动的过滤器事件点击。 我尝试使用 sudo 在命令行下使用 root 权限 运行 我的应用程序,但没有成功。 我在辅助功能面板上设置了用户权限。 这是代码:

  // Create event tap for mouse events
    CGEventMask mouseMask = ( CGEventMaskBit(kCGEventLeftMouseDown)
                             |CGEventMaskBit(kCGEventLeftMouseUp)
                             |CGEventMaskBit(kCGEventRightMouseDown)
                             |CGEventMaskBit(kCGEventRightMouseUp)
                             |CGEventMaskBit(kCGEventMouseMoved)
                             |CGEventMaskBit(kCGEventLeftMouseDragged)
                             |CGEventMaskBit(kCGEventRightMouseDragged));


    mouseTap = CGEventTapCreate(kCGSessionEventTap, 
                            kCGHeadInsertEventTap,kCGEventTapOptionDefault,
                            mouseMask,(CGEventTapCallBack) eventTapFunction, (__bridge void *)self);

我在 macOS Catalina 上从 2015 macbook pro 编译了应用程序。 我可以做些什么来解决这个问题?

我通过在辅助功能面板中取消点击并重新点击该应用程序解决了我的问题。