JoyX JoyY para SendInput

0

Meu joystick / gamepad tem os 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 este script fará é imprimir "testmessage" quando eu pressionar a tecla de seta para a direita no meu teclado enquanto o JoyX for > 75. O que eu quero é que, quando JoyX é > 75, ele vai enviar "testmessage" sem ter que pressionar a tecla de seta para a direita no meu teclado.

Eu tentei usar o JoyX como tecla de atalho, ou X100 Y050, mas recebi uma mensagem de erro: a tecla de atalho atual JoyX não estará ativa, porque não está no layout do teclado.

Obrigado!

    
por Jim Syyap 26.07.2011 / 23:25

1 resposta

0

O joystick tem um estado que deve ser pesquisado, pois ele não tem um evento de "botão" para responder. O seguinte usou Remapeando um joystick para teclado ou mouse para inspiração, em particular o Criando um Joystick Eixo ou POV Hat Send Keystrokes ou Mouse Cliques seção. Ele usa um temporizador para periodicamente pesquisar o estado do joystick e envia a entrada quando o estado é > 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 ele funcione bem para você, você precisará brincar com a frequência de pesquisa do timer (atualmente 5) e pode precisar implementar o estilo KeyToHoldDown de rastreamento de estado, caso contrário, você pode enviar o texto repetidamente.

    
por 02.08.2011 / 15:19

Tags