WASDで仮想コントローラーを操作する - x0oey6B8/KeyToKey-Web GitHub Wiki

目次

  1. 概要
    1. 関連リンク
  2. 導入前に
  3. 導入
    1. 補足
  4. 引数
  5. XInput以外の入力
    1. カスタムクラスと実行
      1. カスタムコード

概要

キーボードのWASDで仮想コントローラーのスティック、もしくは、十字キーを8方向に操作する方法(マクロ)を説明します。 なお、ここでは方法では仮想XInputコントローラーを使用しますが、それ以外のコントローラーを使用する場合は、XInput以外の入力をご覧ください。

⚠️ 仮想XInputコントローラーのインストールを終え、デバイスを有効にしていることが前提として説明します。

関連リンク

導入前に

仮想コントローラーのマッピングを使用している場合、マッピング機能に入力を上書きされる可能性があるため、マッピングの設定からスティックもしくは十字キーのマッピングを無効にしてください。

導入

  1. WASD.zipをダウンロード/展開します。
  2. 展開したフォルダの中にあるUtilitiesフォルダをKeyToKeyのフォルダにあるScriptsに入れます。
  3. 操作を実行したいプロファイルの__extension.csxに以下のコードを一番上の行に追加して保存します(ファイルがどこにあるのかわからない方はこちらを見てください)
#load "Scripts\Utilities\WASD.csx"
  1. するとスティックと十字キーを操作するためのマクロが2つ追加されるのでスタートアップマクロを使用して実行します。

補足

マクロはプロファイルを無効にしても、実行できないウィンドウ上であっても、マクロ自体は停止しません しかし仮想コントローラーの入力は発生しないように設定されているのでプロファイルを無効にするショートカットキー特定のアプリでのみ実行を許可を設定しておいてください。

引数

設定 説明
番号 0~3の仮想XInputのデバイス番号を指定します
使用するスティック Trueで左スティック、Falseで右スティックを使用します
WASD 初期値のWASDを変えることで好きなキーを使用できます

image

XInput以外の入力

仮想XInputコントローラー以外の仮想コントローラーを操作する方法について解説します。 ただしC#の知識が必要になりますのでご了承ください。 WASD.zipが導入されれていることが前提となりますので、まだの方は導入を御覧ください。

カスタムクラスと実行

ここではカスタムクラスを定義し、WASDの入力方向に対して処理を実行する方法を下記のコードを使って説明します。 また、今回の例ではDualShock4の左スティックをWASDで操作するコードを例を紹介します。 はじめに #load scripts\Utilities\WASD.csxでコアとなるWASDクラスを使用できる状態にします。 WASDクラスはWASDを入力したときに各方向に対して任意の処理を行うことができます。 WASDでDualShock4の左スティックを操作クラスを定義し、WASDクラスを継承します。 派生クラスでは各入力メソッドをoverrideし、DualShock4のスティック操作の入力を記述します。 最後に、クラスをインスタンス化しStartを実行することでWASDの入力方向にDualShock4の左スティックを入力することができます。

カスタムコード

// ファイルの一番先頭に書きます
#load "scripts\Utilities\WASD.csx"

// 下記に定義したDualShock4の左スティックを操作するクラスをインスタンス化
var wasd = new WASDでDualShock4の左スティックを操作(@this);

// wasdで入力できるようにする
wasd.Start();

// スクリプトが終了しないように待つ
Wait();


// カスタムクラス
public class WASDでDualShock4の左スティックを操作 : WASD
{
    // コンストラクタ
    public WASDでDualShock4の左スティックを操作(IGlobals g) : base(g)
    {
    }

    // 何も押されてない場合
    protected override void Neutral()
    {
        DualShock4.LeftStick.Neutralize();
    }

    // Wが押された場合
    protected override void Up()
    {
        DualShock4.LeftStick.Up();
    }

    // Aが押された場合
    protected override void Left()
    {
        DualShock4.LeftStick.Left();
    }

    // Sが押された場合
    protected override void Down()
    {
        DualShock4.LeftStick.Down();
    }

    // Dが押された場合
    protected override void Right()
    {
        DualShock4.LeftStick.Right();
    }
    
    // S,Aが押された場合
    protected override void DownLeft()
    {
        DualShock4.LeftStick.DownLeft();
    }

    // S,Dが押された場合
    protected override void DownRight()
    {
        DualShock4.LeftStick.DownRight();
    }

    // W,Aが押された場合
    protected override void UpLeft()
    {
        DualShock4.LeftStick.UpLeft();
    }

    // W,Dが押された場合
    protected override void UpRight()
    {
        DualShock4.LeftStick.UpRight();
    }
}