blob: 7e643f464f0b4c633cdd6f9b40374b2c781a0334 [file] [log] [blame]
/*
* Copyright 2008 Aric Stewart, CodeWeavers
*
* This library 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 2.1 of the License, or (at your option) any later version.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef DO_NO_IMPORTS
import "oaidl.idl";
import "comcat.idl";
import "textstor.idl";
/* import "ctfutb.idl"; */
#endif
cpp_quote("#include <winuser.h>")
cpp_quote("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
cpp_quote("#define TF_E_ALREADY_EXISTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)")
cpp_quote("EXTERN_C const CLSID CLSID_TF_ThreadMgr;")
cpp_quote("EXTERN_C const CLSID CLSID_TF_InputProcessorProfiles;")
cpp_quote("EXTERN_C const CLSID CLSID_TF_CategoryMgr;")
/* GUIDs for Categories */
cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD;")
cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH;")
cpp_quote("EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING;")
cpp_quote("EXTERN_C const GUID GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER;")
typedef [uuid(7213778c-7bb0-4270-b050-6189ee594e97)] DWORD TfEditCookie;
typedef [uuid(de403c21-89fd-4f85-8b87-64584d063fbc)] DWORD TfClientId;
typedef [uuid(88a9c478-f3ec-4763-8345-cd9250443f8d)] DWORD TfGuidAtom;
cpp_quote("#define TF_MOD_ALT 0x0001")
cpp_quote("#define TF_MOD_CONTROL 0x0002")
cpp_quote("#define TF_MOD_SHIFT 0x0004")
cpp_quote("#define TF_MOD_RALT 0x0008")
cpp_quote("#define TF_MOD_RCONTROL 0x0010")
cpp_quote("#define TF_MOD_RSHIFT 0x0020")
cpp_quote("#define TF_MOD_LALT 0x0040")
cpp_quote("#define TF_MOD_LCONTROL 0x0080")
cpp_quote("#define TF_MOD_LSHIFT 0x0100")
cpp_quote("#define TF_MOD_ON_KEYUP 0x0200")
cpp_quote("#define TF_MOD_IGNORE_ALL_MODIFIER 0x0400")
interface ITfDocumentMgr;
interface ITfContext;
interface IEnumTfDocumentMgrs;
interface IEnumTfContexts;
interface ITfFunctionProvider;
interface IEnumTfFunctionProviders;
interface ITfCompartmentMgr;
interface ITfEditSession;
interface ITfRange;
interface ITfContextView;
interface IEnumTfContextViews;
interface ITfProperty;
interface ITfReadOnlyProperty;
interface IEnumTfProperties;
interface ITfRangeBackup;
interface IEnumTfLanguageProfiles;
interface ITfEditRecord;
interface ITfCompositionView;
interface ITfKeyEventSink;
typedef [uuid(e1b5808d-1e46-4c19-84dc-68c5f5978cc8)] struct TF_LANGUAGEPROFILE
{
CLSID clsid;
LANGID langid;
GUID catid;
BOOL fActive;
GUID guidProfile;
} TF_LANGUAGEPROFILE;
typedef [uuid(77c12f95-b783-450d-879f-1cd2362c6521)] struct TF_PRESERVEDKEY
{
UINT uVKey;
UINT uModifiers;
} TF_PRESERVEDKEY;
[
object,
uuid(aa80e801-2021-11d2-93e0-0060b067b86e),
pointer_default(unique)
]
interface ITfThreadMgr: IUnknown
{
HRESULT Activate(
[out] TfClientId *ptid);
HRESULT Deactivate();
HRESULT CreateDocumentMgr(
[out] ITfDocumentMgr **ppdim);
HRESULT EnumDocumentMgrs(
[out] IEnumTfDocumentMgrs **ppEnum);
HRESULT GetFocus(
[out] ITfDocumentMgr **ppdimFocus);
HRESULT SetFocus(
[in] ITfDocumentMgr *pdimFocus);
HRESULT AssociateFocus(
[in] HWND hwnd,
[in, unique] ITfDocumentMgr *pdimNew,
[out] ITfDocumentMgr **ppdimPrev);
HRESULT IsThreadFocus(
[out] BOOL *pfThreadFocus);
HRESULT GetFunctionProvider(
[in] REFCLSID clsid,
[out] ITfFunctionProvider **ppFuncProv);
HRESULT EnumFunctionProviders(
[out] IEnumTfFunctionProviders **ppEnum);
HRESULT GetGlobalCompartment(
[out] ITfCompartmentMgr **ppCompMgr);
};
[
object,
uuid(aa80e7f4-2021-11d2-93e0-0060b067b86e),
pointer_default(unique)
]
interface ITfDocumentMgr: IUnknown
{
HRESULT CreateContext(
[in] TfClientId tidOwner,
[in] DWORD dwFlags,
[in, unique] IUnknown *punk,
[out] ITfContext **ppic,
[out] TfEditCookie *pecTextStore);
HRESULT Push(
[in] ITfContext *pic);
const DWORD TF_POPF_ALL = 0x0001;
HRESULT Pop(
[in] DWORD dwFlags);
HRESULT GetTop(
[out] ITfContext **ppic);
HRESULT GetBase(
[out] ITfContext **ppic);
HRESULT EnumContexts(
[out] IEnumTfContexts **ppEnum);
};
[
object,
uuid(aa80e7fd-2021-11d2-93e0-0060b067b86e),
pointer_default(unique)
]
interface ITfContext : IUnknown
{
const DWORD TF_ES_ASYNCDONTCARE = 0x0;
const DWORD TF_ES_SYNC = 0x1;
const DWORD TF_ES_READ = 0x2;
const DWORD TF_ES_READWRITE = 0x6;
const DWORD TF_ES_ASYNC = 0x8;
HRESULT RequestEditSession(
[in] TfClientId tid,
[in] ITfEditSession *pes,
[in] DWORD dwFlags,
[out] HRESULT *phrSession);
HRESULT InWriteSession(
[in] TfClientId tid,
[out] BOOL *pfWriteSession);
typedef [uuid(1690be9b-d3e9-49f6-8d8b-51b905af4c43)] enum { TF_AE_NONE, TF_AE_START, TF_AE_END } TfActiveSelEnd;
typedef [uuid(36ae42a4-6989-4bdc-b48a-6137b7bf2e42)] struct TF_SELECTIONSTYLE
{
TfActiveSelEnd ase;
BOOL fInterimChar;
} TF_SELECTIONSTYLE;
typedef [uuid(75eb22f2-b0bf-46a8-8006-975a3b6efcf1)] struct TF_SELECTION
{
ITfRange *range;
TF_SELECTIONSTYLE style;
} TF_SELECTION;
const ULONG TF_DEFAULT_SELECTION = TS_DEFAULT_SELECTION;
HRESULT GetSelection(
[in] TfEditCookie ec,
[in] ULONG ulIndex,
[in] ULONG ulCount,
[out, size_is(ulCount), length_is(*pcFetched)] TF_SELECTION *pSelection,
[out] ULONG *pcFetched);
HRESULT SetSelection(
[in] TfEditCookie ec,
[in] ULONG ulCount,
[in, size_is(ulCount)] const TF_SELECTION *pSelection);
HRESULT GetStart(
[in] TfEditCookie ec,
[out] ITfRange **ppStart);
HRESULT GetEnd(
[in] TfEditCookie ec,
[out] ITfRange **ppEnd);
typedef [uuid(bc7d979a-846a-444d-afef-0a9bfa82b961)] TS_STATUS TF_STATUS;
const DWORD TF_SD_READONLY = TS_SD_READONLY;
const DWORD TF_SD_LOADING = TS_SD_LOADING;
const DWORD TF_SS_DISJOINTSEL = TS_SS_DISJOINTSEL;
const DWORD TF_SS_REGIONS = TS_SS_REGIONS;
const DWORD TF_SS_TRANSITORY = TS_SS_TRANSITORY;
HRESULT GetActiveView(
[out] ITfContextView **ppView);
HRESULT EnumViews(
[out] IEnumTfContextViews **ppEnum);
HRESULT GetStatus(
[out] TF_STATUS *pdcs);
HRESULT GetProperty(
[in] REFGUID guidProp,
[out] ITfProperty **ppProp);
HRESULT GetAppProperty(
[in] REFGUID guidProp,
[out] ITfReadOnlyProperty **ppProp);
HRESULT TrackProperties(
[in, size_is(cProp)] const GUID **prgProp,
[in] ULONG cProp,
[in, size_is(cAppProp)] const GUID **prgAppProp,
[in] ULONG cAppProp,
[out] ITfReadOnlyProperty **ppProperty);
HRESULT EnumProperties(
[out] IEnumTfProperties **ppEnum);
HRESULT GetDocumentMgr(
[out] ITfDocumentMgr **ppDm);
HRESULT CreateRangeBackup(
[in] TfEditCookie ec,
[in] ITfRange *pRange,
[out] ITfRangeBackup **ppBackup);
};
[
object,
uuid(4ea48a35-60ae-446f-8fd6-e6a8d82459f7),
pointer_default(unique)
]
interface ITfSource : IUnknown
{
HRESULT AdviseSink(
[in] REFIID riid,
[in, iid_is(riid)] IUnknown *punk,
[out] DWORD *pdwCookie);
HRESULT UnadviseSink(
[in] DWORD dwCookie);
};
[
object,
local,
uuid(1F02B6C5-7842-4EE6-8A0B-9A24183A95CA),
pointer_default(unique)
]
interface ITfInputProcessorProfiles : IUnknown
{
HRESULT Register(
[in] REFCLSID rclsid);
HRESULT Unregister(
[in] REFCLSID rclsid);
HRESULT AddLanguageProfile(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfile,
[in, size_is(cchDesc)] const WCHAR *pchDesc,
[in] ULONG cchDesc,
[in, size_is(cchFile)] const WCHAR *pchIconFile,
[in] ULONG cchFile,
[in] ULONG uIconIndex);
HRESULT RemoveLanguageProfile(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfile);
HRESULT EnumInputProcessorInfo(
[out] IEnumGUID **ppEnum);
HRESULT GetDefaultLanguageProfile(
[in] LANGID langid,
[in] REFGUID catid,
[out] CLSID *pclsid,
[out] GUID *pguidProfile);
HRESULT SetDefaultLanguageProfile(
[in] LANGID langid,
[in] REFCLSID rclsid,
[in] REFGUID guidProfiles);
HRESULT ActivateLanguageProfile(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfiles);
HRESULT GetActiveLanguageProfile(
[in] REFCLSID rclsid,
[out] LANGID *plangid,
[out] GUID *pguidProfile);
HRESULT GetLanguageProfileDescription(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfile,
[out] BSTR *pbstrProfile);
HRESULT GetCurrentLanguage(
[out] LANGID *plangid);
HRESULT ChangeCurrentLanguage(
[in] LANGID langid);
HRESULT GetLanguageList(
[out] LANGID **ppLangId,
[out] ULONG *pulCount);
HRESULT EnumLanguageProfiles(
[in] LANGID langid,
[out] IEnumTfLanguageProfiles **ppEnum);
HRESULT EnableLanguageProfile(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfile,
[in] BOOL fEnable);
HRESULT IsEnabledLanguageProfile(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfile,
[out] BOOL *pfEnable);
HRESULT EnableLanguageProfileByDefault(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfile,
[in] BOOL fEnable);
HRESULT SubstituteKeyboardLayout(
[in] REFCLSID rclsid,
[in] LANGID langid,
[in] REFGUID guidProfile,
[in] HKL hKL);
};
[
object,
local,
uuid(c3acefb5-f69d-4905-938f-fcadcf4be830),
pointer_default(unique)
]
interface ITfCategoryMgr : IUnknown
{
HRESULT RegisterCategory([in] REFCLSID rclsid,
[in] REFGUID rcatid,
[in] REFGUID rguid);
HRESULT UnregisterCategory([in] REFCLSID rclsid,
[in] REFGUID rcatid,
[in] REFGUID rguid);
HRESULT EnumCategoriesInItem([in] REFGUID rguid,
[out] IEnumGUID **ppEnum);
HRESULT EnumItemsInCategory([in] REFGUID rcatid,
[out] IEnumGUID **ppEnum);
HRESULT FindClosestCategory([in] REFGUID rguid,
[out] GUID *pcatid,
[in, size_is(ulCount)] const GUID **ppcatidList,
[in] ULONG ulCount);
HRESULT RegisterGUIDDescription([in] REFCLSID rclsid,
[in] REFGUID rguid,
[in, size_is(cch)] const WCHAR *pchDesc,
[in] ULONG cch);
HRESULT UnregisterGUIDDescription([in] REFCLSID rclsid,
[in] REFGUID rguid);
HRESULT GetGUIDDescription([in] REFGUID rguid,
[out] BSTR *pbstrDesc);
HRESULT RegisterGUIDDWORD([in] REFCLSID rclsid,
[in] REFGUID rguid,
[in] DWORD dw);
HRESULT UnregisterGUIDDWORD([in] REFCLSID rclsid,
[in] REFGUID rguid);
HRESULT GetGUIDDWORD([in] REFGUID rguid,
[out] DWORD *pdw);
HRESULT RegisterGUID([in] REFGUID rguid,
[out] TfGuidAtom *pguidatom);
HRESULT GetGUID([in] TfGuidAtom guidatom,
[out] GUID *pguid);
HRESULT IsEqualTfGuidAtom([in] TfGuidAtom guidatom,
[in] REFGUID rguid,
[out] BOOL *pfEqual);
};
[
object,
uuid(8127d409-ccd3-4683-967a-b43d5b482bf7),
pointer_default(unique)
]
interface ITfTextEditSink : IUnknown
{
HRESULT OnEndEdit(
[in] ITfContext *pic,
[in] TfEditCookie ecReadOnly,
[in] ITfEditRecord *pEditRecord);
};
[
object,
uuid(5F20AA40-B57A-4F34-96AB-3576F377CC79),
pointer_default(unique)
]
interface ITfContextOwnerCompositionSink : IUnknown
{
HRESULT OnStartComposition(
[in] ITfCompositionView *pComposition,
[out] BOOL *pfOk);
HRESULT OnUpdateComposition(
[in] ITfCompositionView *pComposition,
[in] ITfRange *pRangeNew);
HRESULT OnEndComposition(
[in] ITfCompositionView *pComposition);
};
[
object,
uuid(3d61bf11-ac5f-42c8-a4cb-931bcc28c744),
pointer_default(unique)
]
interface IEnumTfLanguageProfiles : IUnknown
{
HRESULT Clone(
[out] IEnumTfLanguageProfiles **ppEnum);
HRESULT Next(
[in] ULONG ulCount,
[out, size_is(ulCount), length_is(*pcFetch)] TF_LANGUAGEPROFILE *pProfile,
[out] ULONG *pcFetch);
HRESULT Reset();
HRESULT Skip(
[in] ULONG ulCount);
};
[
object,
local,
uuid(aa80e7f7-2021-11d2-93e0-0060b067b86e),
pointer_default(unique)
]
interface ITfTextInputProcessor : IUnknown
{
HRESULT Activate(
[in] ITfThreadMgr *ptim,
[in] TfClientId tid);
HRESULT Deactivate();
};
[
object,
uuid(aa80e80e-2021-11d2-93e0-0060b067b86e),
pointer_default(unique)
]
interface ITfThreadMgrEventSink : IUnknown
{
HRESULT OnInitDocumentMgr(
[in] ITfDocumentMgr *pdim);
HRESULT OnUninitDocumentMgr(
[in] ITfDocumentMgr *pdim);
HRESULT OnSetFocus(
[in] ITfDocumentMgr *pdimFocus,
[in] ITfDocumentMgr *pdimPrevFocus);
HRESULT OnPushContext(
[in] ITfContext *pic);
HRESULT OnPopContext(
[in] ITfContext *pic);
};
[
object,
local,
uuid(aa80e7f0-2021-11d2-93e0-0060b067b86e),
pointer_default(unique)
]
interface ITfKeystrokeMgr : IUnknown
{
HRESULT AdviseKeyEventSink(
[in] TfClientId tid,
[in] ITfKeyEventSink *pSink,
[in] BOOL fForeground);
HRESULT UnadviseKeyEventSink(
[in] TfClientId tid);
HRESULT GetForeground(
[out] CLSID *pclsid);
HRESULT TestKeyDown(
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT TestKeyUp(
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT KeyDown(
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT KeyUp(
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT GetPreservedKey(
[in] ITfContext *pic,
[in] const TF_PRESERVEDKEY *pprekey,
[out] GUID *pguid);
HRESULT IsPreservedKey(
[in] REFGUID rguid,
[in] const TF_PRESERVEDKEY *pprekey,
[out] BOOL *pfRegistered);
HRESULT PreserveKey(
[in] TfClientId tid,
[in] REFGUID rguid,
[in] const TF_PRESERVEDKEY *prekey,
[in, size_is(cchDesc)] const WCHAR *pchDesc,
[in] ULONG cchDesc);
HRESULT UnpreserveKey(
[in] REFGUID rguid,
[in] const TF_PRESERVEDKEY *pprekey);
HRESULT SetPreservedKeyDescription(
[in] REFGUID rguid,
[in, size_is(cchDesc)] const WCHAR *pchDesc,
[in] ULONG cchDesc);
HRESULT GetPreservedKeyDescription(
[in] REFGUID rguid,
[out] BSTR *pbstrDesc);
HRESULT SimulatePreservedKey(
[in] ITfContext *pic,
[in] REFGUID rguid,
[out] BOOL *pfEaten);
};
[
object,
local,
uuid(aa80e7f5-2021-11d2-93e0-0060b067b86e),
pointer_default(unique)
]
interface ITfKeyEventSink : IUnknown
{
HRESULT OnSetFocus(
[in] BOOL fForeground);
HRESULT OnTestKeyDown(
[in] ITfContext *pic,
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT OnTestKeyUp(
[in] ITfContext *pic,
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT OnKeyDown(
[in] ITfContext *pic,
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT OnKeyUp(
[in] ITfContext *pic,
[in] WPARAM wParam,
[in] LPARAM lParam,
[out] BOOL *pfEaten);
HRESULT OnPreservedKey(
[in] ITfContext *pic,
[in] REFGUID rguid,
[out] BOOL *pfEaten);
};
[
object,
local,
uuid(8f1b8ad8-0b6b-4874-90c5-bd76011e8f7c),
pointer_default(unique)
]
interface ITfMessagePump : IUnknown
{
HRESULT PeekMessageA(
[out] LPMSG pMsg,
[in] HWND hwnd,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[in] UINT wRemoveMsg,
[out] BOOL *pfResult);
HRESULT GetMessageA(
[out] LPMSG pMsg,
[in] HWND hwnd,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[out] BOOL *pfResult);
HRESULT PeekMessageW(
[out] LPMSG pMsg,
[in] HWND hwnd,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[in] UINT wRemoveMsg,
[out] BOOL *pfResult);
HRESULT GetMessageW(
[out] LPMSG pMsg,
[in] HWND hwnd,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[out] BOOL *pfResult);
};
[
object,
local,
uuid(d60a7b49-1b9f-4be2-b702-47e9dc05dec3),
pointer_default(unique)
]
interface ITfClientId : IUnknown
{
HRESULT GetClientId(
[in] REFCLSID rclsid,
[out] TfClientId *ptid);
};