2 * Copyright 2008 Aric Stewart, CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 import
"textstor.idl";
23 /* import "ctfutb.idl"; */
25 cpp_quote
("#include <winuser.h>")
27 cpp_quote
("#define TF_E_STACKFULL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0501)")
28 cpp_quote
("#define TF_E_ALREADY_EXISTS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0506)")
29 cpp_quote
("EXTERN_C const CLSID CLSID_TF_ThreadMgr;")
30 cpp_quote
("EXTERN_C const CLSID CLSID_TF_InputProcessorProfiles;")
31 cpp_quote
("EXTERN_C const CLSID CLSID_TF_CategoryMgr;")
33 /* GUIDs for Categories */
34 cpp_quote
("EXTERN_C const GUID GUID_TFCAT_TIP_KEYBOARD;")
35 cpp_quote
("EXTERN_C const GUID GUID_TFCAT_TIP_SPEECH;")
36 cpp_quote
("EXTERN_C const GUID GUID_TFCAT_TIP_HANDWRITING;")
37 cpp_quote
("EXTERN_C const GUID GUID_TFCAT_DISPLAYATTRIBUTEPROVIDER;")
39 typedef [uuid(7213778c
-7bb0
-4270-b050
-6189ee594e97
)] DWORD TfEditCookie
;
40 typedef [uuid(de403c21
-89fd
-4f85
-8b87
-64584d063fbc
)] DWORD TfClientId
;
41 typedef [uuid(88a9c478
-f3ec
-4763-8345-cd9250443f8d
)] DWORD TfGuidAtom
;
43 cpp_quote
("#define TF_MOD_ALT 0x0001")
44 cpp_quote
("#define TF_MOD_CONTROL 0x0002")
45 cpp_quote
("#define TF_MOD_SHIFT 0x0004")
46 cpp_quote
("#define TF_MOD_RALT 0x0008")
47 cpp_quote
("#define TF_MOD_RCONTROL 0x0010")
48 cpp_quote
("#define TF_MOD_RSHIFT 0x0020")
49 cpp_quote
("#define TF_MOD_LALT 0x0040")
50 cpp_quote
("#define TF_MOD_LCONTROL 0x0080")
51 cpp_quote
("#define TF_MOD_LSHIFT 0x0100")
52 cpp_quote
("#define TF_MOD_ON_KEYUP 0x0200")
53 cpp_quote
("#define TF_MOD_IGNORE_ALL_MODIFIER 0x0400")
55 interface ITfDocumentMgr
;
57 interface IEnumTfDocumentMgrs
;
58 interface IEnumTfContexts
;
59 interface ITfFunctionProvider
;
60 interface IEnumTfFunctionProviders
;
61 interface ITfCompartmentMgr
;
62 interface ITfEditSession
;
64 interface ITfContextView
;
65 interface IEnumTfContextViews
;
66 interface ITfProperty
;
67 interface ITfReadOnlyProperty
;
68 interface IEnumTfProperties
;
69 interface ITfRangeBackup
;
70 interface IEnumTfLanguageProfiles
;
71 interface ITfEditRecord
;
72 interface ITfCompositionView
;
73 interface ITfKeyEventSink
;
75 typedef [uuid(e1b5808d
-1e46
-4c19
-84dc
-68c5f5978cc8
)] struct TF_LANGUAGEPROFILE
84 typedef [uuid(77c12f95
-b783
-450d
-879f
-1cd2362c6521
)] struct TF_PRESERVEDKEY
92 uuid(aa80e801
-2021-11d2
-93e0
-0060b067b86e
),
93 pointer_default(unique)
95 interface ITfThreadMgr
: IUnknown
98 [out] TfClientId
*ptid
);
100 HRESULT Deactivate
();
102 HRESULT CreateDocumentMgr
(
103 [out] ITfDocumentMgr
**ppdim
);
105 HRESULT EnumDocumentMgrs
(
106 [out] IEnumTfDocumentMgrs
**ppEnum
);
109 [out] ITfDocumentMgr
**ppdimFocus
);
112 [in] ITfDocumentMgr
*pdimFocus
);
114 HRESULT AssociateFocus
(
116 [in, unique] ITfDocumentMgr
*pdimNew
,
117 [out] ITfDocumentMgr
**ppdimPrev
);
119 HRESULT IsThreadFocus
(
120 [out] BOOL
*pfThreadFocus
);
122 HRESULT GetFunctionProvider
(
124 [out] ITfFunctionProvider
**ppFuncProv
);
126 HRESULT EnumFunctionProviders
(
127 [out] IEnumTfFunctionProviders
**ppEnum
);
129 HRESULT GetGlobalCompartment
(
130 [out] ITfCompartmentMgr
**ppCompMgr
);
136 uuid(aa80e7f4
-2021-11d2
-93e0
-0060b067b86e
),
137 pointer_default(unique)
139 interface ITfDocumentMgr
: IUnknown
141 HRESULT CreateContext
(
142 [in] TfClientId tidOwner
,
144 [in, unique] IUnknown
*punk
,
145 [out] ITfContext
**ppic
,
146 [out] TfEditCookie
*pecTextStore
);
149 [in] ITfContext
*pic
);
151 const DWORD TF_POPF_ALL
= 0x0001;
157 [out] ITfContext
**ppic
);
160 [out] ITfContext
**ppic
);
162 HRESULT EnumContexts
(
163 [out] IEnumTfContexts
**ppEnum
);
168 uuid(aa80e7fd
-2021-11d2
-93e0
-0060b067b86e
),
169 pointer_default(unique)
171 interface ITfContext
: IUnknown
173 const DWORD TF_ES_ASYNCDONTCARE
= 0x0;
174 const DWORD TF_ES_SYNC
= 0x1;
175 const DWORD TF_ES_READ
= 0x2;
176 const DWORD TF_ES_READWRITE
= 0x6;
177 const DWORD TF_ES_ASYNC
= 0x8;
179 HRESULT RequestEditSession
(
181 [in] ITfEditSession
*pes
,
183 [out] HRESULT *phrSession
);
185 HRESULT InWriteSession
(
187 [out] BOOL
*pfWriteSession
);
189 typedef [uuid(1690be9b
-d3e9
-49f6
-8d8b
-51b905af4c43
)] enum { TF_AE_NONE
, TF_AE_START
, TF_AE_END
} TfActiveSelEnd
;
191 typedef [uuid(36ae42a4
-6989-4bdc
-b48a
-6137b7bf2e42
)] struct TF_SELECTIONSTYLE
197 typedef [uuid(75eb22f2
-b0bf
-46a8
-8006-975a3b6efcf1
)] struct TF_SELECTION
200 TF_SELECTIONSTYLE style
;
203 const ULONG TF_DEFAULT_SELECTION
= TS_DEFAULT_SELECTION
;
205 HRESULT GetSelection
(
206 [in] TfEditCookie ec
,
209 [out, size_is(ulCount
), length_is(*pcFetched
)] TF_SELECTION
*pSelection
,
210 [out] ULONG
*pcFetched
);
212 HRESULT SetSelection
(
213 [in] TfEditCookie ec
,
215 [in, size_is(ulCount
)] const TF_SELECTION
*pSelection
);
218 [in] TfEditCookie ec
,
219 [out] ITfRange
**ppStart
);
222 [in] TfEditCookie ec
,
223 [out] ITfRange
**ppEnd
);
225 typedef [uuid(bc7d979a
-846a
-444d
-afef
-0a9bfa82b961
)] TS_STATUS TF_STATUS
;
226 const DWORD TF_SD_READONLY
= TS_SD_READONLY
;
227 const DWORD TF_SD_LOADING
= TS_SD_LOADING
;
228 const DWORD TF_SS_DISJOINTSEL
= TS_SS_DISJOINTSEL
;
229 const DWORD TF_SS_REGIONS
= TS_SS_REGIONS
;
230 const DWORD TF_SS_TRANSITORY
= TS_SS_TRANSITORY
;
233 HRESULT GetActiveView
(
234 [out] ITfContextView
**ppView
);
237 [out] IEnumTfContextViews
**ppEnum
);
240 [out] TF_STATUS
*pdcs
);
243 [in] REFGUID guidProp
,
244 [out] ITfProperty
**ppProp
);
246 HRESULT GetAppProperty
(
247 [in] REFGUID guidProp
,
248 [out] ITfReadOnlyProperty
**ppProp
);
250 HRESULT TrackProperties
(
251 [in, size_is(cProp
)] const GUID
**prgProp
,
253 [in, size_is(cAppProp
)] const GUID
**prgAppProp
,
255 [out] ITfReadOnlyProperty
**ppProperty
);
257 HRESULT EnumProperties
(
258 [out] IEnumTfProperties
**ppEnum
);
260 HRESULT GetDocumentMgr
(
261 [out] ITfDocumentMgr
**ppDm
);
263 HRESULT CreateRangeBackup
(
264 [in] TfEditCookie ec
,
265 [in] ITfRange
*pRange
,
266 [out] ITfRangeBackup
**ppBackup
);
272 uuid(4ea48a35
-60ae
-446f
-8fd6
-e6a8d82459f7
),
273 pointer_default(unique)
275 interface ITfSource
: IUnknown
279 [in, iid_is(riid
)] IUnknown
*punk
,
280 [out] DWORD
*pdwCookie
);
282 HRESULT UnadviseSink
(
283 [in] DWORD dwCookie
);
289 uuid(1F02B6C5
-7842-4EE6
-8A0B
-9A24183A95CA
),
290 pointer_default(unique)
292 interface ITfInputProcessorProfiles
: IUnknown
295 [in] REFCLSID rclsid
);
298 [in] REFCLSID rclsid
);
300 HRESULT AddLanguageProfile
(
301 [in] REFCLSID rclsid
,
303 [in] REFGUID guidProfile
,
304 [in, size_is(cchDesc
)] const WCHAR
*pchDesc
,
306 [in, size_is(cchFile
)] const WCHAR
*pchIconFile
,
308 [in] ULONG uIconIndex
);
310 HRESULT RemoveLanguageProfile
(
311 [in] REFCLSID rclsid
,
313 [in] REFGUID guidProfile
);
315 HRESULT EnumInputProcessorInfo
(
316 [out] IEnumGUID
**ppEnum
);
318 HRESULT GetDefaultLanguageProfile
(
322 [out] GUID
*pguidProfile
);
324 HRESULT SetDefaultLanguageProfile
(
326 [in] REFCLSID rclsid
,
327 [in] REFGUID guidProfiles
);
329 HRESULT ActivateLanguageProfile
(
330 [in] REFCLSID rclsid
,
332 [in] REFGUID guidProfiles
);
334 HRESULT GetActiveLanguageProfile
(
335 [in] REFCLSID rclsid
,
336 [out] LANGID
*plangid
,
337 [out] GUID
*pguidProfile
);
339 HRESULT GetLanguageProfileDescription
(
340 [in] REFCLSID rclsid
,
342 [in] REFGUID guidProfile
,
343 [out] BSTR *pbstrProfile
);
345 HRESULT GetCurrentLanguage
(
346 [out] LANGID
*plangid
);
348 HRESULT ChangeCurrentLanguage
(
351 HRESULT GetLanguageList
(
352 [out] LANGID
**ppLangId
,
353 [out] ULONG
*pulCount
);
355 HRESULT EnumLanguageProfiles
(
357 [out] IEnumTfLanguageProfiles
**ppEnum
);
359 HRESULT EnableLanguageProfile
(
360 [in] REFCLSID rclsid
,
362 [in] REFGUID guidProfile
,
365 HRESULT IsEnabledLanguageProfile
(
366 [in] REFCLSID rclsid
,
368 [in] REFGUID guidProfile
,
369 [out] BOOL
*pfEnable
);
371 HRESULT EnableLanguageProfileByDefault
(
372 [in] REFCLSID rclsid
,
374 [in] REFGUID guidProfile
,
377 HRESULT SubstituteKeyboardLayout
(
378 [in] REFCLSID rclsid
,
380 [in] REFGUID guidProfile
,
387 uuid(c3acefb5
-f69d
-4905-938f
-fcadcf4be830
),
388 pointer_default(unique)
390 interface ITfCategoryMgr
: IUnknown
392 HRESULT RegisterCategory
([in] REFCLSID rclsid
,
396 HRESULT UnregisterCategory
([in] REFCLSID rclsid
,
400 HRESULT EnumCategoriesInItem
([in] REFGUID rguid
,
401 [out] IEnumGUID
**ppEnum
);
403 HRESULT EnumItemsInCategory
([in] REFGUID rcatid
,
404 [out] IEnumGUID
**ppEnum
);
406 HRESULT FindClosestCategory
([in] REFGUID rguid
,
408 [in, size_is(ulCount
)] const GUID
**ppcatidList
,
411 HRESULT RegisterGUIDDescription
([in] REFCLSID rclsid
,
413 [in, size_is(cch
)] const WCHAR
*pchDesc
,
416 HRESULT UnregisterGUIDDescription
([in] REFCLSID rclsid
,
419 HRESULT GetGUIDDescription
([in] REFGUID rguid
,
420 [out] BSTR *pbstrDesc
);
422 HRESULT RegisterGUIDDWORD
([in] REFCLSID rclsid
,
426 HRESULT UnregisterGUIDDWORD
([in] REFCLSID rclsid
,
429 HRESULT GetGUIDDWORD
([in] REFGUID rguid
,
432 HRESULT RegisterGUID
([in] REFGUID rguid
,
433 [out] TfGuidAtom
*pguidatom
);
435 HRESULT GetGUID
([in] TfGuidAtom guidatom
,
438 HRESULT IsEqualTfGuidAtom
([in] TfGuidAtom guidatom
,
440 [out] BOOL
*pfEqual
);
445 uuid(8127d409
-ccd3
-4683-967a
-b43d5b482bf7
),
446 pointer_default(unique)
448 interface ITfTextEditSink
: IUnknown
451 [in] ITfContext
*pic
,
452 [in] TfEditCookie ecReadOnly
,
453 [in] ITfEditRecord
*pEditRecord
);
458 uuid(5F20AA40
-B57A
-4F34
-96AB
-3576F377CC79
),
459 pointer_default(unique)
461 interface ITfContextOwnerCompositionSink
: IUnknown
463 HRESULT OnStartComposition
(
464 [in] ITfCompositionView
*pComposition
,
467 HRESULT OnUpdateComposition
(
468 [in] ITfCompositionView
*pComposition
,
469 [in] ITfRange
*pRangeNew
);
471 HRESULT OnEndComposition
(
472 [in] ITfCompositionView
*pComposition
);
477 uuid(3d61bf11
-ac5f
-42c8
-a4cb
-931bcc28c744
),
478 pointer_default(unique)
480 interface IEnumTfLanguageProfiles
: IUnknown
483 [out] IEnumTfLanguageProfiles
**ppEnum
);
487 [out, size_is(ulCount
), length_is(*pcFetch
)] TF_LANGUAGEPROFILE
*pProfile
,
488 [out] ULONG
*pcFetch
);
499 uuid(aa80e7f7
-2021-11d2
-93e0
-0060b067b86e
),
500 pointer_default(unique)
502 interface ITfTextInputProcessor
: IUnknown
505 [in] ITfThreadMgr
*ptim
,
506 [in] TfClientId tid
);
508 HRESULT Deactivate
();
513 uuid(aa80e80e
-2021
-11d2
-93e0
-0060b067b86e
),
514 pointer_default(unique)
516 interface ITfThreadMgrEventSink
: IUnknown
518 HRESULT OnInitDocumentMgr
(
519 [in] ITfDocumentMgr
*pdim
);
521 HRESULT OnUninitDocumentMgr
(
522 [in] ITfDocumentMgr
*pdim
);
525 [in] ITfDocumentMgr
*pdimFocus
,
526 [in] ITfDocumentMgr
*pdimPrevFocus
);
528 HRESULT OnPushContext
(
529 [in] ITfContext
*pic
);
531 HRESULT OnPopContext
(
532 [in] ITfContext
*pic
);
538 uuid(aa80e7f0
-2021-11d2
-93e0
-0060b067b86e
),
539 pointer_default(unique)
541 interface ITfKeystrokeMgr
: IUnknown
543 HRESULT AdviseKeyEventSink
(
545 [in] ITfKeyEventSink
*pSink
,
546 [in] BOOL fForeground
);
548 HRESULT UnadviseKeyEventSink
(
549 [in] TfClientId tid
);
551 HRESULT GetForeground
(
552 [out] CLSID
*pclsid
);
557 [out] BOOL
*pfEaten
);
562 [out] BOOL
*pfEaten
);
567 [out] BOOL
*pfEaten
);
572 [out] BOOL
*pfEaten
);
574 HRESULT GetPreservedKey
(
575 [in] ITfContext
*pic
,
576 [in] const TF_PRESERVEDKEY
*pprekey
,
579 HRESULT IsPreservedKey
(
581 [in] const TF_PRESERVEDKEY
*pprekey
,
582 [out] BOOL
*pfRegistered
);
587 [in] const TF_PRESERVEDKEY
*prekey
,
588 [in, size_is(cchDesc
)] const WCHAR
*pchDesc
,
591 HRESULT UnpreserveKey
(
593 [in] const TF_PRESERVEDKEY
*pprekey
);
595 HRESULT SetPreservedKeyDescription
(
597 [in, size_is(cchDesc
)] const WCHAR
*pchDesc
,
600 HRESULT GetPreservedKeyDescription
(
602 [out] BSTR *pbstrDesc
);
604 HRESULT SimulatePreservedKey
(
605 [in] ITfContext
*pic
,
607 [out] BOOL
*pfEaten
);
613 uuid(aa80e7f5
-2021-11d2
-93e0
-0060b067b86e
),
614 pointer_default(unique)
616 interface ITfKeyEventSink
: IUnknown
619 [in] BOOL fForeground
);
621 HRESULT OnTestKeyDown
(
622 [in] ITfContext
*pic
,
625 [out] BOOL
*pfEaten
);
628 [in] ITfContext
*pic
,
631 [out] BOOL
*pfEaten
);
634 [in] ITfContext
*pic
,
637 [out] BOOL
*pfEaten
);
640 [in] ITfContext
*pic
,
643 [out] BOOL
*pfEaten
);
645 HRESULT OnPreservedKey
(
646 [in] ITfContext
*pic
,
648 [out] BOOL
*pfEaten
);
654 uuid(8f1b8ad8
-0b6b
-4874-90c5
-bd76011e8f7c
),
655 pointer_default(unique)
657 interface ITfMessagePump
: IUnknown
659 HRESULT PeekMessageA
(
662 [in] UINT wMsgFilterMin
,
663 [in] UINT wMsgFilterMax
,
664 [in] UINT wRemoveMsg
,
665 [out] BOOL
*pfResult
);
670 [in] UINT wMsgFilterMin
,
671 [in] UINT wMsgFilterMax
,
672 [out] BOOL
*pfResult
);
674 HRESULT PeekMessageW
(
677 [in] UINT wMsgFilterMin
,
678 [in] UINT wMsgFilterMax
,
679 [in] UINT wRemoveMsg
,
680 [out] BOOL
*pfResult
);
685 [in] UINT wMsgFilterMin
,
686 [in] UINT wMsgFilterMax
,
687 [out] BOOL
*pfResult
);
693 uuid(d60a7b49
-1b9f
-4be2
-b702
-47e9dc05dec3
),
694 pointer_default(unique)
696 interface ITfClientId
: IUnknown
699 [in] REFCLSID rclsid
,
700 [out] TfClientId
*ptid
);
705 uuid(43c9fe15
-f494
-4c17
-9de2
-b8a4ac350aa8
),
706 pointer_default(unique)
708 interface ITfLanguageProfileNotifySink
: IUnknown
710 HRESULT OnLanguageChange
(
712 [out] BOOL
*pfAccept
);
714 HRESULT OnLanguageChanged
();