- 387
- 135
Продолжение этой эпопеи. Читать её не обязательно, вот краткая предыстория:
Экспериментальным путём удалось выяснить, что доп. кнопки не срабатывают в тех же приложениях, в которых не срабатывают хук LowLevelKeyboardProc и функции keybd_event(), mouse_event(). Следовательно, можно сделать вывод, что ПО от производителя отправляет события ввода через mouse_event(), она генерирует системные события ввода через мышь (позиция курсора, нажатия на кнопки). Судя по ответам на форумах, проблема этой функции кроется в её коммуникации с DirectX, который игнорирует сообщения ввода от Windows, т.е. кнопки не работают только в приложениях на базе старых DirectX, в т.ч. и в GTA SA.
Вопрос: Вопреки особенностям DirectX как всё-таки поймать событие, отправляемое keybd_event() и mouse_event() в GTA SA и обработать его? Специфика этого случая заключается в том, что нельзя эмулировать нажатие клавиши как-нибудь по-другому, производитель мыши уже сделал это через mouse_event() (скорее всего), а код закрыт.
Имеется у меня мышь, у неё много кнопок (основные и дополнительные), основные кнопки работают нормально, т.к. их в полной мере поддерживает Windows и они реализованы через первичный драйвер. А вот дополнительные кнопки, увы, Windows не поддерживает, поэтому специально для них производитель выпустил дополнительное ПО, которое позволяет на эти кнопки назначить поддерживаемые Windows действия, к примеру на инопланетную EXTRA_BUTTON_3 можно назначить обычную ЛКМ. Так вот эти дополнительные кнопки, чтобы на них не назначали, работают лишь в половине программ, и что самое страшное, они не работают в GTA SA, из-за чего невозможно ПЛЮСЦЕХАТЬ 🤯😭🤬😫!
Экспериментальным путём удалось выяснить, что доп. кнопки не срабатывают в тех же приложениях, в которых не срабатывают хук LowLevelKeyboardProc и функции keybd_event(), mouse_event(). Следовательно, можно сделать вывод, что ПО от производителя отправляет события ввода через mouse_event(), она генерирует системные события ввода через мышь (позиция курсора, нажатия на кнопки). Судя по ответам на форумах, проблема этой функции кроется в её коммуникации с DirectX, который игнорирует сообщения ввода от Windows, т.е. кнопки не работают только в приложениях на базе старых DirectX, в т.ч. и в GTA SA.
Вопрос: Вопреки особенностям DirectX как всё-таки поймать событие, отправляемое keybd_event() и mouse_event() в GTA SA и обработать его? Специфика этого случая заключается в том, что нельзя эмулировать нажатие клавиши как-нибудь по-другому, производитель мыши уже сделал это через mouse_event() (скорее всего), а код закрыт.
Последнее редактирование: