//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Haptics.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Haptics
        {
            runtimeclass SimpleHapticsController;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct Rect Rect;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Input
        {
            typedef enum PointerDeviceType PointerDeviceType;

            typedef struct MouseDelta MouseDelta;

            typedef struct PointerDeviceUsage PointerDeviceUsage;

            interface IKeyboardCapabilities;

            interface IMouseCapabilities;

            interface IMouseDevice;

            interface IMouseDeviceStatics;

            interface IMouseEventArgs;

            interface IPenButtonListener;

            interface IPenButtonListenerStatics;

            interface IPenDevice;

            interface IPenDevice2;

            interface IPenDeviceStatics;

            interface IPenDockListener;

            interface IPenDockListenerStatics;

            interface IPenDockedEventArgs;

            interface IPenTailButtonClickedEventArgs;

            interface IPenTailButtonDoubleClickedEventArgs;

            interface IPenTailButtonLongPressedEventArgs;

            interface IPenUndockedEventArgs;

            interface IPointerDevice;

            interface IPointerDevice2;

            interface IPointerDeviceStatics;

            interface ITouchCapabilities;

            runtimeclass KeyboardCapabilities;

            runtimeclass MouseCapabilities;

            runtimeclass MouseDevice;

            runtimeclass MouseEventArgs;

            runtimeclass PenButtonListener;

            runtimeclass PenDevice;

            runtimeclass PenDockListener;

            runtimeclass PenDockedEventArgs;

            runtimeclass PenTailButtonClickedEventArgs;

            runtimeclass PenTailButtonDoubleClickedEventArgs;

            runtimeclass PenTailButtonLongPressedEventArgs;

            runtimeclass PenUndockedEventArgs;

            runtimeclass PointerDevice;

            runtimeclass TouchCapabilities;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Input
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Input.PointerDevice*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Devices.Input.PointerDeviceUsage>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Input.PointerDevice*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Devices.Input.PointerDeviceUsage>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Input.PointerDevice*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Input.PointerDeviceUsage>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.MouseDevice*, Windows.Devices.Input.MouseEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, Windows.Devices.Input.PenTailButtonClickedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, Windows.Devices.Input.PenTailButtonDoubleClickedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, Windows.Devices.Input.PenTailButtonLongPressedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenDockListener*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenDockListener*, Windows.Devices.Input.PenDockedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenDockListener*, Windows.Devices.Input.PenUndockedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Input
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PointerDeviceType
            {
                Touch    = 0,
                Pen      = 1,
                Mouse    = 2,
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                Touchpad = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct MouseDelta
            {
                INT32 X;
                INT32 Y;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct PointerDeviceUsage
            {
                UINT32 UsagePage;
                UINT32 Usage;
                INT32 MinLogical;
                INT32 MaxLogical;
                INT32 MinPhysical;
                INT32 MaxPhysical;
                UINT32 Unit;
                FLOAT PhysicalMultiplier;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.KeyboardCapabilities)]
            [uuid(3A3F9B56-6798-4BBC-833E-0F34B17C65FF)]
            interface IKeyboardCapabilities : IInspectable
            {
                [propget] HRESULT KeyboardPresent([out] [retval] INT32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.MouseCapabilities)]
            [uuid(BCA5E023-7DD9-4B6B-9A92-55D43CB38F73)]
            interface IMouseCapabilities : IInspectable
            {
                [propget] HRESULT MousePresent([out] [retval] INT32* value);
                [propget] HRESULT VerticalWheelPresent([out] [retval] INT32* value);
                [propget] HRESULT HorizontalWheelPresent([out] [retval] INT32* value);
                [propget] HRESULT SwapButtons([out] [retval] INT32* value);
                [propget] HRESULT NumberOfButtons([out] [retval] UINT32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.MouseDevice)]
            [uuid(88EDF458-F2C8-49F4-BE1F-C256B388BC11)]
            interface IMouseDevice : IInspectable
            {
                [eventadd] HRESULT MouseMoved([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.MouseDevice*, Windows.Devices.Input.MouseEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT MouseMoved([in] EventRegistrationToken cookie);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.MouseDevice)]
            [uuid(484A9045-6D70-49DB-8E68-46FFBD17D38D)]
            interface IMouseDeviceStatics : IInspectable
            {
                HRESULT GetForCurrentView([out] [retval] Windows.Devices.Input.MouseDevice** mouseDevice);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.MouseEventArgs)]
            [uuid(F625AA5D-2354-4CC7-9230-96941C969FDE)]
            interface IMouseEventArgs : IInspectable
            {
                [propget] HRESULT MouseDelta([out] [retval] Windows.Devices.Input.MouseDelta* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenButtonListener)]
            [uuid(8245C376-1EE3-53F7-B1F7-8334A16F2815)]
            interface IPenButtonListener : IInspectable
            {
                HRESULT IsSupported([out] [retval] boolean* result);
                [eventadd] HRESULT IsSupportedChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT IsSupportedChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT TailButtonClicked([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, Windows.Devices.Input.PenTailButtonClickedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT TailButtonClicked([in] EventRegistrationToken token);
                [eventadd] HRESULT TailButtonDoubleClicked([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, Windows.Devices.Input.PenTailButtonDoubleClickedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT TailButtonDoubleClicked([in] EventRegistrationToken token);
                [eventadd] HRESULT TailButtonLongPressed([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenButtonListener*, Windows.Devices.Input.PenTailButtonLongPressedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT TailButtonLongPressed([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenButtonListener)]
            [uuid(19A8A584-862F-5F69-BFEA-05F6584F133F)]
            interface IPenButtonListenerStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Devices.Input.PenButtonListener** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Devices.Input.PenDevice)]
            [uuid(31856EBA-A738-5A8C-B8F6-F97EF68D18EF)]
            interface IPenDevice : IInspectable
            {
                [propget] HRESULT PenId([out] [retval] GUID* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 14.0)]
            [exclusiveto(Windows.Devices.Input.PenDevice)]
            [uuid(0207D327-7FB8-5566-8C34-F8342037B7F9)]
            interface IPenDevice2 : IInspectable
            {
                [propget] HRESULT SimpleHapticsController([out] [retval] Windows.Devices.Haptics.SimpleHapticsController** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [exclusiveto(Windows.Devices.Input.PenDevice)]
            [uuid(9DFBBE01-0966-5180-BCB4-B85060E39479)]
            interface IPenDeviceStatics : IInspectable
            {
                HRESULT GetFromPointerId([in] UINT32 pointerId, [out] [retval] Windows.Devices.Input.PenDevice** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenDockListener)]
            [uuid(759F4D90-1DC0-55CB-AD18-B9101456F592)]
            interface IPenDockListener : IInspectable
            {
                HRESULT IsSupported([out] [retval] boolean* result);
                [eventadd] HRESULT IsSupportedChanged([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenDockListener*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT IsSupportedChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT Docked([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenDockListener*, Windows.Devices.Input.PenDockedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Docked([in] EventRegistrationToken token);
                [eventadd] HRESULT Undocked([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Input.PenDockListener*, Windows.Devices.Input.PenUndockedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT Undocked([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenDockListener)]
            [uuid(CAB75E9A-0016-5C72-969E-A97E11992A93)]
            interface IPenDockListenerStatics : IInspectable
            {
                HRESULT GetDefault([out] [retval] Windows.Devices.Input.PenDockListener** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenDockedEventArgs)]
            [uuid(FD4277C6-CA63-5D4E-9ED3-A28A54521C8C)]
            interface IPenDockedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenTailButtonClickedEventArgs)]
            [uuid(5D2FB7B6-6AD3-5D3E-AB29-05EA2410E390)]
            interface IPenTailButtonClickedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenTailButtonDoubleClickedEventArgs)]
            [uuid(846321A2-618A-5478-B04C-B358231DA4A7)]
            interface IPenTailButtonDoubleClickedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenTailButtonLongPressedEventArgs)]
            [uuid(F37C606E-C60A-5F42-B818-A53112406C13)]
            interface IPenTailButtonLongPressedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Input.PenUndockedEventArgs)]
            [uuid(CCD09150-261B-59E6-A5D4-C1964CD03FEB)]
            interface IPenUndockedEventArgs : IInspectable
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.PointerDevice)]
            [uuid(93C9BAFC-EBCB-467E-82C6-276FEAE36B5A)]
            interface IPointerDevice : IInspectable
            {
                [propget] HRESULT PointerDeviceType([out] [retval] Windows.Devices.Input.PointerDeviceType* value);
                [propget] HRESULT IsIntegrated([out] [retval] boolean* value);
                [propget] HRESULT MaxContacts([out] [retval] UINT32* value);
                [propget] HRESULT PhysicalDeviceRect([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT ScreenRect([out] [retval] Windows.Foundation.Rect* value);
                [propget] HRESULT SupportedUsages([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Input.PointerDeviceUsage>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.PointerDevice)]
            [uuid(F8A6D2A0-C484-489F-AE3E-30D2EE1FFD3E)]
            interface IPointerDevice2 : IInspectable
            {
                [propget] HRESULT MaxPointersWithZDistance([out] [retval] UINT32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.PointerDevice)]
            [uuid(D8B89AA1-D1C6-416E-BD8D-5790914DC563)]
            interface IPointerDeviceStatics : IInspectable
            {
                HRESULT GetPointerDevice([in] UINT32 pointerId, [out] [retval] Windows.Devices.Input.PointerDevice** pointerDevice);
                HRESULT GetPointerDevices([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Devices.Input.PointerDevice*>** pointerDevices);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Input.TouchCapabilities)]
            [uuid(20DD55F9-13F1-46C8-9285-2C05FA3EDA6F)]
            interface ITouchCapabilities : IInspectable
            {
                [propget] HRESULT TouchPresent([out] [retval] INT32* value);
                [propget] HRESULT Contacts([out] [retval] UINT32* value);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass KeyboardCapabilities
            {
                [default] interface Windows.Devices.Input.IKeyboardCapabilities;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass MouseCapabilities
            {
                [default] interface Windows.Devices.Input.IMouseCapabilities;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(standard)]
            [static(Windows.Devices.Input.IMouseDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass MouseDevice
            {
                [default] interface Windows.Devices.Input.IMouseDevice;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(standard)]
            runtimeclass MouseEventArgs
            {
                [default] interface Windows.Devices.Input.IMouseEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Input.IPenButtonListenerStatics, Windows.Foundation.UniversalApiContract, 10.0)]
            [threading(both)]
            runtimeclass PenButtonListener
            {
                [default] interface Windows.Devices.Input.IPenButtonListener;
            }

            [contract(Windows.Foundation.UniversalApiContract, 8.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Input.IPenDeviceStatics, Windows.Foundation.UniversalApiContract, 8.0)]
            [threading(both)]
            runtimeclass PenDevice
            {
                [default] interface Windows.Devices.Input.IPenDevice;
                [contract(Windows.Foundation.UniversalApiContract, 14.0)] interface Windows.Devices.Input.IPenDevice2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Input.IPenDockListenerStatics, Windows.Foundation.UniversalApiContract, 10.0)]
            [threading(both)]
            runtimeclass PenDockListener
            {
                [default] interface Windows.Devices.Input.IPenDockListener;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            runtimeclass PenDockedEventArgs
            {
                [default] interface Windows.Devices.Input.IPenDockedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            runtimeclass PenTailButtonClickedEventArgs
            {
                [default] interface Windows.Devices.Input.IPenTailButtonClickedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            runtimeclass PenTailButtonDoubleClickedEventArgs
            {
                [default] interface Windows.Devices.Input.IPenTailButtonDoubleClickedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            runtimeclass PenTailButtonLongPressedEventArgs
            {
                [default] interface Windows.Devices.Input.IPenTailButtonLongPressedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [marshaling_behavior(agile)]
            runtimeclass PenUndockedEventArgs
            {
                [default] interface Windows.Devices.Input.IPenUndockedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(none)]
            [static(Windows.Devices.Input.IPointerDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass PointerDevice
            {
                [default] interface Windows.Devices.Input.IPointerDevice;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Devices.Input.IPointerDevice2;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass TouchCapabilities
            {
                [default] interface Windows.Devices.Input.ITouchCapabilities;
            }
        }
    }
}
