入力デバイスに関するすべての情報について説明します。
構文
struct GameInputDeviceInfo
{
uint16_t vendorId;
uint16_t productId;
uint16_t revisionNumber;
GameInputUsage usage;
GameInputVersion hardwareVersion;
GameInputVersion firmwareVersion;
APP_LOCAL_DEVICE_ID deviceId;
APP_LOCAL_DEVICE_ID deviceRootId;
GameInputDeviceFamily deviceFamily;
GameInputKind supportedInput;
GameInputRumbleMotors supportedRumbleMotors;
GameInputSystemButtons supportedSystemButtons;
GUID containerId;
const char* displayName;
const char* pnpPath;
const GameInputKeyboardInfo* keyboardInfo;
const GameInputMouseInfo* mouseInfo;
const GameInputSensorsInfo* sensorsInfo;
const GameInputControllerInfo* controllerInfo;
const GameInputArcadeStickInfo* arcadeStickInfo;
const GameInputFlightStickInfo* flightStickInfo;
const GameInputGamepadInfo* gamepadInfo;
const GameInputRacingWheelInfo* racingWheelInfo;
uint32_t forceFeedbackMotorCount;
const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;
uint32_t inputReportCount;
const GameInputRawDeviceReportInfo* inputReportInfo;
uint32_t outputReportCount;
const GameInputRawDeviceReportInfo* outputReportInfo;
};
メンバー
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
デバイスでサポートされる入力の種類 (1 つまたは複数) を記述します。
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 ビットのハッシュ値です。 デバイスが同じ USB ポートに接続されている限り、この ID は、アプリケーションの実行やシステムの再起動をまたがって特定のデバイスに対して常に同じです。 アプリケーションは、呼び出し元のアプリケーションおよびシステムに固有の情報を一部含む、アプリケーションのローカル ID ハッシュを生成します。
deviceRootId はアプリケーションの別のローカル ID で、複合デバイスのルート デバイス ノードを識別します。 これにより、アプリケーションは個々のデバイスの関係について推論できます。 たとえば、一部のゲーム キーボードは、複数のキーボード ノードを持つ複合デバイスとして自身を公開することで、8 つの同時キー操作という従来の USB の制限を回避します。 これらのノードは "システム" キーボードにマージされるので、通常はユーザーに透過的です。 しかし、GameInput API 経由でキーボード入力ごとに処理するときにこれを理解することにより、アプリケーションは機能をキー操作にマップする際に不適切な仮定 (例: キー操作は常に特定のデバイスで行われる) を避けることができます。 デバイスが複合デバイス上の多数のインターフェイスのいずれでもない場合、deviceId と deviceRootId は同じです。
displayName 文字列にはデバイスの "フレンドリ" 名が含まれます。 この文字列はアプリケーションの UI で表示できますが、ローカライズされている保証はありません。 このローカライズの欠如が発生するのは、GameInput API は複数の場所でこの文字列を検索し、最終的なフォールバックの 1 つはデバイスのファームウェアから取得されることによるものです。
GameInputDeviceInfo 構造体の最後のフィールドは、フォース フィードバックや触覚フィードバックのサポートに関する情報など、デバイスに関する情報の可変サイズ配列へのポインターです。
NULL ポインターは、対応する機能が利用できないか、デバイスでサポートされていないことを示します。 構造体の対応するフィールドは、ソース注釈言語 (SAL) 注釈に示されているように、各配列内の要素の数を示します。
すべての属性に読み取り可能な値を提供する入力デバイスはありません。 一部のデバイスには、関連する属性の値のみが含まれています。 システムは IGameInputDevice::GetDeviceInfo を通じてこの情報を返します。