JoyX JoyY для SendInput

0

Мой джойстик / геймпад имеет стандартные 10 кнопок плюс кнопки осей X и Y. Сценарий ниже работает, но не так, как я хочу:

Right::
GetKeyState, state, JoyX
If state > 75 ;JoyX is pressed to right
SendInput testmessage

Этот скрипт будет печатать «testmessage», когда я нажимаю клавишу со стрелкой вправо на клавиатуре, когда JoyX - & gt; 75. Я хочу, чтобы JoyX был & gt; 75, он отправит «тестовое сообщение» SendInput без необходимости нажимать клавишу со стрелкой вправо на моей клавиатуре.

Я пытался использовать JoyX в качестве горячей клавиши или X100 Y050, но я получаю сообщение об ошибке: текущая горячая клавиша JoyX не будет активной, потому что ее нет в раскладке клавиатуры.

Спасибо!

Jim Syyap
источник

Ответы:

0

Джойстик имеет состояние, которое необходимо опросить, так как у него нет события «кнопки», на которое нужно ответить Следующие использовали Повторное сопоставление джойстика с клавиатурой или мышью для вдохновения, в частности Создание оси джойстика или шляпы POV Отправка нажатий клавиш или мыши раздел. Он использует таймер для периодического опроса состояния джойстика и отправляет входные данные, когда состояние составляет> 75.

#Persistent  ; Keep this script running until the user explicitly exits it.
SetTimer, WatchAxis, 5
return

WatchAxis:
GetKeyState, state, JoyX
If state > 75 ;JoyX is pressed to right
    SendInput testmessage
return

Чтобы он работал хорошо для вас, вам нужно поиграться с частотой опроса таймера (в настоящее время 5) и, возможно, потребуется реализовать KeyToHoldDown стиль отслеживания состояния, в противном случае вы можете отправлять текст повторно.

yhw42
источник
Обратите внимание, что это в настоящее время не проверено, но я мог бы попробовать это позже с контроллером Xbox и посмотреть, как это работает.
yhw42