WASDで仮想コントローラーを操作する - x0oey6B8/KeyToKey-Web GitHub Wiki
目次
概要
キーボードのWASDで仮想コントローラーのスティック、もしくは、十字キーを8方向に操作する方法(マクロ)を説明します。 なお、ここでは方法では仮想XInputコントローラーを使用しますが、それ以外のコントローラーを使用する場合は、XInput以外の入力をご覧ください。
⚠️ 仮想XInputコントローラーのインストールを終え、デバイスを有効にしていることが前提として説明します。
関連リンク
導入前に
仮想コントローラーのマッピングを使用している場合、マッピング機能に入力を上書きされる可能性があるため、マッピングの設定からスティックもしくは十字キーのマッピングを無効にしてください。
導入
- WASD.zipをダウンロード/展開します。
- 展開したフォルダの中にある
Utilities
フォルダをKeyToKeyのフォルダにあるScripts
に入れます。 - 操作を実行したいプロファイルの
__extension.csx
に以下のコードを一番上の行に追加して保存します(ファイルがどこにあるのかわからない方はこちらを見てください)
#load "Scripts\Utilities\WASD.csx"
- するとスティックと十字キーを操作するためのマクロが2つ追加されるのでスタートアップマクロを使用して実行します。
補足
マクロはプロファイルを無効にしても、実行できないウィンドウ上であっても、マクロ自体は停止しません しかし仮想コントローラーの入力は発生しないように設定されているのでプロファイルを無効にするショートカットキーや特定のアプリでのみ実行を許可を設定しておいてください。
引数
設定 | 説明 |
---|---|
番号 | 0~3の仮想XInputのデバイス番号を指定します |
使用するスティック | True で左スティック、False で右スティックを使用します |
WASD | 初期値のWASDを変えることで好きなキーを使用できます |
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();
}
}