1/******************************************************************
2
3                Copyright 1992, 1993, 1994 by FUJITSU LIMITED
4                Copyright 1993, 1994 by Sony Corporation
5
6Permission to use, copy, modify, distribute, and sell this software
7and its documentation for any purpose is hereby granted without fee,
8provided that the above copyright notice appear in all copies and that
9both that copyright notice and this permission notice appear in
10supporting documentation, and that the name of FUJITSU LIMITED and
11Sony Corporation not be used in advertising or publicity pertaining to
12distribution of the software without specific, written prior
13permission.  FUJITSU LIMITED and Sony Corporation makes no
14representations about the suitability of this software for any
15purpose.  It is provided "as is" without express or implied warranty.
16
17FUJITSU LIMITED AND SONY CORPORATION DISCLAIM ALL WARRANTIES WITH
18REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
19MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU LIMITED AND
20SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
21DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
22PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
23TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
24PERFORMANCE OF THIS SOFTWARE.
25
26  Author:   Takashi Fujiwara   FUJITSU LIMITED
27                               fujiwara@a80.tech.yk.fujitsu.co.jp
28  Motifier: Makoto Wakamatsu   Sony Corporation
29			       makoto@sm.sony.co.jp
30
31******************************************************************/
32
33#ifndef _XIMINT_H
34#define _XIMINT_H
35
36#include <stdio.h>
37#include <X11/Xutil.h>
38
39typedef struct _Xim	*Xim;
40typedef struct _Xic	*Xic;
41
42/*
43 * Input Method data
44 */
45#include "XimintP.h"
46#include "XimintL.h"
47
48/*
49 * XIM dependent data
50 */
51
52typedef struct _XimCommonPrivateRec {
53    /* This struct is also inlined in XimLocalPrivateRec, XimProtoPrivateRec. */
54    XlcConv		ctom_conv;
55    XlcConv		ctow_conv;
56    XlcConv		ctoutf8_conv;
57    XlcConv		cstomb_conv;
58    XlcConv		cstowc_conv;
59    XlcConv		cstoutf8_conv;
60    XlcConv		ucstoc_conv;
61    XlcConv		ucstoutf8_conv;
62} XimCommonPrivateRec;
63
64typedef union _XIMPrivateRec {
65    XimCommonPrivateRec  common;
66    XimLocalPrivateRec   local;
67    XimProtoPrivateRec   proto;
68} XIMPrivateRec;
69
70/*
71 * IM struct
72 */
73typedef struct _Xim {
74    XIMMethods		methods;
75    XIMCoreRec		core;
76    XIMPrivateRec	private;
77} XimRec;
78
79/*
80 * IC deprndent data
81 */
82typedef union _XICPrivateRec {
83    XicLocalPrivateRec   local;
84    XicProtoPrivateRec   proto;
85} XICPrivateRec;
86
87/*
88 * IC struct
89 */
90typedef struct _Xic {
91	XICMethods	methods;
92	XICCoreRec	core;
93	XICPrivateRec	private;
94} XicRec;
95
96typedef struct _XimDefIMValues {
97	XIMValuesList		*im_values_list;
98	XIMValuesList		*ic_values_list;
99	XIMStyles		*styles;
100	XIMCallback		 destroy_callback;
101	char			*res_name;
102	char			*res_class;
103	Bool			 visible_position;
104} XimDefIMValues;
105
106typedef struct _XimDefICValues {
107    XIMStyle			 input_style;
108    Window			 client_window;
109    Window			 focus_window;
110    unsigned long		 filter_events;
111    XICCallback			 geometry_callback;
112    char			*res_name;
113    char			*res_class;
114    XICCallback			 destroy_callback;
115    XICCallback			 preedit_state_notify_callback;
116    XICCallback			 string_conversion_callback;
117    XIMStringConversionText	 string_conversion;
118    XIMResetState		 reset_state;
119    XIMHotKeyTriggers		*hotkey;
120    XIMHotKeyState		 hotkey_state;
121    ICPreeditAttributes		 preedit_attr;
122    ICStatusAttributes		 status_attr;
123} XimDefICValues;
124
125#define XIM_MODE_IM_GET		(1 << 0)
126#define XIM_MODE_IM_SET		(1 << 1)
127#define XIM_MODE_IM_DEFAULT	(1 << 2)
128
129#define XIM_MODE_PRE_GET	(1 << 0)
130#define XIM_MODE_PRE_SET	(1 << 1)
131#define XIM_MODE_PRE_CREATE	(1 << 2)
132#define XIM_MODE_PRE_ONCE	(1 << 3)
133#define XIM_MODE_PRE_DEFAULT	(1 << 4)
134
135#define XIM_MODE_STS_GET	(1 << 5)
136#define XIM_MODE_STS_SET	(1 << 6)
137#define XIM_MODE_STS_CREATE	(1 << 7)
138#define XIM_MODE_STS_ONCE	(1 << 8)
139#define XIM_MODE_STS_DEFAULT	(1 << 9)
140
141#define XIM_MODE_IC_GET		(XIM_MODE_PRE_GET      | XIM_MODE_STS_GET)
142#define XIM_MODE_IC_SET		(XIM_MODE_PRE_SET      | XIM_MODE_STS_SET)
143#define XIM_MODE_IC_CREATE	(XIM_MODE_PRE_CREATE   | XIM_MODE_STS_CREATE)
144#define XIM_MODE_IC_ONCE	(XIM_MODE_PRE_ONCE     | XIM_MODE_STS_ONCE)
145#define XIM_MODE_IC_DEFAULT	(XIM_MODE_PRE_DEFAULT  | XIM_MODE_STS_DEFAULT)
146
147#define XIM_MODE_PRE_MASK	(XIM_MODE_PRE_GET    | XIM_MODE_PRE_SET    | \
148				 XIM_MODE_PRE_CREATE | XIM_MODE_PRE_ONCE   | \
149				 XIM_MODE_PRE_DEFAULT)
150#define XIM_MODE_STS_MASK	(XIM_MODE_STS_GET    | XIM_MODE_STS_SET    | \
151				 XIM_MODE_STS_CREATE | XIM_MODE_STS_ONCE   | \
152				 XIM_MODE_STS_DEFAULT)
153
154#define XIM_SETIMDEFAULTS	(1L << 0)
155#define XIM_SETIMVALUES		(1L << 1)
156#define XIM_GETIMVALUES		(1L << 2)
157
158#define XIM_SETICDEFAULTS	(1L << 0)
159#define XIM_CREATEIC		(1L << 1)
160#define XIM_SETICVALUES		(1L << 2)
161#define XIM_GETICVALUES		(1L << 3)
162#define XIM_PREEDIT_ATTR	(1L << 4)
163#define XIM_STATUS_ATTR		(1L << 5)
164
165#define XIM_CHECK_VALID		0
166#define XIM_CHECK_INVALID	1
167#define XIM_CHECK_ERROR		2
168
169#define FILTERD         True
170#define NOTFILTERD      False
171
172#define XIMMODIFIER		"@im="
173
174#define	XIM_TRUE	True
175#define	XIM_FALSE	False
176#define	XIM_OVERFLOW	(-1)
177
178#define BRL_UC_ROW	0x2800
179
180/*
181 * Global symbols
182 */
183
184XPointer _XimGetLocaleCode (
185    const char	*encoding_name
186);
187
188int _XimGetCharCode (
189    XPointer		conv,
190    KeySym		keysym,
191    unsigned char	*buf,
192    int			nbytes
193);
194
195unsigned int KeySymToUcs4 (
196    KeySym		keysym
197);
198
199extern Bool _XimSetIMResourceList(
200    XIMResourceList	*res_list,
201    unsigned int	*list_num
202);
203
204extern Bool _XimSetICResourceList(
205    XIMResourceList	*res_list,
206    unsigned int	*list_num
207);
208
209extern Bool _XimSetInnerIMResourceList(
210    XIMResourceList	*res_list,
211    unsigned int	*list_num
212);
213
214extern Bool _XimSetInnerICResourceList(
215    XIMResourceList	*res_list,
216    unsigned int	*list_num
217);
218
219extern Bool _XimCheckCreateICValues(
220    XIMResourceList	 res_list,
221    unsigned int	 list_num
222);
223
224extern XIMResourceList _XimGetResourceListRec(
225    XIMResourceList	 res_list,
226    unsigned int	 list_num,
227    const char		*name
228);
229
230extern void _XimSetIMMode(
231    XIMResourceList	 res_list,
232    unsigned int	 list_num
233);
234
235extern void _XimSetICMode(
236    XIMResourceList	 res_list,
237    unsigned int	 list_num,
238    XIMStyle		 style
239);
240
241extern int _XimCheckIMMode(
242    XIMResourceList	 res_list,
243    unsigned long	 mode
244);
245
246extern int _XimCheckICMode(
247    XIMResourceList	 res_list,
248    unsigned long	 mode
249);
250
251extern Bool _XimSetLocalIMDefaults(
252    Xim			 im,
253    XPointer		 top,
254    XIMResourceList	 res_list,
255    unsigned int	 list_num
256);
257
258extern Bool _XimSetICDefaults(
259    Xic			 ic,
260    XPointer		 top,
261    unsigned long	 mode,
262    XIMResourceList	 res_list,
263    unsigned int	 list_num
264);
265
266extern Bool _XimEncodeLocalIMAttr(
267    XIMResourceList	 res,
268    XPointer		 top,
269    XPointer		 val
270);
271
272extern Bool _XimEncodeLocalICAttr(
273    Xic			 ic,
274    XIMResourceList	 res,
275    XPointer		 top,
276    XIMArg		*arg,
277    unsigned long	 mode
278);
279
280extern Bool _XimCheckLocalInputStyle(
281    Xic			 ic,
282    XPointer		 top,
283    XIMArg		*values,
284    XIMStyles           *styles,
285    XIMResourceList	 res_list,
286    unsigned int	 list_num
287);
288
289extern Bool _XimDecodeLocalIMAttr(
290    XIMResourceList	 res,
291    XPointer		 top,
292    XPointer		 val
293);
294
295extern Bool _XimDecodeLocalICAttr(
296    XIMResourceList	 res,
297    XPointer		 top,
298    XPointer		 val,
299    unsigned long	mode
300);
301
302extern void _XimGetCurrentIMValues(
303    Xim			 im,
304    XimDefIMValues	*im_values
305);
306
307extern void _XimSetCurrentIMValues(
308    Xim			 im,
309    XimDefIMValues	*im_values
310);
311
312extern void _XimGetCurrentICValues(
313    Xic			 ic,
314    XimDefICValues	*ic_values
315);
316
317extern void _XimSetCurrentICValues(
318    Xic			 ic,
319    XimDefICValues	*ic_values
320);
321
322extern void _XimInitialResourceInfo(
323    void
324);
325
326extern void	 _XimParseStringFile(
327    FILE        *fp,
328    Xim          im
329);
330
331extern Bool	 _XimCheckIfLocalProcessing(
332    Xim		 im
333);
334
335extern Bool	 _XimCheckIfThaiProcessing(
336    Xim		 im
337);
338
339extern Bool	 _XimLocalOpenIM(
340    Xim		 im
341);
342
343extern Bool	 _XimThaiOpenIM(
344    Xim		 im
345);
346
347extern Bool	 _XimProtoOpenIM(
348    Xim		 im
349);
350
351extern void	 _XimLocalIMFree(
352    Xim		 im
353);
354
355extern void	 _XimThaiIMFree(
356    Xim	         im
357);
358
359extern void	 _XimProtoIMFree(
360    Xim		 im
361);
362
363extern char *	 _XimSetIMValueData(
364    Xim			 im,
365    XPointer		 top,
366    XIMArg		*arg,
367    XIMResourceList	 res_list,
368    unsigned int	 list_num
369);
370
371extern char *	 _XimGetIMValueData(
372    Xim			 im,
373    XPointer		 top,
374    XIMArg		*arg,
375    XIMResourceList	 res_list,
376    unsigned int	 list_num
377);
378
379extern char *	 _XimSetICValueData(
380    Xic			 ic,
381    XPointer		 top,
382    XIMResourceList	 res_list,
383    unsigned int	 list_num,
384    XIMArg		*arg,
385    unsigned long	 mode,
386    Bool		 flag
387);
388
389extern char *	 _XimGetICValueData(
390    Xic			 ic,
391    XPointer		 top,
392    XIMResourceList	 res_list,
393    unsigned int	 list_num,
394    XIMArg		*arg,
395    unsigned long	 mode
396);
397
398extern char *	 _XimLocalSetIMValues(
399    XIM		 im,
400    XIMArg	*arg
401);
402
403extern char *	 _XimLocalGetIMValues(
404    XIM		 im,
405    XIMArg	*arg
406);
407
408extern XIC	 _XimLocalCreateIC(
409    XIM		 im,
410    XIMArg	*arg
411);
412
413extern Bool	_XimDispatchInit(
414    Xim		 im
415);
416
417extern Bool	 _XimGetAttributeID(
418    Xim		 im,
419    CARD16	*buf
420);
421
422extern Bool	 _XimExtension(
423    Xim		 im
424);
425
426extern void	_XimDestroyIMStructureList(
427    Xim		 im
428);
429
430extern char *	_XimMakeIMAttrIDList(
431    Xim			 im,
432    XIMResourceList	 res_list,
433    unsigned int	 res_num,
434    XIMArg		*arg,
435    CARD16		*buf,
436    INT16		*len,
437    unsigned long        mode
438);
439
440extern char *	_XimMakeICAttrIDList(
441    Xic                  ic,
442    XIMResourceList	 res_list,
443    unsigned int	 res_num,
444    XIMArg		*arg,
445    CARD16		*idList,
446    INT16		*num,
447    unsigned long	 mode
448);
449
450extern char *	_XimDecodeIMATTRIBUTE(
451    Xim			 im,
452    XIMResourceList	 res_list,
453    unsigned int	 res_num,
454    CARD16		*buf,
455    INT16		 buf_len,
456    XIMArg		*arg,
457    BITMASK32		 mode
458);
459
460extern char *	_XimDecodeICATTRIBUTE(
461    Xic			 ic,
462    XIMResourceList	 res_list,
463    unsigned int	 res_num,
464    CARD16		*buf,
465    INT16		 buf_len,
466    XIMArg		*arg,
467    BITMASK32		 mode
468);
469
470extern Bool	_XimRegProtoIntrCallback(
471    Xim		 im,
472    CARD16	 major_code,
473    CARD16	 minor_code,
474    Bool	 (*proc)(
475			Xim, INT16, XPointer, XPointer
476			),
477    XPointer	 call_data
478);
479
480extern Bool	_XimErrorCallback(
481    Xim		 im,
482    INT16	 len,
483    XPointer	 data,
484    XPointer	 call_data
485);
486
487extern Bool	_XimError(
488    Xim		 im,
489    Xic		 ic,
490    CARD16	 error_code,
491    INT16	 detail_length,
492    CARD16	 type,
493    char	*detail
494);
495
496extern Bool	_XimRegisterTriggerKeysCallback(
497    Xim		 im,
498    INT16	 len,
499    XPointer	 data,
500    XPointer	 call_data
501);
502
503extern Bool	_XimSetEventMaskCallback(
504    Xim		 im,
505    INT16	 len,
506    XPointer	 data,
507    XPointer	 call_data
508);
509
510extern Bool	_XimForwardEventCallback(
511    Xim		 im,
512    INT16	 len,
513    XPointer	 data,
514    XPointer	 call_data
515);
516
517extern Bool	_XimCommitCallback(
518    Xim		 im,
519    INT16	 len,
520    XPointer	 data,
521    XPointer	 call_data
522);
523
524extern Bool	_XimSyncCallback(
525    Xim		 im,
526    INT16	 len,
527    XPointer	 data,
528    XPointer	 call_data
529);
530
531extern void	_XimFreeProtoIntrCallback(
532    Xim		 im
533);
534
535extern XIC	 _XimProtoCreateIC(
536    XIM		 im,
537    XIMArg	*arg
538);
539
540extern void	_XimRegisterServerFilter(
541    Xim		 im
542);
543
544extern void	_XimUnregisterServerFilter(
545    Xim		 im
546);
547
548extern Bool	_XimTriggerNotify(
549    Xim		 im,
550    Xic		 ic,
551    int		 mode,
552    CARD32	 idx
553);
554
555extern Bool	_XimProcSyncReply(
556    Xim		 im,
557    Xic		 ic
558);
559
560extern void	_XimSendSetFocus(
561    Xim		 im,
562    Xic		 ic
563);
564
565extern Bool	_XimForwardEvent(
566    Xic		 ic,
567    XEvent	*ev,
568    Bool	 sync
569);
570
571extern void	_XimFreeRemakeArg(
572    XIMArg	*arg
573);
574
575extern void	_XimServerDestroy(
576    Xim			im
577);
578
579extern char *	_XimEncodeIMATTRIBUTE(
580    Xim			  im,
581    XIMResourceList	  res_list,
582    unsigned int	  res_num,
583    XIMArg               *arg,
584    XIMArg		**arg_ret,
585    char		 *buf,
586    int			  size,
587    int			 *ret_len,
588    XPointer		  top,
589    unsigned long	  mode
590);
591
592extern char *	_XimEncodeICATTRIBUTE(
593    Xic			  ic,
594    XIMResourceList	  res_list,
595    unsigned int	  res_num,
596    XIMArg               *arg,
597    XIMArg		**arg_ret,
598    char		 *buf,
599    int			  size,
600    int			 *ret_len,
601    XPointer		  top,
602    BITMASK32		 *flag,
603    unsigned long	  mode
604);
605
606#ifdef EXT_MOVE
607extern Bool	_XimExtenMove(
608    Xim		 im,
609    Xic		 ic,
610    CARD32	 flag,
611    CARD16	*buf,
612    INT16	 length
613);
614#endif
615
616extern int	_Ximctstombs(
617    XIM		 im,
618    char	*from,
619    int		 from_len,
620    char	*to,
621    int		 to_len,
622    Status	*state
623);
624
625extern int	_Ximctstowcs(
626    XIM		 im,
627    char	*from,
628    int		 from_len,
629    wchar_t	*to,
630    int		 to_len,
631    Status	*state
632);
633
634extern int	_Ximctstoutf8(
635    XIM		 im,
636    char	*from,
637    int		 from_len,
638    char	*to,
639    int		 to_len,
640    Status	*state
641);
642
643extern int	_XimLcctstombs(
644    XIM		 im,
645    char	*from,
646    int		 from_len,
647    char	*to,
648    int		 to_len,
649    Status	*state
650);
651
652extern int	_XimLcctstowcs(
653    XIM		 im,
654    char	*from,
655    int		 from_len,
656    wchar_t	*to,
657    int		 to_len,
658    Status	*state
659);
660
661extern int	_XimLcctstoutf8(
662    XIM		 im,
663    char	*from,
664    int		 from_len,
665    char	*to,
666    int		 to_len,
667    Status	*state
668);
669
670extern char _XimGetMyEndian(
671    void
672);
673
674extern int	_XimCheckDataSize(
675    XPointer	 buf,
676    int		 len
677);
678
679extern void	_XimSetHeader(
680    XPointer	 buf,
681    CARD8	 major_opcode,
682    CARD8	 minor_opcode,
683    INT16	*len
684);
685
686extern Bool	_XimSync(
687    Xim		 im,
688    Xic		 ic
689);
690
691extern int	_XimProtoMbLookupString(
692    XIC		 xic,
693    XKeyEvent	*ev,
694    char	*buffer,
695    int		 bytes,
696    KeySym	*keysym,
697    Status	*state
698);
699
700extern int	_XimProtoWcLookupString(
701    XIC		 xic,
702    XKeyEvent	*ev,
703    wchar_t	*buffer,
704    int		 bytes,
705    KeySym	*keysym,
706    Status	*state
707);
708
709extern int	_XimProtoUtf8LookupString(
710    XIC		 xic,
711    XKeyEvent	*ev,
712    char	*buffer,
713    int		 bytes,
714    KeySym	*keysym,
715    Status	*state
716);
717
718extern void	_XimRegisterFilter(
719    Xic		 ic
720);
721
722extern void	_XimUnregisterFilter(
723    Xic		 ic
724);
725
726extern void	_XimReregisterFilter(
727    Xic		 ic
728);
729
730extern Status	_XimProtoEventToWire(
731    XEvent	*re,
732    xEvent	*event,
733    Bool	sw
734);
735
736extern Bool	_XimProtoWireToEvent(
737    XEvent	*re,
738    xEvent	*event,
739    Bool	 sw
740);
741
742#ifdef EXT_FORWARD
743extern Bool	_XimExtForwardKeyEvent(
744    Xic		 ic,
745    XKeyEvent	*ev,
746    Bool	 sync
747);
748#endif
749
750extern int	_XimLookupMBText(
751    Xic			 ic,
752    XKeyEvent		*event,
753    char		*buffer,
754    int			 nbytes,
755    KeySym		*keysym,
756    XComposeStatus	*status
757);
758
759extern int	_XimLookupWCText(
760    Xic			 ic,
761    XKeyEvent		*event,
762    wchar_t		*buffer,
763    int			 nbytes,
764    KeySym		*keysym,
765    XComposeStatus	*status
766);
767
768extern int	_XimLookupUTF8Text(
769    Xic			 ic,
770    XKeyEvent		*event,
771    char		*buffer,
772    int			 nbytes,
773    KeySym		*keysym,
774    XComposeStatus	*status
775);
776
777extern EVENTMASK	_XimGetWindowEventmask(
778    Xic		 ic
779);
780
781extern Xic	_XimICOfXICID(
782    Xim		im,
783    XICID	icid
784);
785
786extern void	_XimResetIMInstantiateCallback(
787    Xim         xim
788);
789
790extern Bool	_XimRegisterIMInstantiateCallback(
791    XLCd	 lcd,
792    Display	*display,
793    XrmDatabase	 rdb,
794    char	*res_name,
795    char	*res_class,
796    XIDProc	 callback,
797    XPointer	 client_data
798);
799
800extern Bool	_XimUnRegisterIMInstantiateCallback(
801    XLCd	 lcd,
802    Display	*display,
803    XrmDatabase	 rdb,
804    char	*res_name,
805    char	*res_class,
806    XIDProc	 callback,
807    XPointer	 client_data
808);
809
810extern void	_XimFreeCommitInfo(
811    Xic		 ic
812);
813
814extern Bool	_XimConnect(
815    Xim		 im
816);
817
818extern Bool	_XimShutdown(
819    Xim		 im
820);
821
822extern Bool	_XimWrite(
823    Xim		 im,
824    INT16	 len,
825    XPointer	 data
826);
827
828extern Bool	_XimRead(
829    Xim		 im,
830    INT16	*len,
831    XPointer	 data,
832    int		 data_len,
833    Bool	 (*predicate)(
834			      Xim, INT16, XPointer, XPointer
835			      ),
836    XPointer	 arg
837);
838
839extern void	_XimFlush(
840    Xim		 im
841);
842
843extern Bool	_XimFilterWaitEvent(
844    Xim		 im
845);
846
847extern void   _XimProcError(
848    Xim		im,
849    Xic		ic,
850    XPointer	data
851);
852
853#ifdef EXT_MOVE
854extern CARD32	_XimExtenArgCheck(
855    XIMArg	*arg
856);
857#endif
858
859extern Bool _XimCbDispatch(
860    Xim im,
861    INT16 len,
862    XPointer data,
863    XPointer call_data
864);
865
866extern Bool _XimLocalFilter(
867    Display		*d,
868    Window		 w,
869    XEvent		*ev,
870    XPointer		 client_data
871);
872
873extern XIMResourceList _XimGetResourceListRecByQuark(
874    XIMResourceList	 res_list,
875    unsigned int	 list_num,
876    XrmQuark		 quark
877);
878
879extern Bool _XimReconnectModeCreateIC(
880    Xic			 ic
881);
882
883extern char *_XimLocalSetICValues(
884    XIC			 ic,
885    XIMArg		*values
886);
887
888extern char * _XimLocalGetICValues(
889    XIC			 ic,
890    XIMArg		*values
891);
892
893extern int _XimLocalMbLookupString(
894    XIC			 ic,
895    XKeyEvent		*ev,
896    char		*buffer,
897    int			 bytes,
898    KeySym		*keysym,
899    Status		*status
900);
901
902extern int _XimLocalWcLookupString(
903    XIC			 ic,
904    XKeyEvent		*ev,
905    wchar_t		*buffer,
906    int			 bytes,
907    KeySym		*keysym,
908    Status		*status
909);
910
911extern int _XimLocalUtf8LookupString(
912    XIC			 ic,
913    XKeyEvent		*ev,
914    char		*buffer,
915    int			 bytes,
916    KeySym		*keysym,
917    Status		*status
918);
919
920extern Bool _XimThaiFilter(
921    Display		*d,
922    Window		 w,
923    XEvent		*ev,
924    XPointer		 client_data
925);
926
927extern XIC _XimThaiCreateIC(
928    XIM			 im,
929    XIMArg		*values
930);
931
932extern Status _XimThaiCloseIM(
933    XIM			 xim
934);
935
936#ifdef XIM_CONNECTABLE
937extern void _XimSetProtoResource(
938    Xim im
939);
940
941extern Bool _XimConnectServer(
942    Xim im
943);
944
945extern Bool _XimDelayModeSetAttr(
946    Xim			 im
947);
948
949extern void	_XimServerReconectableDestroy(
950    void
951);
952
953extern Bool _XimReCreateIC(
954    Xic			ic
955);
956
957extern Bool _XimEncodeSavedIMATTRIBUTE(
958    Xim			 im,
959    XIMResourceList	 res_list,
960    unsigned int	 res_num,
961    int			*idx,
962    char		*buf,
963    int			 size,
964    int			*ret_len,
965    XPointer		 top,
966    unsigned long	 mode
967);
968
969extern Bool _XimEncodeSavedICATTRIBUTE(
970    Xic			 ic,
971    XIMResourceList	 res_list,
972    unsigned int	 res_num,
973    int			*idx,
974    char		*buf,
975    int			 size,
976    int			*ret_len,
977    XPointer		 top,
978    unsigned long	 mode
979);
980#endif
981
982extern Bool
983_XimRegisterDispatcher(
984    Xim          im,
985    Bool         (*callback)(
986                             Xim, INT16, XPointer, XPointer
987                             ),
988    XPointer     call_data);
989
990extern Bool
991_XimRespSyncReply(
992    Xic          ic,
993    BITMASK16    mode);
994
995#endif /* _XIMINT_H */
996