プラグイン Joy2Write
基本情報
概要このプラグインは、ジョイパッドでの各種操作をトリガー(引き金)として、対象プロセスのプロセスメモリを書き換える改造コードを実行します。また、ジョイパッドの各種操作を元に、プロセスを停止・再開したり、マウス/キー入力をエミュレートする機能も実装しています。このマウス/キー入力エミュレーションでは、キー押し下げ・押し上げ、マウスクリック、マウスホイール、カーソル移動、処理待機などを組み合わせたマクロを組むことも可能です。動作環境Windows 2000, XP, Vista, 7, 8, 10 + HID準拠のジョイパッド動作確認はWindows XP SP2、Windows Vista SP2の32ビット版およびWindows 7の64ビット版上で行っています。 レジストリ使用についてこのプラグインでは、DirectInputは使用しますが、アプリケーションによるDirectInput 8.0以降使用時にOSが行う、アプリケーション毎のレジストリ書き込みは行いません。なお、通常はレジストリの以下のキーに、DirectInput 8.0以降を使用したアプリケーション(バージョン別EXEファイル)毎のキーが自動的に作成されます。HKEY_CURRENT_USER\Software\Microsoft\DirectInput |
基本注意事項
■このプラグインが認識可能な、接続されているジョイパッドの数の上限は16です。うさみみハリケーンを多重起動し、それぞれのうさみみハリケーンでこのプラグインを起動すれば多重起動が可能です。この多重起動により、プラグインのダイアログでそれぞれ別個のジョイパッドを指定すれば、2つ以上のジョイパッドを同時に使用することもできます。ただし、処理の競合による処理遅延などが発生する可能性もあるため、このプラグインの多重起動はお勧めしません。設定ファイルの動的切り替え機能(後述)の使用をお勧めします。 ■Windows Vista以降では、対象プロセスと権限のレベルを合わせないと、マウス/キー入力エミュレーションやプロセスの操作に支障が生じることがあります。必要に応じてうさみみハリケーンを管理者権限で起動してください。管理者権限でのうさみみハリケーン起動については、ヘルプの「インストール・アンインストール」を参照してください。 ■このプラグインは、他のプロセスを操作するという特性のため、アンチウイルスソフトなどのセキュリティソフトからマルウェアと誤検出される可能性があります。誤検出に伴うセキュリティソフトの操作により、このプラグインが事実上使用不能になるケースが想定されます。もし、このプラグインが起動ができない場合や、その他の動作に不具合が生じたら、自己の責任においてセキュリティソフトの設定を変更してみてください。 ■このプラグインはプロセスメモリ書き換えや操作自動化という機能特性上、オンラインゲームで使用すれば、その使用様態に関わらず不正行為とみなされ、アカウントを抹消される可能性が高いと考えられます。そのため、オンラインゲームへの使用はお勧めできません。 ■うさみみハリケーンと当プラグインの使用目的が、マウス/キー入力のエミュレートのみであれば、うさみみハリケーンで選択するプロセスは解析・操作対象のプロセスでなくとも問題ありません。ただし、不測の誤操作による悪影響を避けるために、同梱UsaTest2.EXEを選択対象プロセスに設定して、うさみみハリケーン起動時に自動選択させるといった安全策を講じることをお勧めします。UsaTest2.EXEの起動と、うさみみハリケーンでの自動選択はバッチファイルなどで一括して実行可能です。うさみみハリケーンでのプロセス自動選択は、ヘルプの「基本操作」内「操作上の基本注意事項」を参照してください。 ■マウス/キー入力エミュレーションの処理には相応の時間がかかるため、特にマクロを極端に短い実行間隔で連続実行させると、Windowsに異常な負荷がかかり、Windowsの動作不安定化といった不具合を生じることがあります。また、マクロ設定済みのボタンを必要以上に長く押し続けることにより、意図しないマクロ連続実行が発生する可能性にも注意してください。 ■当プラグインが使用できないゲーム・エミュレータに対しては、その対象ゲーム等の起動前にデバイスマネージャでジョイパッドを(PCに接続したまま)無効にしておき、同ゲーム等起動後にジョイパッドを有効にすることで、当プラグインが使用可能になるケースがありえます。これは、対象ゲーム等が起動時に行うジョイパッドの認識・操作処理をスキップさせるアプローチです。 ■キー入力及びXInputのみ対応ソフトと、XInput非対応ジョイパッドという環境では、このプラグインでジョイパッドでの入力をキー入力へ変換することにより、XInput非対応ジョイパッドでの操作が可能になると考えられます(動作確認環境がないため未確認)。 参考:XInput と DirectInput https://learn.microsoft.com/ja-jp/previous-versions/direct-x/bb173051(v=vs.85) ■Windows 7/8といった標準でXInputに対応している新しいWindows OSでは、当プラグインはXInputでの入力の検出にも対応しています。なお、標準でXInputに対応していない古いWindows OSに、別途配布されている公式あるいは非公式のXInput(Xbox 360 コントローラー)用ドライバなどをインストールした環境では、当プラグインによるXInputでの入力の検出は正常に動作しない可能性があります。 ■特殊な方法でキー入力検出処理を行っているゲームやエミュレータなどでは、当プラグインが使用できないケースがありえます。この場合は、ハードウェアでの解決策として、USBマウス・キーボードエミュレータである「UZK」で、ジョイパッドを使用するPCをUSBマウス・キーボード化し、操作対象のゲーム等が実行されている他のPCにつなぐという方法で対処できる可能性があります(当方では動作未確認)。 参考:UZK http://aid.her.jp/uratan/UZK/index.html |
ジョイパッドでの入力を検出して改造コード実行
●メインダイアログ画面 ■例として操作対象がUsaTest2.EXEならば、うさみみハリケーンでそのプロセスを選択し、メニューの[プラグイン]からJoy2Write「UHPjoy2write.dll」を起動します。まず、メインダイアログ(プラグインを起動すると最初に表示される画面)下部の改造コード入力欄に改造コードを入力し、その改造コードを実行するトリガー(引き金)となる、軸・POV・ボタンを入力監視対象として指定します。そしてメインダイアログ上部の[監視開始]ボタンでジョイパッドでの入力の監視を開始すると、設定したトリガーとしての軸・POV・ボタン入力があれば、それを検出して指定した改造コードを実行します。この入力監視は、[監視開始]ボタン横の[監視間隔]で指定したミリ秒数毎に行い、改造コードの実行は、不要な連続実行を避けるため[実行間隔]で指定したミリ秒数の間隔を開けて行います。最後に[監視終了]ボタンで、ジョイパッドでの入力の監視を終了します。 ■このプラグイン起動時には、PCに接続されているジョイパッドを列挙して、最初に認識したジョイパッドを自動で入力監視対象に設定します(メインダイアログ左上部の「ジョイパッド番号」、変更可能)。なお、メインダイアログ左上部の[調整]ボタンから、ジョイパッドの接続状況確認や各ジョイパッドの調整を行うことができます。 ■入力監視対象の軸・POV・ボタンは、入力監視の実行中であっても動的に変更可能です。 ■改造コードやユーザー入力エミュレート型コードの書式については、ヘルプの「改造コード実行機能の詳細」を参照してください。 ■改造コードやユーザー入力エミュレート型コードの入力文字数上限は1024文字です。 ■[コード編集ダイアログ表示]ボタンで、改造コードやユーザー入力エミュレート型コードを簡単に編集可能にするためのダイアログを表示します。このダイアログでは、メインダイアログの8つのコード入力エディットボックスから一つを選択して、コードをコピーし、編集してから貼り付けることが可能です。また、ユーザー入力エミュレート型コードの記述用に、押し下げしたキーの仮想キーコードを取得してキー押し下げ+待機(100ミリ秒)+キー押し上げをセットにした同コードの出力や、カーソル位置を取得してカーソル移動型コードを出力する機能も実装しています。 ■改造コード実行や、マウス/キー入力エミュレーション用のトリガーとして、入力監視対象に設定する軸やボタンは、重複していると意図しない状況を招くことがあるため十分に注意してください。意図的に重複させるケースも想定されるため、当プラグイン側では重複設定はチェックしていません。 ■このプラグインでは、改造コード実行や、マウス/キー入力エミュレーションに関連する、色々な時間間隔をミリ秒で指定できるようにしています。OSなどの実行環境要因に加えて、操作対象となる、アプリケーション、ゲーム、エミュレータ個別の要因により、操作上の適切な時間間隔は大きく変化します。そのため、まずは、色々な時間間隔やその他の設定を変更しながら、操作上での適切な設定を探ってみてください。ただし、この時間間隔を必要以上に短いものに設定すれば、エミュレートされたマウス/キー入力が認識されない可能性や、対象アプリケーション側の動作を不安定にする可能性がありますので、十分に注意してください。なお、OSや起動されているアプリケーションといった実行環境要因により、指定したミリ秒数が必ずしも正確に反映されるとは限りません。 ■ミリ秒指定などで設定した値が取得できない場合や、設定値が不適切な場合は、初期値あるいは安全と推測される値で設定し直します。 ■入力検出通知(メインダイアログ上部)に、(キーボードのSCROLL LOCKキー用)LED点滅などのアクションを指定すると、そのアクションに時間がかかるため、改造コード実行やマウス/キー入力エミュレートの処理速度が低下するといった影響が生じます。なお、入力検出通知は、監視間隔として設定したミリ秒毎に行います。実行間隔毎ではありません。 ■ステッィクやPOVの斜め入力を改造コード実行等のトリガーに設定する機能は、誤操作を招く可能性が高いと判断したため、実装を見送りました。なお、X軸とY軸の斜め入力は、後述のカーソル移動や矢印キー等入力への変換には反映させるようにしています。また、POVのフルレンジ入力は、0/90/180/270度の±45度内をそれぞれ上右下左方向への入力と認識するようにしています。 ■メインダイアログで指定可能な、ジョイパッドでの入力をトリガーとして行う、[プロセス停止・再開]、[前後の設定ファイル読み込み]および、(改造コード実行の)[自動更新切り替え]は、誤操作が深刻な状況を招きかねないため、誤操作の可能性を低減させるために、入力監視対象にはボタンのみ指定できるようにしました。なお、入力監視対象のボタンを押したままにしていると、指定した上記の処理が連続実行されることになるのでご注意願います。 ■このプラグインが使用する全ての設定をファイルとしてプラグインフォルダに保存し、必要時に読み出せるようにしています。設定ファイル「J2Wsave??.sav」(??は設定ファイルの番号)は32個まで作成可能です。また、これとは別に、起動時読み込み用の設定ファイル「J2Wsave00.sav」も作成できるようにしています。さらにジョイパッドのボタン操作により動的に設定ファイルを切り替えることが可能です。この場合、切り替え対象となる全ての設定ファイルで、 ジョイパッド操作による設定ファイル切り替えを有効にしておく必要があります(メインダイアログ右上部[前後の設定ファイル読み込み]チェックボックスにチェック)。なお、この設定ファイルの動的切り替え時は、スティックを傾けたままにしたり、ボタンを押したままにするといった入力中の状態にしないでください。設定ファイルの変更によりジョイパッドの入力に対するアクションが変更されるため、入力が継続されている状態での設定ファイル変更は予期せぬ動作不具合を招く可能性があります。 ■PCに接続するジョイパッドの数を減らした場合には、その前に作成した設定ファイル内の、指定されたジョイパッドの番号に不整合が生じることがあります。もし、設定ファイルの読み込み時に、設定保存時に指定したジョイパッドの番号が存在しない場合は、入力監視対象ジョイパッドの指定は行わずに他の設定を読み込みます。この場合、意図しないジョイパッドが指定される可能性にご注意ください。 ■このメインダイアログが表示されている間は、スクリーンセーバーの起動とディスプレイ電源オフを抑止します。ただし、[<J>]ボタンによりメインダイアログを縮小表示に切り替えれば、この抑止機能は無効化されます。 |
マウス/キー入力エミュレート
●マウス・キー入力エミュレートダイアログ画面 ■このプラグインでは、ジョイパッドの操作を元に、マウス/キー入力をエミュレートすることが可能です。マウスボタンやキーの指定には、「仮想キーコード」と呼ばれる、WindowsOS上での各マウスボタン/キーの認識番号を使用します。仮想キーコードの指定は16進数で行うことに注意してください。仮想キーコードは、プログラム解析における基本事項の一つであり、主要なキーの仮想キーコードを暗記されることをお勧めします。仮想キーコードの一覧は、ヘルプの「基礎用語解説」内にあります。ただし、この一覧には、標準ではない特殊なキーは載せていません。 参考:仮想キーコード一覧 ■メインダイアログ上の[マウス/キー入力設定]ボタンで、マウス/キー入力エミュレートの設定ダイアログを表示します。メインダイアログ上の[マウス/キー入力をエミュレート]チェックボックスがチェックされていないと、マウス/キー入力エミュレート機能は実行されません。 ■仮想キーコードの取得は、マウス/キー入力エミュレート設定ダイアログを表示した状態で何らかのキーを押せば、ダイアログ上部に押されたキーとその仮想キーコードを表示します。ただし、ダイアログの標準的動作として、EscキーやEnterキーを押せばダイアログが閉じてしまうため、これらのキーを指定したい場合は特殊設定例のテンプレートから仮想キーコードを取得してください。 ■マウス/キー入力エミュレート設定ダイアログやマクロ設定ダイアログでの仮想キーコード取得時は、フォーカスがある場所に注意してください。入力用エディットボックスにフォーカスがある状態では、仮想キーコード取得のために押したキーの文字が入力されることになります。 ■X軸Y軸操作をカーソル移動へ変換する際に設定する、ジョイスティックの入力感度設定(設定ダイアログ左上部[スティック入力感度(%)])は、ジョイスティック用ドライバが設定したデッドゾーン(入力検出用の"あそび")を変更するものではありません。また、この入力感度の設定は、ジョイスティックのハードウェア的な要因により、ほとんど体感できないケースや、上下左右で体感的な感度がバラバラになるケースがあります。 ■設定ダイアログ左中部[キー入力に変換]チェックボックスで、X軸Y軸入力のキー入力への変換対象に指定されたキーは、各ボタン入力の変換対象キーとしては重複指定されていても無視します。これは誤指定や誤操作誘引の可能性が高いためです。また、重複指定時は、X軸Y軸入力のキー入力への変換に関する設定が優先されます。この優先設定はマクロ使用時にも適用します。つまり、X軸Y軸入力のキー入力への変換対象に指定したキー及びその設定は、排他的に特別扱いされると考えてください。特に、初期設定でX軸Y軸入力のキー入力への変換対象に指定されている矢印キーは、そのままではボタン入力の変換対象キーには使用できない(指定しても無視される)ことにご注意願います。X軸Y軸入力のキー入力への変換対象キーは、[キー設定]ボタンで表示される設定用ダイアログで、テンプレートを使用すれば簡単に一括指定可能です。 ■マウス/キー入力エミュレート設定ではボタン1~16まで変換対象キー指定が可能です。一方、後述のマクロでは軸、POV、ボタン1~32の操作に対してキー押し下げなどのアクションを設定可能です。必要に応じてマクロを併用してください。 ■[EXTENDEDKEYフラグ]や、[スキャンコード使用]の指定は、不具合発生時用のオプションです。通常は使用しないでください。通常時にこのオプションを指定すると、操作対象アプリケーション側で、変換されたキー入力が認識できなくなることがあります。 ■連打モードは、ボタンを押し続けている間に、指定連打間隔(ミリ秒)で自動的に指定キー押し下げ+押し上げを実行します。 ■連打モードがオフならば、ボタンを押している間は、指定キーの新たなキー押し下げは行わず、ボタンの押し上げにあわせて指定キーの押し上げを実行します。 ■仮想キーコードでの登録により、F24キーといった、使用しているキーボード上に存在しないキーの押し下げもエミュレート指定可能にしました。また、この「本来ありえない」キー押し下げを、別途アプリケーションでGetAsyncKeyState関数等を用いて検出し、このキー押し下げ検出をトリガーとして何らかのアクションを実行させることも可能になります。 ■対象プログラムを解析し、逆アセンブルコードリスト上で、キー入力検出のため特定仮想キーコードの数値との数値比較を行っている箇所が見つかれば、その比較用数値(仮想キーコード)を書き換えることにより、固定化された操作用キー配置を変更することが可能になります(WASDキーを矢印キーへ変更など)。なお、DirectInputでは仮想キーコードではなくスキャンコードが使用されます。 ■ダイアログ左下にある[変更適用・終了]ボタンを押すことで、設定した内容を適用します。この設定内容を設定ファイルに保存する場合は、メインダイアログでの保存処理を行ってください。 ■マウス/キー入力エミュレート設定ダイアログの左下部にある[システムのキー入力設定]ボタンは、システムでのキー入力などの設定を確認するためのものです。 |
マクロ
●マクロダイアログ画面 ■メインダイアログ上の[マクロ設定]ボタンで、マクロの設定ダイアログを表示します。メインダイアログ上の[マウス/キー入力をエミュレート]チェックボックスがチェックされていないと、マクロ機能は実行されません。 ■マクロの基本書式としては右のようになります「KD41 S64 KU41」。これは仮想キーコードが数値0x41である「A」キーを押し下げ(KD41)、そのまま0x64ミリ秒待機し(S64)、そして「A」キーを押し上げ(KU41)ています。「KD」は「KeyDown」、「KU」は「KeyUp」、「S」は「Sleep」の略です。「KD41」といった個々のコード指定は半角スペースで区切ります。マウスクリック、マウスホイールおよび、カーソル移動などその他の書式は、テンプレートで作成できるようにしています。基本的に、マクロ設定ダイアログでの仮想キーコード取得やテンプレート作成機能により、簡単にマクロを記述可能です。なお、半角セミコロン「;」から半角スペースまでをコメントと判断します。コメント中に半角スペースが含まれないようご注意願います。 ■マクロのテンプレートで使用されている1から9の数字は、テンキー上での同数字キーの位置を方向に見立てたものです。例として8ならば上方向を意味します。特に、格闘ゲームの技入力の説明において、このような表記が使用されます。 ■マクロの入力文字数上限は512文字です。 ■このマウス/キー入力エミュレーション用マクロは、うさみみハリケーンが対応している「ユーザー入力エミュレート型コード」とは若干書式が異なりますのでご注意ください。このマクロでは、マウスボタン上げ下げ個別指定、マウスホイール、カーソル移動(移動量指定)という機能拡張と、DirectInput対応を行っています。マクロの記述は、マクロ設定ダイアログ上で、テンプレート出力により簡単に行えるようにしています。なお、従来の「ユーザー入力エミュレート型コード」でのマウスカーソルの移動は、特定の位置へカーソルを瞬間移動させます。また、従来の「ユーザー入力エミュレート型コード」は、Windows95との互換性保持の結果、DirectInput非対応となっています。 参考:ユーザー入力エミュレート型コード ■ジョイパッドのボタン入力などを、カーソル移動(移動量指定)に割り当てる場合は、その割り当てに対する[マクロ連続実行抑制間隔]をかなり小さな値にしないと、カーソルの動きが不自然になります。 ■設定可能な16のマクロは、ひとつのスレッド(プログラムの内部的な処理単位)で、マクロ設定ダイアログでの上から順に処理するため、極めて長い待機時間を指定したマクロが含まれると、他のマクロまで実行が遅れてしまうことになります。指定された待機時間はDWORD(符号なし4バイト)の値として認識するため、最大値を指定すれば約49.7日待機可能です。この待機中にマクロを中止させるには、基本的に、うさみみハリケーンごと強制終了させるしかありませんので、待機時間の指定には十分にご注意願います。 ■ダイアログ左上にある[変更適用・終了]ボタンを押すことで、設定した内容を適用します。この設定内容を設定ファイルに保存する場合は、メインダイアログでの保存処理を行ってください。 ■対象アプリケーションがマクロでの入力結果を適切に認識しない場合は、以下の方法で対処してください。基本的に、ゲーム・エミュレータ毎に待機時間などの適切な設定が異なるため、テンプレートで出力したマクロが、待機時間などの調整無しでそのまま問題なく使用できるとは限りません。
|