OSX Carbon:Quartz 事件点击以获取键盘输入

发布于 2024-11-23 15:46:49 字数 722 浏览 0 评论 0原文

我想使用 c++ 在 OSX 上获得键盘输入,而不使用 Cocoa、已弃用的 Carbon UPP 处理程序,如果可能的话,不使用 IOHID,因为这需要大量额外的工作。 我已经使用石英事件点击实现了一个简单的鼠标类,它的工作方式就像一个魅力,现在我想使用它们来实现键盘类。无论如何,正如 CGEventTapCreate 下的参考所述: http://developer.apple.com/ library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html

仅当满足以下条件之一时,您才能访问关键事件:

  1. 当前进程正在运行作为根用户。
  2. 已启用辅助设备的访问。在 Mac OS X v10.4 中,您可以 使用系统偏好设置、通用访问启用此功能 面板,键盘视图。

这是一个非常严重的限制,因为我也希望我的应用程序能够在没有任何奇怪设置的情况下工作。 有什么办法可以解决这个问题吗?如果没有,除了在 Carbon 中使用 Taps 之外还有其他选择吗? 谢谢!

I want to get Keyboard Input on OSX using c++ without using Cocoa, deprecated Carbon UPP handlers and if possible without using IOHID since that's alot of extra work.
I allready implemented a simple mouse class using quartz event taps and it works like a charm and now I'd like to use them to implement a keyboard class. Anyways as the reference states under CGEventTapCreate:
http://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html

you can only access key events if one of the following is true:

  1. The current process is running as the root user.
  2. Access for assistive devices is enabled. In Mac OS X v10.4, you can
    enable this feature using System Preferences, Universal Access
    panel, Keyboard view.

that is a very serious limitation since I also want my application to work without any weird settings. Is there any way to work around this? If not, is there any alternative to using Taps in Carbon?
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不必你懂 2024-11-30 15:46:49

最简单的方法是使用半弃用的 Carbon 函数 RegisterEventHotKey,请参阅 此问答

如果没有,您就需要接受该限制。该限制是为了防止坏人在幕后安装键盘记录器。您需要要求用户打开首选项,输入管理员密码等。

The easiest way is to use the semi-deprecated Carbon function RegisterEventHotKey, see this SO Q&A, for example.

If not, you need to live with that restriction. The restriction is there to prevent a bad person to install keylogger behind the scenes. You need to ask the user to open the preferences, type the admin password etc.

信愁 2024-11-30 15:46:49

您可以尝试使用 AXMakeProcessTrusted。这应该与每个进程的辅助设备访问权限相同。

You could try to use AXMakeProcessTrusted. This is supposed to be the same as Access for assistive devices on a per process basis.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文