1

我正在将一些代码从 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);
}

有没有人有什么建议?

4

1 回答 1

1

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

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

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

于 2015-01-28T04:00:33.387 回答