--------------------------------------------------------------------------------
-- <auto-generated>                                                           --
--     This code was generated by a tool.                                     --
--                                                                            --
--     Changes to this file may cause incorrect behavior and will be lost if  --
--     the code is regenerated.                                               --
-- </auto-generated>                                                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--                                                                            --
--    Copyright(c) 2018 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-WinRT                                                               --
--                                                                            --
-- This program 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 3 of the License, or          --
-- (at your option) any later version.                                        --
--                                                                            --
-- This program 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 program.If not, see http://www.gnu.org/licenses            --
--                                                                            --
--------------------------------------------------------------------------------
with Windows; use Windows;
with Windows.Foundation;
with Windows.Foundation.Collections;
package Windows.Devices.Input is

   pragma preelaborate;
   
   ------------------------------------------------------------------------
   -- Enums
   ------------------------------------------------------------------------
   
   type PointerDeviceType is (
      Touch,
      Pen,
      Mouse
   );
   for PointerDeviceType use (
      Touch => 0,
      Pen => 1,
      Mouse => 2
   );
   for PointerDeviceType'Size use 32;
   
   type PointerDeviceType_Ptr is access PointerDeviceType;
   
   ------------------------------------------------------------------------
   -- Record types
   ------------------------------------------------------------------------
   
   type MouseDelta is record
      X : Windows.Int32;
      Y : Windows.Int32;
   end record;
   pragma Convention (C_Pass_By_Copy , MouseDelta);
   
   type MouseDelta_Ptr is access MouseDelta;
   
   type PointerDeviceUsage is record
      UsagePage : Windows.UInt32;
      Usage : Windows.UInt32;
      MinLogical : Windows.Int32;
      MaxLogical : Windows.Int32;
      MinPhysical : Windows.Int32;
      MaxPhysical : Windows.Int32;
      Unit : Windows.UInt32;
      PhysicalMultiplier : Windows.Single;
   end record;
   pragma Convention (C_Pass_By_Copy , PointerDeviceUsage);
   
   type PointerDeviceUsage_Ptr is access PointerDeviceUsage;
   
   ------------------------------------------------------------------------
   -- Forward Declaration - Delegates/Events
   ------------------------------------------------------------------------
   
   type TypedEventHandler_IMouseDevice_add_MouseMoved_Interface;
   type TypedEventHandler_IMouseDevice_add_MouseMoved is access all TypedEventHandler_IMouseDevice_add_MouseMoved_Interface'Class;
   type TypedEventHandler_IMouseDevice_add_MouseMoved_Ptr is access all TypedEventHandler_IMouseDevice_add_MouseMoved;
   type TypedEventHandler_IPenButtonListener_add_IsSupportedChanged_Interface;
   type TypedEventHandler_IPenButtonListener_add_IsSupportedChanged is access all TypedEventHandler_IPenButtonListener_add_IsSupportedChanged_Interface'Class;
   type TypedEventHandler_IPenButtonListener_add_IsSupportedChanged_Ptr is access all TypedEventHandler_IPenButtonListener_add_IsSupportedChanged;
   type TypedEventHandler_IPenButtonListener_add_TailButtonClicked_Interface;
   type TypedEventHandler_IPenButtonListener_add_TailButtonClicked is access all TypedEventHandler_IPenButtonListener_add_TailButtonClicked_Interface'Class;
   type TypedEventHandler_IPenButtonListener_add_TailButtonClicked_Ptr is access all TypedEventHandler_IPenButtonListener_add_TailButtonClicked;
   type TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked_Interface;
   type TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked is access all TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked_Interface'Class;
   type TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked_Ptr is access all TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked;
   type TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed_Interface;
   type TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed is access all TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed_Interface'Class;
   type TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed_Ptr is access all TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed;
   type TypedEventHandler_IPenDockListener_add_Docked_Interface;
   type TypedEventHandler_IPenDockListener_add_Docked is access all TypedEventHandler_IPenDockListener_add_Docked_Interface'Class;
   type TypedEventHandler_IPenDockListener_add_Docked_Ptr is access all TypedEventHandler_IPenDockListener_add_Docked;
   type TypedEventHandler_IPenDockListener_add_IsSupportedChanged_Interface;
   type TypedEventHandler_IPenDockListener_add_IsSupportedChanged is access all TypedEventHandler_IPenDockListener_add_IsSupportedChanged_Interface'Class;
   type TypedEventHandler_IPenDockListener_add_IsSupportedChanged_Ptr is access all TypedEventHandler_IPenDockListener_add_IsSupportedChanged;
   type TypedEventHandler_IPenDockListener_add_Undocked_Interface;
   type TypedEventHandler_IPenDockListener_add_Undocked is access all TypedEventHandler_IPenDockListener_add_Undocked_Interface'Class;
   type TypedEventHandler_IPenDockListener_add_Undocked_Ptr is access all TypedEventHandler_IPenDockListener_add_Undocked;
   
   ------------------------------------------------------------------------
   -- Forward Declaration - Interfaces
   ------------------------------------------------------------------------
   
   type IIterable_IPointerDevice_Interface;
   type IIterable_IPointerDevice is access all IIterable_IPointerDevice_Interface'Class;
   type IIterable_IPointerDevice_Ptr is access all IIterable_IPointerDevice;
   type IIterable_PointerDeviceUsage_Interface;
   type IIterable_PointerDeviceUsage is access all IIterable_PointerDeviceUsage_Interface'Class;
   type IIterable_PointerDeviceUsage_Ptr is access all IIterable_PointerDeviceUsage;
   type IIterator_IPointerDevice_Interface;
   type IIterator_IPointerDevice is access all IIterator_IPointerDevice_Interface'Class;
   type IIterator_IPointerDevice_Ptr is access all IIterator_IPointerDevice;
   type IIterator_PointerDeviceUsage_Interface;
   type IIterator_PointerDeviceUsage is access all IIterator_PointerDeviceUsage_Interface'Class;
   type IIterator_PointerDeviceUsage_Ptr is access all IIterator_PointerDeviceUsage;
   type IKeyboardCapabilities_Interface;
   type IKeyboardCapabilities is access all IKeyboardCapabilities_Interface'Class;
   type IKeyboardCapabilities_Ptr is access all IKeyboardCapabilities;
   type IMouseCapabilities_Interface;
   type IMouseCapabilities is access all IMouseCapabilities_Interface'Class;
   type IMouseCapabilities_Ptr is access all IMouseCapabilities;
   type IMouseDevice_Interface;
   type IMouseDevice is access all IMouseDevice_Interface'Class;
   type IMouseDevice_Ptr is access all IMouseDevice;
   type IMouseDeviceStatics_Interface;
   type IMouseDeviceStatics is access all IMouseDeviceStatics_Interface'Class;
   type IMouseDeviceStatics_Ptr is access all IMouseDeviceStatics;
   type IMouseEventArgs_Interface;
   type IMouseEventArgs is access all IMouseEventArgs_Interface'Class;
   type IMouseEventArgs_Ptr is access all IMouseEventArgs;
   type IPenButtonListener_Interface;
   type IPenButtonListener is access all IPenButtonListener_Interface'Class;
   type IPenButtonListener_Ptr is access all IPenButtonListener;
   type IPenButtonListenerStatics_Interface;
   type IPenButtonListenerStatics is access all IPenButtonListenerStatics_Interface'Class;
   type IPenButtonListenerStatics_Ptr is access all IPenButtonListenerStatics;
   type IPenDevice_Interface;
   type IPenDevice is access all IPenDevice_Interface'Class;
   type IPenDevice_Ptr is access all IPenDevice;
   type IPenDeviceStatics_Interface;
   type IPenDeviceStatics is access all IPenDeviceStatics_Interface'Class;
   type IPenDeviceStatics_Ptr is access all IPenDeviceStatics;
   type IPenDockedEventArgs_Interface;
   type IPenDockedEventArgs is access all IPenDockedEventArgs_Interface'Class;
   type IPenDockedEventArgs_Ptr is access all IPenDockedEventArgs;
   type IPenDockListener_Interface;
   type IPenDockListener is access all IPenDockListener_Interface'Class;
   type IPenDockListener_Ptr is access all IPenDockListener;
   type IPenDockListenerStatics_Interface;
   type IPenDockListenerStatics is access all IPenDockListenerStatics_Interface'Class;
   type IPenDockListenerStatics_Ptr is access all IPenDockListenerStatics;
   type IPenTailButtonClickedEventArgs_Interface;
   type IPenTailButtonClickedEventArgs is access all IPenTailButtonClickedEventArgs_Interface'Class;
   type IPenTailButtonClickedEventArgs_Ptr is access all IPenTailButtonClickedEventArgs;
   type IPenTailButtonDoubleClickedEventArgs_Interface;
   type IPenTailButtonDoubleClickedEventArgs is access all IPenTailButtonDoubleClickedEventArgs_Interface'Class;
   type IPenTailButtonDoubleClickedEventArgs_Ptr is access all IPenTailButtonDoubleClickedEventArgs;
   type IPenTailButtonLongPressedEventArgs_Interface;
   type IPenTailButtonLongPressedEventArgs is access all IPenTailButtonLongPressedEventArgs_Interface'Class;
   type IPenTailButtonLongPressedEventArgs_Ptr is access all IPenTailButtonLongPressedEventArgs;
   type IPenUndockedEventArgs_Interface;
   type IPenUndockedEventArgs is access all IPenUndockedEventArgs_Interface'Class;
   type IPenUndockedEventArgs_Ptr is access all IPenUndockedEventArgs;
   type IPointerDevice_Interface;
   type IPointerDevice is access all IPointerDevice_Interface'Class;
   type IPointerDevice_Ptr is access all IPointerDevice;
   type IPointerDevice2_Interface;
   type IPointerDevice2 is access all IPointerDevice2_Interface'Class;
   type IPointerDevice2_Ptr is access all IPointerDevice2;
   type IPointerDeviceStatics_Interface;
   type IPointerDeviceStatics is access all IPointerDeviceStatics_Interface'Class;
   type IPointerDeviceStatics_Ptr is access all IPointerDeviceStatics;
   type ITouchCapabilities_Interface;
   type ITouchCapabilities is access all ITouchCapabilities_Interface'Class;
   type ITouchCapabilities_Ptr is access all ITouchCapabilities;
   type IVectorView_IPointerDevice_Interface;
   type IVectorView_IPointerDevice is access all IVectorView_IPointerDevice_Interface'Class;
   type IVectorView_IPointerDevice_Ptr is access all IVectorView_IPointerDevice;
   type IVectorView_PointerDeviceUsage_Interface;
   type IVectorView_PointerDeviceUsage is access all IVectorView_PointerDeviceUsage_Interface'Class;
   type IVectorView_PointerDeviceUsage_Ptr is access all IVectorView_PointerDeviceUsage;
   
   ------------------------------------------------------------------------
   -- Interfaces
   ------------------------------------------------------------------------
   
   ------------------------------------------------------------------------
   
   IID_IIterable_IPointerDevice : aliased constant Windows.IID := (2904974892, 33883, 23661, (174, 170, 64, 111, 72, 194, 26, 233 ));
   
   type IIterable_IPointerDevice_Interface is interface and Windows.IInspectable_Interface;
   
   function First
   (
      This       : access IIterable_IPointerDevice_Interface
      ; RetVal : access Windows.Devices.Input.IIterator_IPointerDevice
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IIterable_PointerDeviceUsage : aliased constant Windows.IID := (1496147480, 60075, 23161, (164, 122, 199, 252, 11, 116, 154, 78 ));
   
   type IIterable_PointerDeviceUsage_Interface is interface and Windows.IInspectable_Interface;
   
   function First
   (
      This       : access IIterable_PointerDeviceUsage_Interface
      ; RetVal : access Windows.Devices.Input.IIterator_PointerDeviceUsage
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IIterator_IPointerDevice : aliased constant Windows.IID := (3734266908, 31072, 24525, (171, 232, 214, 186, 96, 158, 247, 211 ));
   
   type IIterator_IPointerDevice_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Current
   (
      This       : access IIterator_IPointerDevice_Interface
      ; RetVal : access Windows.Devices.Input.IPointerDevice
   )
   return Windows.HRESULT is abstract;
   
   function get_HasCurrent
   (
      This       : access IIterator_IPointerDevice_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function MoveNext
   (
      This       : access IIterator_IPointerDevice_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IIterator_IPointerDevice_Interface
      ; items : Windows.Devices.Input.IPointerDevice_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IIterator_PointerDeviceUsage : aliased constant Windows.IID := (2595362317, 4591, 24266, (141, 217, 62, 19, 170, 78, 95, 153 ));
   
   type IIterator_PointerDeviceUsage_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Current
   (
      This       : access IIterator_PointerDeviceUsage_Interface
      ; RetVal : access Windows.Devices.Input.PointerDeviceUsage
   )
   return Windows.HRESULT is abstract;
   
   function get_HasCurrent
   (
      This       : access IIterator_PointerDeviceUsage_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function MoveNext
   (
      This       : access IIterator_PointerDeviceUsage_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IIterator_PointerDeviceUsage_Interface
      ; items : Windows.Devices.Input.PointerDeviceUsage_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IKeyboardCapabilities : aliased constant Windows.IID := (977247062, 26520, 19388, (131, 62, 15, 52, 177, 124, 101, 255 ));
   
   type IKeyboardCapabilities_Interface is interface and Windows.IInspectable_Interface;
   
   function get_KeyboardPresent
   (
      This       : access IKeyboardCapabilities_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IMouseCapabilities : aliased constant Windows.IID := (3164987427, 32217, 19307, (154, 146, 85, 212, 60, 179, 143, 115 ));
   
   type IMouseCapabilities_Interface is interface and Windows.IInspectable_Interface;
   
   function get_MousePresent
   (
      This       : access IMouseCapabilities_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function get_VerticalWheelPresent
   (
      This       : access IMouseCapabilities_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function get_HorizontalWheelPresent
   (
      This       : access IMouseCapabilities_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function get_SwapButtons
   (
      This       : access IMouseCapabilities_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function get_NumberOfButtons
   (
      This       : access IMouseCapabilities_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IMouseDevice : aliased constant Windows.IID := (2297295960, 62152, 18932, (190, 31, 194, 86, 179, 136, 188, 17 ));
   
   type IMouseDevice_Interface is interface and Windows.IInspectable_Interface;
   
   function add_MouseMoved
   (
      This       : access IMouseDevice_Interface
      ; handler : TypedEventHandler_IMouseDevice_add_MouseMoved
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_MouseMoved
   (
      This       : access IMouseDevice_Interface
      ; cookie : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IMouseDeviceStatics : aliased constant Windows.IID := (1212846149, 28016, 18907, (142, 104, 70, 255, 189, 23, 211, 141 ));
   
   type IMouseDeviceStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetForCurrentView
   (
      This       : access IMouseDeviceStatics_Interface
      ; RetVal : access Windows.Devices.Input.IMouseDevice
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IMouseEventArgs : aliased constant Windows.IID := (4129663581, 9044, 19655, (146, 48, 150, 148, 28, 150, 159, 222 ));
   
   type IMouseEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   function get_MouseDelta
   (
      This       : access IMouseEventArgs_Interface
      ; RetVal : access Windows.Devices.Input.MouseDelta
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPenButtonListener : aliased constant Windows.IID := (2185610102, 7907, 21495, (177, 247, 131, 52, 161, 111, 40, 21 ));
   
   type IPenButtonListener_Interface is interface and Windows.IInspectable_Interface;
   
   function IsSupported
   (
      This       : access IPenButtonListener_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function add_IsSupportedChanged
   (
      This       : access IPenButtonListener_Interface
      ; handler : TypedEventHandler_IPenButtonListener_add_IsSupportedChanged
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_IsSupportedChanged
   (
      This       : access IPenButtonListener_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function add_TailButtonClicked
   (
      This       : access IPenButtonListener_Interface
      ; handler : TypedEventHandler_IPenButtonListener_add_TailButtonClicked
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_TailButtonClicked
   (
      This       : access IPenButtonListener_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function add_TailButtonDoubleClicked
   (
      This       : access IPenButtonListener_Interface
      ; handler : TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_TailButtonDoubleClicked
   (
      This       : access IPenButtonListener_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function add_TailButtonLongPressed
   (
      This       : access IPenButtonListener_Interface
      ; handler : TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_TailButtonLongPressed
   (
      This       : access IPenButtonListener_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPenButtonListenerStatics : aliased constant Windows.IID := (430482820, 34351, 24425, (191, 234, 5, 246, 88, 79, 19, 63 ));
   
   type IPenButtonListenerStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetDefault
   (
      This       : access IPenButtonListenerStatics_Interface
      ; RetVal : access Windows.Devices.Input.IPenButtonListener
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPenDevice : aliased constant Windows.IID := (830828218, 42808, 23180, (184, 246, 249, 126, 246, 141, 24, 239 ));
   
   type IPenDevice_Interface is interface and Windows.IInspectable_Interface;
   
   function get_PenId
   (
      This       : access IPenDevice_Interface
      ; RetVal : access Windows.Guid
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPenDeviceStatics : aliased constant Windows.IID := (2650521089, 2406, 20864, (188, 180, 184, 80, 96, 227, 148, 121 ));
   
   type IPenDeviceStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetFromPointerId
   (
      This       : access IPenDeviceStatics_Interface
      ; pointerId : Windows.UInt32
      ; RetVal : access Windows.Devices.Input.IPenDevice
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPenDockedEventArgs : aliased constant Windows.IID := (4248991686, 51811, 23886, (158, 211, 162, 138, 84, 82, 28, 140 ));
   
   type IPenDockedEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   ------------------------------------------------------------------------
   
   IID_IPenDockListener : aliased constant Windows.IID := (1973374352, 7616, 21963, (173, 24, 185, 16, 20, 86, 245, 146 ));
   
   type IPenDockListener_Interface is interface and Windows.IInspectable_Interface;
   
   function IsSupported
   (
      This       : access IPenDockListener_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function add_IsSupportedChanged
   (
      This       : access IPenDockListener_Interface
      ; handler : TypedEventHandler_IPenDockListener_add_IsSupportedChanged
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_IsSupportedChanged
   (
      This       : access IPenDockListener_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function add_Docked
   (
      This       : access IPenDockListener_Interface
      ; handler : TypedEventHandler_IPenDockListener_add_Docked
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_Docked
   (
      This       : access IPenDockListener_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function add_Undocked
   (
      This       : access IPenDockListener_Interface
      ; handler : TypedEventHandler_IPenDockListener_add_Undocked
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_Undocked
   (
      This       : access IPenDockListener_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPenDockListenerStatics : aliased constant Windows.IID := (3401014938, 22, 23666, (150, 158, 169, 126, 17, 153, 42, 147 ));
   
   type IPenDockListenerStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetDefault
   (
      This       : access IPenDockListenerStatics_Interface
      ; RetVal : access Windows.Devices.Input.IPenDockListener
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPenTailButtonClickedEventArgs : aliased constant Windows.IID := (1563408310, 27347, 23870, (171, 41, 5, 234, 36, 16, 227, 144 ));
   
   type IPenTailButtonClickedEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   ------------------------------------------------------------------------
   
   IID_IPenTailButtonDoubleClickedEventArgs : aliased constant Windows.IID := (2221089186, 24970, 21624, (176, 76, 179, 88, 35, 29, 164, 167 ));
   
   type IPenTailButtonDoubleClickedEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   ------------------------------------------------------------------------
   
   IID_IPenTailButtonLongPressedEventArgs : aliased constant Windows.IID := (4085014638, 50698, 24386, (184, 24, 165, 49, 18, 64, 108, 19 ));
   
   type IPenTailButtonLongPressedEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   ------------------------------------------------------------------------
   
   IID_IPenUndockedEventArgs : aliased constant Windows.IID := (3436220752, 9755, 23014, (165, 212, 193, 150, 76, 208, 63, 235 ));
   
   type IPenUndockedEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   ------------------------------------------------------------------------
   
   IID_IPointerDevice : aliased constant Windows.IID := (2479471356, 60363, 18046, (130, 198, 39, 111, 234, 227, 107, 90 ));
   
   type IPointerDevice_Interface is interface and Windows.IInspectable_Interface;
   
   function get_PointerDeviceType
   (
      This       : access IPointerDevice_Interface
      ; RetVal : access Windows.Devices.Input.PointerDeviceType
   )
   return Windows.HRESULT is abstract;
   
   function get_IsIntegrated
   (
      This       : access IPointerDevice_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function get_MaxContacts
   (
      This       : access IPointerDevice_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   function get_PhysicalDeviceRect
   (
      This       : access IPointerDevice_Interface
      ; RetVal : access Windows.Foundation.Rect
   )
   return Windows.HRESULT is abstract;
   
   function get_ScreenRect
   (
      This       : access IPointerDevice_Interface
      ; RetVal : access Windows.Foundation.Rect
   )
   return Windows.HRESULT is abstract;
   
   function get_SupportedUsages
   (
      This       : access IPointerDevice_Interface
      ; RetVal : access Windows.Devices.Input.IVectorView_PointerDeviceUsage -- Generic Parameter Type
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPointerDevice2 : aliased constant Windows.IID := (4171682464, 50308, 18591, (174, 62, 48, 210, 238, 31, 253, 62 ));
   
   type IPointerDevice2_Interface is interface and Windows.IInspectable_Interface;
   
   function get_MaxPointersWithZDistance
   (
      This       : access IPointerDevice2_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPointerDeviceStatics : aliased constant Windows.IID := (3635976865, 53702, 16750, (189, 141, 87, 144, 145, 77, 197, 99 ));
   
   type IPointerDeviceStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetPointerDevice
   (
      This       : access IPointerDeviceStatics_Interface
      ; pointerId : Windows.UInt32
      ; RetVal : access Windows.Devices.Input.IPointerDevice
   )
   return Windows.HRESULT is abstract;
   
   function GetPointerDevices
   (
      This       : access IPointerDeviceStatics_Interface
      ; RetVal : access Windows.Devices.Input.IVectorView_IPointerDevice -- Generic Parameter Type
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ITouchCapabilities : aliased constant Windows.IID := (551376377, 5105, 18120, (146, 133, 44, 5, 250, 62, 218, 111 ));
   
   type ITouchCapabilities_Interface is interface and Windows.IInspectable_Interface;
   
   function get_TouchPresent
   (
      This       : access ITouchCapabilities_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function get_Contacts
   (
      This       : access ITouchCapabilities_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IVectorView_IPointerDevice : aliased constant Windows.IID := (3478549745, 38920, 23083, (128, 184, 86, 132, 237, 14, 168, 22 ));
   
   type IVectorView_IPointerDevice_Interface is interface and Windows.IInspectable_Interface;
   
   function GetAt
   (
      This       : access IVectorView_IPointerDevice_Interface
      ; index : Windows.UInt32
      ; RetVal : access Windows.Devices.Input.IPointerDevice
   )
   return Windows.HRESULT is abstract;
   
   function get_Size
   (
      This       : access IVectorView_IPointerDevice_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   function IndexOf
   (
      This       : access IVectorView_IPointerDevice_Interface
      ; value : Windows.Devices.Input.IPointerDevice
      ; index : access Windows.UInt32
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IVectorView_IPointerDevice_Interface
      ; startIndex : Windows.UInt32
      ; items : Windows.Devices.Input.IPointerDevice_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IVectorView_PointerDeviceUsage : aliased constant Windows.IID := (2388274302, 14384, 20693, (146, 186, 49, 99, 200, 156, 187, 208 ));
   
   type IVectorView_PointerDeviceUsage_Interface is interface and Windows.IInspectable_Interface;
   
   function GetAt
   (
      This       : access IVectorView_PointerDeviceUsage_Interface
      ; index : Windows.UInt32
      ; RetVal : access Windows.Devices.Input.PointerDeviceUsage
   )
   return Windows.HRESULT is abstract;
   
   function get_Size
   (
      This       : access IVectorView_PointerDeviceUsage_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   function IndexOf
   (
      This       : access IVectorView_PointerDeviceUsage_Interface
      ; value : Windows.Devices.Input.PointerDeviceUsage
      ; index : access Windows.UInt32
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IVectorView_PointerDeviceUsage_Interface
      ; startIndex : Windows.UInt32
      ; items : Windows.Devices.Input.PointerDeviceUsage_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   -- Delegates/Events
   ------------------------------------------------------------------------
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IMouseDevice_add_MouseMoved : aliased constant Windows.IID := (1567810964, 10468, 22677, (163, 75, 234, 145, 15, 112, 253, 187 ));
   
   type TypedEventHandler_IMouseDevice_add_MouseMoved_Interface(Callback : access procedure (sender : Windows.Devices.Input.IMouseDevice ; args : Windows.Devices.Input.IMouseEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IMouseDevice_add_MouseMoved'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IMouseDevice_add_MouseMoved_Interface
      ; sender : Windows.Devices.Input.IMouseDevice
      ; args : Windows.Devices.Input.IMouseEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IPenButtonListener_add_IsSupportedChanged : aliased constant Windows.IID := (168748525, 1051, 21865, (180, 164, 161, 229, 143, 19, 67, 162 ));
   
   type TypedEventHandler_IPenButtonListener_add_IsSupportedChanged_Interface(Callback : access procedure (sender : Windows.Devices.Input.IPenButtonListener ; args : Windows.Object)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IPenButtonListener_add_IsSupportedChanged'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IPenButtonListener_add_IsSupportedChanged_Interface
      ; sender : Windows.Devices.Input.IPenButtonListener
      ; args : Windows.Object
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IPenButtonListener_add_TailButtonClicked : aliased constant Windows.IID := (786067721, 61897, 24358, (160, 84, 61, 37, 6, 44, 192, 222 ));
   
   type TypedEventHandler_IPenButtonListener_add_TailButtonClicked_Interface(Callback : access procedure (sender : Windows.Devices.Input.IPenButtonListener ; args : Windows.Devices.Input.IPenTailButtonClickedEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IPenButtonListener_add_TailButtonClicked'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IPenButtonListener_add_TailButtonClicked_Interface
      ; sender : Windows.Devices.Input.IPenButtonListener
      ; args : Windows.Devices.Input.IPenTailButtonClickedEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked : aliased constant Windows.IID := (3873803668, 28539, 22847, (129, 240, 3, 49, 80, 180, 67, 44 ));
   
   type TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked_Interface(Callback : access procedure (sender : Windows.Devices.Input.IPenButtonListener ; args : Windows.Devices.Input.IPenTailButtonDoubleClickedEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IPenButtonListener_add_TailButtonDoubleClicked_Interface
      ; sender : Windows.Devices.Input.IPenButtonListener
      ; args : Windows.Devices.Input.IPenTailButtonDoubleClickedEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed : aliased constant Windows.IID := (3396184863, 8406, 21168, (148, 206, 109, 204, 117, 161, 169, 132 ));
   
   type TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed_Interface(Callback : access procedure (sender : Windows.Devices.Input.IPenButtonListener ; args : Windows.Devices.Input.IPenTailButtonLongPressedEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IPenButtonListener_add_TailButtonLongPressed_Interface
      ; sender : Windows.Devices.Input.IPenButtonListener
      ; args : Windows.Devices.Input.IPenTailButtonLongPressedEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IPenDockListener_add_Docked : aliased constant Windows.IID := (427321964, 36387, 24039, (167, 115, 231, 17, 165, 160, 104, 197 ));
   
   type TypedEventHandler_IPenDockListener_add_Docked_Interface(Callback : access procedure (sender : Windows.Devices.Input.IPenDockListener ; args : Windows.Devices.Input.IPenDockedEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IPenDockListener_add_Docked'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IPenDockListener_add_Docked_Interface
      ; sender : Windows.Devices.Input.IPenDockListener
      ; args : Windows.Devices.Input.IPenDockedEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IPenDockListener_add_IsSupportedChanged : aliased constant Windows.IID := (2095769647, 18842, 23345, (161, 216, 59, 17, 197, 60, 120, 113 ));
   
   type TypedEventHandler_IPenDockListener_add_IsSupportedChanged_Interface(Callback : access procedure (sender : Windows.Devices.Input.IPenDockListener ; args : Windows.Object)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IPenDockListener_add_IsSupportedChanged'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IPenDockListener_add_IsSupportedChanged_Interface
      ; sender : Windows.Devices.Input.IPenDockListener
      ; args : Windows.Object
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_IPenDockListener_add_Undocked : aliased constant Windows.IID := (1373349128, 12692, 23697, (162, 231, 249, 70, 55, 231, 90, 19 ));
   
   type TypedEventHandler_IPenDockListener_add_Undocked_Interface(Callback : access procedure (sender : Windows.Devices.Input.IPenDockListener ; args : Windows.Devices.Input.IPenUndockedEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_IPenDockListener_add_Undocked'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_IPenDockListener_add_Undocked_Interface
      ; sender : Windows.Devices.Input.IPenDockListener
      ; args : Windows.Devices.Input.IPenUndockedEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   -- Classes
   ------------------------------------------------------------------------
   
   subtype KeyboardCapabilities is Windows.Devices.Input.IKeyboardCapabilities;
   function Create return Windows.Devices.Input.IKeyboardCapabilities;
   
   subtype MouseCapabilities is Windows.Devices.Input.IMouseCapabilities;
   function Create return Windows.Devices.Input.IMouseCapabilities;
   
   subtype MouseDevice is Windows.Devices.Input.IMouseDevice;
   subtype MouseEventArgs is Windows.Devices.Input.IMouseEventArgs;
   subtype PenButtonListener is Windows.Devices.Input.IPenButtonListener;
   subtype PenDevice is Windows.Devices.Input.IPenDevice;
   subtype PenDockedEventArgs is Windows.Devices.Input.IPenDockedEventArgs;
   subtype PenDockListener is Windows.Devices.Input.IPenDockListener;
   subtype PenTailButtonClickedEventArgs is Windows.Devices.Input.IPenTailButtonClickedEventArgs;
   subtype PenTailButtonDoubleClickedEventArgs is Windows.Devices.Input.IPenTailButtonDoubleClickedEventArgs;
   subtype PenTailButtonLongPressedEventArgs is Windows.Devices.Input.IPenTailButtonLongPressedEventArgs;
   subtype PenUndockedEventArgs is Windows.Devices.Input.IPenUndockedEventArgs;
   subtype PointerDevice is Windows.Devices.Input.IPointerDevice;
   subtype TouchCapabilities is Windows.Devices.Input.ITouchCapabilities;
   function Create return Windows.Devices.Input.ITouchCapabilities;
   
   
   ------------------------------------------------------------------------
   -- Static Procedures/functions
   ------------------------------------------------------------------------
   
   function GetForCurrentView
   return Windows.Devices.Input.IMouseDevice;
   
   function GetDefault
   return Windows.Devices.Input.IPenButtonListener;
   
   function GetFromPointerId
   (
      pointerId : Windows.UInt32
   )
   return Windows.Devices.Input.IPenDevice;
   
   function GetDefault
   return Windows.Devices.Input.IPenDockListener;
   
   function GetPointerDevice
   (
      pointerId : Windows.UInt32
   )
   return Windows.Devices.Input.IPointerDevice;
   
   function GetPointerDevices
   return Windows.Devices.Input.IVectorView_IPointerDevice;
   
end;
