【问题标题】:OSX Carbon: Quartz event taps to get keyboard inputOSX Carbon:Quartz 事件点击以获取键盘输入
【发布时间】:2011-10-03 04:55:14
【问题描述】:

我想在不使用 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 中,您可以 使用系统偏好设置、通用访问启用此功能 面板,键盘视图。

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

【问题讨论】:

    标签: macos keyboard quartz-graphics macos-carbon


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嘿,这看起来很棒,无论如何它比它的价值更麻烦。我现在正在从可可捕获关键事件(在 NSApplication sendEvent 函数内),因为无论如何我只需要应用程序级别的事件。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2015-08-03
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多