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

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

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

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

Спасибо!

1 ответ1

0

Джойстик имеет состояние, которое необходимо опросить, так как у него нет события "кнопка", на которое нужно ответить. Следующее использовало Remapping Joystick на Keyboard или Mouse для вдохновения, в частности, в разделе Создание оси джойстика или POV Hat Send нажатий клавиш или щелчков мышью . Он использует таймер для периодического опроса состояния джойстика и отправляет вход, когда состояние> 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 , в противном случае вы можете отправлять текст повторно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .