次の方法で共有


GameInputDeviceInfo

入力デバイスに関するすべての情報について説明します。

構文

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 経由でキーボード入力ごとに処理するときにこれを理解することにより、アプリケーションは機能をキー操作にマップする際に不適切な仮定 (例: キー操作は常に特定のデバイスで行われる) を避けることができます。 デバイスが複合デバイス上の多数のインターフェイスのいずれでもない場合、deviceIddeviceRootId は同じです。

displayName 文字列にはデバイスの "フレンドリ" 名が含まれます。 この文字列はアプリケーションの UI で表示できますが、ローカライズされている保証はありません。 このローカライズの欠如が発生するのは、GameInput API は複数の場所でこの文字列を検索し、最終的なフォールバックの 1 つはデバイスのファームウェアから取得されることによるものです。

GameInputDeviceInfo 構造体の最後のフィールドは、フォース フィードバックや触覚フィードバックのサポートに関する情報など、デバイスに関する情報の可変サイズ配列へのポインターです。 NULL ポインターは、対応する機能が利用できないか、デバイスでサポートされていないことを示します。 構造体の対応するフィールドは、ソース注釈言語 (SAL) 注釈に示されているように、各配列内の要素の数を示します。

すべての属性に読み取り可能な値を提供する入力デバイスはありません。 一部のデバイスには、関連する属性の値のみが含まれています。 システムは IGameInputDevice::GetDeviceInfo を通じてこの情報を返します。

関連項目

入力 API の概要
GameInput
IGameInputDevice::GetDeviceInfo