| /* |
| * Copyright 2022 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.gaming.input.idl"; |
| import "windows.storage.streams.idl"; |
| #endif |
| |
| namespace Windows.Gaming.Input.Custom { |
| typedef enum XusbDeviceSubtype XusbDeviceSubtype; |
| typedef enum XusbDeviceType XusbDeviceType; |
| typedef struct GameControllerVersionInfo GameControllerVersionInfo; |
| interface IGameControllerInputSink; |
| interface IGameControllerProvider; |
| interface IHidGameControllerInputSink; |
| interface IHidGameControllerProvider; |
| interface IXusbGameControllerInputSink; |
| interface IXusbGameControllerProvider; |
| interface ICustomGameControllerFactory; |
| interface IGameControllerFactoryManagerStatics; |
| interface IGameControllerFactoryManagerStatics2; |
| runtimeclass GameControllerFactoryManager; |
| runtimeclass HidGameControllerProvider; |
| runtimeclass XusbGameControllerProvider; |
| |
| [contract(Windows.Foundation.UniversalApiContract, 3.0)] |
| enum XusbDeviceSubtype |
| { |
| Unknown = 0, |
| Gamepad = 1, |
| ArcadePad = 2, |
| ArcadeStick = 3, |
| FlightStick = 4, |
| Wheel = 5, |
| Guitar = 6, |
| GuitarAlternate = 7, |
| GuitarBass = 8, |
| DrumKit = 9, |
| DancePad = 10, |
| }; |
| |
| [contract(Windows.Foundation.UniversalApiContract, 3.0)] |
| enum XusbDeviceType |
| { |
| Unknown = 0, |
| Gamepad = 1, |
| }; |
| |
| [contract(Windows.Foundation.UniversalApiContract, 3.0)] |
| struct GameControllerVersionInfo |
| { |
| UINT16 Major; |
| UINT16 Minor; |
| UINT16 Build; |
| UINT16 Revision; |
| }; |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| uuid(1ff6f922-c640-4c78-a820-9a715c558bcb) |
| ] |
| interface IGameControllerInputSink : IInspectable |
| { |
| HRESULT OnInputResumed([in] UINT64 timestamp); |
| HRESULT OnInputSuspended([in] UINT64 timestamp); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| uuid(e6d73982-2996-4559-b16c-3e57d46e58d6) |
| ] |
| interface IGameControllerProvider : IInspectable |
| { |
| [propget] HRESULT FirmwareVersionInfo([out, retval] Windows.Gaming.Input.Custom.GameControllerVersionInfo *value); |
| [propget] HRESULT HardwareProductId([out, retval] UINT16 *value); |
| [propget] HRESULT HardwareVendorId([out, retval] UINT16 *value); |
| [propget] HRESULT HardwareVersionInfo([out, retval] Windows.Gaming.Input.Custom.GameControllerVersionInfo *value); |
| [propget] HRESULT IsConnected([out, retval] boolean *value); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 4.0), |
| uuid(f754c322-182d-40e4-a126-fcee4ffa1e31) |
| ] |
| interface IHidGameControllerInputSink : IInspectable |
| requires Windows.Gaming.Input.Custom.IGameControllerInputSink |
| { |
| HRESULT OnInputReportReceived([in] UINT64 timestamp, [in] BYTE id, [in] UINT32 report_len, |
| [in, size_is(report_len)] BYTE *report_buf); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 4.0), |
| exclusiveto(Windows.Gaming.Input.Custom.HidGameControllerProvider), |
| uuid(95ce3af4-abf0-4b68-a081-3b7de73ff0e7) |
| ] |
| interface IHidGameControllerProvider : IInspectable |
| requires Windows.Gaming.Input.Custom.IGameControllerProvider |
| { |
| [propget] HRESULT UsageId([out, retval] UINT16 *value); |
| [propget] HRESULT UsagePage([out, retval] UINT16 *value); |
| HRESULT GetFeatureReport([in] BYTE id, [in] UINT32 report_len, |
| [out, size_is(report_len)] BYTE *report_buf); |
| HRESULT SendFeatureReport([in] BYTE id, [in] UINT32 report_len, |
| [in, size_is(report_len)] BYTE *report_buf); |
| HRESULT SendOutputReport([in] BYTE id, [in] UINT32 report_len, |
| [in, size_is(report_len)] BYTE *report_buf); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| uuid(b2ac1d95-6ecb-42b3-8aab-025401ca4712) |
| ] |
| interface IXusbGameControllerInputSink : IInspectable |
| requires Windows.Gaming.Input.Custom.IGameControllerInputSink |
| { |
| HRESULT OnInputReceived([in] UINT64 timestamp, [in] BYTE id, [in] UINT32 report_len, |
| [in, size_is(report_len)] BYTE *report_buf); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| exclusiveto(Windows.Gaming.Input.Custom.XusbGameControllerProvider), |
| uuid(6e2971eb-0efb-48b4-808b-837643b2f216) |
| ] |
| interface IXusbGameControllerProvider : IInspectable |
| requires Windows.Gaming.Input.Custom.IGameControllerProvider |
| { |
| HRESULT SetVibration([in] DOUBLE rumble_intensity, [in] DOUBLE buzz_intensity); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| uuid(69a0ae5e-758e-4cbe-ace6-62155fe9126f) |
| ] |
| interface ICustomGameControllerFactory : IInspectable |
| { |
| HRESULT CreateGameController([in] Windows.Gaming.Input.Custom.IGameControllerProvider *provider, |
| [out, retval] IInspectable **value); |
| HRESULT OnGameControllerAdded([in] Windows.Gaming.Input.IGameController *value); |
| HRESULT OnGameControllerRemoved([in] Windows.Gaming.Input.IGameController *value); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| exclusiveto(Windows.Gaming.Input.Custom.GameControllerFactoryManager), |
| uuid(36cb66e3-d0a1-4986-a24c-40b137deba9e) |
| ] |
| interface IGameControllerFactoryManagerStatics : IInspectable |
| { |
| HRESULT RegisterCustomFactoryForGipInterface([in] Windows.Gaming.Input.Custom.ICustomGameControllerFactory *factory, |
| [in] GUID interfaceId); |
| HRESULT RegisterCustomFactoryForHardwareId([in] Windows.Gaming.Input.Custom.ICustomGameControllerFactory *factory, |
| [in] UINT16 vendor_id, [in] UINT16 product_id); |
| HRESULT RegisterCustomFactoryForXusbType([in] Windows.Gaming.Input.Custom.ICustomGameControllerFactory *factory, |
| [in] Windows.Gaming.Input.Custom.XusbDeviceType type, |
| [in] Windows.Gaming.Input.Custom.XusbDeviceSubtype subtype); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 4.0), |
| exclusiveto(Windows.Gaming.Input.Custom.GameControllerFactoryManager), |
| uuid(eace5644-19df-4115-b32a-2793e2aea3bb) |
| ] |
| interface IGameControllerFactoryManagerStatics2 : IInspectable |
| requires Windows.Gaming.Input.Custom.IGameControllerFactoryManagerStatics |
| { |
| HRESULT TryGetFactoryControllerFromGameController([in] Windows.Gaming.Input.Custom.ICustomGameControllerFactory *factory, |
| [in] Windows.Gaming.Input.IGameController *controller, |
| [out, retval] Windows.Gaming.Input.IGameController **value); |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| marshaling_behavior(agile), |
| static(Windows.Gaming.Input.Custom.IGameControllerFactoryManagerStatics, Windows.Foundation.UniversalApiContract, 3.0), |
| static(Windows.Gaming.Input.Custom.IGameControllerFactoryManagerStatics2, Windows.Foundation.UniversalApiContract, 4.0), |
| threading(both) |
| ] |
| runtimeclass GameControllerFactoryManager |
| { |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 4.0), |
| marshaling_behavior(agile), |
| threading(both) |
| ] |
| runtimeclass HidGameControllerProvider |
| { |
| [default] interface Windows.Gaming.Input.Custom.IHidGameControllerProvider; |
| interface Windows.Gaming.Input.Custom.IGameControllerProvider; |
| } |
| |
| [ |
| contract(Windows.Foundation.UniversalApiContract, 3.0), |
| marshaling_behavior(agile), |
| threading(both) |
| ] |
| runtimeclass XusbGameControllerProvider |
| { |
| [default] interface Windows.Gaming.Input.Custom.IXusbGameControllerProvider; |
| interface Windows.Gaming.Input.Custom.IGameControllerProvider; |
| } |
| } |