//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992-2000.
//
//  File: softkbd.idl
//
//  Contents: ISoftKbd declarations.
//
//
//--------------------------------------------------------------------------

cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// softkbd.h")
cpp_quote("")
cpp_quote("")
cpp_quote("// ISoftKbd declarations.")
cpp_quote("")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 1995-2000 Microsoft Corporation.  All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR TFPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE TFPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")

cpp_quote("#ifndef SOFTKBD_DEFINED")
cpp_quote("#define SOFTKBD_DEFINED")
cpp_quote("")
cpp_quote("#include <windows.h>")
cpp_quote("")


import "oaidl.idl";
import "ocidl.idl";
import "msctf.idl";

cpp_quote("#define   SOFTKBD_US_STANDARD    1")
cpp_quote("#define   SOFTKBD_US_ENHANCE     2")
cpp_quote("#define   SOFTKBD_EURO_STANDARD  3")
cpp_quote("#define   SOFTKBD_EURO_ENHANCE   4")
cpp_quote("#define   SOFTKBD_JPN_STANDARD   5")
cpp_quote("#define   SOFTKBD_JPN_ENHANCE    6")
cpp_quote("")
cpp_quote("#define   SOFTKBD_CUSTOMIZE_BEGIN  100")
cpp_quote("")
cpp_quote("#define   SOFTKBD_NO_MORE        0")
cpp_quote("")

cpp_quote("#define   SOFTKBD_SHOW                    0x00000001")
cpp_quote("#define   SOFTKBD_DONT_SHOW_ALPHA_BLEND   0x80000000")
cpp_quote("")
// =-------------------------------------------------------------------------=
// 
//   T Y P E  D E F I N I T I O N
//
// =-------------------------------------------------------------------------=

/* Logical Font */
#define LF_FACESIZE         32

cpp_quote( "#ifndef _WINGDI_")
typedef [uuid(8849aa7d-f739-4dc0-bc61-ac48908af060)] struct LOGFONTA
{
    LONG      lfHeight;
    LONG      lfWidth;
    LONG      lfEscapement;
    LONG      lfOrientation;
    LONG      lfWeight;
    BYTE      lfItalic;
    BYTE      lfUnderline;
    BYTE      lfStrikeOut;
    BYTE      lfCharSet;
    BYTE      lfOutPrecision;
    BYTE      lfClipPrecision;
    BYTE      lfQuality;
    BYTE      lfPitchAndFamily;
    CHAR      lfFaceName[LF_FACESIZE];
} LOGFONTA;
typedef [uuid(f8c6fe8a-b112-433a-be87-eb970266ec4b)] struct LOGFONTW
{
    LONG      lfHeight;
    LONG      lfWidth;
    LONG      lfEscapement;
    LONG      lfOrientation;
    LONG      lfWeight;
    BYTE      lfItalic;
    BYTE      lfUnderline;
    BYTE      lfStrikeOut;
    BYTE      lfCharSet;
    BYTE      lfOutPrecision;
    BYTE      lfClipPrecision;
    BYTE      lfQuality;
    BYTE      lfPitchAndFamily;
    WCHAR     lfFaceName[LF_FACESIZE];
} LOGFONTW;
#ifdef UNICODE
typedef LOGFONTW LOGFONT;
#else
typedef LOGFONTA LOGFONT;
#endif // UNICODE
cpp_quote( "#endif")

cpp_quote("")
cpp_quote("#if 0")
typedef  [uuid(f0a544c0-1281-4e32-8bf7-a6e012e980d4)] UINT_PTR   HKL;
cpp_quote("#endif")
cpp_quote("")
cpp_quote("")

typedef [uuid(432ec152-51bf-43ca-8f86-50a7e230a069)] DWORD   KEYID;

//  COLORTYPE

typedef [uuid(5f46a703-f012-46db-8cda-294e994786e8)] enum {

     bkcolor = 0 ,
	 UnSelForeColor = 1,
	 UnSelTextColor = 2,
	 SelForeColor = 3,
	 SelTextColor = 4,
     Max_color_Type = 5

 } COLORTYPE;
 

//  TYPEMODE

typedef [uuid(711c6200-587a-46ef-9647-5a83638bac00)]  enum {

    ClickMouse = 0,
	Hover = 1,  
	Scanning = 2

 } TYPEMODE;

// TITLEBAR_TYPE

typedef [uuid(10b50da7-ce0b-4b83-827f-30c50c9bc5b9)] enum {

    TITLEBAR_NONE = 0,
    TITLEBAR_GRIPPER_HORIZ_ONLY  = 1,
    TITLEBAR_GRIPPER_VERTI_ONLY  = 2,
    TITLEBAR_GRIPPER_BUTTON      = 3

 } TITLEBAR_TYPE;


[
    object,
    uuid(3CB00755-7536-4B0A-A213-572EFCAF93CD),
	
    helpstring("ISoftKbd Interface"),
    pointer_default(unique)
]
interface ISoftKbd : IUnknown
{
    [helpstring("method Initialize")] HRESULT Initialize();
    [helpstring("method EnumStandardSoftKeyBoard")] HRESULT EnumSoftKeyBoard([in]  LANGID langid, [out] DWORD *lpdwKeyboard);
    [helpstring("method SelectStandardSoftKeyboard")] HRESULT SelectSoftKeyboard([in] DWORD  dwKeyboardId);
    [helpstring("method CreateSoftKeyboardLayoutFromXMLFile")] HRESULT CreateSoftKeyboardLayoutFromXMLFile([in, string] WCHAR  *lpszKeyboardDesFile, [in] INT  szFileStrLen,[out] DWORD *pdwLayoutCookie);
	[helpstring("method CreateSoftKeyboardLayoutFromResource")] HRESULT CreateSoftKeyboardLayoutFromResource([in, string] WCHAR *lpszResFile,[in, string] WCHAR  *lpszResType, [in, string] WCHAR *lpszXMLResString,[out] DWORD *lpdwLayoutCookie);
    [helpstring("method ShowSoftKeyboard")] HRESULT ShowSoftKeyboard([in] INT iShow);
    [helpstring("method SetKeyboardLabelText")] HRESULT SetKeyboardLabelText([in] HKL hKl);
    [helpstring("method SetKeyboardLabelTextCombination")] HRESULT SetKeyboardLabelTextCombination([in] DWORD  nModifierCombination);
    [helpstring("method CreateSoftKeyboardWindow")] HRESULT CreateSoftKeyboardWindow([in] HWND hOwner, [in] TITLEBAR_TYPE Titlebar_type, [in] INT xPos, [in] INT yPos, [in] INT width, [in] INT height );
    [helpstring("method DestroySoftKeyboardWindow")] HRESULT DestroySoftKeyboardWindow();
    [helpstring("method GetSoftKeyboardPosSize")] HRESULT GetSoftKeyboardPosSize([out] POINT *lpStartPoint, [out] WORD *lpwidth, [out] WORD *lpheight);
    [helpstring("method GetSoftKeyboardColors")] HRESULT GetSoftKeyboardColors([in] COLORTYPE  colorType,  [out] COLORREF *lpColor);
    [helpstring("method GetSoftKeyboardTypeMode")] HRESULT GetSoftKeyboardTypeMode([out] TYPEMODE  *lpTypeMode);
    [helpstring("method GetSoftKeyboardTextFont")] HRESULT GetSoftKeyboardTextFont([out] LOGFONTW  *pLogFont);
    [helpstring("method SetSoftKeyboardPosSize")] HRESULT SetSoftKeyboardPosSize([in] POINT StartPoint, [in] WORD width, [in] WORD height);
    [helpstring("method SetSoftKeyboardColors")] HRESULT SetSoftKeyboardColors([in] COLORTYPE  colorType, [in] COLORREF Color);
    [helpstring("method SetSoftKeyboardTypeMode")] HRESULT SetSoftKeyboardTypeMode([in] TYPEMODE TypeMode);
    [helpstring("method SetSoftKeyboardTextFont")] HRESULT SetSoftKeyboardTextFont([in] LOGFONTW  *pLogFont);
    [helpstring("method ShowKeysForKeyScanMode")] HRESULT ShowKeysForKeyScanMode([in] KEYID  *lpKeyID, [in] INT iKeyNum, [in] BOOL fHighL);
    [helpstring("method AdviseSoftKeyboardEventSink")] HRESULT AdviseSoftKeyboardEventSink([in] DWORD dwKeyboardId,[in] REFIID riid, [in, iid_is(riid)] IUnknown *punk, [out] DWORD *pdwCookie);
    [helpstring("method UnadviseSoftKeyboardEventSink")] HRESULT UnadviseSoftKeyboardEventSink([in] DWORD dwCookie);

};


[
    object,
    uuid(3ea2bb1d-66e7-47f7-8795-cc03d388f887),
	
    helpstring("ISoftKeyboardEventSink Interface"),
    pointer_default(unique)
]
interface ISoftKeyboardEventSink : IUnknown
{
    [helpstring("method OnKeySelection")] HRESULT OnKeySelection([in] KEYID  KeySelected, [in, string] WCHAR  *lpwszLabel );
};

[
    object,
    uuid(e4283da5-d425-4f97-8b6a-061a03556e95),

    helpstring("ISoftKbdWindowEventSink Interface"),
    pointer_default(unique)
]
interface ISoftKbdWindowEventSink : IUnknown
{
    [helpstring("method OnWindowClose")] HRESULT OnWindowClose( );
    [helpstring("method OnWindowMove")]  HRESULT OnWindowMove([in] int xWnd,[in]int yWnd, [in] int width, [in] int height);
};

cpp_quote("#define   SOFTKBD_TYPE_US_STANDARD    1")
cpp_quote("#define   SOFTKBD_TYPE_US_SYMBOL      10")

//
// ITfFnSoftKbd 
//
// Implemented by TIP.
// interface.
// This derives from ITfFunction.
//
[
  object,
  uuid(e7342d48-573f-4f22-9181-41938b2529c2),
  pointer_default(unique)
]
interface ITfFnSoftKbd  : ITfFunction
{

    [helpstring("method GetSoftKbdLayoutId")] HRESULT GetSoftKbdLayoutId([in] DWORD dwLayoutType, [out] DWORD *lpdwLayoutId);
	[helpstring("method SetActiveLayoutId")] HRESULT  SetActiveLayoutId([in] DWORD  dwLayoutId );
	[helpstring("method SetSoftKbdOnOff")] HRESULT    SetSoftKbdOnOff([in] BOOL  fOn );
	[helpstring("method SetSoftKbdPosSize")] HRESULT  SetSoftKbdPosSize([in] POINT StartPoint, [in] WORD width, [in] WORD height);
	[helpstring("method SetSoftKbdColors")] HRESULT   SetSoftKbdColors([in] COLORTYPE  colorType, [in] COLORREF Color);
	[helpstring("method GetActiveLayoutId")] HRESULT  GetActiveLayoutId([out] DWORD  *lpdwLayoutId );
	[helpstring("method GetSoftKbdOnOff")] HRESULT    GetSoftKbdOnOff([out] BOOL  *lpfOn );
	[helpstring("method GetSoftKbdPosSize")] HRESULT  GetSoftKbdPosSize([out]POINT *lpStartPoint, [out] WORD *lpwidth, [out] WORD *lpheight);
	[helpstring("method GetSoftKbdColors")] HRESULT   GetSoftKbdColors([in] COLORTYPE  colorType, [out] COLORREF *lpColor);

}

// 
// ITfSoftKbdRegistry
//
// Implemented in softkbd.dll
// Other TIP can call this interface to Enable or Disable softkbd TIP.
//

[
  object,
  uuid(f5f31f14-fdf0-4d29-835a-46adfe743b78),
  pointer_default(unique)
]
interface ITfSoftKbdRegistry  : IUnknown 
{
    [helpstring("method Enable Softkbd TIP")] HRESULT EnableSoftkbd(LANGID  langid);
    [helpstring("method Disable Softkbd TIP")] HRESULT DisableSoftkbd(LANGID  langid);
}

// =-------------------------------------------------------------------------=
// 
//   C L S I D / I I D  D E F I N I T I O N
//
// =-------------------------------------------------------------------------=

cpp_quote("")

cpp_quote("DEFINE_GUID( IID_ISoftKbd, 0x3CB00755, 0x7536, 0x4B0A, 0xA2, 0x13, 0x57, 0x2E, 0xFC, 0xAF, 0x93, 0xCD );")

cpp_quote("DEFINE_GUID( IID_ISoftKeyboardEventSink,0x3ea2bb1d, 0x66e7, 0x47f7, 0x87, 0x95, 0xcc, 0x03, 0xd3, 0x88, 0xf8, 0x87 );")

cpp_quote("DEFINE_GUID( IID_ITfFnSoftKbd, 0xe7342d48, 0x573f, 0x4f22, 0x91, 0x81, 0x41, 0x93, 0x8b, 0x25, 0x29, 0xc2);")

cpp_quote("DEFINE_GUID( IID_ISoftKbdWindowEventSink, 0xe4283da5,0xd425,0x4f97,0x8b, 0x6a,0x06, 0x1a, 0x03, 0x55, 0x6e, 0x95);")

cpp_quote("DEFINE_GUID( IID_ITfSoftKbdRegistry, 0xf5f31f14, 0xfdf0, 0x4d29, 0x83, 0x5a, 0x46, 0xad, 0xfe, 0x74, 0x3b, 0x78);")

cpp_quote("DEFINE_GUID( CLSID_SoftKbd,0x1B1A897E, 0xFBEE, 0x41CF, 0x8C, 0x48,0x9B, 0xF7, 0x64, 0xF6, 0x2B, 0x8B);")
cpp_quote("")

cpp_quote("DEFINE_GUID( CLSID_SoftkbdIMX, 0xf89e9e58, 0xbd2f, 0x4008, 0x9a, 0xc2, 0x0f, 0x81, 0x6c, 0x09, 0xf4, 0xee);")
cpp_quote("")

cpp_quote("DEFINE_GUID( CLSID_SoftkbdRegistry, 0x6a49950e, 0xce8a, 0x4ef7, 0x88, 0xb4, 0x9d, 0x11, 0x23, 0x66, 0x51, 0x1c );")
cpp_quote("")

cpp_quote("#endif // SOFTKBD_DEFINED")