// C++/WinRT v2.0.250303.1 // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once #ifndef WINRT_Windows_Devices_Haptics_0_H #define WINRT_Windows_Devices_Haptics_0_H WINRT_EXPORT namespace winrt::Windows::Foundation { } WINRT_EXPORT namespace winrt::Windows::Devices::Haptics { enum class HapticDeviceType : int32_t { None = 0, Generic = 1, Pen = 2, Touchpad = 3, Mouse = 4, }; enum class VibrationAccessStatus : int32_t { Allowed = 0, DeniedByUser = 1, DeniedBySystem = 2, DeniedByEnergySaver = 3, }; struct IInputHapticsManager; struct IInputHapticsManagerStatics; struct IKnownSimpleHapticsControllerWaveformsStatics; struct IKnownSimpleHapticsControllerWaveformsStatics2; struct ISimpleHapticsController; struct ISimpleHapticsControllerFeedback; struct IVibrationDevice; struct IVibrationDeviceStatics; struct InputHapticsManager; struct KnownSimpleHapticsControllerWaveforms; struct SimpleHapticsController; struct SimpleHapticsControllerFeedback; struct VibrationDevice; struct HapticsControllerOverrideToken; } namespace winrt::impl { template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = enum_category; }; template <> struct category{ using type = enum_category; }; template <> struct category{ using type = struct_category; }; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.InputHapticsManager"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.KnownSimpleHapticsControllerWaveforms"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.SimpleHapticsController"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.SimpleHapticsControllerFeedback"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.VibrationDevice"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.HapticDeviceType"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.VibrationAccessStatus"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.HapticsControllerOverrideToken"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.IInputHapticsManager"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.IInputHapticsManagerStatics"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.IKnownSimpleHapticsControllerWaveformsStatics"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.IKnownSimpleHapticsControllerWaveformsStatics2"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.ISimpleHapticsController"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.ISimpleHapticsControllerFeedback"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.IVibrationDevice"; template <> inline constexpr auto& name_v = L"Windows.Devices.Haptics.IVibrationDeviceStatics"; template <> inline constexpr guid guid_v{ 0x040E91DF,0xBB3A,0x507C,{ 0x9E,0x25,0xA2,0xD2,0xC6,0x85,0xB2,0xE5 } }; // 040E91DF-BB3A-507C-9E25-A2D2C685B2E5 template <> inline constexpr guid guid_v{ 0x7BB40F77,0xE187,0x5322,{ 0x84,0x4E,0xAA,0x58,0x22,0x3C,0x28,0x1A } }; // 7BB40F77-E187-5322-844E-AA58223C281A template <> inline constexpr guid guid_v{ 0x3D577EF7,0x4CEE,0x11E6,{ 0xB5,0x35,0x00,0x1B,0xDC,0x06,0xAB,0x3B } }; // 3D577EF7-4CEE-11E6-B535-001BDC06AB3B template <> inline constexpr guid guid_v{ 0xA7D24C27,0xB79D,0x510A,{ 0xBF,0x79,0xFF,0x6D,0x49,0x17,0x3E,0x1D } }; // A7D24C27-B79D-510A-BF79-FF6D49173E1D template <> inline constexpr guid guid_v{ 0x3D577EF9,0x4CEE,0x11E6,{ 0xB5,0x35,0x00,0x1B,0xDC,0x06,0xAB,0x3B } }; // 3D577EF9-4CEE-11E6-B535-001BDC06AB3B template <> inline constexpr guid guid_v{ 0x3D577EF8,0x4CEE,0x11E6,{ 0xB5,0x35,0x00,0x1B,0xDC,0x06,0xAB,0x3B } }; // 3D577EF8-4CEE-11E6-B535-001BDC06AB3B template <> inline constexpr guid guid_v{ 0x40F21A3E,0x8844,0x47FF,{ 0xB3,0x12,0x06,0x18,0x5A,0x38,0x44,0xDA } }; // 40F21A3E-8844-47FF-B312-06185A3844DA template <> inline constexpr guid guid_v{ 0x53E2EDED,0x2290,0x4AC9,{ 0x8E,0xB3,0x1A,0x84,0x12,0x2E,0xB7,0x1C } }; // 53E2EDED-2290-4AC9-8EB3-1A84122EB71C template <> struct default_interface{ using type = winrt::Windows::Devices::Haptics::IInputHapticsManager; }; template <> struct default_interface{ using type = winrt::Windows::Devices::Haptics::ISimpleHapticsController; }; template <> struct default_interface{ using type = winrt::Windows::Devices::Haptics::ISimpleHapticsControllerFeedback; }; template <> struct default_interface{ using type = winrt::Windows::Devices::Haptics::IVibrationDevice; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_ThreadId(uint32_t*) noexcept = 0; virtual int32_t __stdcall get_CurrentHapticsControllerDeviceType(int32_t*) noexcept = 0; virtual int32_t __stdcall get_CurrentHapticsController(void**) noexcept = 0; virtual int32_t __stdcall TrySendHapticWaveform(uint16_t, uint16_t, bool*) noexcept = 0; virtual int32_t __stdcall TrySendHapticWaveformWithIntensity(uint16_t, uint16_t, double, bool*) noexcept = 0; virtual int32_t __stdcall TrySendHapticWaveformForDuration(uint16_t, uint16_t, double, int64_t, bool*) noexcept = 0; virtual int32_t __stdcall TrySendHapticWaveformForPlayCount(uint16_t, uint16_t, double, int32_t, int64_t, bool*) noexcept = 0; virtual int32_t __stdcall TryStopFeedback(bool*) noexcept = 0; virtual int32_t __stdcall SetOverrideHapticsController(int32_t, void*, struct struct_Windows_Devices_Haptics_HapticsControllerOverrideToken*) noexcept = 0; virtual int32_t __stdcall ClearOverrideHapticsController(struct struct_Windows_Devices_Haptics_HapticsControllerOverrideToken) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall IsSupported(bool*) noexcept = 0; virtual int32_t __stdcall IsHapticDevicePresent(bool*) noexcept = 0; virtual int32_t __stdcall GetForCurrentThread(void**) noexcept = 0; virtual int32_t __stdcall TryGetForThread(uint32_t, void**) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_Click(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_BuzzContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_RumbleContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_Press(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_Release(uint16_t*) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_BrushContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_ChiselMarkerContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_EraserContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_Error(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_GalaxyPenContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_Hover(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_InkContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_MarkerContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_PencilContinuous(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_Success(uint16_t*) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_Id(void**) noexcept = 0; virtual int32_t __stdcall get_SupportedFeedback(void**) noexcept = 0; virtual int32_t __stdcall get_IsIntensitySupported(bool*) noexcept = 0; virtual int32_t __stdcall get_IsPlayCountSupported(bool*) noexcept = 0; virtual int32_t __stdcall get_IsPlayDurationSupported(bool*) noexcept = 0; virtual int32_t __stdcall get_IsReplayPauseIntervalSupported(bool*) noexcept = 0; virtual int32_t __stdcall StopFeedback() noexcept = 0; virtual int32_t __stdcall SendHapticFeedback(void*) noexcept = 0; virtual int32_t __stdcall SendHapticFeedbackWithIntensity(void*, double) noexcept = 0; virtual int32_t __stdcall SendHapticFeedbackForDuration(void*, double, int64_t) noexcept = 0; virtual int32_t __stdcall SendHapticFeedbackForPlayCount(void*, double, int32_t, int64_t) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_Waveform(uint16_t*) noexcept = 0; virtual int32_t __stdcall get_Duration(int64_t*) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_Id(void**) noexcept = 0; virtual int32_t __stdcall get_SimpleHapticsController(void**) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall RequestAccessAsync(void**) noexcept = 0; virtual int32_t __stdcall GetDeviceSelector(void**) noexcept = 0; virtual int32_t __stdcall FromIdAsync(void*, void**) noexcept = 0; virtual int32_t __stdcall GetDefaultAsync(void**) noexcept = 0; virtual int32_t __stdcall FindAllAsync(void**) noexcept = 0; }; }; template struct consume_Windows_Devices_Haptics_IInputHapticsManager { [[nodiscard]] auto ThreadId() const; [[nodiscard]] auto CurrentHapticsControllerDeviceType() const; [[nodiscard]] auto CurrentHapticsController() const; auto TrySendHapticWaveform(uint16_t waveform, uint16_t waveformFallback) const; auto TrySendHapticWaveform(uint16_t waveform, uint16_t waveformFallback, double intensity) const; auto TrySendHapticWaveformForDuration(uint16_t waveform, uint16_t waveformFallback, double intensity, winrt::Windows::Foundation::TimeSpan const& playDuration) const; auto TrySendHapticWaveformForPlayCount(uint16_t waveform, uint16_t waveformFallback, double intensity, int32_t playCount, winrt::Windows::Foundation::TimeSpan const& replayPauseInterval) const; auto TryStopFeedback() const; auto SetOverrideHapticsController(winrt::Windows::Devices::Haptics::HapticDeviceType const& deviceType, winrt::Windows::Devices::Haptics::SimpleHapticsController const& controller) const; auto ClearOverrideHapticsController(winrt::Windows::Devices::Haptics::HapticsControllerOverrideToken const& token) const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_IInputHapticsManager; }; template struct consume_Windows_Devices_Haptics_IInputHapticsManagerStatics { auto IsSupported() const; auto IsHapticDevicePresent() const; auto GetForCurrentThread() const; auto TryGetForThread(uint32_t ThreadId) const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_IInputHapticsManagerStatics; }; template struct consume_Windows_Devices_Haptics_IKnownSimpleHapticsControllerWaveformsStatics { [[nodiscard]] auto Click() const; [[nodiscard]] auto BuzzContinuous() const; [[nodiscard]] auto RumbleContinuous() const; [[nodiscard]] auto Press() const; [[nodiscard]] auto Release() const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_IKnownSimpleHapticsControllerWaveformsStatics; }; template struct consume_Windows_Devices_Haptics_IKnownSimpleHapticsControllerWaveformsStatics2 { [[nodiscard]] auto BrushContinuous() const; [[nodiscard]] auto ChiselMarkerContinuous() const; [[nodiscard]] auto EraserContinuous() const; [[nodiscard]] auto Error() const; [[nodiscard]] auto GalaxyPenContinuous() const; [[nodiscard]] auto Hover() const; [[nodiscard]] auto InkContinuous() const; [[nodiscard]] auto MarkerContinuous() const; [[nodiscard]] auto PencilContinuous() const; [[nodiscard]] auto Success() const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_IKnownSimpleHapticsControllerWaveformsStatics2; }; template struct consume_Windows_Devices_Haptics_ISimpleHapticsController { [[nodiscard]] auto Id() const; [[nodiscard]] auto SupportedFeedback() const; [[nodiscard]] auto IsIntensitySupported() const; [[nodiscard]] auto IsPlayCountSupported() const; [[nodiscard]] auto IsPlayDurationSupported() const; [[nodiscard]] auto IsReplayPauseIntervalSupported() const; auto StopFeedback() const; auto SendHapticFeedback(winrt::Windows::Devices::Haptics::SimpleHapticsControllerFeedback const& feedback) const; auto SendHapticFeedback(winrt::Windows::Devices::Haptics::SimpleHapticsControllerFeedback const& feedback, double intensity) const; auto SendHapticFeedbackForDuration(winrt::Windows::Devices::Haptics::SimpleHapticsControllerFeedback const& feedback, double intensity, winrt::Windows::Foundation::TimeSpan const& playDuration) const; auto SendHapticFeedbackForPlayCount(winrt::Windows::Devices::Haptics::SimpleHapticsControllerFeedback const& feedback, double intensity, int32_t playCount, winrt::Windows::Foundation::TimeSpan const& replayPauseInterval) const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_ISimpleHapticsController; }; template struct consume_Windows_Devices_Haptics_ISimpleHapticsControllerFeedback { [[nodiscard]] auto Waveform() const; [[nodiscard]] auto Duration() const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_ISimpleHapticsControllerFeedback; }; template struct consume_Windows_Devices_Haptics_IVibrationDevice { [[nodiscard]] auto Id() const; [[nodiscard]] auto SimpleHapticsController() const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_IVibrationDevice; }; template struct consume_Windows_Devices_Haptics_IVibrationDeviceStatics { auto RequestAccessAsync() const; auto GetDeviceSelector() const; auto FromIdAsync(param::hstring const& deviceId) const; auto GetDefaultAsync() const; auto FindAllAsync() const; }; template <> struct consume { template using type = consume_Windows_Devices_Haptics_IVibrationDeviceStatics; }; struct struct_Windows_Devices_Haptics_HapticsControllerOverrideToken { int64_t Value; }; template <> struct abi { using type = struct_Windows_Devices_Haptics_HapticsControllerOverrideToken; }; } #endif