Думаю, проблема в софте.

Залипание происходит при использовании шифта?

На самом деле шифт - это тот же режим, который активируется при нажатии на кнопку, назначенную шифтом, и деактивируется при отпускании этой кнопки.

Допустим, trigger назначен как кнопка dx_button_1, на которую повесили пулеметы. joyshift-trigger - dx_button_2 - пушки.

Теперь рассмотрим 2 сценария.

Сценарий 1.
Изначально установлен режим X.
Нажимаем joyshift, драйвер переключается в режим Y, где trigger'у соответствует dx_button_2.
Нажимаем trigger, т.е. нажимается dx_button_2, начинается стрельба из пушки.
Отпускаем trigger, т.е. отжимается dx_button_2, заканчивается стрельба из пушки.
Отжимаем joyshift, драйвер переключается в режим X, где trigger'у соответствует dx_button_1.
Здесь все замечательно.

Сценарий 2.
Изначально установлен режим X.
Нажимаем joyshift, драйвер переключается в режим Y, где trigger'у соответствует dx_button_2.
Нажимаем trigger, т.е. нажимается dx_button_2, начинается стрельба из пушки.
Отжимаем joyshift, драйвер переключается в режим X, где trigger'у соответствует dx_button_1.
Отпускаем trigger, т.е. отжимается dx_button_1, а не dx_button_2, dx_button_2 осталась нажатой, поэтому стрельба из пушки не прекращается с отжатием trigger, создается впечатление, что кнопка залипла. Т.е. кнопка действительно залипла, но залипла не физическая кнопка, а виртуальная.

Как с этим бороться? Есть несколько способов.

Самый радикальный из них - не использовать joyshift.

Если у вас дозимеровский драйвер, в его профайле перед командой переключения режима всегда ставьте команды отжатия всех виртуальных кнопок.

Если у вас сайтековский драйвер, возможно там тоже как-нибудь можно избежать эффекта "залипания кнопок" путем более тщательного составления профайла. Но я не знаю как это делается.