【问题标题】:Enabling the xorg record module on Mac OS X Yosemite在 Mac OS X Yosemite 上启用 xorg 记录模块
【发布时间】:2015-01-28 12:00:33
【问题描述】:

我正在将一些代码从 Linux 移植到 Mac。我是 Mac 的新手,所以请多多包涵......

在 Linux 上,我们使用 X11 库中的 XRecord 进行输入捕获。我正在尝试在 Mac 上使用 XQuartz 作为替代品,但无法使其正常运行。

我希望在 X11/lib/xorg/modules 中看到 librecord.so,以便我可以通过将加载“记录”添加到我的 xorg.conf 文件来启用它,但 record.so 不存在,我似乎无法在线或在 XQuartz 文档中查找任何参考以添加它。

因此,此代码会引发预期的错误:

int major, minor;
if (XRecordQueryVersion(m_Info.m_Display, &major, &minor) != false)
{
    std::string logMessage = "XRecord version: %d.%d\n", major, minor;
    LOG4CXX_DEBUG (LOGGER, COMMON_STR (logMessage));
}
else
{
    THROW_EXCEPTION (errval::XRECORD_UNAVAILABLE);
}

有人有什么建议吗?

【问题讨论】:

    标签: macos x11 xorg xquartz


    【解决方案1】:

    XRecord 是X 的扩展。因此,不能假定它存在,即使作为可选加载的组件也是如此。 XQuartz 没有实现它。

    您必须将其移植到 OS X。这可能需要构建您自己的 X 服务器版本,具体取决于 XRecord 是否需要在其余 X 服务器代码中使用非标准挂钩。

    您希望使用 XRecord 扩展做什么?如果您的目标是在 OS X 上记录系统范围的输入,那么无论如何这不是正确的解决方案。在 OS X 上,X11 是一个辅助窗口系统,它是本机系统之上的访客(用户应用程序)。 X11 通常不会看到系统其余部分中的所有输入或窗口操作。

    【讨论】:

    • 谢谢肯 我担心这可能是答案。我们为我们的 linux 版本使用了 XRecord 扩展来捕获鼠标和键盘活动以用于研究目的。从您的回答和我读过的其他内容(或只是无法找到...)看来,这在 Mac 上不起作用,所以我们现在正在研究其他选项。
    • 不客气。你应该看看 Quartz Event Taps。
    • 更简单的解决方案可能是启用屏幕共享和附加 VNC 客户端 - 只需忽略矩形更新,您将获得所有键盘/鼠标事件、屏幕分辨率更改和粘贴缓冲区更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多