// C++/WinRT v2.0.250303.1 // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once #ifndef WINRT_Windows_UI_Input_Preview_Injection_2_H #define WINRT_Windows_UI_Input_Preview_Injection_2_H #include "winrt/impl/Windows.Gaming.Input.2.h" #include "winrt/impl/Windows.UI.Input.Preview.Injection.1.h" WINRT_EXPORT namespace winrt::Windows::UI::Input::Preview::Injection { struct InjectedInputPoint { int32_t PositionX {}; int32_t PositionY {}; }; inline bool operator==(InjectedInputPoint const& left, InjectedInputPoint const& right) noexcept { return left.PositionX == right.PositionX && left.PositionY == right.PositionY; } inline bool operator!=(InjectedInputPoint const& left, InjectedInputPoint const& right) noexcept { return !(left == right); } struct InjectedInputPointerInfo { uint32_t PointerId {}; winrt::Windows::UI::Input::Preview::Injection::InjectedInputPointerOptions PointerOptions {}; winrt::Windows::UI::Input::Preview::Injection::InjectedInputPoint PixelLocation {}; uint32_t TimeOffsetInMilliseconds {}; uint64_t PerformanceCount {}; }; inline bool operator==(InjectedInputPointerInfo const& left, InjectedInputPointerInfo const& right) noexcept { return left.PointerId == right.PointerId && left.PointerOptions == right.PointerOptions && left.PixelLocation == right.PixelLocation && left.TimeOffsetInMilliseconds == right.TimeOffsetInMilliseconds && left.PerformanceCount == right.PerformanceCount; } inline bool operator!=(InjectedInputPointerInfo const& left, InjectedInputPointerInfo const& right) noexcept { return !(left == right); } struct InjectedInputRectangle { int32_t Left {}; int32_t Top {}; int32_t Bottom {}; int32_t Right {}; }; inline bool operator==(InjectedInputRectangle const& left, InjectedInputRectangle const& right) noexcept { return left.Left == right.Left && left.Top == right.Top && left.Bottom == right.Bottom && left.Right == right.Right; } inline bool operator!=(InjectedInputRectangle const& left, InjectedInputRectangle const& right) noexcept { return !(left == right); } struct WINRT_IMPL_EMPTY_BASES InjectedInputGamepadInfo : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputGamepadInfo { InjectedInputGamepadInfo(std::nullptr_t) noexcept {} InjectedInputGamepadInfo(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputGamepadInfo(ptr, take_ownership_from_abi) {} InjectedInputGamepadInfo(); explicit InjectedInputGamepadInfo(winrt::Windows::Gaming::Input::GamepadReading const& reading); }; struct WINRT_IMPL_EMPTY_BASES InjectedInputKeyboardInfo : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputKeyboardInfo { InjectedInputKeyboardInfo(std::nullptr_t) noexcept {} InjectedInputKeyboardInfo(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputKeyboardInfo(ptr, take_ownership_from_abi) {} InjectedInputKeyboardInfo(); }; struct WINRT_IMPL_EMPTY_BASES InjectedInputMouseInfo : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputMouseInfo { InjectedInputMouseInfo(std::nullptr_t) noexcept {} InjectedInputMouseInfo(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputMouseInfo(ptr, take_ownership_from_abi) {} InjectedInputMouseInfo(); }; struct WINRT_IMPL_EMPTY_BASES InjectedInputPenInfo : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputPenInfo { InjectedInputPenInfo(std::nullptr_t) noexcept {} InjectedInputPenInfo(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputPenInfo(ptr, take_ownership_from_abi) {} InjectedInputPenInfo(); }; struct WINRT_IMPL_EMPTY_BASES InjectedInputTouchInfo : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputTouchInfo { InjectedInputTouchInfo(std::nullptr_t) noexcept {} InjectedInputTouchInfo(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::UI::Input::Preview::Injection::IInjectedInputTouchInfo(ptr, take_ownership_from_abi) {} InjectedInputTouchInfo(); }; struct WINRT_IMPL_EMPTY_BASES InputInjector : winrt::Windows::UI::Input::Preview::Injection::IInputInjector, impl::require { InputInjector(std::nullptr_t) noexcept {} InputInjector(void* ptr, take_ownership_from_abi_t) noexcept : winrt::Windows::UI::Input::Preview::Injection::IInputInjector(ptr, take_ownership_from_abi) {} static auto TryCreate(); static auto TryCreateForAppBroadcastOnly(); }; } #endif