Microsoft DirectX 8.0 (C++) |
アプリケーション アクションと、それらのアクションのマップ先である仮想コントロールやデバイス オブジェクトの定義が済んだら、次のステップでは、システム上のデバイスを列挙して、目的の仮想コントロールに最適なデバイスを検索する。
これを行うために、IDirectInput8::EnumDevicesBySemantics に DIACTIONFORMAT 構造体を渡す。このメソッドは、ほとんどの点で IDirectInput8::EnumDevices と同じように機能し、類似のコールバック関数を取る。
特定のコントロールに一致するようにユーザーが構成したデバイスは、常に最初に列挙される。たとえば、ユーザーがホイールをドライビング ゲームのプライマリ ステアリング デバイスとして構成している場合は、DIAXIS_DRIVINGR_STEER をサポートするデバイスが要求されるとホイールが最初に列挙される。DIAXIS_DRIVINGR_STEER をサポートするジョイスティックなどのほかのデバイスがあっても、ユーザーによって構成されていなければ、ホイールが優先される。それ以外の場合、利用可能なデバイスの列挙順は、要求されたコントロールに一致する度合いにより決まる。
列挙コールバックでは、各デバイスのデフォルト アクション マッピングの取得、不要なマッピングの変更、ユーザーがデバイスを再構成する機能の設定、およびアクション マップの適用を行うことができる。これらのステップについては、「アクション マップの構成」で説明する。DIEnumDevicesBySemanticsCallback に返されるフラグは、特定のデバイスが列挙された理由についての情報を提供する。これらのフラグは、デバイスが最近使用されたか、新しくインストールされたか、優先順位 1 または 優先順位 2 のコントロールのマッピングを受け付けるかどうかを示す。