Возник достаточно серьезный вопрос, в связи с портированием лога для контестов и обычной работы в эфире
под Линукс, в частности, под Ubuntu. Сам лог переносится с Mono под Win32 на Mono + GTK под Линукс. В
дальнейшем, если будет надо, можно подключить и Gnome и т.д. Данный лог имеет практически ту же самую
функциональность, что и Win-Test 4.0. Отличительной особенностью является наличие встроенного парсера
для конфигураций любых возможных конфигураций контестов. Более подробно о логе, если надо, то в личку.
Здесь не хочется разводить долгую дискуссию. Просьба отнестись с пониманием.
Теперь о проблеме. Дело в том, что обработка нажатий клавиатуры (низко-уровневая) под Win32 и Линукс
отличается. Поэтому вопрос скорее адресован программерам, кто имел с этим дело. Итак, что стало понятно и
чем надо побороться:
1. Не тащить весь unmanaged код или использование P/Invoke для обработки нажатий клавиш под Линукс, так
как для этого придется делать DLL Import достаточно большого количества DLL. Что не есть хорошо, а также
порождает вторую проблему, ниже.
2. Поддержка разных версий сборок Линукса, с тем чтобы можно было иметь полностью независимый код для
обработки Global Hook Keyboard без версионинга DLL.
В настоящее время пока реальных путей для решения проблемы не найдено, поэтому и возник вопрос и требуется
помощь. Чтобы стало более понятно, откуда растут ноги, то по ссылке ниже, можно найти фрагмент кода, на
базе которого делается обработка Global Hook Keyboard:
http://stackoverflow.com/questions/9...-hook-keyboard
и из которого видно, что делается импорт [DllImport("libX11")], [DllImport("gdk-x11-2.0")].
Вопросы такие:
1. Есть ли возможность решить задачу без импорта DLL?
2. Во всех ли дистрибутивах Линукса будут эти же DLL или они могут отличаться, а также иметь и другие версии?
3. Какие есть другие возможности?
При ответе просьба учитывать, что платформа разработки выбрана, меняться не будет. Поэтому не надо предлагать
перейти на чистый C++, Qt, Java и т.д. Под виндами данный код работает, под Wine тоже. Но цель заставить код
работать без использования Wine. И это одна из главных задач.