Sweden-Number/include/windows.gaming.input.idl

384 lines
16 KiB
Plaintext

/*
* 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 GamepadButtons GamepadButtons;
typedef enum GameControllerButtonLabel GameControllerButtonLabel;
typedef enum GameControllerSwitchKind GameControllerSwitchKind;
typedef enum GameControllerSwitchPosition GameControllerSwitchPosition;
typedef struct GamepadReading GamepadReading;
typedef struct GamepadVibration GamepadVibration;
interface IGameController;
interface IGameControllerBatteryInfo;
interface IGamepad;
interface IGamepad2;
interface IGamepadStatics;
interface IGamepadStatics2;
interface IRawGameController;
interface IRawGameController2;
runtimeclass Gamepad;
runtimeclass Headset;
runtimeclass RawGameController;
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.IVector<Gamepad *>;
interface Windows.Foundation.Collections.IVectorView<Windows.Gaming.Input.RawGameController *>;
interface Windows.Foundation.Collections.IVector<Windows.Gaming.Input.RawGameController *>;
}
[
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, 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, 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, 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, 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, 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;
}
}