GameInputDeviceInfo

Describes all the information about an input device.

Syntax

typedef struct GameInputDeviceInfo {  
    uint32_t infoSize;  
    uint16_t vendorId;  
    uint16_t productId;  
    uint16_t revisionNumber;  
    uint8_t interfaceNumber;  
    uint8_t collectionNumber;  
    GameInputUsage usage;  
    GameInputVersion hardwareVersion;  
    GameInputVersion firmwareVersion;  
    APP_LOCAL_DEVICE_ID deviceId;  
    APP_LOCAL_DEVICE_ID deviceRootId;  
    GameInputDeviceFamily deviceFamily;  
    GameInputDeviceCapabilities capabilities;  
    GameInputKind supportedInput;  
    GameInputRumbleMotors supportedRumbleMotors;  
    uint32_t inputReportCount;  
    uint32_t outputReportCount;  
    uint32_t featureReportCount;  
    uint32_t controllerAxisCount;  
    uint32_t controllerButtonCount;  
    uint32_t controllerSwitchCount;  
    uint32_t touchPointCount;  
    uint32_t touchSensorCount;  
    uint32_t forceFeedbackMotorCount;  
    uint32_t hapticFeedbackMotorCount;  
    uint32_t deviceStringCount;  
    uint32_t deviceDescriptorSize;  
    GameInputRawDeviceReportInfo const * inputReportInfo;  
    GameInputRawDeviceReportInfo const * outputReportInfo;  
    GameInputRawDeviceReportInfo const * featureReportInfo;  
    GameInputControllerAxisInfo const * controllerAxisInfo;  
    GameInputControllerButtonInfo const * controllerButtonInfo;  
    GameInputControllerSwitchInfo const * controllerSwitchInfo;  
    GameInputKeyboardInfo const * keyboardInfo;  
    GameInputMouseInfo const * mouseInfo;  
    GameInputTouchSensorInfo const * touchSensorInfo;  
    GameInputMotionInfo const * motionInfo;  
    GameInputArcadeStickInfo const * arcadeStickInfo;  
    GameInputFlightStickInfo const * flightStickInfo;  
    GameInputGamepadInfo const * gamepadInfo;  
    GameInputRacingWheelInfo const * racingWheelInfo;  
    GameInputUiNavigationInfo const * uiNavigationInfo;  
    GameInputForceFeedbackMotorInfo const * forceFeedbackMotorInfo;  
    GameInputHapticFeedbackMotorInfo const * hapticFeedbackMotorInfo;  
    GameInputString const * displayName;  
    GameInputString const * deviceStrings;  
    void const * deviceDescriptorData;  
} GameInputDeviceInfo  

Members

infoSize
Type: uint32_t

Size of the device info.

vendorId
Type: uint16_t

Identifies the vendor of the input device.

productId
Type: uint16_t

Identifies the input device as a product.

revisionNumber
Type: uint16_t

Device revision number.

interfaceNumber
Type: uint8_t

Device interface number.

collectionNumber
Type: uint8_t

Device collection number.

usage
Type: GameInputUsage

Two part index describing the input used.

hardwareVersion
Type: GameInputVersion

Designates what version of the hardware is being used.

firmwareVersion
Type: GameInputVersion

Designates what version of firmware is being used.

deviceId
Type: APP_LOCAL_DEVICE_ID

Device ID of the input device.

deviceRootId
Type: APP_LOCAL_DEVICE_ID

Root ID of the input device.

deviceFamily
Type: GameInputDeviceFamily

Designates the family of input device the input device belongs to.

capabilities
Type: GameInputDeviceCapabilities

Describe features and abilities available for game controller.

supportedInput
Type: GameInputKind

Describes the type or types of input the device supports.

supportedRumbleMotors
Type: GameInputRumbleMotors

Describes the accessible rumble motors on the device if there are any.

inputReportCount
Type: uint32_t

Number of input reports for the device.

outputReportCount
Type: uint32_t

Number of output reports for the device.

featureReportCount
Type: uint32_t

Number of feature reports for the device.

controllerAxisCount
Type: uint32_t

The number of Axis on the input device.

controllerButtonCount
Type: uint32_t

The number of buttons on the input device.

controllerSwitchCount
Type: uint32_t

The number of switches on the inputdevice

touchPointCount
Type: uint32_t

The number of touch inputs that can be simultaneously be read at the same time for a touch input on the device.

touchSensorCount
Type: uint32_t

The number of touch sensors on the device.

forceFeedbackMotorCount
Type: uint32_t

The number of force feedback motors on the input device.

hapticFeedbackMotorCount
Type: uint32_t

The number of haptic feedback motors on the input device.

deviceStringCount
Type: uint32_t

The number of strings contained in the device info.

deviceDescriptorSize
Type: uint32_t

Size of the device description.

inputReportInfo
Type: GameInputRawDeviceReportInfo const *

Input report info object.

outputReportInfo
Type: GameInputRawDeviceReportInfo const *

Output report.

featureReportInfo
Type: GameInputRawDeviceReportInfo const *

Feature report.

controllerAxisInfo
Type: GameInputControllerAxisInfo const *

Information about all of the axis for an input device.

controllerButtonInfo
Type: GameInputControllerButtonInfo const *

Information about all of the buttons on an input device.

controllerSwitchInfo
Type: GameInputControllerSwitchInfo const *

Information about all of the switches on an input device.

keyboardInfo
Type: GameInputKeyboardInfo const *

Information about a keyboard input device.

mouseInfo
Type: GameInputMouseInfo const *

Information about a mouse input device.

touchSensorInfo
Type: GameInputTouchSensorInfo const *

Information about all of the touch sensors on an input device.

motionInfo
Type: GameInputMotionInfo const *

Information about motion information.

arcadeStickInfo
Type: GameInputArcadeStickInfo const *

Information about an arcade stick input device.

flightStickInfo
Type: GameInputFlightStickInfo const *

Information about a flight stick input device.

gamepadInfo
Type: GameInputGamepadInfo const *

Information about a gamepad input device.

racingWheelInfo
Type: GameInputRacingWheelInfo const *

Information about a racing wheel input device.

uiNavigationInfo
Type: GameInputUiNavigationInfo const *

Information about the navigation mapping for an input device.

forceFeedbackMotorInfo
Type: GameInputForceFeedbackMotorInfo const *

Information about all of the force feedback motors on a device.

hapticFeedbackMotorInfo
Type: GameInputHapticFeedbackMotorInfo const *

Information about all of the haptic feedback motors on a device

displayName
Type: GameInputString const *
Display name of the device.
deviceStrings
Type: GameInputString const *

List of game input strings for the device.
deviceDescriptorData
Type: void const *

Object which describes the device.

Remarks

The deviceId is an application-local ID - a 256-bit hash value which uniquely identifies the device. This ID is always the same for a given device, even across runs of an application or reboots of the system, provided it is connected to the same USB port. Application-local ID hashes are, in part, generated with information specific to the calling application and system. Therefore, while the application-local ID is the same every time a given application is run, it will be different across different applications, or in the same application across different systems. This is done to protect user privacy, so users cannot be tracked across applications/systems via their devices. The application-local ID is used by applications to create stable input mappings when several identical devices are connected to the system.

The deviceRootId is another application-local ID which identifies the root device node for composite devices. This allows applications to reason about the relationship of individual devices. For example, some gaming keyboards work around the legacy USB limit of 8 simultaneous keypresses by exposing themselves as a composite device with multiple keyboard nodes. These are merged together into the "system" keyboard, so this is usually transparent to the user. But when processing per-keyboard input via the GameInput API, understanding this allows applications to avoid improper assumptions (e.g. that a keypress will always come from a specific device) when mapping functions to keypresses. The deviceId and deviceRootId are the same if the device is not one of many interfaces on a composite device.

The displayName string contains a "friendly" name for the device. This string is suitable for display in an application's UI, however there is no guarantee that it is localized. This is because the GameInput API searches several locations for this string, and one of the final fallbacks comes from the device's firmware.

The final fields in the GameInputDeviceInfo structure are pointers to variable-sized arrays of information about the device, such as detailed properties of individual controller buttons, or information about force feedback and haptic feedback support. NULL pointers indicate that the corresponding feature is not available or supported by the device. The number of elements in each array is indicated by a corresponding field in the structure (as noted in the SAL annotations).

No one input device will have readable values for all attributes. Some input device will only have values for relevant attributes.
Returned by IGameInputDevice::GetDeviceInfo.

Requirements

Header: GameInput.h

Supported platforms: Windows, Xbox One family consoles and Xbox Series consoles

See also

Input API Overview
GameInput
IGameInputDevice::GetDeviceInfo