構文
メンバー
vendorId型: uint16_t 入力デバイスのベンダーを識別します。 productId
型: uint16_t 入力デバイスを製品として識別します。 revisionNumber
型: uint16_t デバイスのハードウェア リビジョン番号 (存在する場合)。 usage
型: GameInputUsage 使用される入力を記述する 2 つの部分から成るインデックス。 hardwareVersion
型: GameInputVersion デバイスのハードウェア バージョン (存在する場合)。 firmwareVersion
型: GameInputVersion デバイスのファームウェア バージョン (存在する場合)。 deviceId
型: APP_LOCAL_DEVICE_ID 入力デバイスのデバイス ID。 deviceRootId
型: APP_LOCAL_DEVICE_ID 入力デバイスのルート ID。 deviceFamily
型: GameInputDeviceFamily 入力デバイスが属する入力デバイス ファミリを指定します。 supportedInput
型: GameInputKind デバイスがサポートする入力の種類を記述します。 supportedRumbleMotors
型: GameInputRumbleMotors デバイス上でアクセス可能な振動モーター (存在する場合) を記述します。 supportedSystemButtons
型: GameInputSystemButtons システムを操作するために使用できるボタン (多くの場合ゲーム外で使用) を記述します。 containerId
型: GUID 入力デバイスのコンテナー ID。 displayName
型: const char* デバイスのフレンドリ名を記述します。 pnpPath
型: const char* デバイスのプラグ アンド プレイ機能を記述します。このパスを使用して、他の API から基になるデバイスを参照します。 keyboardInfo
型: GameInputKeyboardInfo const * キーボード入力デバイスに関する情報。 mouseInfo
型: GameInputMouseInfo const * マウス入力デバイスに関する情報。 sensorsInfo
型: GameInputSensorsInfo const * デバイス上のセンサーに関する情報。 controllerInfo
型: GameInputControllerInfo const * 汎用コントローラー入力デバイスに関する情報。コントローラーは、デバイス上のマッピングされていない生の軸、ボタン、スイッチを表します。 arcadeStickInfo
型: GameInputArcadeStickInfo const * アーケード スティック入力デバイスに関する情報。 flightStickInfo
型: GameInputFlightStickInfo const * フライト スティック入力デバイスに関する情報。 gamepadInfo
型: GameInputGamepadInfo const * ゲームパッド入力デバイスに関する情報。 racingWheelInfo
型: GameInputRacingWheelInfo const * レーシング ホイール入力デバイスに関する情報。 forceFeedbackMotorCount
型: uint32_t 入力デバイス上のフォース フィードバック モーターの数。 forceFeedbackMotorInfo
型: GameInputForceFeedbackMotorInfo const * デバイス上のすべてのフォース フィードバック モーターに関する情報。 inputReportCount
型: uint32_t デバイスの入力レポートの数。 inputReportInfo
型: GameInputRawDeviceReportInfo const * 入力レポート情報オブジェクト。 outputReportCount
型: uint32_t デバイスの出力レポートの数。 outputReportInfo
型: GameInputRawDeviceReportInfo const * 出力レポート。
解説
この構造体のすべての文字列メンバーは UTF-8 エンコードを使用します。deviceId はアプリケーション ローカル ID であり、デバイスを一意に識別する 256 ビットのハッシュ値です。この ID は、デバイスが同じ USB ポートに接続されている限り、アプリケーションの実行やシステムの再起動をまたいでも、特定のデバイスに対して常に同じ値のままです。アプリケーションは、呼び出し元のアプリケーションとシステムに固有の情報を一部使用して、アプリケーション ローカル ID のハッシュを生成します。
deviceRootId もアプリケーション ローカル ID で、複合デバイスのルート デバイス ノードを識別します。これにより、アプリケーションは個々のデバイス間の関係を判断できます。たとえば、一部のゲーミング キーボードは、複数のキーボード ノードを持つ複合デバイスとして自身を公開することで、同時に 8 つのキーストロークという従来の USB の制限を回避しています。これらのノードは “システム” キーボードに統合されるため、通常ユーザーがこれを意識することはありません。しかし、GameInput API を介してキーボードごとの入力を処理する場合、この仕組みを理解しておくと、アプリケーションが機能をキーストロークにマッピングする際に不適切な想定 (たとえば、キーストロークは常に特定のデバイスから送られてくるという想定) を避けることができます。デバイスが複合デバイス上の複数のインターフェイスの 1 つでない場合、deviceId と deviceRootId は同じになります。
displayName 文字列には、デバイスの “フレンドリ” 名が含まれます。この文字列はアプリケーションの UI に表示できますが、ローカライズされている保証はありません。ローカライズされていない可能性があるのは、GameInput API がこの文字列を複数の場所から検索し、最終的なフォールバックの 1 つがデバイスのファームウェアから取得されるためです。
GameInputDeviceInfo 構造体の最後のフィールドは、フォース フィードバックやハプティック フィードバックのサポートに関する情報など、デバイスに関する情報の可変サイズ配列へのポインターです。NULL ポインターは、対応する機能がデバイスで使用できないか、サポートされていないことを示します。ソース注釈言語 (SAL) の注釈に記載されているとおり、各配列の要素数は構造体内の対応するフィールドによって示されます。
すべての属性について読み取り可能な値を提供する入力デバイスはありません。デバイスによっては、関連する属性の値のみが含まれます。システムは、この情報を IGameInputDevice::GetDeviceInfo を通じて返します。
GameInput v4 での代替メソッド
GameInput v4 では、GameInputDeviceInfo の各メンバーは IGameInputDevice の getter メソッドに置き換えられています。
keyboardInfo や gamepadInfo などのデバイス固有の情報を表すポインター メンバーは、デバイスにその種類の入力がない場合は NULL でした。対応する v4 の getter (GetKeyboardInfo や GetGamepadInfo など) は、その場合 false を返します。
概念に関するドキュメント
関連項目
非推奨の GameInput API メンバーIGameInputDevice
Input API の概要
GameInput
IGameInputDevice::GetDeviceInfo
