include: Add RawGameController runtimeclass to windows.gaming.input.idl.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Rémi Bernon 2021-03-19 11:06:29 +01:00 committed by Alexandre Julliard
parent ef5b724fac
commit 3a7d95135f
1 changed files with 206 additions and 1 deletions

View File

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