いろいろいじってみると、とりあえず、OblivionのOPTIONのコントローラ設定とジョイスティックの設定を合わせれば、最低限ボタン動作などするところまで確認しました。ただ、問題発生。なにが問題なのか少々まとめ、解決するためにプログラムを作成みました。
問題点①R3ボタン(右側のアナログスティックを押す)を視点切り替えに使用した場合、右のアナログスティックがカメラの視点切り替えを行わなくなる
問題点②いわゆる「L2&R2ボタンが使えない」。
※おそらくドライバーか、コントローラ自身の仕様
つまり、XBOX360と同等の捜査は、標準のドライバー&Oblivionの設定だけでは無理というところなのですね。そこで、コントローラの入力を監視するツールを作ってみました。仕組みは、次の通りです。問題点②については後述。
①裏スレッドにて、DirectInput8を使用してジョイスティックの入力を常時監視する
②右のアナログスティックの操作をマウス入力に変換してシステムに通知する
③
問題点②解決のために、InputBuffer.lZの座標を、マウスの右クリックと左クリックの操作に変換して、システムに通知する。
このようにすることで、ジョイスティックをマウス化しています。ですが、DirectInputで使用しているデバイスドライバーに対してフックしているわけではありません。OSに対してイベントを通知しているだけですので、すべてのアプリケーションに対応するわけではありませんので、現在のところPC 版OblivionとXBOX 360コントローラ For Windowsに特化させています。
突貫でつくったものですので、バグや不具合などでるかもしれませんがご容赦ください。一応、ソースコードも付属して公開する予定です。直接の再構築には、Visual Studio 2005のC++/MFCライブラリと、DirectX SDKが必要になります。
この週末には公開しますので、いましばらくおまちこださい。