最近になってゲームパッドのコーナーを見てみると、純正XBOX 360パッド以外でもたくさんの XINPUTの対応パッドが並んでいることに気付きました。これはXINPUT無視できないなーと感じました。また多くのパッドが DirectInput との切り替えスイッチを持っていて、両対応できるようになっていました。
これはアプリケーション側も両対応しておいたほうが何かと都合良さそうな感じです。
ひとつ注意事項があります。
VisualStudio 2012など使っていると DirectXSDKが統合されたこともあり、XInputのインクルードやライブラリのリンクについてちょちょいとやってしまえるのですが、ここに罠があります。
VisualStudio 2012 では標準の対象 OS が Windows8 であることを想定しているため、XInput も Windows8のものをリンクするようになっています(XInput.lib指定時)。これを回避して、Windows7やWindows8で動くようにするためには、リンクするライブラリを “Xinput9_1_0.lib” に変更します。これで Windows7の環境でも動作させることが出来るようになります。ただ古いバージョンになるため使用できるAPIに制限が出来てしまいますので、注意が必要です。