|  | /* | 
|  | * Copyright 2021 Rémi Bernon for CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | #ifdef __WIDL__ | 
|  | #pragma winrt ns_prefix | 
|  | #endif | 
|  |  | 
|  | #ifndef DO_NO_IMPORTS | 
|  | import "inspectable.idl"; | 
|  | import "asyncinfo.idl"; | 
|  | import "eventtoken.idl"; | 
|  | import "windowscontracts.idl"; | 
|  | import "windows.foundation.idl"; | 
|  | import "windows.devices.haptics.idl"; | 
|  | import "windows.gaming.input.forcefeedback.idl"; | 
|  | import "windows.system.idl"; | 
|  | import "windows.devices.power.idl"; | 
|  | #endif | 
|  |  | 
|  | namespace Windows.Gaming.Input { | 
|  | typedef enum ArcadeStickButtons ArcadeStickButtons; | 
|  | typedef enum FlightStickButtons FlightStickButtons; | 
|  | typedef enum GamepadButtons GamepadButtons; | 
|  | typedef enum GameControllerButtonLabel GameControllerButtonLabel; | 
|  | typedef enum GameControllerSwitchKind GameControllerSwitchKind; | 
|  | typedef enum GameControllerSwitchPosition GameControllerSwitchPosition; | 
|  | typedef enum RacingWheelButtons RacingWheelButtons; | 
|  | typedef struct ArcadeStickReading ArcadeStickReading; | 
|  | typedef struct FlightStickReading FlightStickReading; | 
|  | typedef struct GamepadReading GamepadReading; | 
|  | typedef struct GamepadVibration GamepadVibration; | 
|  | typedef struct RacingWheelReading RacingWheelReading; | 
|  | interface IArcadeStick; | 
|  | interface IArcadeStickStatics; | 
|  | interface IArcadeStickStatics2; | 
|  | interface IFlightStick; | 
|  | interface IFlightStickStatics; | 
|  | interface IGameController; | 
|  | interface IGameControllerBatteryInfo; | 
|  | interface IGamepad; | 
|  | interface IGamepad2; | 
|  | interface IGamepadStatics; | 
|  | interface IGamepadStatics2; | 
|  | interface IRacingWheel; | 
|  | interface IRacingWheelStatics; | 
|  | interface IRacingWheelStatics2; | 
|  | interface IRawGameController; | 
|  | interface IRawGameController2; | 
|  | runtimeclass ArcadeStick; | 
|  | runtimeclass FlightStick; | 
|  | runtimeclass Gamepad; | 
|  | runtimeclass Headset; | 
|  | runtimeclass RacingWheel; | 
|  | runtimeclass RawGameController; | 
|  |  | 
|  | declare { | 
|  | interface Windows.Foundation.EventHandler<Windows.Gaming.Input.ArcadeStick *>; | 
|  | interface Windows.Foundation.EventHandler<Windows.Gaming.Input.FlightStick *>; | 
|  | interface Windows.Foundation.EventHandler<Windows.Gaming.Input.Gamepad *>; | 
|  | interface Windows.Foundation.EventHandler<Windows.Gaming.Input.RacingWheel *>; | 
|  | interface Windows.Foundation.EventHandler<Windows.Gaming.Input.RawGameController *>; | 
|  | interface Windows.Foundation.TypedEventHandler<Windows.Gaming.Input.IGameController *, Windows.Gaming.Input.Headset *>; | 
|  | interface Windows.Foundation.TypedEventHandler<Windows.Gaming.Input.IGameController *, Windows.System.UserChangedEventArgs *>; | 
|  | interface Windows.Foundation.Collections.IIterator<Windows.Gaming.Input.ArcadeStick *>; | 
|  | interface Windows.Foundation.Collections.IIterable<Windows.Gaming.Input.ArcadeStick *>; | 
|  | interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.ArcadeStick *>; | 
|  | interface Windows.Foundation.Collections.IIterator<Windows.Gaming.Input.FlightStick *>; | 
|  | interface Windows.Foundation.Collections.IIterable<Windows.Gaming.Input.FlightStick *>; | 
|  | interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.FlightStick *>; | 
|  | interface Windows.Foundation.Collections.IIterator<Windows.Gaming.Input.Gamepad *>; | 
|  | interface Windows.Foundation.Collections.IIterable<Windows.Gaming.Input.Gamepad *>; | 
|  | interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.Gamepad *>; | 
|  | interface Windows.Foundation.Collections.IVector<Windows.Gaming.Input.Gamepad *>; | 
|  | interface Windows.Foundation.Collections.IIterator<Windows.Gaming.Input.RacingWheel *>; | 
|  | interface Windows.Foundation.Collections.IIterable<Windows.Gaming.Input.RacingWheel *>; | 
|  | interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.RacingWheel *>; | 
|  | interface Windows.Foundation.Collections.IVector<Windows.Gaming.Input.RacingWheel *>; | 
|  | interface Windows.Foundation.Collections.IIterator<Windows.Gaming.Input.RawGameController *>; | 
|  | interface Windows.Foundation.Collections.IIterable<Windows.Gaming.Input.RawGameController *>; | 
|  | interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.RawGameController *>; | 
|  | interface Windows.Foundation.Collections.IVector<Windows.Gaming.Input.RawGameController *>; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | flags | 
|  | ] | 
|  | enum ArcadeStickButtons | 
|  | { | 
|  | None = 0x0, | 
|  | StickUp = 0x1, | 
|  | StickDown = 0x2, | 
|  | StickLeft = 0x4, | 
|  | StickRight = 0x8, | 
|  | Action1 = 0x10, | 
|  | Action2 = 0x20, | 
|  | Action3 = 0x40, | 
|  | Action4 = 0x80, | 
|  | Action5 = 0x100, | 
|  | Action6 = 0x200, | 
|  | Special1 = 0x400, | 
|  | Special2 = 0x800 | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | flags | 
|  | ] | 
|  | enum FlightStickButtons | 
|  | { | 
|  | None = 0x0, | 
|  | FirePrimary = 0x1, | 
|  | FireSecondary = 0x2, | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | flags | 
|  | ] | 
|  | enum GamepadButtons | 
|  | { | 
|  | None = 0x0, | 
|  | Menu = 0x1, | 
|  | View = 0x2, | 
|  | A = 0x4, | 
|  | B = 0x8, | 
|  | X = 0x10, | 
|  | Y = 0x20, | 
|  | DPadUp = 0x40, | 
|  | DPadDown = 0x80, | 
|  | DPadLeft = 0x100, | 
|  | DPadRight = 0x200, | 
|  | LeftShoulder = 0x400, | 
|  | RightShoulder = 0x800, | 
|  | LeftThumbstick = 0x1000, | 
|  | RightThumbstick = 0x2000, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] | 
|  | Paddle1 = 0x4000, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] | 
|  | Paddle2 = 0x8000, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] | 
|  | Paddle3 = 0x10000, | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] | 
|  | Paddle4 = 0x20000 | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] | 
|  | enum GameControllerButtonLabel | 
|  | { | 
|  | None                 = 0, | 
|  | XboxBack             = 1, | 
|  | XboxStart            = 2, | 
|  | XboxMenu             = 3, | 
|  | XboxView             = 4, | 
|  | XboxUp               = 5, | 
|  | XboxDown             = 6, | 
|  | XboxLeft             = 7, | 
|  | XboxRight            = 8, | 
|  | XboxA                = 9, | 
|  | XboxB                = 10, | 
|  | XboxX                = 11, | 
|  | XboxY                = 12, | 
|  | XboxLeftBumper       = 13, | 
|  | XboxLeftTrigger      = 14, | 
|  | XboxLeftStickButton  = 15, | 
|  | XboxRightBumper      = 16, | 
|  | XboxRightTrigger     = 17, | 
|  | XboxRightStickButton = 18, | 
|  | XboxPaddle1          = 19, | 
|  | XboxPaddle2          = 20, | 
|  | XboxPaddle3          = 21, | 
|  | XboxPaddle4          = 22, | 
|  | Mode                 = 23, | 
|  | Select               = 24, | 
|  | Menu                 = 25, | 
|  | View                 = 26, | 
|  | Back                 = 27, | 
|  | Start                = 28, | 
|  | Options              = 29, | 
|  | Share                = 30, | 
|  | Up                   = 31, | 
|  | Down                 = 32, | 
|  | Left                 = 33, | 
|  | Right                = 34, | 
|  | LetterA              = 35, | 
|  | LetterB              = 36, | 
|  | LetterC              = 37, | 
|  | LetterL              = 38, | 
|  | LetterR              = 39, | 
|  | LetterX              = 40, | 
|  | LetterY              = 41, | 
|  | LetterZ              = 42, | 
|  | Cross                = 43, | 
|  | Circle               = 44, | 
|  | Square               = 45, | 
|  | Triangle             = 46, | 
|  | LeftBumper           = 47, | 
|  | LeftTrigger          = 48, | 
|  | LeftStickButton      = 49, | 
|  | Left1                = 50, | 
|  | Left2                = 51, | 
|  | Left3                = 52, | 
|  | RightBumper          = 53, | 
|  | RightTrigger         = 54, | 
|  | RightStickButton     = 55, | 
|  | Right1               = 56, | 
|  | Right2               = 57, | 
|  | Right3               = 58, | 
|  | Paddle1              = 59, | 
|  | Paddle2              = 60, | 
|  | Paddle3              = 61, | 
|  | Paddle4              = 62, | 
|  | Plus                 = 63, | 
|  | Minus                = 64, | 
|  | DownLeftArrow        = 65, | 
|  | DialLeft             = 66, | 
|  | DialRight            = 67, | 
|  | Suspension           = 68 | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 4.0)] | 
|  | enum GameControllerSwitchKind | 
|  | { | 
|  | TwoWay   = 0, | 
|  | FourWay  = 1, | 
|  | EightWay = 2 | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 4.0)] | 
|  | enum GameControllerSwitchPosition | 
|  | { | 
|  | Center    = 0, | 
|  | Up        = 1, | 
|  | UpRight   = 2, | 
|  | Right     = 3, | 
|  | DownRight = 4, | 
|  | Down      = 5, | 
|  | DownLeft  = 6, | 
|  | Left      = 7, | 
|  | UpLeft    = 8 | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | flags | 
|  | ] | 
|  | enum RacingWheelButtons | 
|  | { | 
|  | None         = 0x0, | 
|  | PreviousGear = 0x1, | 
|  | NextGear     = 0x2, | 
|  | DPadUp       = 0x4, | 
|  | DPadDown     = 0x8, | 
|  | DPadLeft     = 0x10, | 
|  | DPadRight    = 0x20, | 
|  | Button1      = 0x40, | 
|  | Button2      = 0x80, | 
|  | Button3      = 0x100, | 
|  | Button4      = 0x200, | 
|  | Button5      = 0x400, | 
|  | Button6      = 0x800, | 
|  | Button7      = 0x1000, | 
|  | Button8      = 0x2000, | 
|  | Button9      = 0x4000, | 
|  | Button10     = 0x8000, | 
|  | Button11     = 0x10000, | 
|  | Button12     = 0x20000, | 
|  | Button13     = 0x40000, | 
|  | Button14     = 0x80000, | 
|  | Button15     = 0x100000, | 
|  | Button16     = 0x200000, | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] | 
|  | struct ArcadeStickReading | 
|  | { | 
|  | UINT64 Timestamp; | 
|  | Windows.Gaming.Input.ArcadeStickButtons Buttons; | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 4.0)] | 
|  | struct FlightStickReading | 
|  | { | 
|  | UINT64 Timestamp; | 
|  | Windows.Gaming.Input.FlightStickButtons Buttons; | 
|  | Windows.Gaming.Input.GameControllerSwitchPosition HatSwitch; | 
|  | DOUBLE Roll; | 
|  | DOUBLE Pitch; | 
|  | DOUBLE Yaw; | 
|  | DOUBLE Throttle; | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | struct GamepadReading | 
|  | { | 
|  | UINT64 Timestamp; | 
|  | Windows.Gaming.Input.GamepadButtons Buttons; | 
|  | DOUBLE LeftTrigger; | 
|  | DOUBLE RightTrigger; | 
|  | DOUBLE LeftThumbstickX; | 
|  | DOUBLE LeftThumbstickY; | 
|  | DOUBLE RightThumbstickX; | 
|  | DOUBLE RightThumbstickY; | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
|  | struct GamepadVibration | 
|  | { | 
|  | DOUBLE LeftMotor; | 
|  | DOUBLE RightMotor; | 
|  | DOUBLE LeftTrigger; | 
|  | DOUBLE RightTrigger; | 
|  | }; | 
|  |  | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] | 
|  | struct RacingWheelReading | 
|  | { | 
|  | UINT64 Timestamp; | 
|  | Windows.Gaming.Input.RacingWheelButtons Buttons; | 
|  | INT32 PatternShifterGear; | 
|  | DOUBLE Wheel; | 
|  | DOUBLE Throttle; | 
|  | DOUBLE Brake; | 
|  | DOUBLE Clutch; | 
|  | DOUBLE Handbrake; | 
|  | }; | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | exclusiveto(Windows.Gaming.Input.ArcadeStick), | 
|  | uuid(b14a539d-befb-4c81-8051-15ecf3b13036) | 
|  | ] | 
|  | interface IArcadeStick : IInspectable | 
|  | requires Windows.Gaming.Input.IGameController | 
|  | { | 
|  | HRESULT GetButtonLabel([in] Windows.Gaming.Input.ArcadeStickButtons button, | 
|  | [out, retval] Windows.Gaming.Input.GameControllerButtonLabel *value); | 
|  | HRESULT GetCurrentReading([out, retval] Windows.Gaming.Input.ArcadeStickReading *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | exclusiveto(Windows.Gaming.Input.ArcadeStick), | 
|  | uuid(5c37b8c8-37b1-4ad8-9458-200f1a30018e) | 
|  | ] | 
|  | interface IArcadeStickStatics : IInspectable | 
|  | { | 
|  | [eventadd] HRESULT ArcadeStickAdded([in] Windows.Foundation.EventHandler<Windows.Gaming.Input.ArcadeStick *> *value, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT ArcadeStickAdded([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT ArcadeStickRemoved([in] Windows.Foundation.EventHandler<Windows.Gaming.Input.ArcadeStick *> *value, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT ArcadeStickRemoved([in] EventRegistrationToken token); | 
|  | [propget] HRESULT ArcadeSticks([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.ArcadeStick *> **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | exclusiveto(Windows.Gaming.Input.ArcadeStick), | 
|  | uuid(52b5d744-bb86-445a-b59c-596f0e2a49df) | 
|  | ] | 
|  | interface IArcadeStickStatics2 : IInspectable | 
|  | requires Windows.Gaming.Input.IArcadeStickStatics | 
|  | { | 
|  | HRESULT FromGameController([in] Windows.Gaming.Input.IGameController *controller, | 
|  | [out, retval] Windows.Gaming.Input.ArcadeStick **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | exclusiveto(Windows.Gaming.Input.FlightStick), | 
|  | uuid(b4a2c01c-b83b-4459-a1a9-97b03c33da7c) | 
|  | ] | 
|  | interface IFlightStick : IInspectable | 
|  | requires Windows.Gaming.Input.IGameController | 
|  | { | 
|  | [propget] HRESULT HatSwitchKind([out, retval] Windows.Gaming.Input.GameControllerSwitchKind *value); | 
|  | HRESULT GetButtonLabel([in] Windows.Gaming.Input.FlightStickButtons button, | 
|  | [out, retval] Windows.Gaming.Input.GameControllerButtonLabel *value); | 
|  | HRESULT GetCurrentReading([out, retval] Windows.Gaming.Input.FlightStickReading *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | exclusiveto(Windows.Gaming.Input.FlightStick), | 
|  | uuid(5514924a-fecc-435e-83dc-5cec8a18a520) | 
|  | ] | 
|  | interface IFlightStickStatics : IInspectable | 
|  | { | 
|  | [eventadd] HRESULT FlightStickAdded([in] Windows.Foundation.EventHandler<Windows.Gaming.Input.FlightStick *> *value, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT FlightStickAdded([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT FlightStickRemoved([in] Windows.Foundation.EventHandler<Windows.Gaming.Input.FlightStick *> *value, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT FlightStickRemoved([in] EventRegistrationToken token); | 
|  | [propget] HRESULT FlightSticks([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.FlightStick *> **value); | 
|  | HRESULT FromGameController([in] Windows.Gaming.Input.IGameController *controller, | 
|  | [out, retval] Windows.Gaming.Input.FlightStick **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | uuid(1baf6522-5f64-42c5-8267-b9fe2215bfbd) | 
|  | ] | 
|  | interface IGameController : IInspectable | 
|  | { | 
|  | [eventadd] HRESULT HeadsetConnected([in] Windows.Foundation.TypedEventHandler<Windows.Gaming.Input.IGameController *, Windows.Gaming.Input.Headset *> *handler, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT HeadsetConnected([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT HeadsetDisconnected([in] Windows.Foundation.TypedEventHandler<Windows.Gaming.Input.IGameController *, Windows.Gaming.Input.Headset *> *handler, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT HeadsetDisconnected([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT UserChanged([in] Windows.Foundation.TypedEventHandler<Windows.Gaming.Input.IGameController *, Windows.System.UserChangedEventArgs *> *handler, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT UserChanged([in] EventRegistrationToken token); | 
|  | [propget] HRESULT Headset([out, retval] Windows.Gaming.Input.Headset **value); | 
|  | [propget] HRESULT IsWireless([out, retval] boolean *value); | 
|  | [propget] HRESULT User([out, retval] Windows.System.User **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | exclusiveto(Windows.Gaming.Input.Gamepad), | 
|  | uuid(bc7bb43c-0a69-3903-9e9d-a50f86a45de5) | 
|  | ] | 
|  | interface IGamepad : IInspectable | 
|  | requires Windows.Gaming.Input.IGameController | 
|  | { | 
|  | [propget] HRESULT Vibration([out, retval] Windows.Gaming.Input.GamepadVibration *value); | 
|  | [propput] HRESULT Vibration([in] Windows.Gaming.Input.GamepadVibration value); | 
|  | HRESULT GetCurrentReading([out, retval] Windows.Gaming.Input.GamepadReading *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | exclusiveto(Windows.Gaming.Input.Gamepad), | 
|  | uuid(3c1689bd-5915-4245-b0c0-c89fae0308ff) | 
|  | ] | 
|  | interface IGamepad2 : IInspectable | 
|  | requires Windows.Gaming.Input.IGamepad, | 
|  | Windows.Gaming.Input.IGameController | 
|  | { | 
|  | HRESULT GetButtonLabel([in] Windows.Gaming.Input.GamepadButtons button, | 
|  | [out, retval] Windows.Gaming.Input.GameControllerButtonLabel *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | exclusiveto(Windows.Gaming.Input.RacingWheel), | 
|  | uuid(f546656f-e106-4c82-a90f-554012904b85) | 
|  | ] | 
|  | interface IRacingWheel : IInspectable | 
|  | requires Windows.Gaming.Input.IGameController | 
|  | { | 
|  | [propget] HRESULT HasClutch([out, retval] boolean *value); | 
|  | [propget] HRESULT HasHandbrake([out, retval] boolean *value); | 
|  | [propget] HRESULT HasPatternShifter([out, retval] boolean *value); | 
|  | [propget] HRESULT MaxPatternShifterGear([out, retval] INT32 *value); | 
|  | [propget] HRESULT MaxWheelAngle([out, retval] DOUBLE *value); | 
|  | [propget] HRESULT WheelMotor([out, retval] Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor **value); | 
|  | HRESULT GetButtonLabel([in] Windows.Gaming.Input.RacingWheelButtons button, [out, retval] Windows.Gaming.Input.GameControllerButtonLabel *value); | 
|  | HRESULT GetCurrentReading([out, retval] Windows.Gaming.Input.RacingWheelReading *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | exclusiveto(Windows.Gaming.Input.RacingWheel), | 
|  | uuid(3ac12cd5-581b-4936-9f94-69f1e6514c7d) | 
|  | ] | 
|  | interface IRacingWheelStatics : IInspectable | 
|  | { | 
|  | [eventadd] HRESULT RacingWheelAdded([in] Windows.Foundation.EventHandler<RacingWheel *> *value, [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT RacingWheelAdded([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT RacingWheelRemoved([in] Windows.Foundation.EventHandler<RacingWheel *> *value, [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT RacingWheelRemoved([in] EventRegistrationToken token); | 
|  | [propget] HRESULT RacingWheels([out, retval] Windows.Foundation.Collections.IVectorView<RacingWheel *> **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | exclusiveto(Windows.Gaming.Input.RacingWheel), | 
|  | uuid(e666bcaa-edfd-4323-a9f6-3c384048d1ed) | 
|  | ] | 
|  | interface IRacingWheelStatics2 : IInspectable | 
|  | requires Windows.Gaming.Input.IRacingWheelStatics | 
|  | { | 
|  | HRESULT FromGameController([in] Windows.Gaming.Input.IGameController *controller, | 
|  | [out, retval] Windows.Gaming.Input.RacingWheel **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | exclusiveto(Windows.Gaming.Input.RawGameController), | 
|  | uuid(7cad6d91-a7e1-4f71-9a78-33e9c5dfea62) | 
|  | ] | 
|  | interface IRawGameController : IInspectable | 
|  | requires Windows.Gaming.Input.IGameController | 
|  | { | 
|  | [propget] HRESULT AxisCount([out, retval] INT32 *value); | 
|  | [propget] HRESULT ButtonCount([out, retval] INT32 *value); | 
|  | [propget] HRESULT ForceFeedbackMotors([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor *> **value); | 
|  | [propget] HRESULT HardwareProductId([out, retval] UINT16 *value); | 
|  | [propget] HRESULT HardwareVendorId([out, retval] UINT16 *value); | 
|  | [propget] HRESULT SwitchCount([out, retval] INT32 *value); | 
|  | HRESULT GetButtonLabel([in] INT32 index, [out, retval] Windows.Gaming.Input.GameControllerButtonLabel *value); | 
|  | HRESULT GetCurrentReading([in] UINT32 buttons_size, [out, size_is(buttons_size)] boolean *buttons, | 
|  | [in] UINT32 switches_size, [out, size_is(switches_size)] Windows.Gaming.Input.GameControllerSwitchPosition *switches, | 
|  | [in] UINT32 axes_size, [out, size_is(axes_size)] DOUBLE *axes, | 
|  | [out, retval] UINT64 *timestamp); | 
|  | HRESULT GetSwitchKind([in] INT32 index, [out, retval] Windows.Gaming.Input.GameControllerSwitchKind *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 5.0), | 
|  | exclusiveto(Windows.Gaming.Input.RawGameController), | 
|  | uuid(43c0c035-bb73-4756-a787-3ed6bea617bd) | 
|  | ] | 
|  | interface IRawGameController2 : IInspectable | 
|  | requires Windows.Gaming.Input.IRawGameController, | 
|  | Windows.Gaming.Input.IGameController | 
|  | { | 
|  | [propget] HRESULT SimpleHapticsControllers([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Haptics.SimpleHapticsController *> **value); | 
|  | [propget] HRESULT NonRoamableId([out, retval] HSTRING *value); | 
|  | [propget] HRESULT DisplayName([out, retval] HSTRING *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(8bbce529-d49c-39e9-9560-e47dde96b7c8) | 
|  | ] | 
|  | interface IGamepadStatics : IInspectable | 
|  | { | 
|  | [eventadd] HRESULT GamepadAdded([in] Windows.Foundation.EventHandler<Gamepad *> *value, [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT GamepadAdded([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT GamepadRemoved([in] Windows.Foundation.EventHandler<Gamepad *> *value, [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT GamepadRemoved([in] EventRegistrationToken token); | 
|  | [propget] HRESULT Gamepads([out, retval] Windows.Foundation.Collections.IVectorView<Gamepad *> **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | exclusiveto(Windows.Gaming.Input.Gamepad), | 
|  | uuid(42676dc5-0856-47c4-9213-b395504c3a3c) | 
|  | ] | 
|  | interface IGamepadStatics2 : IInspectable | 
|  | requires Windows.Gaming.Input.IGamepadStatics | 
|  | { | 
|  | HRESULT FromGameController([in] Windows.Gaming.Input.IGameController *controller, | 
|  | [out, retval] Windows.Gaming.Input.Gamepad **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | exclusiveto(Windows.Gaming.Input.Headset), | 
|  | uuid(3fd156ef-6925-3fa8-9181-029c5223ae3b) | 
|  | ] | 
|  | interface IHeadset : IInspectable | 
|  | { | 
|  | [propget] HRESULT CaptureDeviceId([out, retval] HSTRING *value); | 
|  | [propget] HRESULT RenderDeviceId([out, retval] HSTRING *value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(eb8d0792-e95a-4b19-afc7-0a59f8bf759e) | 
|  | ] | 
|  | interface IRawGameControllerStatics : IInspectable | 
|  | { | 
|  | [eventadd] HRESULT RawGameControllerAdded([in] Windows.Foundation.EventHandler<Windows.Gaming.Input.RawGameController *> *handler, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT RawGameControllerAdded([in] EventRegistrationToken token); | 
|  | [eventadd] HRESULT RawGameControllerRemoved([in] Windows.Foundation.EventHandler<Windows.Gaming.Input.RawGameController *> *handler, | 
|  | [out, retval] EventRegistrationToken *token); | 
|  | [eventremove] HRESULT RawGameControllerRemoved([in] EventRegistrationToken token); | 
|  | [propget] HRESULT RawGameControllers([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.RawGameController *> **value); | 
|  | HRESULT FromGameController([in] Windows.Gaming.Input.IGameController *game_controller, [out, retval] Windows.Gaming.Input.RawGameController **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | uuid(dcecc681-3963-4da6-955d-553f3b6f6161) | 
|  | ] | 
|  | interface IGameControllerBatteryInfo : IInspectable | 
|  | { | 
|  | HRESULT TryGetBatteryReport([out, retval] Windows.Devices.Power.BatteryReport **value); | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.Gaming.Input.IArcadeStickStatics, Windows.Foundation.UniversalApiContract, 3.0), | 
|  | static(Windows.Gaming.Input.IArcadeStickStatics2, Windows.Foundation.UniversalApiContract, 4.0), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass ArcadeStick | 
|  | { | 
|  | [default] interface Windows.Gaming.Input.IArcadeStick; | 
|  | interface Windows.Gaming.Input.IGameController; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Gaming.Input.IGameControllerBatteryInfo; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.Gaming.Input.IFlightStickStatics, Windows.Foundation.UniversalApiContract, 4.0), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass FlightStick | 
|  | { | 
|  | [default] interface Windows.Gaming.Input.IFlightStick; | 
|  | interface Windows.Gaming.Input.IGameController; | 
|  | interface Windows.Gaming.Input.IGameControllerBatteryInfo; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.Gaming.Input.IGamepadStatics, Windows.Foundation.UniversalApiContract, 1.0), | 
|  | static(Windows.Gaming.Input.IGamepadStatics2, Windows.Foundation.UniversalApiContract, 4.0), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass Gamepad | 
|  | { | 
|  | [default] interface Windows.Gaming.Input.IGamepad; | 
|  | interface Windows.Gaming.Input.IGameController; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Gaming.Input.IGamepad2; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Gaming.Input.IGameControllerBatteryInfo; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 1.0), | 
|  | marshaling_behavior(agile), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass Headset | 
|  | { | 
|  | [default] interface Windows.Gaming.Input.IHeadset; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Gaming.Input.IGameControllerBatteryInfo; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 3.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.Gaming.Input.IRacingWheelStatics, Windows.Foundation.UniversalApiContract, 3.0), | 
|  | static(Windows.Gaming.Input.IRacingWheelStatics2, Windows.Foundation.UniversalApiContract, 4.0), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass RacingWheel | 
|  | { | 
|  | [default] interface Windows.Gaming.Input.IRacingWheel; | 
|  | interface Windows.Gaming.Input.IGameController; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Gaming.Input.IGameControllerBatteryInfo; | 
|  | } | 
|  |  | 
|  | [ | 
|  | contract(Windows.Foundation.UniversalApiContract, 4.0), | 
|  | marshaling_behavior(agile), | 
|  | static(Windows.Gaming.Input.IRawGameControllerStatics, Windows.Foundation.UniversalApiContract, 4.0), | 
|  | threading(both) | 
|  | ] | 
|  | runtimeclass RawGameController | 
|  | { | 
|  | [default] interface Windows.Gaming.Input.IRawGameController; | 
|  | interface Windows.Gaming.Input.IGameController; | 
|  | interface Windows.Gaming.Input.IGameControllerBatteryInfo; | 
|  | [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Gaming.Input.IRawGameController2; | 
|  | } | 
|  | } |