OSX Carbon:Quartz事件用于获取键盘输入

时间:2011-07-11 22:35:10

标签: macos keyboard quartz-graphics macos-carbon

我想在不使用Cocoa的情况下使用c ++在OSX上获取键盘输入,不推荐使用Carbon UPP处理程序,如果可能的话不使用IOHID,因为这有很多额外的工作。 我已经使用石英事件抽头实现了一个简单的鼠标类,它就像一个魅力,现在我想用它们来实现一个键盘类。无论如何,作为 CGEventTapCreate 下的参考状态: http://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html

如果满足以下条件之一,您只能访问关键事件:

  1. 当前进程以root用户身份运行。
  2. 启用辅助设备访问。在Mac OS X v10.4中,您可以 使用系统偏好设置,通用访问启用此功能 面板,键盘视图。
  3. 这是一个非常严重的限制因为我也希望我的应用程序能够在没有任何奇怪设置的情况下工作。 有什么方法可以解决这个问题吗?如果没有,是否可以选择在碳中使用Taps? 谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试使用AXMakeProcessTrusted。这应该基于每个进程与 Access for assistive devices 相同。

答案 1 :(得分:0)

最简单的方法是使用半弃用的Carbon函数RegisterEventHotKey,例如,请参阅this SO Q&A

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