我正在开发一个控制光标的 macOS 应用程序。我正在使用 CGEvent Tap 并且我正在向 CGEvents 添加一些算术以偏移最终的鼠标位置。尽管该应用程序在原则上按预期工作,但在某些情况下 - 更具体地说:当使用某些流行的插图软件并使用触控笔运行应用程序时 - 该应用程序会在其原始位置为鼠标产生一些闪烁的“幽灵”位置。好消息是,在以 root 用户身份登录运行应用程序时,可以解决此问题。我已经阅读了很多 SO 帖子,但这篇特别的帖子最好地解决了这个问题:
https://stackoverflow.com/a/9899901/5066660
如本文所述,问题可能是:
不幸的是,CGEventTapCreate() 文档说:只有以 root 用户身份运行的进程才能在 HID 事件进入窗口服务器的位置找到事件点击;对于其他用户,此函数返回 NULL。
好吧,该函数肯定不会返回 null,因为点击已生效。我还尝试了该函数的所有可能参数组合,但它们的作用都相同。在该职位的进一步下方,建议按以下方式解决该问题:
也许您可以将此功能分离到具有超级用户权限的单独进程中,让您的应用程序的其余部分处于正常用户模式?我相信还有一种方法可以为您的程序执行的特定操作请求 root 权限。
现在,如果这是一个可能的解决方案,我很乐意实施它!所以我的问题是:如何?我偶然发现运行具有提升权限的脚本,但不仅仅是 CoreGraphics 代码,例如 CGEventTap。这可能吗?任何人都可以给我一个如何实现这一点的例子,或者任何其他解决问题的方法吗?
欢迎大家帮忙,非常感谢。