JoyX JoyY から SendInput

JoyX JoyY から SendInput

私のジョイスティック/ゲームパッドには、標準の 10 個のボタンに加えて、X 軸と Y 軸のボタンがあります。以下のスクリプトは動作しますが、私の希望どおりではありません。

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

このスクリプトは、JoyX が 75 より大きいときにキーボードの右矢印キーを押すと、「testmessage」を出力します。私が望んでいるのは、JoyX が 75 より大きいときに、キーボードの右矢印キーを押さなくても SendInput 「testmessage」が実行されることです。

JoyX または X100 Y050 をホットキーとして使用しようとしましたが、エラー メッセージが表示されます: 現在のホットキー JoyX はキーボード レイアウトにないためアクティブになりません。

ありがとう!

答え1

ジョイスティックには応答する「ボタン」イベントがないため、ポーリングする必要がある状態があります。以下はジョイスティックをキーボードまたはマウスに再マッピングするインスピレーションのために、特にジョイスティック軸または 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状態追跡のスタイルを実装する必要があるかもしれません。そうしないと、テキストが繰り返し送信される可能性があります。

関連情報