It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
Все нижеследующее имеет отношение только к Linux, и будет представлять интерес только для Linux-пользователей.

Думаю, многие сталкивались с такой проблемой, что игра не разрешает изменить кнопки для скроллинга экрана.
Например, в Baldur's Gate перемещения экрана на клавиатуре возможно лишь нажатием соответствующих стрелок, и изменить эту раскладку на WASD штатными средствами нельзя.

В общем, на днях начал играть BG:EE и столкнулся с вышеобозначенной проблемой.
Сначала пытался обойти проблему через конфиги - безрезультатно: все захардкодино в бинарнике.
Пытался производить ремап кнопок через тулзу xmodmap... тоже безрезультатно: обработка клавиш в BG происходит по ее keycode, а не keysym, в итоге ремапинг никак не влиял на работу игры...

В итоге, в силу бесконечности своего упрямства, набыдлоколид на C++ небольшой "дубликатор" клавиш)))

Суть программки следующая:
После запуска бинарника, появляется пустое черное окошко.
Пока программа работает, нажатие и отпускание клавиш W, A, S или D в любом активном окне в системе генерирует в нем же соответствующие события нажатия и отпускания стрелок.
Безцеремонное поведение прекращается после закрытия черного окошка (программа, соответственно, завершается).

Пока программу тестил только на браузере, Codeblocks и BG:EE.
В BG:EE никаких проблем не заметил: скроллю кнопками WASD и радуюсь.

Программу для дальнейшего использования в подобных случаях сохранил себе на Google Диск.

Зная, что с данной проблемой сталкивались многие и в большом количестве игр, пришла идея свою поделку расшарить на GOG-форуме.

Собственно, вопрос: как тут относятся к ссылкам на скачивание подозрительных бинарников?))))

P.S. Если кто шарит, могу дать исходники (с иксами я не дружу, поэтому код наверняка получился неэффективным и быдлокодным).

P.S.S.
Надеюсь тут за такое не банят))) Ссылка:
https://drive.google.com/file/d/0B4nXAJZn7_dHcHVjRTZHZGxvNDA/view?usp=sharing

В архиве три файла:
Бинарный файл - сама программа
cpp файл - исходный код
Текстовый файл - конфиг (каждая строка состоит из двух чисел. Первое число - keysym кнопки, при обработке которой будет создаваться дополнительное событие. Второе число - keysym кнопки, событие нажатия которой будет соответственно возникать в дополнительном событии. Конфиг уже настроен на стрелки).
Post edited February 14, 2016 by Liername
avatar
Liername: Собственно, вопрос: как тут относятся к ссылкам на скачивание подозрительных бинарников?))))
Подозрительно :-).
avatar
Liername: P.S. Если кто шарит, могу дать исходники (с иксами я не дружу, поэтому код наверняка получился неэффективным и быдлокодным).
Ну, если лицензия позволяет - почему бы не поделиться. Другой вопрос - будут ли улучшения, если и так всё работает.
Post edited February 14, 2016 by Riewell
avatar
Riewell: Ну, если лицензия позволяет
Общественное достояние )))

Обновил первый пост)
Post edited February 14, 2016 by Liername
avatar
Riewell: Ну, если лицензия позволяет
avatar
Liername: Общественное достояние )))

Обновил первый пост)
Собрано под какую архитектуру?
avatar
Redfern: Собрано под какую архитектуру?
64
Post edited February 14, 2016 by Liername
avatar
Redfern: Собрано под какую архитектуру?
avatar
Liername: 64
Уважаю :)))
Красавчик! Есть в планах залить на Github? Так творение популярнее будет :)
avatar
Lin545: Красавчик! Есть в планах залить на Github? Так творение популярнее будет :)
Там в этом творении 100 строк кода всего :) Плюс решаемая задача слшиком специфична да еще и под линукс только.
Выложил на случай, если кто окажется в той же ситуации что и я. Чтобы было под рукой уже готовое решение (просто сам я уже далеко не первый раз сталкиваюсь с ситуацией отсутвия возможности настраивать кнопки в игре как захочется)
По сути, если бы решение было кроссплатформенным, плюс с гуевиной для редактирования соответствий (а не текстовый файл) и, пожалуй, самое главное, если бы это было не дублирование событий, а именно их замена... Тогда можно было бы и на github это дело оформить.

Главная бедав ведь в том, что если нажимаешь кнопку W, то будет два события, и кнопка W, и стрелка вверх, хотя в идеале было бы только событие кнопки вверх. К сожалению, "истинный" ремап без вторжения в виртуальное адресное пространство чужого поцесса сделать нельзя (нужно подавлять событие на уровне слушающего приложения, а не иксвого окна), т.е. нужно как минимум выйти из user-space и выполняться на уровне ядра... а это уже все равно что вирус... да и не шарю я до такого уровня чтобы такие вещи мутить :(

Как-то так :)
Post edited February 18, 2016 by Liername
avatar
Liername: Как-то так :)
файл по ссылке сдох :(
может всетаки github?
avatar
Lin545: файл по ссылке сдох :(
может всетаки github?
Эмм... я его удалил)

Дело в том, что в одном из последних обновлений в BG:EE добавили возможность настраивать кнопки перемещения камеры. Приложение, в общем, стало ненужным, и в один прекрасный момент, когда я чистил Google Disk от лишних файлов, удалил заодно и прогу.
Post edited May 20, 2017 by Liername
avatar
Liername: Эмм... я его удалил)

Дело в том, что в одном из последних обновлений в BG:EE добавили возможность настраивать кнопки перемещения камеры. Приложение, в общем, стало ненужным, и в один прекрасный момент, когда я чистил Google Disk от лишних файлов, удалил заодно и прогу.
А можно попросить вас поделится вашим быдлокодом, скажем, закодировав исходник в zip, а затем в base64?
avatar
Lin545: А можно попросить вас поделится вашим быдлокодом, скажем, закодировав исходник в zip, а затем в base64?
К сожалению, как я уже сказал выше, я удалил прогу... т.е. совсем, вместе с исходниками.
Но зачем кодировать это дело в base64?
avatar
Liername: К сожалению, как я уже сказал выше, я удалил прогу... т.е. совсем, вместе с исходниками.
Но зачем кодировать это дело в base64?
Жалко, ну ладно. У меня была идея написать продолжение btnx в будущем.

Кодировать, чтобы поделиться.:)
Использование текстовых сообщений на форуме в качестве файлового хранилища)
Весьма остроумно)