 |

22.01.2021, 07:11
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Продолжениеэтой эпопеи. Читать её не обязательно, вот краткая предыстория:
Имеется у меня мышь, у неё много кнопок (основные и дополнительные), основные кнопки работают нормально, т.к. их в полной мере поддерживает 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() (скорее всего), а код закрыт.
|
|
|

23.01.2021, 02:16
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Я провозился с этими кнопками месяц, потратил 60-70 часов времени, разочаровался в IT, в человечестве, проклял всю Кремневую долину и японскую нацию, готовился изучать микроконтроллеры и писать драйвер с нуля.
Оказывается, нужно было всего лишь запустить софт для мыши от имени администратора.
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|