2 * Copyright 2022 RĂ©mi Bernon for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #pragma winrt ns_prefix
24 import
"inspectable.idl";
25 import
"asyncinfo.idl";
26 import
"eventtoken.idl";
27 import
"windowscontracts.idl";
28 import
"windows.foundation.idl";
29 import
"windows.gaming.input.idl";
30 import
"windows.storage.streams.idl";
33 namespace Windows.Gaming.Input.
Custom {
34 typedef enum XusbDeviceSubtype XusbDeviceSubtype
;
35 typedef enum XusbDeviceType XusbDeviceType
;
36 typedef struct GameControllerVersionInfo GameControllerVersionInfo
;
37 interface IGameControllerInputSink
;
38 interface IGameControllerProvider
;
39 interface IHidGameControllerInputSink
;
40 interface IHidGameControllerProvider
;
41 interface IXusbGameControllerInputSink
;
42 interface IXusbGameControllerProvider
;
43 interface ICustomGameControllerFactory
;
44 interface IGameControllerFactoryManagerStatics
;
45 interface IGameControllerFactoryManagerStatics2
;
46 runtimeclass GameControllerFactoryManager
;
47 runtimeclass HidGameControllerProvider
;
48 runtimeclass XusbGameControllerProvider
;
50 [contract
(Windows.Foundation.UniversalApiContract
, 3.0)]
51 enum XusbDeviceSubtype
66 [contract
(Windows.Foundation.UniversalApiContract
, 3.0)]
73 [contract
(Windows.Foundation.UniversalApiContract
, 3.0)]
74 struct GameControllerVersionInfo
83 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
84 uuid(1ff6f922
-c640
-4c78
-a820
-9a715c558bcb
)
86 interface IGameControllerInputSink
: IInspectable
88 HRESULT OnInputResumed
([in] UINT64 timestamp
);
89 HRESULT OnInputSuspended
([in] UINT64 timestamp
);
93 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
94 uuid(e6d73982
-2996-4559-b16c
-3e57d46e58d6
)
96 interface IGameControllerProvider
: IInspectable
98 [propget] HRESULT FirmwareVersionInfo
([out, retval] Windows.Gaming.Input.
Custom.GameControllerVersionInfo
*value
);
99 [propget] HRESULT HardwareProductId
([out, retval] UINT16
*value
);
100 [propget] HRESULT HardwareVendorId
([out, retval] UINT16
*value
);
101 [propget] HRESULT HardwareVersionInfo
([out, retval] Windows.Gaming.Input.
Custom.GameControllerVersionInfo
*value
);
102 [propget] HRESULT IsConnected
([out, retval] boolean *value
);
106 contract
(Windows.Foundation.UniversalApiContract
, 4.0),
107 uuid(f754c322
-182d
-40e4
-a126
-fcee4ffa1e31
)
109 interface IHidGameControllerInputSink
: IInspectable
110 requires Windows.Gaming.Input.
Custom.IGameControllerInputSink
112 HRESULT OnInputReportReceived
([in] UINT64 timestamp
, [in] BYTE id, [in] UINT32 report_len
,
113 [in, size_is(report_len
)] BYTE *report_buf
);
117 contract
(Windows.Foundation.UniversalApiContract
, 4.0),
118 exclusiveto
(Windows.Gaming.Input.
Custom.HidGameControllerProvider
),
119 uuid(95ce3af4
-abf0
-4b68
-a081
-3b7de73ff0e7
)
121 interface IHidGameControllerProvider
: IInspectable
122 requires Windows.Gaming.Input.
Custom.IGameControllerProvider
124 [propget] HRESULT UsageId
([out, retval] UINT16
*value
);
125 [propget] HRESULT UsagePage
([out, retval] UINT16
*value
);
126 HRESULT GetFeatureReport
([in] BYTE id, [in] UINT32 report_len
,
127 [out, size_is(report_len
)] BYTE *report_buf
);
128 HRESULT SendFeatureReport
([in] BYTE id, [in] UINT32 report_len
,
129 [in, size_is(report_len
)] BYTE *report_buf
);
130 HRESULT SendOutputReport
([in] BYTE id, [in] UINT32 report_len
,
131 [in, size_is(report_len
)] BYTE *report_buf
);
135 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
136 uuid(b2ac1d95
-6ecb
-42b3
-8aab
-025401ca4712
)
138 interface IXusbGameControllerInputSink
: IInspectable
139 requires Windows.Gaming.Input.
Custom.IGameControllerInputSink
141 HRESULT OnInputReceived
([in] UINT64 timestamp
, [in] BYTE id, [in] UINT32 report_len
,
142 [in, size_is(report_len
)] BYTE *report_buf
);
146 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
147 exclusiveto
(Windows.Gaming.Input.
Custom.XusbGameControllerProvider
),
148 uuid(6e2971eb
-0efb
-48b4
-808b
-837643b2f216
)
150 interface IXusbGameControllerProvider
: IInspectable
151 requires Windows.Gaming.Input.
Custom.IGameControllerProvider
153 HRESULT SetVibration
([in] DOUBLE rumble_intensity
, [in] DOUBLE buzz_intensity
);
157 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
158 uuid(69a0ae5e
-758e
-4cbe
-ace6
-62155fe9126f
)
160 interface ICustomGameControllerFactory
: IInspectable
162 HRESULT CreateGameController
([in] Windows.Gaming.Input.
Custom.IGameControllerProvider
*provider
,
163 [out, retval] IInspectable
**value
);
164 HRESULT OnGameControllerAdded
([in] Windows.Gaming.Input.IGameController
*value
);
165 HRESULT OnGameControllerRemoved
([in] Windows.Gaming.Input.IGameController
*value
);
169 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
170 exclusiveto
(Windows.Gaming.Input.
Custom.GameControllerFactoryManager
),
171 uuid(36cb66e3
-d0a1
-4986-a24c
-40b137deba9e
)
173 interface IGameControllerFactoryManagerStatics
: IInspectable
175 HRESULT RegisterCustomFactoryForGipInterface
([in] Windows.Gaming.Input.
Custom.ICustomGameControllerFactory
*factory
,
176 [in] GUID interfaceId
);
177 HRESULT RegisterCustomFactoryForHardwareId
([in] Windows.Gaming.Input.
Custom.ICustomGameControllerFactory
*factory
,
178 [in] UINT16 vendor_id
, [in] UINT16 product_id
);
179 HRESULT RegisterCustomFactoryForXusbType
([in] Windows.Gaming.Input.
Custom.ICustomGameControllerFactory
*factory
,
180 [in] Windows.Gaming.Input.
Custom.XusbDeviceType type
,
181 [in] Windows.Gaming.Input.
Custom.XusbDeviceSubtype subtype
);
185 contract
(Windows.Foundation.UniversalApiContract
, 4.0),
186 exclusiveto
(Windows.Gaming.Input.
Custom.GameControllerFactoryManager
),
187 uuid(eace5644
-19df
-4115-b32a
-2793e2aea3bb
)
189 interface IGameControllerFactoryManagerStatics2
: IInspectable
190 requires Windows.Gaming.Input.
Custom.IGameControllerFactoryManagerStatics
192 HRESULT TryGetFactoryControllerFromGameController
([in] Windows.Gaming.Input.
Custom.ICustomGameControllerFactory
*factory
,
193 [in] Windows.Gaming.Input.IGameController
*controller
,
194 [out, retval] Windows.Gaming.Input.IGameController
**value
);
198 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
199 marshaling_behavior
(agile
),
200 static
(Windows.Gaming.Input.
Custom.IGameControllerFactoryManagerStatics
, Windows.Foundation.UniversalApiContract
, 3.0),
201 static
(Windows.Gaming.Input.
Custom.IGameControllerFactoryManagerStatics2
, Windows.Foundation.UniversalApiContract
, 4.0),
204 runtimeclass GameControllerFactoryManager
209 contract
(Windows.Foundation.UniversalApiContract
, 4.0),
210 marshaling_behavior
(agile
),
213 runtimeclass HidGameControllerProvider
215 [default] interface Windows.Gaming.Input.
Custom.IHidGameControllerProvider
;
216 interface Windows.Gaming.Input.
Custom.IGameControllerProvider
;
220 contract
(Windows.Foundation.UniversalApiContract
, 3.0),
221 marshaling_behavior
(agile
),
224 runtimeclass XusbGameControllerProvider
226 [default] interface Windows.Gaming.Input.
Custom.IXusbGameControllerProvider
;
227 interface Windows.Gaming.Input.
Custom.IGameControllerProvider
;