Включение модуля записи xorg в Mac OS X Yosemite

Я нахожусь в процессе переноса некоторого кода с Linux на Mac. Я новичок в Mac, поэтому, пожалуйста, терпите....

В Linux мы использовали XRecord из библиотек X11 для захвата ввода. Я пытаюсь использовать XQuartz на Mac в качестве замены, но не смог заставить его работать.

Я ожидаю увидеть librecord.so в X11/lib/xorg/modules, чтобы я мог включить его, добавив "запись" в мой файл 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);
}

У кого-нибудь есть предложения?

1 ответ

Решение

XRecord является расширением X. Следовательно, нельзя предполагать, что он присутствует, даже в качестве необязательно загруженного компонента. XQuartz не реализует это.

Вам придется перенести его на OS X. Это может повлечь за собой создание вашей собственной версии X-сервера, в зависимости от того, требует ли XRecord нестандартные перехватчики в остальной части кода X-сервера.

Что вы надеялись сделать с расширением XRecord? Если ваша цель заключалась в том, чтобы записывать ввод данных для всей системы на OS X, то это, во всяком случае, неправильное решение. В OS X X11 - это вторичная оконная система, которая является гостевой (пользовательское приложение) поверх собственной. X11 обычно не видит все операции ввода или управления окнами в остальной части системы.

Другие вопросы по тегам