From 3ca377ea227b6e99412a55bd81ca070df4253cd9 Mon Sep 17 00:00:00 2001 From: Hugh Sanderson Date: Sun, 2 Feb 2025 13:23:27 +0800 Subject: [PATCH] Make NME build less machine dependent --- project/include/xcompile/GameInput.h | 1613 ++++++++++++++++++++++++++ project/toolkit/sdl/files.xml | 5 + 2 files changed, 1618 insertions(+) create mode 100644 project/include/xcompile/GameInput.h diff --git a/project/include/xcompile/GameInput.h b/project/include/xcompile/GameInput.h new file mode 100644 index 000000000..f1df879ff --- /dev/null +++ b/project/include/xcompile/GameInput.h @@ -0,0 +1,1613 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. + +#if (_MSC_VER >= 1020) +#pragma once +#endif + +#ifndef __gameinput_h__ +#define __gameinput_h__ + +#include +#include + +#pragma region Application Family or OneCore Family or Games Family +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum GameInputKind +{ + GameInputKindUnknown = 0x00000000, + GameInputKindRawDeviceReport = 0x00000001, + GameInputKindControllerAxis = 0x00000002, + GameInputKindControllerButton = 0x00000004, + GameInputKindControllerSwitch = 0x00000008, + GameInputKindController = 0x0000000E, + GameInputKindKeyboard = 0x00000010, + GameInputKindMouse = 0x00000020, + GameInputKindTouch = 0x00000100, + GameInputKindMotion = 0x00001000, + GameInputKindArcadeStick = 0x00010000, + GameInputKindFlightStick = 0x00020000, + GameInputKindGamepad = 0x00040000, + GameInputKindRacingWheel = 0x00080000, + GameInputKindUiNavigation = 0x01000000 +} GameInputKind; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputKind); + +typedef enum GameInputEnumerationKind +{ + GameInputNoEnumeration = 0, + GameInputAsyncEnumeration = 1, + GameInputBlockingEnumeration = 2 +} GameInputEnumerationKind; + +typedef enum GameInputFocusPolicy +{ + GameInputDefaultFocusPolicy = 0x00000000, + GameInputDisableBackgroundInput = 0x00000001, + GameInputExclusiveForegroundInput = 0x00000002 +} GameInputFocusPolicy; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputFocusPolicy); + +typedef enum GameInputSwitchKind +{ + GameInputUnknownSwitchKind = -1, + GameInput2WaySwitch = 0, + GameInput4WaySwitch = 1, + GameInput8WaySwitch = 2 +} GameInputSwitchKind; + +typedef enum GameInputSwitchPosition +{ + GameInputSwitchCenter = 0, + GameInputSwitchUp = 1, + GameInputSwitchUpRight = 2, + GameInputSwitchRight = 3, + GameInputSwitchDownRight = 4, + GameInputSwitchDown = 5, + GameInputSwitchDownLeft = 6, + GameInputSwitchLeft = 7, + GameInputSwitchUpLeft = 8 +} GameInputSwitchPosition; + +typedef enum GameInputKeyboardKind +{ + GameInputUnknownKeyboard = -1, + GameInputAnsiKeyboard = 0, + GameInputIsoKeyboard = 1, + GameInputKsKeyboard = 2, + GameInputAbntKeyboard = 3, + GameInputJisKeyboard = 4 +} GameInputKeyboardKind; + +typedef enum GameInputMouseButtons +{ + GameInputMouseNone = 0x00000000, + GameInputMouseLeftButton = 0x00000001, + GameInputMouseRightButton = 0x00000002, + GameInputMouseMiddleButton = 0x00000004, + GameInputMouseButton4 = 0x00000008, + GameInputMouseButton5 = 0x00000010, + GameInputMouseWheelTiltLeft = 0x00000020, + GameInputMouseWheelTiltRight = 0x00000040 +} GameInputMouseButtons; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputMouseButtons) + +typedef enum GameInputTouchShape +{ + GameInputTouchShapeUnknown = -1, + GameInputTouchShapePoint = 0, + GameInputTouchShape1DLinear = 1, + GameInputTouchShape1DRadial = 2, + GameInputTouchShape1DIrregular = 3, + GameInputTouchShape2DRectangular = 4, + GameInputTouchShape2DElliptical = 5, + GameInputTouchShape2DIrregular = 6 +} GameInputTouchShape; + +typedef enum GameInputMotionAccuracy +{ + GameInputMotionAccuracyUnknown = -1, + GameInputMotionUnavailable = 0, + GameInputMotionUnreliable = 1, + GameInputMotionApproximate = 2, + GameInputMotionAccurate = 3 +} GameInputMotionAccuracy; + +typedef enum GameInputArcadeStickButtons +{ + GameInputArcadeStickNone = 0x00000000, + GameInputArcadeStickMenu = 0x00000001, + GameInputArcadeStickView = 0x00000002, + GameInputArcadeStickUp = 0x00000004, + GameInputArcadeStickDown = 0x00000008, + GameInputArcadeStickLeft = 0x00000010, + GameInputArcadeStickRight = 0x00000020, + GameInputArcadeStickAction1 = 0x00000040, + GameInputArcadeStickAction2 = 0x00000080, + GameInputArcadeStickAction3 = 0x00000100, + GameInputArcadeStickAction4 = 0x00000200, + GameInputArcadeStickAction5 = 0x00000400, + GameInputArcadeStickAction6 = 0x00000800, + GameInputArcadeStickSpecial1 = 0x00001000, + GameInputArcadeStickSpecial2 = 0x00002000 +} GameInputArcadeStickButtons; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputArcadeStickButtons) + +typedef enum GameInputFlightStickButtons +{ + GameInputFlightStickNone = 0x00000000, + GameInputFlightStickMenu = 0x00000001, + GameInputFlightStickView = 0x00000002, + GameInputFlightStickFirePrimary = 0x00000004, + GameInputFlightStickFireSecondary = 0x00000008 +} GameInputFlightStickButtons; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputFlightStickButtons) + +typedef enum GameInputGamepadButtons +{ + GameInputGamepadNone = 0x00000000, + GameInputGamepadMenu = 0x00000001, + GameInputGamepadView = 0x00000002, + GameInputGamepadA = 0x00000004, + GameInputGamepadB = 0x00000008, + GameInputGamepadX = 0x00000010, + GameInputGamepadY = 0x00000020, + GameInputGamepadDPadUp = 0x00000040, + GameInputGamepadDPadDown = 0x00000080, + GameInputGamepadDPadLeft = 0x00000100, + GameInputGamepadDPadRight = 0x00000200, + GameInputGamepadLeftShoulder = 0x00000400, + GameInputGamepadRightShoulder = 0x00000800, + GameInputGamepadLeftThumbstick = 0x00001000, + GameInputGamepadRightThumbstick = 0x00002000 +} GameInputGamepadButtons; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputGamepadButtons) + +typedef enum GameInputRacingWheelButtons +{ + GameInputRacingWheelNone = 0x00000000, + GameInputRacingWheelMenu = 0x00000001, + GameInputRacingWheelView = 0x00000002, + GameInputRacingWheelPreviousGear = 0x00000004, + GameInputRacingWheelNextGear = 0x00000008, + GameInputRacingWheelDpadUp = 0x00000010, + GameInputRacingWheelDpadDown = 0x00000020, + GameInputRacingWheelDpadLeft = 0x00000040, + GameInputRacingWheelDpadRight = 0x00000080 +} GameInputRacingWheelButtons; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputRacingWheelButtons) + +typedef enum GameInputUiNavigationButtons +{ + GameInputUiNavigationNone = 0x00000000, + GameInputUiNavigationMenu = 0x00000001, + GameInputUiNavigationView = 0x00000002, + GameInputUiNavigationAccept = 0x00000004, + GameInputUiNavigationCancel = 0x00000008, + GameInputUiNavigationUp = 0x00000010, + GameInputUiNavigationDown = 0x00000020, + GameInputUiNavigationLeft = 0x00000040, + GameInputUiNavigationRight = 0x00000080, + GameInputUiNavigationContext1 = 0x00000100, + GameInputUiNavigationContext2 = 0x00000200, + GameInputUiNavigationContext3 = 0x00000400, + GameInputUiNavigationContext4 = 0x00000800, + GameInputUiNavigationPageUp = 0x00001000, + GameInputUiNavigationPageDown = 0x00002000, + GameInputUiNavigationPageLeft = 0x00004000, + GameInputUiNavigationPageRight = 0x00008000, + GameInputUiNavigationScrollUp = 0x00010000, + GameInputUiNavigationScrollDown = 0x00020000, + GameInputUiNavigationScrollLeft = 0x00040000, + GameInputUiNavigationScrollRight = 0x00080000 +} GameInputUiNavigationButtons; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputUiNavigationButtons) + +typedef enum GameInputDeviceStatus +{ + GameInputDeviceNoStatus = 0x00000000, + GameInputDeviceConnected = 0x00000001, + GameInputDeviceInputEnabled = 0x00000002, + GameInputDeviceOutputEnabled = 0x00000004, + GameInputDeviceRawIoEnabled = 0x00000008, + GameInputDeviceAudioCapture = 0x00000010, + GameInputDeviceAudioRender = 0x00000020, + GameInputDeviceSynchronized = 0x00000040, + GameInputDeviceWireless = 0x00000080, + GameInputDeviceUserIdle = 0x00100000, + GameInputDeviceAnyStatus = 0x00FFFFFF +} GameInputDeviceStatus; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputDeviceStatus); + +typedef enum GameInputBatteryStatus +{ + GameInputBatteryUnknown = -1, + GameInputBatteryNotPresent = 0, + GameInputBatteryDischarging = 1, + GameInputBatteryIdle = 2, + GameInputBatteryCharging = 3 +} GameInputBatteryStatus; + +typedef enum GameInputDeviceFamily +{ + GameInputFamilyVirtual = -1, + GameInputFamilyAggregate = 0, + GameInputFamilyXboxOne = 1, + GameInputFamilyXbox360 = 2, + GameInputFamilyHid = 3, + GameInputFamilyI8042 = 4 +} GameInputDeviceFamily; + +typedef enum GameInputDeviceCapabilities +{ + GameInputDeviceCapabilityNone = 0x00000000, + GameInputDeviceCapabilityAudio = 0x00000001, + GameInputDeviceCapabilityPluginModule = 0x00000002, + GameInputDeviceCapabilityPowerOff = 0x00000004, + GameInputDeviceCapabilitySynchronization = 0x00000008, + GameInputDeviceCapabilityWireless = 0x00000010 +} GameInputDeviceCapabilities; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputDeviceCapabilities) + +typedef enum GameInputRawDeviceReportKind +{ + GameInputRawInputReport = 0, + GameInputRawOutputReport = 1, + GameInputRawFeatureReport = 2 +} GameInputRawDeviceReportKind; + +typedef enum GameInputRawDeviceReportItemFlags +{ + GameInputDefaultItem = 0x00000000, + GameInputConstantItem = 0x00000001, + GameInputArrayItem = 0x00000002, + GameInputRelativeItem = 0x00000004, + GameInputWraparoundItem = 0x00000008, + GameInputNonlinearItem = 0x00000010, + GameInputStableItem = 0x00000020, + GameInputNullableItem = 0x00000040, + GameInputVolatileItem = 0x00000080, + GameInputBufferedItem = 0x00000100 +} GameInputRawDeviceReportItemFlags; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputRawDeviceReportItemFlags) + +typedef enum GameInputRawDeviceItemCollectionKind +{ + GameInputUnknownItemCollection = -1, + GameInputPhysicalItemCollection = 0, + GameInputApplicationItemCollection = 1, + GameInputLogicalItemCollection = 2, + GameInputReportItemCollection = 3, + GameInputNamedArrayItemCollection = 4, + GameInputUsageSwitchItemCollection = 5, + GameInputUsageModifierItemCollection = 6 +} GameInputRawDeviceItemCollectionKind; + +typedef enum GameInputRawDevicePhysicalUnitKind +{ + GameInputPhysicalUnitUnknown = -1, + GameInputPhysicalUnitNone = 0, + GameInputPhysicalUnitTime = 1, + GameInputPhysicalUnitFrequency = 2, + GameInputPhysicalUnitLength = 3, + GameInputPhysicalUnitVelocity = 4, + GameInputPhysicalUnitAcceleration = 5, + GameInputPhysicalUnitMass = 6, + GameInputPhysicalUnitMomentum = 7, + GameInputPhysicalUnitForce = 8, + GameInputPhysicalUnitPressure = 9, + GameInputPhysicalUnitAngle = 10, + GameInputPhysicalUnitAngularVelocity = 11, + GameInputPhysicalUnitAngularAcceleration = 12, + GameInputPhysicalUnitAngularMass = 13, + GameInputPhysicalUnitAngularMomentum = 14, + GameInputPhysicalUnitAngularTorque = 15, + GameInputPhysicalUnitElectricCurrent = 16, + GameInputPhysicalUnitElectricCharge = 17, + GameInputPhysicalUnitElectricPotential = 18, + GameInputPhysicalUnitEnergy = 19, + GameInputPhysicalUnitPower = 20, + GameInputPhysicalUnitTemperature = 21, + GameInputPhysicalUnitLuminousIntensity = 22, + GameInputPhysicalUnitLuminousFlux = 23, + GameInputPhysicalUnitIlluminance = 24 +} GameInputRawDevicePhysicalUnitKind; + +typedef enum GameInputLabel +{ + GameInputLabelUnknown = -1, + GameInputLabelNone = 0, + GameInputLabelXboxGuide = 1, + GameInputLabelXboxBack = 2, + GameInputLabelXboxStart = 3, + GameInputLabelXboxMenu = 4, + GameInputLabelXboxView = 5, + GameInputLabelXboxA = 7, + GameInputLabelXboxB = 8, + GameInputLabelXboxX = 9, + GameInputLabelXboxY = 10, + GameInputLabelXboxDPadUp = 11, + GameInputLabelXboxDPadDown = 12, + GameInputLabelXboxDPadLeft = 13, + GameInputLabelXboxDPadRight = 14, + GameInputLabelXboxLeftShoulder = 15, + GameInputLabelXboxLeftTrigger = 16, + GameInputLabelXboxLeftStickButton = 17, + GameInputLabelXboxRightShoulder = 18, + GameInputLabelXboxRightTrigger = 19, + GameInputLabelXboxRightStickButton = 20, + GameInputLabelXboxPaddle1 = 21, + GameInputLabelXboxPaddle2 = 22, + GameInputLabelXboxPaddle3 = 23, + GameInputLabelXboxPaddle4 = 24, + GameInputLabelLetterA = 25, + GameInputLabelLetterB = 26, + GameInputLabelLetterC = 27, + GameInputLabelLetterD = 28, + GameInputLabelLetterE = 29, + GameInputLabelLetterF = 30, + GameInputLabelLetterG = 31, + GameInputLabelLetterH = 32, + GameInputLabelLetterI = 33, + GameInputLabelLetterJ = 34, + GameInputLabelLetterK = 35, + GameInputLabelLetterL = 36, + GameInputLabelLetterM = 37, + GameInputLabelLetterN = 38, + GameInputLabelLetterO = 39, + GameInputLabelLetterP = 40, + GameInputLabelLetterQ = 41, + GameInputLabelLetterR = 42, + GameInputLabelLetterS = 43, + GameInputLabelLetterT = 44, + GameInputLabelLetterU = 45, + GameInputLabelLetterV = 46, + GameInputLabelLetterW = 47, + GameInputLabelLetterX = 48, + GameInputLabelLetterY = 49, + GameInputLabelLetterZ = 50, + GameInputLabelNumber0 = 51, + GameInputLabelNumber1 = 52, + GameInputLabelNumber2 = 53, + GameInputLabelNumber3 = 54, + GameInputLabelNumber4 = 55, + GameInputLabelNumber5 = 56, + GameInputLabelNumber6 = 57, + GameInputLabelNumber7 = 58, + GameInputLabelNumber8 = 59, + GameInputLabelNumber9 = 60, + GameInputLabelArrowUp = 61, + GameInputLabelArrowUpRight = 62, + GameInputLabelArrowRight = 63, + GameInputLabelArrowDownRight = 64, + GameInputLabelArrowDown = 65, + GameInputLabelArrowDownLLeft = 66, + GameInputLabelArrowLeft = 67, + GameInputLabelArrowUpLeft = 68, + GameInputLabelArrowUpDown = 69, + GameInputLabelArrowLeftRight = 70, + GameInputLabelArrowUpDownLeftRight = 71, + GameInputLabelArrowClockwise = 72, + GameInputLabelArrowCounterClockwise = 73, + GameInputLabelArrowReturn = 74, + GameInputLabelIconBranding = 75, + GameInputLabelIconHome = 76, + GameInputLabelIconMenu = 77, + GameInputLabelIconCross = 78, + GameInputLabelIconCircle = 79, + GameInputLabelIconSquare = 80, + GameInputLabelIconTriangle = 81, + GameInputLabelIconStar = 82, + GameInputLabelIconDPadUp = 83, + GameInputLabelIconDPadDown = 84, + GameInputLabelIconDPadLeft = 85, + GameInputLabelIconDPadRight = 86, + GameInputLabelIconDialClockwise = 87, + GameInputLabelIconDialCounterClockwise = 88, + GameInputLabelIconSliderLeftRight = 89, + GameInputLabelIconSliderUpDown = 90, + GameInputLabelIconWheelUpDown = 91, + GameInputLabelIconPlus = 92, + GameInputLabelIconMinus = 93, + GameInputLabelIconSuspension = 94, + GameInputLabelHome = 95, + GameInputLabelGuide = 96, + GameInputLabelMode = 97, + GameInputLabelSelect = 98, + GameInputLabelMenu = 99, + GameInputLabelView = 100, + GameInputLabelBack = 101, + GameInputLabelStart = 102, + GameInputLabelOptions = 103, + GameInputLabelShare = 104, + GameInputLabelUp = 105, + GameInputLabelDown = 106, + GameInputLabelLeft = 107, + GameInputLabelRight = 108, + GameInputLabelLB = 109, + GameInputLabelLT = 110, + GameInputLabelLSB = 111, + GameInputLabelL1 = 112, + GameInputLabelL2 = 113, + GameInputLabelL3 = 114, + GameInputLabelRB = 115, + GameInputLabelRT = 116, + GameInputLabelRSB = 117, + GameInputLabelR1 = 118, + GameInputLabelR2 = 119, + GameInputLabelR3 = 120, + GameInputLabelP1 = 121, + GameInputLabelP2 = 122, + GameInputLabelP3 = 123, + GameInputLabelP4 = 124 +} GameInputLabel; + +typedef enum GameInputLocation +{ + GameInputLocationUnknown = -1, + GameInputLocationChassis = 0, + GameInputLocationDisplay = 1, + GameInputLocationAxis = 2, + GameInputLocationButton = 3, + GameInputLocationSwitch = 4, + GameInputLocationKey = 5, + GameInputLocationTouchPad = 6 +} GameInputLocation; + +typedef enum GameInputFeedbackAxes +{ + GameInputFeedbackAxisNone = 0x00000000, + GameInputFeedbackAxisLinearX = 0x00000001, + GameInputFeedbackAxisLinearY = 0x00000002, + GameInputFeedbackAxisLinearZ = 0x00000004, + GameInputFeedbackAxisAngularX = 0x00000008, + GameInputFeedbackAxisAngularY = 0x00000010, + GameInputFeedbackAxisAngularZ = 0x00000020, + GameInputFeedbackAxisNormal = 0x00000040 +} GameInputFeedbackAxes; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputFeedbackAxes) + +typedef enum GameInputFeedbackEffectState +{ + GameInputFeedbackStopped = 0, + GameInputFeedbackRunning = 1, + GameInputFeedbackPaused = 2 +} GameInputFeedbackEffectState; + +typedef enum GameInputForceFeedbackEffectKind +{ + GameInputForceFeedbackConstant = 0, + GameInputForceFeedbackRamp = 1, + GameInputForceFeedbackSineWave = 2, + GameInputForceFeedbackSquareWave = 3, + GameInputForceFeedbackTriangleWave = 4, + GameInputForceFeedbackSawtoothUpWave = 5, + GameInputForceFeedbackSawtoothDownWave = 6, + GameInputForceFeedbackSpring = 7, + GameInputForceFeedbackFriction = 8, + GameInputForceFeedbackDamper = 9, + GameInputForceFeedbackInertia = 10 +} GameInputForceFeedbackEffectKind; + +typedef enum GameInputRumbleMotors +{ + GameInputRumbleNone = 0x00000000, + GameInputRumbleLowFrequency = 0x00000001, + GameInputRumbleHighFrequency = 0x00000002, + GameInputRumbleLeftTrigger = 0x00000004, + GameInputRumbleRightTrigger = 0x00000008 +} GameInputRumbleMotors; + +DEFINE_ENUM_FLAG_OPERATORS(GameInputRumbleMotors) + +typedef interface IGameInput IGameInput; +typedef interface IGameInputReading IGameInputReading; +typedef interface IGameInputDevice IGameInputDevice; +typedef interface IGameInputDispatcher IGameInputDispatcher; +typedef interface IGameInputForceFeedbackEffect IGameInputForceFeedbackEffect; +typedef interface IGameInputRawDeviceReport IGameInputRawDeviceReport; + +typedef uint64_t GameInputCallbackToken; + +#define GAMEINPUT_CURRENT_CALLBACK_TOKEN_VALUE 0xFFFFFFFFFFFFFFFFULL +#define GAMEINPUT_INVALID_CALLBACK_TOKEN_VALUE 0x0000000000000000ULL + +typedef void (CALLBACK * GameInputReadingCallback)( + _In_ GameInputCallbackToken callbackToken, + _In_ void * context, + _In_ IGameInputReading * reading, + _In_ bool hasOverrunOccurred); + +typedef void (CALLBACK * GameInputDeviceCallback)( + _In_ GameInputCallbackToken callbackToken, + _In_ void * context, + _In_ IGameInputDevice * device, + _In_ uint64_t timestamp, + _In_ GameInputDeviceStatus currentStatus, + _In_ GameInputDeviceStatus previousStatus); + +typedef void (CALLBACK * GameInputGuideButtonCallback)( + _In_ GameInputCallbackToken callbackToken, + _In_ void * context, + _In_ IGameInputDevice * device, + _In_ uint64_t timestamp, + _In_ bool isPressed); + +typedef void (CALLBACK * GameInputKeyboardLayoutCallback)( + _In_ GameInputCallbackToken callbackToken, + _In_ void * context, + _In_ IGameInputDevice * device, + _In_ uint64_t timestamp, + _In_ uint32_t currentLayout, + _In_ uint32_t previousLayout); + +typedef struct GameInputKeyState +{ + uint32_t scanCode; + uint32_t codePoint; + uint8_t virtualKey; + bool isDeadKey; +} GameInputKeyState; + +typedef struct GameInputMouseState +{ + GameInputMouseButtons buttons; + int64_t positionX; + int64_t positionY; + int64_t wheelX; + int64_t wheelY; +} GameInputMouseState; + +typedef struct GameInputTouchState +{ + uint64_t touchId; + uint32_t sensorIndex; + float positionX; + float positionY; + float pressure; + float proximity; + float contactRectTop; + float contactRectLeft; + float contactRectRight; + float contactRectBottom; +} GameInputTouchState; + +typedef struct GameInputMotionState +{ + float accelerationX; + float accelerationY; + float accelerationZ; + float angularVelocityX; + float angularVelocityY; + float angularVelocityZ; + float magneticFieldX; + float magneticFieldY; + float magneticFieldZ; + float orientationW; + float orientationX; + float orientationY; + float orientationZ; + GameInputMotionAccuracy accelerometerAccuracy; + GameInputMotionAccuracy gyroscopeAccuracy; + GameInputMotionAccuracy magnetometerAccuracy; + GameInputMotionAccuracy orientationAccuracy; +} GameInputMotionState; + +typedef struct GameInputArcadeStickState +{ + GameInputArcadeStickButtons buttons; +} GameInputArcadeStickState; + +typedef struct GameInputFlightStickState +{ + GameInputFlightStickButtons buttons; + GameInputSwitchPosition hatSwitch; + float roll; + float pitch; + float yaw; + float throttle; +} GameInputFlightStickState; + +typedef struct GameInputGamepadState +{ + GameInputGamepadButtons buttons; + float leftTrigger; + float rightTrigger; + float leftThumbstickX; + float leftThumbstickY; + float rightThumbstickX; + float rightThumbstickY; +} GameInputGamepadState; + +typedef struct GameInputRacingWheelState +{ + GameInputRacingWheelButtons buttons; + int32_t patternShifterGear; + float wheel; + float throttle; + float brake; + float clutch; + float handbrake; +} GameInputRacingWheelState; + +typedef struct GameInputUiNavigationState +{ + GameInputUiNavigationButtons buttons; +} GameInputUiNavigationState; + +typedef struct GameInputBatteryState +{ + float chargeRate; + float maxChargeRate; + float remainingCapacity; + float fullChargeCapacity; + GameInputBatteryStatus status; +} GameInputBatteryState; + +typedef struct GameInputString +{ + uint32_t sizeInBytes; + uint32_t codePointCount; + _Field_z_ char const * data; +} GameInputString; + +typedef struct GameInputUsage +{ + uint16_t page; + uint16_t id; +} GameInputUsage; + +typedef struct GameInputVersion +{ + uint16_t major; + uint16_t minor; + uint16_t build; + uint16_t revision; +} GameInputVersion; + +typedef struct GameInputRawDeviceItemCollectionInfo +{ + GameInputRawDeviceItemCollectionKind kind; + uint32_t childCount; + uint32_t siblingCount; + uint32_t usageCount; + _Field_size_full_(usageCount) GameInputUsage const * usages; + _Field_size_full_opt_(1) struct GameInputRawDeviceItemCollectionInfo const * parent; + _Field_size_full_opt_(1) struct GameInputRawDeviceItemCollectionInfo const * firstSibling; + _Field_size_full_opt_(1) struct GameInputRawDeviceItemCollectionInfo const * previousSibling; + _Field_size_full_opt_(1) struct GameInputRawDeviceItemCollectionInfo const * nextSibling; + _Field_size_full_opt_(1) struct GameInputRawDeviceItemCollectionInfo const * lastSibling; + _Field_size_full_opt_(1) struct GameInputRawDeviceItemCollectionInfo const * firstChild; + _Field_size_full_opt_(1) struct GameInputRawDeviceItemCollectionInfo const * lastChild; +} GameInputRawDeviceItemCollectionInfo; + +typedef struct GameInputRawDeviceReportItemInfo +{ + uint32_t bitOffset; + uint32_t bitSize; + int64_t logicalMin; + int64_t logicalMax; + double physicalMin; + double physicalMax; + GameInputRawDevicePhysicalUnitKind physicalUnits; + uint32_t rawPhysicalUnits; + int32_t rawPhysicalUnitsExponent; + GameInputRawDeviceReportItemFlags flags; + uint32_t usageCount; + _Field_size_full_(usageCount) GameInputUsage const * usages; + _Field_size_full_(1) GameInputRawDeviceItemCollectionInfo const * collection; + _Field_size_full_opt_(1) GameInputString const * itemString; +} GameInputRawDeviceReportItemInfo; + +typedef struct GameInputRawDeviceReportInfo +{ + GameInputRawDeviceReportKind kind; + uint32_t id; + uint32_t size; + uint32_t itemCount; + _Field_size_full_opt_(itemCount) GameInputRawDeviceReportItemInfo const * items; +} GameInputRawDeviceReportInfo; + +typedef struct GameInputControllerAxisInfo +{ + GameInputKind mappedInputKinds; + GameInputLabel label; + bool isContinuous; + bool isNonlinear; + bool isQuantized; + bool hasRestValue; + float restValue; + uint64_t resolution; + uint16_t legacyDInputIndex; + uint16_t legacyHidIndex; + uint32_t rawReportIndex; + _Field_size_full_(1) GameInputRawDeviceReportInfo const * inputReport; + _Field_size_full_(1) GameInputRawDeviceReportItemInfo const * inputReportItem; +} GameInputControllerAxisInfo; + +typedef struct GameInputControllerButtonInfo +{ + GameInputKind mappedInputKinds; + GameInputLabel label; + uint16_t legacyDInputIndex; + uint16_t legacyHidIndex; + uint32_t rawReportIndex; + _Field_size_full_(1) GameInputRawDeviceReportInfo const * inputReport; + _Field_size_full_(1) GameInputRawDeviceReportItemInfo const * inputReportItem; +} GameInputControllerButtonInfo; + +typedef struct GameInputControllerSwitchInfo +{ + GameInputKind mappedInputKinds; + GameInputLabel label; + GameInputLabel positionLabels[9]; + GameInputSwitchKind kind; + uint16_t legacyDInputIndex; + uint16_t legacyHidIndex; + uint32_t rawReportIndex; + _Field_size_full_(1) GameInputRawDeviceReportInfo const * inputReport; + _Field_size_full_(1) GameInputRawDeviceReportItemInfo const * inputReportItem; +} GameInputControllerSwitchInfo; + +typedef struct GameInputKeyboardInfo +{ + GameInputKeyboardKind kind; + uint32_t layout; + uint32_t keyCount; + uint32_t functionKeyCount; + uint32_t maxSimultaneousKeys; + uint32_t platformType; + uint32_t platformSubtype; + _Field_size_full_opt_(1) GameInputString const * nativeLanguage; +} GameInputKeyboardInfo; + +typedef struct GameInputMouseInfo +{ + GameInputMouseButtons supportedButtons; + uint32_t sampleRate; + uint32_t sensorDpi; + bool hasWheelX; + bool hasWheelY; +} GameInputMouseInfo; + +typedef struct GameInputTouchSensorInfo +{ + GameInputKind mappedInputKinds; + GameInputLabel label; + GameInputLocation location; + uint32_t locationId; + uint64_t resolutionX; + uint64_t resolutionY; + GameInputTouchShape shape; + float aspectRatio; + float orientation; + float physicalWidth; + float physicalHeight; + float maxPressure; + float maxProximity; + uint32_t maxTouchPoints; +} GameInputTouchSensorInfo; + +typedef struct GameInputMotionInfo +{ + float maxAcceleration; + float maxAngularVelocity; + float maxMagneticFieldStrength; +} GameInputMotionInfo; + +typedef struct GameInputArcadeStickInfo +{ + GameInputLabel menuButtonLabel; + GameInputLabel viewButtonLabel; + GameInputLabel stickUpLabel; + GameInputLabel stickDownLabel; + GameInputLabel stickLeftLabel; + GameInputLabel stickRightLabel; + GameInputLabel actionButton1Label; + GameInputLabel actionButton2Label; + GameInputLabel actionButton3Label; + GameInputLabel actionButton4Label; + GameInputLabel actionButton5Label; + GameInputLabel actionButton6Label; + GameInputLabel specialButton1Label; + GameInputLabel specialButton2Label; +} GameInputArcadeStickInfo; + +typedef struct GameInputFlightStickInfo +{ + GameInputLabel menuButtonLabel; + GameInputLabel viewButtonLabel; + GameInputLabel firePrimaryButtonLabel; + GameInputLabel fireSecondaryButtonLabel; + GameInputSwitchKind hatSwitchKind; +} GameInputFlightStickInfo; + +typedef struct GameInputGamepadInfo +{ + GameInputLabel menuButtonLabel; + GameInputLabel viewButtonLabel; + GameInputLabel aButtonLabel; + GameInputLabel bButtonLabel; + GameInputLabel xButtonLabel; + GameInputLabel yButtonLabel; + GameInputLabel dpadUpLabel; + GameInputLabel dpadDownLabel; + GameInputLabel dpadLeftLabel; + GameInputLabel dpadRightLabel; + GameInputLabel leftShoulderButtonLabel; + GameInputLabel rightShoulderButtonLabel; + GameInputLabel leftThumbstickButtonLabel; + GameInputLabel rightThumbstickButtonLabel; +} GameInputGamepadInfo; + +typedef struct GameInputRacingWheelInfo +{ + GameInputLabel menuButtonLabel; + GameInputLabel viewButtonLabel; + GameInputLabel previousGearButtonLabel; + GameInputLabel nextGearButtonLabel; + GameInputLabel dpadUpLabel; + GameInputLabel dpadDownLabel; + GameInputLabel dpadLeftLabel; + GameInputLabel dpadRightLabel; + bool hasClutch; + bool hasHandbrake; + bool hasPatternShifter; + int32_t minPatternShifterGear; + int32_t maxPatternShifterGear; + float maxWheelAngle; +} GameInputRacingWheelInfo; + +typedef struct GameInputUiNavigationInfo +{ + GameInputLabel menuButtonLabel; + GameInputLabel viewButtonLabel; + GameInputLabel acceptButtonLabel; + GameInputLabel cancelButtonLabel; + GameInputLabel upButtonLabel; + GameInputLabel downButtonLabel; + GameInputLabel leftButtonLabel; + GameInputLabel rightButtonLabel; + GameInputLabel contextButton1Label; + GameInputLabel contextButton2Label; + GameInputLabel contextButton3Label; + GameInputLabel contextButton4Label; + GameInputLabel pageUpButtonLabel; + GameInputLabel pageDownButtonLabel; + GameInputLabel pageLeftButtonLabel; + GameInputLabel pageRightButtonLabel; + GameInputLabel scrollUpButtonLabel; + GameInputLabel scrollDownButtonLabel; + GameInputLabel scrollLeftButtonLabel; + GameInputLabel scrollRightButtonLabel; + GameInputLabel guideButtonLabel; +} GameInputUiNavigationInfo; + +typedef struct GameInputForceFeedbackMotorInfo +{ + GameInputFeedbackAxes supportedAxes; + GameInputLocation location; + uint32_t locationId; + uint32_t maxSimultaneousEffects; + bool isConstantEffectSupported; + bool isRampEffectSupported; + bool isSineWaveEffectSupported; + bool isSquareWaveEffectSupported; + bool isTriangleWaveEffectSupported; + bool isSawtoothUpWaveEffectSupported; + bool isSawtoothDownWaveEffectSupported; + bool isSpringEffectSupported; + bool isFrictionEffectSupported; + bool isDamperEffectSupported; + bool isInertiaEffectSupported; +} GameInputForceFeedbackMotorInfo; + +typedef struct GameInputHapticWaveformInfo +{ + GameInputUsage usage; + bool isDurationSupported; + bool isIntensitySupported; + bool isRepeatSupported; + bool isRepeatDelaySupported; + uint64_t defaultDuration; +} GameInputHapticWaveformInfo; + +typedef struct GameInputHapticFeedbackMotorInfo +{ + GameInputRumbleMotors mappedRumbleMotors; + GameInputLocation location; + uint32_t locationId; + uint32_t waveformCount; + _Field_size_full_(waveformCount) GameInputHapticWaveformInfo const * waveformInfo; +} GameInputHapticFeedbackMotorInfo; + +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; + _Field_size_full_opt_(inputReportCount) GameInputRawDeviceReportInfo const * inputReportInfo; + _Field_size_full_opt_(outputReportCount) GameInputRawDeviceReportInfo const * outputReportInfo; + _Field_size_full_opt_(featureReportCount) GameInputRawDeviceReportInfo const * featureReportInfo; + _Field_size_full_opt_(controllerAxisCount) GameInputControllerAxisInfo const * controllerAxisInfo; + _Field_size_full_opt_(controllerButtonCount) GameInputControllerButtonInfo const * controllerButtonInfo; + _Field_size_full_opt_(controllerSwitchCount) GameInputControllerSwitchInfo const * controllerSwitchInfo; + _Field_size_full_opt_(1) GameInputKeyboardInfo const * keyboardInfo; + _Field_size_full_opt_(1) GameInputMouseInfo const * mouseInfo; + _Field_size_full_opt_(touchSensorCount) GameInputTouchSensorInfo const * touchSensorInfo; + _Field_size_full_opt_(1) GameInputMotionInfo const * motionInfo; + _Field_size_full_opt_(1) GameInputArcadeStickInfo const * arcadeStickInfo; + _Field_size_full_opt_(1) GameInputFlightStickInfo const * flightStickInfo; + _Field_size_full_opt_(1) GameInputGamepadInfo const * gamepadInfo; + _Field_size_full_opt_(1) GameInputRacingWheelInfo const * racingWheelInfo; + _Field_size_full_opt_(1) GameInputUiNavigationInfo const * uiNavigationInfo; + _Field_size_full_opt_(forceFeedbackMotorCount) GameInputForceFeedbackMotorInfo const * forceFeedbackMotorInfo; + _Field_size_full_opt_(hapticFeedbackMotorCount) GameInputHapticFeedbackMotorInfo const * hapticFeedbackMotorInfo; + _Field_size_full_opt_(1) GameInputString const * displayName; + _Field_size_full_opt_(deviceStringCount) GameInputString const * deviceStrings; + _Field_size_bytes_full_opt_(deviceDescriptorSize) void const * deviceDescriptorData; +} GameInputDeviceInfo; + +typedef struct GameInputForceFeedbackEnvelope +{ + uint64_t attackDuration; + uint64_t sustainDuration; + uint64_t releaseDuration; + float attackGain; + float sustainGain; + float releaseGain; + uint32_t playCount; + uint64_t repeatDelay; +} GameInputForceFeedbackEnvelope; + +typedef struct GameInputForceFeedbackMagnitude +{ + float linearX; + float linearY; + float linearZ; + float angularX; + float angularY; + float angularZ; + float normal; +} GameInputForceFeedbackMagnitude; + +typedef struct GameInputForceFeedbackConditionParams +{ + GameInputForceFeedbackMagnitude magnitude; + float positiveCoefficient; + float negativeCoefficient; + float maxPositiveMagnitude; + float maxNegativeMagnitude; + float deadZone; + float bias; +} GameInputForceFeedbackConditionParams; + +typedef struct GameInputForceFeedbackConstantParams +{ + GameInputForceFeedbackEnvelope envelope; + GameInputForceFeedbackMagnitude magnitude; +} GameInputForceFeedbackConstantParams; + +typedef struct GameInputForceFeedbackPeriodicParams +{ + GameInputForceFeedbackEnvelope envelope; + GameInputForceFeedbackMagnitude magnitude; + float frequency; + float phase; + float bias; +} GameInputForceFeedbackPeriodicParams; + +typedef struct GameInputForceFeedbackRampParams +{ + GameInputForceFeedbackEnvelope envelope; + GameInputForceFeedbackMagnitude startMagnitude; + GameInputForceFeedbackMagnitude endMagnitude; +} GameInputForceFeedbackRampParams; + +typedef struct GameInputForceFeedbackParams +{ + GameInputForceFeedbackEffectKind kind; + union + { + GameInputForceFeedbackConstantParams constant; + GameInputForceFeedbackRampParams ramp; + GameInputForceFeedbackPeriodicParams sineWave; + GameInputForceFeedbackPeriodicParams squareWave; + GameInputForceFeedbackPeriodicParams triangleWave; + GameInputForceFeedbackPeriodicParams sawtoothUpWave; + GameInputForceFeedbackPeriodicParams sawtoothDownWave; + GameInputForceFeedbackConditionParams spring; + GameInputForceFeedbackConditionParams friction; + GameInputForceFeedbackConditionParams damper; + GameInputForceFeedbackConditionParams inertia; + } data; +} GameInputForceFeedbackParams; + +typedef struct GameInputHapticFeedbackParams +{ + uint32_t waveformIndex; + uint64_t duration; + float intensity; + uint32_t playCount; + uint64_t repeatDelay; +} GameInputHapticFeedbackParams; + +typedef struct GameInputRumbleParams +{ + float lowFrequency; + float highFrequency; + float leftTrigger; + float rightTrigger; +} GameInputRumbleParams; + +#undef INTERFACE +#define INTERFACE IGameInput +DECLARE_INTERFACE_IID_(INTERFACE, IUnknown, "11BE2A7E-4254-445A-9C09-FFC40F006918") +{ + _Must_inspect_result_ IFACEMETHOD(QueryInterface)(THIS_ + _In_ REFIID riid, + _COM_Outptr_ void ** ppvObj) PURE; + + IFACEMETHOD_(ULONG, AddRef)(THIS) PURE; + + IFACEMETHOD_(ULONG, Release)(THIS) PURE; + + IFACEMETHOD_(uint64_t, GetCurrentTimestamp)(THIS) PURE; + + _Must_inspect_result_ IFACEMETHOD(GetCurrentReading)(THIS_ + _In_ GameInputKind inputKind, + _In_opt_ IGameInputDevice * device, + _COM_Outptr_ IGameInputReading ** reading) PURE; + + _Must_inspect_result_ IFACEMETHOD(GetNextReading)(THIS_ + _In_ IGameInputReading * referenceReading, + _In_ GameInputKind inputKind, + _In_opt_ IGameInputDevice * device, + _COM_Outptr_ IGameInputReading ** reading) PURE; + + _Must_inspect_result_ IFACEMETHOD(GetPreviousReading)(THIS_ + _In_ IGameInputReading * referenceReading, + _In_ GameInputKind inputKind, + _In_opt_ IGameInputDevice * device, + _COM_Outptr_ IGameInputReading ** reading) PURE; + + _Must_inspect_result_ IFACEMETHOD(GetTemporalReading)(THIS_ + _In_ uint64_t timestamp, + _In_ IGameInputDevice * device, + _COM_Outptr_ IGameInputReading ** reading) PURE; + + IFACEMETHOD(RegisterReadingCallback)(THIS_ + _In_opt_ IGameInputDevice * device, + _In_ GameInputKind inputKind, + _In_ float analogThreshold, + _In_opt_ void * context, + _In_ GameInputReadingCallback callbackFunc, + _Out_opt_ _Result_zeroonfailure_ GameInputCallbackToken * callbackToken) PURE; + + IFACEMETHOD(RegisterDeviceCallback)(THIS_ + _In_opt_ IGameInputDevice * device, + _In_ GameInputKind inputKind, + _In_ GameInputDeviceStatus statusFilter, + _In_ GameInputEnumerationKind enumerationKind, + _In_opt_ void * context, + _In_ GameInputDeviceCallback callbackFunc, + _Out_opt_ _Result_zeroonfailure_ GameInputCallbackToken * callbackToken) PURE; + + IFACEMETHOD(RegisterGuideButtonCallback)(THIS_ + _In_opt_ IGameInputDevice * device, + _In_opt_ void * context, + _In_ GameInputGuideButtonCallback callbackFunc, + _Out_opt_ _Result_zeroonfailure_ GameInputCallbackToken * callbackToken) PURE; + + IFACEMETHOD(RegisterKeyboardLayoutCallback)(THIS_ + _In_opt_ IGameInputDevice * device, + _In_opt_ void * context, + _In_ GameInputKeyboardLayoutCallback callbackFunc, + _Out_opt_ _Result_zeroonfailure_ GameInputCallbackToken * callbackToken) PURE; + + IFACEMETHOD_(void, StopCallback)(THIS_ + _In_ GameInputCallbackToken callbackToken) PURE; + + IFACEMETHOD_(bool, UnregisterCallback)(THIS_ + _In_ GameInputCallbackToken callbackToken, + _In_ uint64_t timeoutInMicroseconds) PURE; + + _Must_inspect_result_ IFACEMETHOD(CreateDispatcher)(THIS_ + _COM_Outptr_ IGameInputDispatcher ** dispatcher) PURE; + + _Must_inspect_result_ IFACEMETHOD(CreateAggregateDevice)(THIS_ + _In_ GameInputKind inputKind, + _COM_Outptr_ IGameInputDevice ** device) PURE; + + _Must_inspect_result_ IFACEMETHOD(FindDeviceFromId)(THIS_ + _In_ APP_LOCAL_DEVICE_ID const * value, + _COM_Outptr_ IGameInputDevice ** device) PURE; + + _Must_inspect_result_ IFACEMETHOD(FindDeviceFromObject)(THIS_ + _In_ IUnknown * value, + _COM_Outptr_ IGameInputDevice ** device) PURE; + + _Must_inspect_result_ IFACEMETHOD(FindDeviceFromPlatformHandle)(THIS_ + _In_ HANDLE value, + _COM_Outptr_ IGameInputDevice ** device) PURE; + + _Must_inspect_result_ IFACEMETHOD(FindDeviceFromPlatformString)(THIS_ + _In_ LPCWSTR value, + _COM_Outptr_ IGameInputDevice ** device) PURE; + + IFACEMETHOD(EnableOemDeviceSupport)(THIS_ + _In_ uint16_t vendorId, + _In_ uint16_t productId, + _In_ uint8_t interfaceNumber, + _In_ uint8_t collectionNumber) PURE; + + IFACEMETHOD_(void, SetFocusPolicy)(THIS_ + _In_ GameInputFocusPolicy policy) PURE; +}; + +#undef INTERFACE +#define INTERFACE IGameInputReading +DECLARE_INTERFACE_IID_(INTERFACE, IUnknown, "2156947A-E1FA-4DE0-A30B-D812931DBD8D") +{ + _Must_inspect_result_ IFACEMETHOD(QueryInterface)(THIS_ + _In_ REFIID riid, + _COM_Outptr_ void ** ppvObj) PURE; + + IFACEMETHOD_(ULONG, AddRef)(THIS) PURE; + + IFACEMETHOD_(ULONG, Release)(THIS) PURE; + + IFACEMETHOD_(GameInputKind, GetInputKind)(THIS) PURE; + + IFACEMETHOD_(uint64_t, GetSequenceNumber)(THIS_ + _In_ GameInputKind inputKind) PURE; + + IFACEMETHOD_(uint64_t, GetTimestamp)(THIS) PURE; + + IFACEMETHOD_(void, GetDevice)(THIS_ + _Outptr_ IGameInputDevice ** device) PURE; + + IFACEMETHOD_(bool, GetRawReport)(THIS_ + _Outptr_result_maybenull_ IGameInputRawDeviceReport ** report) PURE; + + IFACEMETHOD_(uint32_t, GetControllerAxisCount)(THIS) PURE; + + IFACEMETHOD_(uint32_t, GetControllerAxisState)(THIS_ + _In_ uint32_t stateArrayCount, + _Out_writes_(stateArrayCount) float * stateArray) PURE; + + IFACEMETHOD_(uint32_t, GetControllerButtonCount)(THIS) PURE; + + IFACEMETHOD_(uint32_t, GetControllerButtonState)(THIS_ + _In_ uint32_t stateArrayCount, + _Out_writes_(stateArrayCount) bool * stateArray) PURE; + + IFACEMETHOD_(uint32_t, GetControllerSwitchCount)(THIS) PURE; + + IFACEMETHOD_(uint32_t, GetControllerSwitchState)(THIS_ + _In_ uint32_t stateArrayCount, + _Out_writes_(stateArrayCount) GameInputSwitchPosition * stateArray) PURE; + + IFACEMETHOD_(uint32_t, GetKeyCount)(THIS) PURE; + + IFACEMETHOD_(uint32_t, GetKeyState)(THIS_ + _In_ uint32_t stateArrayCount, + _Out_writes_(stateArrayCount) GameInputKeyState * stateArray) PURE; + + IFACEMETHOD_(bool, GetMouseState)(THIS_ + _Out_ GameInputMouseState * state) PURE; + + IFACEMETHOD_(uint32_t, GetTouchCount)(THIS) PURE; + + IFACEMETHOD_(uint32_t, GetTouchState)(THIS_ + _In_ uint32_t stateArrayCount, + _Out_writes_(stateArrayCount) GameInputTouchState * stateArray) PURE; + + IFACEMETHOD_(bool, GetMotionState)(THIS_ + _Out_ GameInputMotionState * state) PURE; + + IFACEMETHOD_(bool, GetArcadeStickState)(THIS_ + _Out_ GameInputArcadeStickState * state) PURE; + + IFACEMETHOD_(bool, GetFlightStickState)(THIS_ + _Out_ GameInputFlightStickState * state) PURE; + + IFACEMETHOD_(bool, GetGamepadState)(THIS_ + _Out_ GameInputGamepadState * state) PURE; + + IFACEMETHOD_(bool, GetRacingWheelState)(THIS_ + _Out_ GameInputRacingWheelState * state) PURE; + + IFACEMETHOD_(bool, GetUiNavigationState)(THIS_ + _Out_ GameInputUiNavigationState * state) PURE; +}; + +#undef INTERFACE +#define INTERFACE IGameInputDevice +DECLARE_INTERFACE_IID_(INTERFACE, IUnknown, "31DD86FB-4C1B-408A-868F-439B3CD47125") +{ + _Must_inspect_result_ IFACEMETHOD(QueryInterface)(THIS_ + _In_ REFIID riid, + _COM_Outptr_ void ** ppvObj) PURE; + + IFACEMETHOD_(ULONG, AddRef)(THIS) PURE; + + IFACEMETHOD_(ULONG, Release)(THIS) PURE; + + IFACEMETHOD_(_Ret_notnull_ GameInputDeviceInfo const *, GetDeviceInfo)(THIS) PURE; + + IFACEMETHOD_(GameInputDeviceStatus, GetDeviceStatus)(THIS) PURE; + + IFACEMETHOD_(void, GetBatteryState)(THIS_ + _Out_ GameInputBatteryState * state) PURE; + + _Must_inspect_result_ IFACEMETHOD(CreateForceFeedbackEffect)(THIS_ + _In_ uint32_t motorIndex, + _In_ GameInputForceFeedbackParams const * params, + _COM_Outptr_ IGameInputForceFeedbackEffect ** effect) PURE; + + IFACEMETHOD_(bool, IsForceFeedbackMotorPoweredOn)(THIS_ + _In_ uint32_t motorIndex) PURE; + + IFACEMETHOD_(void, SetForceFeedbackMotorGain)(THIS_ + _In_ uint32_t motorIndex, + _In_ float masterGain) PURE; + + IFACEMETHOD(SetHapticMotorState)(THIS_ + _In_ uint32_t motorIndex, + _In_opt_ GameInputHapticFeedbackParams const * params) PURE; + + IFACEMETHOD_(void, SetRumbleState)(THIS_ + _In_opt_ GameInputRumbleParams const * params) PURE; + + IFACEMETHOD_(void, SetInputSynchronizationState)(THIS_ + _In_ bool enabled) PURE; + + IFACEMETHOD_(void, SendInputSynchronizationHint)(THIS) PURE; + + IFACEMETHOD_(void, PowerOff)(THIS) PURE; + + _Must_inspect_result_ IFACEMETHOD(CreateRawDeviceReport)(THIS_ + _In_ uint32_t reportId, + _In_ GameInputRawDeviceReportKind reportKind, + _COM_Outptr_ IGameInputRawDeviceReport ** report) PURE; + + _Must_inspect_result_ IFACEMETHOD(GetRawDeviceFeature)(THIS_ + _In_ uint32_t reportId, + _COM_Outptr_ IGameInputRawDeviceReport ** report) PURE; + + IFACEMETHOD(SetRawDeviceFeature)(THIS_ + _In_ IGameInputRawDeviceReport * report) PURE; + + IFACEMETHOD(SendRawDeviceOutput)(THIS_ + _In_ IGameInputRawDeviceReport * report) PURE; + + IFACEMETHOD(SendRawDeviceOutputWithResponse)(THIS_ + _In_ IGameInputRawDeviceReport * requestReport, + _COM_Outptr_ IGameInputRawDeviceReport ** responseReport) PURE; + + IFACEMETHOD(ExecuteRawDeviceIoControl)(THIS_ + _In_ uint32_t controlCode, + _In_ size_t inputBufferSize, + _In_reads_bytes_opt_(inputBufferSize) void const * inputBuffer, + _In_ size_t outputBufferSize, + _Out_writes_bytes_all_opt_(outputBufferSize) void * outputBuffer, + _Out_opt_ _Result_zeroonfailure_ size_t * outputSize) PURE; + + IFACEMETHOD_(bool, AcquireExclusiveRawDeviceAccess)(THIS_ + _In_ uint64_t timeoutInMicroseconds) PURE; + + IFACEMETHOD_(void, ReleaseExclusiveRawDeviceAccess)(THIS) PURE; +}; + +#undef INTERFACE +#define INTERFACE IGameInputDispatcher +DECLARE_INTERFACE_IID_(INTERFACE, IUnknown, "415EED2E-98CB-42C2-8F28-B94601074E31") +{ + _Must_inspect_result_ IFACEMETHOD(QueryInterface)(THIS_ + _In_ REFIID riid, + _COM_Outptr_ void ** ppvObj) PURE; + + IFACEMETHOD_(ULONG, AddRef)(THIS) PURE; + + IFACEMETHOD_(ULONG, Release)(THIS) PURE; + + IFACEMETHOD_(bool, Dispatch)(THIS_ + _In_ uint64_t quotaInMicroseconds) PURE; + + IFACEMETHOD(OpenWaitHandle)(THIS_ + _Outptr_result_nullonfailure_ HANDLE * waitHandle) PURE; +}; + +#undef INTERFACE +#define INTERFACE IGameInputForceFeedbackEffect +DECLARE_INTERFACE_IID_(INTERFACE, IUnknown, "51BDA05E-F742-45D9-B085-9444AE48381D") +{ + _Must_inspect_result_ IFACEMETHOD(QueryInterface)(THIS_ + _In_ REFIID riid, + _COM_Outptr_ void ** ppvObj) PURE; + + IFACEMETHOD_(ULONG, AddRef)(THIS) PURE; + + IFACEMETHOD_(ULONG, Release)(THIS) PURE; + + IFACEMETHOD_(void, GetDevice)(THIS_ + _Outptr_ IGameInputDevice ** device) PURE; + + IFACEMETHOD_(uint32_t, GetMotorIndex)(THIS) PURE; + + IFACEMETHOD_(float, GetGain)(THIS) PURE; + + IFACEMETHOD_(void, SetGain)(THIS_ + _In_ float gain) PURE; + + IFACEMETHOD_(void, GetParams)(THIS_ + _Out_ GameInputForceFeedbackParams * params) PURE; + + IFACEMETHOD_(bool, SetParams)(THIS_ + _In_ GameInputForceFeedbackParams const * params) PURE; + + IFACEMETHOD_(GameInputFeedbackEffectState, GetState)(THIS) PURE; + + IFACEMETHOD_(void, SetState)(THIS_ + _In_ GameInputFeedbackEffectState state) PURE; +}; + +#undef INTERFACE +#define INTERFACE IGameInputRawDeviceReport +DECLARE_INTERFACE_IID_(INTERFACE, IUnknown, "61F08CF1-1FFC-40CA-A2B8-E1AB8BC5B6DC") +{ + _Must_inspect_result_ IFACEMETHOD(QueryInterface)(THIS_ + _In_ REFIID riid, + _COM_Outptr_ void ** ppvObj) PURE; + + IFACEMETHOD_(ULONG, AddRef)(THIS) PURE; + + IFACEMETHOD_(ULONG, Release)(THIS) PURE; + + IFACEMETHOD_(void, GetDevice)(THIS_ + _Outptr_ IGameInputDevice ** device) PURE; + + IFACEMETHOD_(_Ret_notnull_ GameInputRawDeviceReportInfo const *, GetReportInfo)(THIS) PURE; + + IFACEMETHOD_(size_t, GetRawDataSize)(THIS) PURE; + + IFACEMETHOD_(size_t, GetRawData)(THIS_ + _In_ size_t bufferSize, + _Out_writes_(bufferSize) void * buffer) PURE; + + IFACEMETHOD_(bool, SetRawData)(THIS_ + _In_ size_t bufferSize, + _In_reads_(bufferSize) void const * buffer) PURE; + + IFACEMETHOD_(bool, GetItemValue)(THIS_ + _In_ uint32_t itemIndex, + _Out_ int64_t * value) PURE; + + IFACEMETHOD_(bool, SetItemValue)(THIS_ + _In_ uint32_t itemIndex, + _In_ int64_t value) PURE; + + IFACEMETHOD_(bool, ResetItemValue)(THIS_ + _In_ uint32_t itemIndex) PURE; + + IFACEMETHOD_(bool, ResetAllItems)(THIS) PURE; +}; + +#undef INTERFACE + +_Must_inspect_result_ STDAPI GameInputCreate( + _COM_Outptr_ IGameInput ** gameInput); + +#ifdef __cplusplus +} // extern "C" +#endif + +#if (!defined(__cplusplus) || defined(CINTERFACE)) && defined(COBJMACROS) + +#define IGameInput_QueryInterface(This, riid, ppvObj) ((This)->lpVtbl->QueryInterface(This, riid, ppvObj)) +#define IGameInput_AddRef(This) ((This)->lpVtbl->AddRef(This)) +#define IGameInput_Release(This) ((This)->lpVtbl->Release(This)) +#define IGameInput_GetCurrentTimestamp(This) ((This)->lpVtbl->GetCurrentTimestamp(This)) +#define IGameInput_GetCurrentReading(This, inputKind, device, reading) ((This)->lpVtbl->GetCurrentReading(This, inputKind, device, reading)) +#define IGameInput_GetNextReading(This, referenceReading, inputKind, device, reading) ((This)->lpVtbl->GetNextReading(This, referenceReading, inputKind, device, reading)) +#define IGameInput_GetPreviousReading(This, referenceReading, inputKind, device, reading) ((This)->lpVtbl->GetPreviousReading(This, referenceReading, inputKind, device, reading)) +#define IGameInput_GetTemporalReading(This, timestamp, device, reading) ((This)->lpVtbl->GetTemporalReading(This, timestamp, device, reading)) +#define IGameInput_RegisterReadingCallback(This, device, inputKind, analogThreshold, context, callbackFunc, callbackToken) ((This)->lpVtbl->RegisterReadingCallback(This, device, inputKind, analogThreshold, context, callbackFunc, callbackToken)) +#define IGameInput_RegisterDeviceCallback(This, device, inputKind, statusFilter, enumerationKind, context, callbackFunc, callbackToken) ((This)->lpVtbl->RegisterDeviceCallback(This, device, inputKind, statusFilter, enumerationKind, context, callbackFunc, callbackToken)) +#define IGameInput_RegisterGuideButtonCallback(This, device, context, callbackFunc, callbackToken) ((This)->lpVtbl->RegisterGuideButtonCallback(This, device, context, callbackFunc, callbackToken)) +#define IGameInput_RegisterKeyboardLayoutCallback(This, device, context, callbackFunc, callbackToken) ((This)->lpVtbl->RegisterKeyboardLayoutCallback(This, device, context, callbackFunc, callbackToken)) +#define IGameInput_StopCallback(This, callbackToken) ((This)->lpVtbl->StopCallback(This, callbackToken)) +#define IGameInput_UnregisterCallback(This, callbackToken, timeoutInMicroseconds) ((This)->lpVtbl->UnregisterCallback(This, callbackToken, timeoutInMicroseconds)) +#define IGameInput_CreateDispatcher(This, dispatcher) ((This)->lpVtbl->CreateDispatcher(This, dispatcher)) +#define IGameInput_CreateAggregateDevice(This, inputKind, device) ((This)->lpVtbl->CreateAggregateDevice(This, inputKind, device)) +#define IGameInput_FindDeviceFromId(This, value, device) ((This)->lpVtbl->FindDeviceFromId(This, value, device)) +#define IGameInput_FindDeviceFromObject(This, value, device) ((This)->lpVtbl->FindDeviceFromObject(This, value, device)) +#define IGameInput_FindDeviceFromPlatformHandle(This, value, device) ((This)->lpVtbl->FindDeviceFromPlatformHandle(This, value, device)) +#define IGameInput_FindDeviceFromPlatformString(This, value, device) ((This)->lpVtbl->FindDeviceFromPlatformString(This, value, device)) +#define IGameInput_EnableOemDeviceSupport(This, vendorId, productId, interfaceNumber, collectionNumber) ((This)->lpVtbl->EnableOemDeviceSupport(This, vendorId, productId, interfaceNumber, collectionNumber)) +#define IGameInput_SetFocusPolicy(This, policy) ((This)->lpVtbl->SetFocusPolicy(This, policy)) + +#define IGameInputReading_QueryInterface(This, riid, ppvObj) ((This)->lpVtbl->QueryInterface(This, riid, ppvObj)) +#define IGameInputReading_AddRef(This) ((This)->lpVtbl->AddRef(This)) +#define IGameInputReading_Release(This) ((This)->lpVtbl->Release(This)) +#define IGameInputReading_GetInputKind(This) ((This)->lpVtbl->GetInputKind(This)) +#define IGameInputReading_GetSequenceNumber(This, inputKind) ((This)->lpVtbl->GetSequenceNumber(This, inputKind)) +#define IGameInputReading_GetTimestamp(This) ((This)->lpVtbl->GetTimestamp(This)) +#define IGameInputReading_GetDevice(This, device) ((This)->lpVtbl->GetDevice(This, device)) +#define IGameInputReading_GetRawReport(This, report) ((This)->lpVtbl->GetRawReport(This, report)) +#define IGameInputReading_GetControllerAxisCount(This) ((This)->lpVtbl->GetControllerAxisCount(This)) +#define IGameInputReading_GetControllerAxisState(This, stateArrayCount, stateArray) ((This)->lpVtbl->GetControllerAxisState(This, stateArrayCount, stateArray)) +#define IGameInputReading_GetControllerButtonCount(This) ((This)->lpVtbl->GetControllerButtonCount(This)) +#define IGameInputReading_GetControllerButtonState(This, stateArrayCount, stateArray) ((This)->lpVtbl->GetControllerButtonState(This, stateArrayCount, stateArray)) +#define IGameInputReading_GetControllerSwitchCount(This) ((This)->lpVtbl->GetControllerSwitchCount(This)) +#define IGameInputReading_GetControllerSwitchState(This, stateArrayCount, stateArray) ((This)->lpVtbl->GetControllerSwitchState(This, stateArrayCount, stateArray)) +#define IGameInputReading_GetKeyCount(This) ((This)->lpVtbl->GetKeyCount(This)) +#define IGameInputReading_GetKeyState(This, stateArrayCount, stateArray) ((This)->lpVtbl->GetKeyState(This, stateArrayCount, stateArray)) +#define IGameInputReading_GetMouseState(This, state) ((This)->lpVtbl->GetMouseState(This, state)) +#define IGameInputReading_GetTouchCount(This) ((This)->lpVtbl->GetTouchCount(This)) +#define IGameInputReading_GetTouchState(This, stateArrayCount, stateArray) ((This)->lpVtbl->GetTouchState(This, stateArrayCount, stateArray)) +#define IGameInputReading_GetMotionState(This, state) ((This)->lpVtbl->GetMotionState(This, state)) +#define IGameInputReading_GetArcadeStickState(This, state) ((This)->lpVtbl->GetArcadeStickState(This, state)) +#define IGameInputReading_GetFlightStickState(This, state) ((This)->lpVtbl->GetFlightStickState(This, state)) +#define IGameInputReading_GetGamepadState(This, state) ((This)->lpVtbl->GetGamepadState(This, state)) +#define IGameInputReading_GetRacingWheelState(This, state) ((This)->lpVtbl->GetRacingWheelState(This, state)) +#define IGameInputReading_GetUiNavigationState(This, state) ((This)->lpVtbl->GetUiNavigationState(This, state)) + +#define IGameInputDevice_QueryInterface(This, riid, ppvObj) ((This)->lpVtbl->QueryInterface(This, riid, ppvObj)) +#define IGameInputDevice_AddRef(This) ((This)->lpVtbl->AddRef(This)) +#define IGameInputDevice_Release(This) ((This)->lpVtbl->Release(This)) +#define IGameInputDevice_GetDeviceInfo(This) ((This)->lpVtbl->GetDeviceInfo(This)) +#define IGameInputDevice_GetDeviceStatus(This) ((This)->lpVtbl->GetDeviceStatus(This)) +#define IGameInputDevice_GetBatteryState(This, state) ((This)->lpVtbl->GetBatteryState(This, state)) +#define IGameInputDevice_CreateForceFeedbackEffect(This, motorIndex, params, effect) ((This)->lpVtbl->CreateForceFeedbackEffect(This, motorIndex, params, effect)) +#define IGameInputDevice_IsForceFeedbackMotorPoweredOn(This, motorIndex) ((This)->lpVtbl->IsForceFeedbackMotorPoweredOn(This, motorIndex)) +#define IGameInputDevice_SetForceFeedbackMotorGain(This, motorIndex, masterGain) ((This)->lpVtbl->SetForceFeedbackMotorGain(This, motorIndex, masterGain)) +#define IGameInputDevice_SetHapticMotorState(This, motorIndex, params) ((This)->lpVtbl->SetHapticMotorState(This, motorIndex, params)) +#define IGameInputDevice_SetRumbleState(This, params) ((This)->lpVtbl->SetRumbleState(This, params)) +#define IGameInputDevice_SetInputSynchronizationState(This, enabled) ((This)->lpVtbl->SetInputSynchronizationState(This, enabled)) +#define IGameInputDevice_SendInputSynchronizationHint(This) ((This)->lpVtbl->SendInputSynchronizationHint(This)) +#define IGameInputDevice_PowerOff(This) ((This)->lpVtbl->PowerOff(This)) +#define IGameInputDevice_CreateRawDeviceReport(This, reportId, reportKind, report) ((This)->lpVtbl->CreateRawDeviceReport(This, reportId, reportKind, report)) +#define IGameInputDevice_GetRawDeviceFeature(This, reportId, report) ((This)->lpVtbl->GetRawDeviceFeature(This, reportId, report)) +#define IGameInputDevice_SetRawDeviceFeature(This, report) ((This)->lpVtbl->SetRawDeviceFeature(This, report)) +#define IGameInputDevice_SendRawDeviceOutput(This, report) ((This)->lpVtbl->SendRawDeviceOutput(This, report)) +#define IGameInputDevice_SendRawDeviceOutputWithResponse(This, requestReport, responseReport) ((This)->lpVtbl->SendRawDeviceOutputWithResponse(This, requestReport, responseReport)) +#define IGameInputDevice_ExecuteRawDeviceIoControl(This, controlCode, inputBufferSize, inputBuffer, outputBufferSize, outputBuffer, outputSize) ((This)->lpVtbl->ExecuteRawDeviceIoControl(This, controlCode, inputBufferSize, inputBuffer, outputBufferSize, outputBuffer, outputSize)) +#define IGameInputDevice_AcquireExclusiveRawDeviceAccess(This, timeoutInMicroseconds) ((This)->lpVtbl->AcquireExclusiveRawDeviceAccess(This, timeoutInMicroseconds)) +#define IGameInputDevice_ReleaseExclusiveRawDeviceAccess(This) ((This)->lpVtbl->ReleaseExclusiveRawDeviceAccess(This)) + +#define IGameInputDispatcher_QueryInterface(This, riid, ppvObj) ((This)->lpVtbl->QueryInterface(This, riid, ppvObj) +#define IGameInputDispatcher_AddRef(This) ((This)->lpVtbl->AddRef(This) +#define IGameInputDispatcher_Release(This) ((This)->lpVtbl->Release(This) +#define IGameInputDispatcher_Dispatch(This, quotaInMicroseconds) ((This)->lpVtbl->Dispatch(This, quotaInMicroseconds) +#define IGameInputDispatcher_OpenWaitHandle(This, waitHandle) ((This)->lpVtbl->OpenWaitHandle(This, waitHandle) + +#define IGameInputForceFeedbackEffect_QueryInterface(This, riid, ppvObj) ((This)->lpVtbl->QueryInterface(This, riid, ppvObj) +#define IGameInputForceFeedbackEffect_AddRef(This) ((This)->lpVtbl->AddRef(This) +#define IGameInputForceFeedbackEffect_Release(This) ((This)->lpVtbl->Release(This) +#define IGameInputForceFeedbackEffect_GetDevice(This, device) ((This)->lpVtbl->GetDevice(This, device) +#define IGameInputForceFeedbackEffect_GetMotorIndex(This) ((This)->lpVtbl->GetMotorIndex(This) +#define IGameInputForceFeedbackEffect_GetGain(This) ((This)->lpVtbl->GetGain(This) +#define IGameInputForceFeedbackEffect_SetGain(This, gain) ((This)->lpVtbl->SetGain(This, gain) +#define IGameInputForceFeedbackEffect_GetParams(This, params) ((This)->lpVtbl->GetParams(This, params) +#define IGameInputForceFeedbackEffect_SetParams(This, params) ((This)->lpVtbl->SetParams(This, params) +#define IGameInputForceFeedbackEffect_GetState(This) ((This)->lpVtbl->GetState(This) +#define IGameInputForceFeedbackEffect_SetState(This, state) ((This)->lpVtbl->SetState(This, state) + +#define IGameInputRawDeviceReport_QueryInterface(This, riid, ppvObj) ((This)->lpVtbl->QueryInterface(This, riid, ppvObj) +#define IGameInputRawDeviceReport_AddRef(This) ((This)->lpVtbl->AddRef(This) +#define IGameInputRawDeviceReport_Release(This) ((This)->lpVtbl->Release(This) +#define IGameInputRawDeviceReport_GetDevice(This, device) ((This)->lpVtbl->GetDevice(This, device) +#define IGameInputRawDeviceReport_GetReportInfo(This) ((This)->lpVtbl->GetReportInfo(This) +#define IGameInputRawDeviceReport_GetRawDataSize(This) ((This)->lpVtbl->GetRawDataSize(This) +#define IGameInputRawDeviceReport_GetRawData(This, bufferSize, buffer) ((This)->lpVtbl->GetRawData(This, bufferSize, buffer) +#define IGameInputRawDeviceReport_SetRawData(This, bufferSize, buffer) ((This)->lpVtbl->SetRawData(This, bufferSize, buffer) +#define IGameInputRawDeviceReport_GetItemValue(This, itemIndex, value) ((This)->lpVtbl->GetItemValue(This, itemIndex, value) +#define IGameInputRawDeviceReport_SetItemValue(This, itemIndex, value) ((This)->lpVtbl->SetItemValue(This, itemIndex, value) +#define IGameInputRawDeviceReport_ResetItemValue(This, itemIndex) ((This)->lpVtbl->ResetItemValue(This, itemIndex) +#define IGameInputRawDeviceReport_ResetAllItems(This) ((This)->lpVtbl->ResetAllItems(This) + +#endif // #if (!defined(__cplusplus) || defined(CINTERFACE)) && defined(COBJMACROS) + +#endif // #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +#pragma endregion + +#define FACILITY_GAMEINPUT 906 + +// +// MessageId: GAMEINPUT_E_DEVICE_DISCONNECTED +// +// MessageText: +// +// The device is not currently connected to the system. +// +#define GAMEINPUT_E_DEVICE_DISCONNECTED _HRESULT_TYPEDEF_(0x838A0001L) + +// +// MessageId: GAMEINPUT_E_DEVICE_NOT_FOUND +// +// MessageText: +// +// The requested device could not be found. +// +#define GAMEINPUT_E_DEVICE_NOT_FOUND _HRESULT_TYPEDEF_(0x838A0002L) + +// +// MessageId: GAMEINPUT_E_READING_NOT_FOUND +// +// MessageText: +// +// The requested reading could not be found. +// +#define GAMEINPUT_E_READING_NOT_FOUND _HRESULT_TYPEDEF_(0x838A0003L) + +// +// MessageId: GAMEINPUT_E_REFERENCE_READING_TOO_OLD +// +// MessageText: +// +// The reference reading no longer exists in the reading history. +// +#define GAMEINPUT_E_REFERENCE_READING_TOO_OLD _HRESULT_TYPEDEF_(0x838A0004L) + +// +// MessageId: GAMEINPUT_E_TIMESTAMP_OUT_OF_RANGE +// +// MessageText: +// +// The target timestamp for the temporal reading is too far in the past or future. +// +#define GAMEINPUT_E_TIMESTAMP_OUT_OF_RANGE _HRESULT_TYPEDEF_(0x838A0005L) + +// +// MessageId: GAMEINPUT_E_INSUFFICIENT_FORCE_FEEDBACK_RESOURCES +// +// MessageText: +// +// The device does not have enough resources remaining to create the requested force feedback effect. +// +#define GAMEINPUT_E_INSUFFICIENT_FORCE_FEEDBACK_RESOURCES _HRESULT_TYPEDEF_(0x838A0006L) + +#endif // #ifndef __gameinput_h__ + diff --git a/project/toolkit/sdl/files.xml b/project/toolkit/sdl/files.xml index 85b0c95c3..54c48b035 100644 --- a/project/toolkit/sdl/files.xml +++ b/project/toolkit/sdl/files.xml @@ -43,12 +43,15 @@
+ + +
@@ -282,6 +285,7 @@ + @@ -488,6 +492,7 @@ +