Posted February 14, 2016
Все нижеследующее имеет отношение только к 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 кнопки, событие нажатия которой будет соответственно возникать в дополнительном событии. Конфиг уже настроен на стрелки).
Думаю, многие сталкивались с такой проблемой, что игра не разрешает изменить кнопки для скроллинга экрана.
Например, в 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