[PATCH 5/5] include: Add RawGameController runtimeclass to windows.gaming.input.idl.

Rémi Bernon rbernon at codeweavers.com
Fri Mar 19 05:06:29 CDT 2021


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 include/windows.gaming.input.idl | 207 ++++++++++++++++++++++++++++++-
 1 file changed, 206 insertions(+), 1 deletion(-)

diff --git a/include/windows.gaming.input.idl b/include/windows.gaming.input.idl
index 1da22408eeb..0f9dd37acd8 100644
--- a/include/windows.gaming.input.idl
+++ b/include/windows.gaming.input.idl
@@ -20,14 +20,21 @@
 #pragma winrt ns_prefix
 #endif
 
-import "eventtoken.idl";
 import "inspectable.idl";
+import "asyncinfo.idl";
+import "eventtoken.idl";
+import "windowscontracts.idl";
 import "windows.foundation.idl";
+import "windows.gaming.input.forcefeedback.idl";
+import "windows.system.idl";
 
 namespace Windows {
     namespace Gaming {
         namespace Input {
             typedef enum GamepadButtons GamepadButtons;
+            typedef enum GameControllerButtonLabel GameControllerButtonLabel;
+            typedef enum GameControllerSwitchKind GameControllerSwitchKind;
+            typedef enum GameControllerSwitchPosition GameControllerSwitchPosition;
             typedef struct GamepadReading GamepadReading;
             typedef struct GamepadVibration GamepadVibration;
             interface IGameController;
@@ -36,7 +43,11 @@ namespace Windows {
             interface IGamepad2;
             interface IGamepadStatics;
             interface IGamepadStatics2;
+            interface IRawGameController;
+            interface IRawGameController2;
             runtimeclass Gamepad;
+            runtimeclass Headset;
+            runtimeclass RawGameController;
         }
     }
 }
@@ -46,7 +57,11 @@ namespace Windows {
         namespace Input {
             declare {
                 interface Windows.Foundation.EventHandler<Windows.Gaming.Input.Gamepad*>;
+                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.IVectorView<Gamepad*>;
+                interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.RawGameController*>;
             }
         }
     }
@@ -86,6 +101,102 @@ namespace Windows {
                 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, 1.0)]
             struct GamepadReading
             {
@@ -108,6 +219,26 @@ namespace Windows {
                 DOUBLE RightTrigger;
             };
 
+            [
+                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),
@@ -121,6 +252,28 @@ namespace Windows {
                 HRESULT GetCurrentReading([out, retval] Windows.Gaming.Input.GamepadReading* 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);
+            }
+
             [
                 object,
                 uuid(8bbce529-d49c-39e9-9560-e47dde96b7c8)
@@ -134,6 +287,33 @@ namespace Windows {
                 [propget] HRESULT Gamepads([out, retval] Windows.Foundation.Collections.IVectorView<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, 1.0),
                 marshaling_behavior(agile),
@@ -148,6 +328,31 @@ namespace Windows {
                 [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, 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;
+            }
         }
     }
 }
-- 
2.30.2




More information about the wine-devel mailing list