Meu joystick/gamepad possui 10 botões padrão mais os botões dos eixos X e Y. O script abaixo funciona, mas não do jeito que eu quero:
Right::
GetKeyState, state, JoyX
If state > 75 ;JoyX is pressed to right
SendInput testmessage
O que esse script fará é imprimir "testmessage" quando eu pressionar a tecla de seta para a direita no teclado enquanto o JoyX estiver > 75. O que eu quero é que, quando o JoyX estiver > 75, ele envieInput "testmessage" sem ter que pressionar o botão direito tecla de seta no meu teclado.
Tentei usar JoyX como tecla de atalho, ou X100 Y050, mas recebo uma mensagem de erro: a tecla de atalho atual JoyX não estará ativa porque não está no layout do teclado.
Obrigado!
Responder1
O joystick possui um estado que deve ser pesquisado, pois não possui um evento de "botão" para responder. O seguinte usadoRemapeando um joystick para teclado ou mouseem busca de inspiração, em especialFazendo um eixo de joystick ou chapéu POV enviar pressionamentos de teclas ou cliques do mouseseção. Ele usa um temporizador para pesquisar periodicamente o estado do joystick e envia a entrada quando o estado for >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
Para que funcione bem para você, você precisará brincar com a frequência de pesquisa do cronômetro (atualmente 5) e pode precisar implementar o KeyToHoldDown
estilo de rastreamento de estado, caso contrário, poderá enviar o texto repetidamente.