// DecalInput.idl : IDL source for DecalInput.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (DecalInput.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "Decal.idl";

	[
		object,
		uuid(27A63073-10D6-4282-85CF-77E4DEB8C6B8),
		dual,
		helpstring("IInputService Interface"),
		pointer_default(unique)
	]
	interface IInputService : IDispatch
	{
		[propget, id(1), helpstring("property Command")] HRESULT Command(BSTR strCommandName, [out, retval] BSTR *pVal);
		[propget, id(2), helpstring("property Decal")] HRESULT Decal([out, retval] IDecal * *pVal);
		[propget, id(3), helpstring("property KeyByName")] HRESULT KeyByName(BSTR strName, [out, retval] long *pVal);
		[propget, id(4), helpstring("property CommandKey")] HRESULT CommandKey(BSTR strCommand, [out, retval] long *pVal);
	};

	[
		object,
		uuid(6CE124D7-534E-4BB6-AAF2-2BE22F69326D),
		dual,
		helpstring("IDecalTimer Interface"),
		pointer_default(unique)
	]
	interface IDecalTimer : IDispatch
	{
		[id(1), helpstring("method Start")] HRESULT Start(long Interval);
		[id(2), helpstring("method Stop")] HRESULT Stop();
		[propget, id(3), helpstring("property Tag")] HRESULT Tag([out, retval] VARIANT *pVal);
		[propput, id(3), helpstring("property Tag")] HRESULT Tag([in] VARIANT newVal);
		[propget, id(4), helpstring("property Running")] HRESULT Running([out, retval] VARIANT_BOOL *pVal);
	};

	[
		object,
		uuid(95AF8DF7-F2A0-476E-9D8C-B23493B1698D),
		dual,
		helpstring("IHotkey Interface"),
		pointer_default(unique)
	]
	interface IHotkey : IDispatch
	{
		[propget, id(1), helpstring("property Tag")] HRESULT Tag([out, retval] VARIANT *pVal);
		[propput, id(1), helpstring("property Tag")] HRESULT Tag([in] VARIANT newVal);
		[propget, id(2), helpstring("property Key")] HRESULT Key([out, retval] BSTR *pVal);
		[propput, id(2), helpstring("property Key")] HRESULT Key([in] BSTR newVal);
		[propget, id(3), helpstring("property Enabled")] HRESULT Enabled([out, retval] VARIANT_BOOL *pVal);
		[propput, id(3), helpstring("property Enabled")] HRESULT Enabled([in] VARIANT_BOOL newVal);
	};

	[
		object,
		uuid(F4E4EA59-0E47-4BAD-819A-722F5FFD506F),
		dual,
		helpstring("IWinMsgHook Interface"),
		pointer_default(unique)
	]
	interface IWinMsgHook : IDispatch
	{
		[propget, id(1), helpstring("property Tag")] HRESULT Tag([out, retval] VARIANT *pVal);
		[propput, id(1), helpstring("property Tag")] HRESULT Tag([in] VARIANT newVal);
		[propget, id(2), helpstring("property Enabled")] HRESULT Enabled([out, retval] VARIANT_BOOL *pVal);
		[propput, id(2), helpstring("property Enabled")] HRESULT Enabled([in] VARIANT_BOOL newVal);
	};

	[
		object,
		uuid(BDAD721B-7A00-440D-8964-70427167DD36),
		dual,
		helpstring("IWndMsg Interface"),
		pointer_default(unique)
	]
	interface IWndMsg : IDispatch
	{
		[propget, id(1), helpstring("property HWND")] HRESULT HWND([out, retval] long *pVal);
		[propget, id(2), helpstring("property Message")] HRESULT Message([out, retval] long *pVal);
		[propget, id(3), helpstring("property WParam")] HRESULT WParam([out, retval] long *pVal);
		[propget, id(4), helpstring("property LParam")] HRESULT LParam([out, retval] long *pVal);
		[propget, id(5), helpstring("property Eat")] HRESULT Eat([out, retval] VARIANT_BOOL *pVal);
		[propput, id(5), helpstring("property Eat")] HRESULT Eat([in] VARIANT_BOOL newVal);
	};

	[
		object,
		uuid(B772FDC3-36AD-4957-9143-5A10FBDA6D1D),
		dual,
		helpstring("IInputBuffer Interface"),
		pointer_default(unique)
	]
	interface IInputBuffer : IDispatch
	{
		[propget, id(1), helpstring("property Tag")] HRESULT Tag([out, retval] VARIANT *pVal);
		[propput, id(1), helpstring("property Tag")] HRESULT Tag([in] VARIANT newVal);
		[id(2), helpstring("method Add")] HRESULT Add(BSTR Command);
		[id(3), helpstring("method Push")] HRESULT Push(BSTR Command);
		[id(4), helpstring("method Pop")] HRESULT Pop();
		[propget, id(5), helpstring("property CanRun")] HRESULT CanRun([out, retval] VARIANT_BOOL *pVal);
		[id(6), helpstring("method Run")] HRESULT Run();
		[id(7), helpstring("method Stop")] HRESULT Stop();
	};

	interface IInputActionSite;

	enum eActionUse
	{
		eActionExecute,
		eActionStack
	};

	[
		object,
		uuid(C73A3F3D-8286-4250-BF97-155EE341E42F),
		helpstring("IInputAction Interface"),
		pointer_default(unique)
	]
	interface IInputAction : IUnknown
	{
		[helpstring("method Initialize")] HRESULT Initialize(IInputActionSite *pSite, BSTR strData);
		[helpstring("method Terminate")] HRESULT Terminate();
		[propget, helpstring("property Stackable")] HRESULT Stackable([out, retval] VARIANT_BOOL *pVal);
		[helpstring("method Reset")] HRESULT Reset();
		[helpstring("method Push")] HRESULT Push();
		[helpstring("method Pop")] HRESULT Pop();
		[helpstring("method Execute")] HRESULT Execute();
	};

	[
		object,
		uuid(1751F4E5-4E11-42f1-A00F-ED5B1D899C66),
		helpstring("IInputActionSite Interface"),
		pointer_default(unique)
	]
	interface IInputActionSite : IUnknown
	{
		[helpstring("method Delay")] HRESULT Delay(long Time, VARIANT_BOOL Advance);
		[helpstring("method FireEvent")] HRESULT FireEvent(long nEventID, VARIANT vParam);
		[helpstring("method MoveMouse")] HRESULT MoveMouse(long X, long Y);
		[propget, helpstring("property Service")] HRESULT Service([out, retval] IInputService * *pVal);
	};

[
	uuid(3A985F2B-BAD5-43BF-9008-ED4EBBB45B6E),
	version(1.0),
	helpstring("DecalInput 1.0 Type Library")
]
library DecalInput
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	interface IInputAction;
	interface IInputActionSite;

	[
		uuid(B33307BA-706D-474A-80B9-70BB8D13EF3E),
		helpstring("InputService Class")
	]
	coclass InputService
	{
		[default] interface IInputService;
	};

	[
		uuid(BBF25010-50FE-4398-BB78-BF8B9D392915),
		helpstring("ITimerEvents Interface")
	]
	dispinterface ITimerEvents
	{
		properties:
		methods:
		[id(1), helpstring("method Timeout")] HRESULT Timeout(IDecalTimer *Source);
	};

	[
		uuid(79497C87-92E1-416B-AE5C-9D6C4C59133C),
		helpstring("Timer Class")
	]
	coclass Timer
	{
		[default] interface IDecalTimer;
		[default, source] dispinterface ITimerEvents;
	};

	[
		uuid(15EAEB82-6EC8-4A09-8FA3-2D691BBB732F),
		helpstring("IHotkeyEvents Interface")
	]
	dispinterface IHotkeyEvents
	{
		properties:
		methods:
		[id(1), helpstring("method Hotkey")] HRESULT Hotkey(IHotkey *Source);
	};

	[
		uuid(F183506A-3664-49D6-8CA4-CFD295F2811D),
		helpstring("Hotkey Class")
	]
	coclass Hotkey
	{
		[default] interface IHotkey;
		[default, source] dispinterface IHotkeyEvents;
	};

	[
		uuid(7E3E2EE8-1E06-4CFD-87D9-E4AEAB4CFE31),
		helpstring("IWinMsgHookEvents Interface")
	]
	dispinterface IWinMsgHookEvents
	{
		properties:
		methods:
		[id(1), helpstring("method Message")] HRESULT Message(IWinMsgHook *Hook, IWndMsg *Message);
	};

	[
		uuid(F3170E85-517E-43A4-B7B4-6F006A7B1B85),
		helpstring("WinMsgHook Class")
	]
	coclass WinMsgHook
	{
		[default] interface IWinMsgHook;
		[default, source] dispinterface IWinMsgHookEvents;
	};

	[
		uuid(85AB0296-124E-4E68-A6A8-FCF5721AC09B),
		noncreatable,
		helpstring("WndMsg Class")
	]
	coclass WndMsg
	{
		[default] interface IWndMsg;
	};

	[
		uuid(04CD59E6-672E-45A6-AE0A-454B1F59377A),
		helpstring("IInputBufferEvents Interface")
	]
	dispinterface IInputBufferEvents
	{
		properties:
		methods:
		[id(1), helpstring("method Begin")] HRESULT Begin(IInputBuffer *Buffer);
		[id(2), helpstring("method End")] HRESULT End(IInputBuffer *Buffer);
		[id(3), helpstring("method Event")] HRESULT Event(IInputBuffer *Buffer, long EventID, VARIANT Param);
	};

	[
		uuid(F0A17A04-7F8F-4A17-A41D-8C297A1E929B),
		helpstring("InputBuffer Class")
	]
	coclass InputBuffer
	{
		[default] interface IInputBuffer;
		[default, source] dispinterface IInputBufferEvents;
	};

	[
		uuid(9CDCEEDC-F8AC-42D5-9A05-52B9346D00A4),
		helpstring("TypeAction Class")
	]
	coclass TypeAction
	{
		[default] interface IInputAction;
	};

	[
		uuid(57D18578-0BF0-4DE5-A0A9-E7CB531C0429),
		helpstring("MouseMoveAction Class")
	]
	coclass MouseMoveAction
	{
		[default] interface IInputAction;
	};

	[
		uuid(324D76B8-D8C7-4A81-B867-E4E1F874E488),
		helpstring("DelayAction Class")
	]
	coclass DelayAction
	{
		[default] interface IInputAction;
	};

	[
		uuid(D6E4BD19-4900-4515-BCE2-A9EA4AAE2699),
		helpstring("EventAction Class")
	]
	coclass EventAction
	{
		[default] interface IInputAction;
	};

	[
		uuid(762335B2-2274-4BB4-8B1F-F7286C949FF7),
		helpstring("PolledDelayAction Class")
	]
	coclass PolledDelayAction
	{
		[default] interface IInputAction;
	};
	[
		uuid(6EE2F682-7129-44BE-84B9-787BAE35EC1C),
		helpstring("RestoreAction Class")
	]
	coclass RestoreAction
	{
		[default] interface IInputAction;
	};
};
