在 Mac OS X Yosemite 上启用 xorg 记录模块

Enabling the xorg record module on Mac OS X Yosemite

我正在将一些代码从 Linux 移植到 Mac。我是 Mac 的新手,所以请耐心等待....

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

我希望在 X11/lib/xorg/modules 中看到 librecord.so 以便我可以通过将加载 "record" 添加到我的 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);
}

有人有什么建议吗?

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

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

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