XimintP.h revision 61b2299d
11ab64890Smrg/* $Xorg: XimintP.h,v 1.3 2000/08/17 19:45:05 cpqbld Exp $ */ 21ab64890Smrg/****************************************************************** 31ab64890Smrg 41ab64890Smrg Copyright 1991, 1992 by Sun Microsystems, Inc. 51ab64890Smrg Copyright 1992, 1993, 1994 by FUJITSU LIMITED 61ab64890Smrg Copyright 1993, 1994 by Sony Corporation 71ab64890Smrg 81ab64890SmrgPermission to use, copy, modify, distribute, and sell this software and 91ab64890Smrgits documentation for any purpose is hereby granted without fee, provided 101ab64890Smrgthat the above copyright notice appear in all copies and that both that 111ab64890Smrgcopyright notice and this permission notice appear in supporting 121ab64890Smrgdocumentation, and that the name of Sun Microsystems, Inc., FUJITSU 131ab64890SmrgLIMITED and Sony Corporation not be used in advertising or publicity 141ab64890Smrgpertaining to distribution of the software without specific, written 151ab64890Smrgprior permission. Sun Microsystems, Inc., FUJITSU LIMITED and Sony 161ab64890SmrgCorporation makes no representations about the suitability of this 171ab64890Smrgsoftware for any purpose. It is provided "as is" without express or 1861b2299dSmrgimplied warranty. 191ab64890Smrg 201ab64890SmrgSun Microsystems Inc. ,FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL 211ab64890SmrgWARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES 221ab64890SmrgOF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL Sun Microsystems, Inc., 231ab64890SmrgFUJITSU LIMITED, SONY CORPORATIN BE LIABLE FOR ANY SPECIAL, INDIRECT OR 241ab64890SmrgCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 251ab64890SmrgUSE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 261ab64890SmrgOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 271ab64890SmrgPERFORMANCE OF THIS SOFTWARE. 281ab64890Smrg 291ab64890Smrg Author: Hideki Hiura (hhiura@Sun.COM) Sun Microsystems, Inc. 3061b2299dSmrg Takashi Fujiwara FUJITSU LIMITED 311ab64890Smrg fujiwara@a80.tech.yk.fujitsu.co.jp 321ab64890Smrg Makoto Wakamatsu Sony Corporation 331ab64890Smrg makoto@sm.sony.co.jp 341ab64890Smrg Hiroyuki Miyamoto Digital Equipment Corporation 351ab64890Smrg miyamoto@jrd.dec.com 361ab64890Smrg 371ab64890Smrg******************************************************************/ 381ab64890Smrg/* $XFree86: xc/lib/X11/XimintP.h,v 1.7 2001/01/17 19:41:49 dawes Exp $ */ 391ab64890Smrg 401ab64890Smrg#ifndef _XIMINTP_H 411ab64890Smrg#define _XIMINTP_H 421ab64890Smrg 431ab64890Smrg#include "XimProto.h" 441ab64890Smrg#include "XlcPublic.h" 451ab64890Smrg 461ab64890Smrg/* 471ab64890Smrg * for protocol layer callback function 481ab64890Smrg */ 491ab64890Smrgtypedef Bool (*XimProtoIntrProc)( 501ab64890Smrg Xim, INT16, XPointer, XPointer 511ab64890Smrg); 521ab64890Smrgtypedef struct _XimProtoIntrRec { 531ab64890Smrg XimProtoIntrProc func; 541ab64890Smrg CARD16 major_code; 551ab64890Smrg CARD16 minor_code; 561ab64890Smrg XPointer call_data; 571ab64890Smrg struct _XimProtoIntrRec *next; 581ab64890Smrg} XimProtoIntrRec; 591ab64890Smrg 601ab64890Smrg/* 611ab64890Smrg * for transport layer methods 621ab64890Smrg */ 631ab64890Smrgtypedef Bool (*XimTransConnectProc)( 641ab64890Smrg Xim 651ab64890Smrg); 661ab64890Smrgtypedef Bool (*XimTransShutdownProc)( 671ab64890Smrg Xim 681ab64890Smrg); 691ab64890Smrgtypedef Bool (*XimTransWriteProc)( 701ab64890Smrg Xim, INT16, XPointer 711ab64890Smrg); 721ab64890Smrgtypedef Bool (*XimTransReadProc)( 731ab64890Smrg Xim, XPointer, int, int * 741ab64890Smrg); 751ab64890Smrgtypedef void (*XimTransFlushProc)( 761ab64890Smrg Xim 771ab64890Smrg); 781ab64890Smrgtypedef Bool (*XimTransRegDispatcher)( 791ab64890Smrg Xim, Bool (*)(Xim, INT16, XPointer, XPointer), XPointer 801ab64890Smrg); 811ab64890Smrgtypedef Bool (*XimTransCallDispatcher)( 821ab64890Smrg Xim, INT16, XPointer 831ab64890Smrg); 841ab64890Smrg 851ab64890Smrg/* 861ab64890Smrg * private part of IM 871ab64890Smrg */ 881ab64890Smrgtypedef struct _XimProtoPrivateRec { 891ab64890Smrg /* The first fields are identical with XimCommonPrivateRec. */ 901ab64890Smrg XlcConv ctom_conv; 911ab64890Smrg XlcConv ctow_conv; 921ab64890Smrg XlcConv ctoutf8_conv; 931ab64890Smrg XlcConv cstomb_conv; 941ab64890Smrg XlcConv cstowc_conv; 951ab64890Smrg XlcConv cstoutf8_conv; 961ab64890Smrg XlcConv ucstoc_conv; 971ab64890Smrg XlcConv ucstoutf8_conv; 981ab64890Smrg 991ab64890Smrg Window im_window; 1001ab64890Smrg XIMID imid; 1011ab64890Smrg CARD16 unused; 1021ab64890Smrg XIMStyles *default_styles; 1031ab64890Smrg CARD32 *im_onkeylist; 1041ab64890Smrg CARD32 *im_offkeylist; 1051ab64890Smrg BITMASK32 flag; 1061ab64890Smrg 1071ab64890Smrg BITMASK32 registed_filter_event; 1081ab64890Smrg EVENTMASK forward_event_mask; 1091ab64890Smrg EVENTMASK synchronous_event_mask; 1101ab64890Smrg 1111ab64890Smrg XimProtoIntrRec *intrproto; 1121ab64890Smrg XIMResourceList im_inner_resources; 1131ab64890Smrg unsigned int im_num_inner_resources; 1141ab64890Smrg XIMResourceList ic_inner_resources; 1151ab64890Smrg unsigned int ic_num_inner_resources; 1161ab64890Smrg char *hold_data; 1171ab64890Smrg int hold_data_len; 1181ab64890Smrg char *locale_name; 1191ab64890Smrg CARD16 protocol_major_version; 1201ab64890Smrg CARD16 protocol_minor_version; 1211ab64890Smrg XrmQuark *saved_imvalues; 1221ab64890Smrg int num_saved_imvalues; 1231ab64890Smrg 1241ab64890Smrg /* 1251ab64890Smrg * transport specific 1261ab64890Smrg */ 1271ab64890Smrg XimTransConnectProc connect; 1281ab64890Smrg XimTransShutdownProc shutdown; 1291ab64890Smrg XimTransWriteProc write; 1301ab64890Smrg XimTransReadProc read; 1311ab64890Smrg XimTransFlushProc flush; 1321ab64890Smrg XimTransRegDispatcher register_dispatcher; 1331ab64890Smrg XimTransCallDispatcher call_dispatcher; 1341ab64890Smrg XPointer spec; 1351ab64890Smrg} XimProtoPrivateRec; 1361ab64890Smrg 1371ab64890Smrg/* 1381ab64890Smrg * bit mask for the flag of XIMPrivateRec 1391ab64890Smrg */ 1401ab64890Smrg#define SERVER_CONNECTED (1L) 1411ab64890Smrg#define DYNAMIC_EVENT_FLOW (1L << 1) 1421ab64890Smrg#define USE_AUTHORIZATION_FUNC (1L << 2) 1431ab64890Smrg#ifdef XIM_CONNECTABLE 1441ab64890Smrg#define DELAYBINDABLE (1L << 3) 1451ab64890Smrg#define RECONNECTABLE (1L << 4) 1461ab64890Smrg#endif /* XIM_CONNECTABLE */ 1471ab64890Smrg 1481ab64890Smrg/* 1491ab64890Smrg * macro for the flag of XIMPrivateRec 1501ab64890Smrg */ 1511ab64890Smrg#define IS_SERVER_CONNECTED(im) \ 1521ab64890Smrg ((((Xim)im))->private.proto.flag & SERVER_CONNECTED) 1531ab64890Smrg#define MARK_SERVER_CONNECTED(im) \ 1541ab64890Smrg ((((Xim)im))->private.proto.flag |= SERVER_CONNECTED) 1551ab64890Smrg#define UNMARK_SERVER_CONNECTED(im) \ 1561ab64890Smrg ((((Xim)im))->private.proto.flag &= ~SERVER_CONNECTED) 1571ab64890Smrg 1581ab64890Smrg#define IS_DYNAMIC_EVENT_FLOW(im) \ 1591ab64890Smrg (((Xim)im)->private.proto.flag & DYNAMIC_EVENT_FLOW) 1601ab64890Smrg#define MARK_DYNAMIC_EVENT_FLOW(im) \ 1611ab64890Smrg (((Xim)im)->private.proto.flag |= DYNAMIC_EVENT_FLOW) 1621ab64890Smrg 1631ab64890Smrg#define IS_USE_AUTHORIZATION_FUNC(im) \ 1641ab64890Smrg (((Xim)im)->private.proto.flag & USE_AUTHORIZATION_FUNC) 1651ab64890Smrg#define MARK_USE_AUTHORIZATION_FUNC(im) \ 1661ab64890Smrg (((Xim)im)->private.proto.flag |= USE_AUTHORIZATION_FUNC) 1671ab64890Smrg 1681ab64890Smrg#ifdef XIM_CONNECTABLE 1691ab64890Smrg#define IS_DELAYBINDABLE(im) \ 1701ab64890Smrg (((Xim)im)->private.proto.flag & DELAYBINDABLE) 1711ab64890Smrg#define MARK_DELAYBINDABLE(im) \ 1721ab64890Smrg (((Xim)im)->private.proto.flag |= DELAYBINDABLE) 1731ab64890Smrg 1741ab64890Smrg#define IS_RECONNECTABLE(im) \ 1751ab64890Smrg (((Xim)im)->private.proto.flag & RECONNECTABLE) 1761ab64890Smrg#define MARK_RECONNECTABLE(im) \ 1771ab64890Smrg (((Xim)im)->private.proto.flag |= RECONNECTABLE) 1781ab64890Smrg 1791ab64890Smrg#define IS_CONNECTABLE(im) \ 1801ab64890Smrg (((Xim)im)->private.proto.flag & (DELAYBINDABLE|RECONNECTABLE)) 1811ab64890Smrg#define UNMAKE_CONNECTABLE(im) \ 1821ab64890Smrg (((Xim)im)->private.proto.flag &= ~(DELAYBINDABLE|RECONNECTABLE)) 1831ab64890Smrg#endif /* XIM_CONNECTABLE */ 1841ab64890Smrg 1851ab64890Smrg/* 1861ab64890Smrg * bit mask for the register_filter_event of XIMPrivateRec/XICPrivateRec 1871ab64890Smrg */ 1881ab64890Smrg#define KEYPRESS_MASK (1L) 1891ab64890Smrg#define KEYRELEASE_MASK (1L << 1) 1901ab64890Smrg#define DESTROYNOTIFY_MASK (1L << 2) 1911ab64890Smrg 1921ab64890Smrgtypedef struct _XimCommitInfoRec { 1931ab64890Smrg struct _XimCommitInfoRec *next; 1941ab64890Smrg char *string; 1951ab64890Smrg int string_len; 1961ab64890Smrg KeySym *keysym; 1971ab64890Smrg int keysym_len; 1981ab64890Smrg} XimCommitInfoRec, *XimCommitInfo; 1991ab64890Smrg 2001ab64890Smrgtypedef struct _XimPendingCallback { 2011ab64890Smrg int major_opcode; 2021ab64890Smrg Xim im; 2031ab64890Smrg Xic ic; 2041ab64890Smrg char *proto; 2051ab64890Smrg int proto_len; 2061ab64890Smrg struct _XimPendingCallback *next; 2071ab64890Smrg} XimPendingCallbackRec, *XimPendingCallback; 2081ab64890Smrg 2091ab64890Smrg 2101ab64890Smrg/* 2111ab64890Smrg * private part of IC 2121ab64890Smrg */ 2131ab64890Smrgtypedef struct _XicProtoPrivateRec { 2141ab64890Smrg XICID icid; /* ICID */ 2151ab64890Smrg CARD16 dmy; 2161ab64890Smrg BITMASK32 flag; /* Input Mode */ 2171ab64890Smrg 2181ab64890Smrg BITMASK32 registed_filter_event; /* registed filter mask */ 2191ab64890Smrg EVENTMASK forward_event_mask; /* forward event mask */ 2201ab64890Smrg EVENTMASK synchronous_event_mask;/* sync event mask */ 2211ab64890Smrg EVENTMASK filter_event_mask; /* negrect event mask */ 2221ab64890Smrg EVENTMASK intercept_event_mask; /* deselect event mask */ 2231ab64890Smrg EVENTMASK select_event_mask; /* select event mask */ 2241ab64890Smrg 2251ab64890Smrg char *preedit_font; /* Base font name list */ 2261ab64890Smrg int preedit_font_length; /* length of base font name */ 2271ab64890Smrg char *status_font; /* Base font name list */ 2281ab64890Smrg int status_font_length; /* length of base font name */ 2291ab64890Smrg 2301ab64890Smrg XimCommitInfo commit_info; 2311ab64890Smrg XIMResourceList ic_resources; 2321ab64890Smrg unsigned int ic_num_resources; 2331ab64890Smrg XIMResourceList ic_inner_resources; 2341ab64890Smrg unsigned int ic_num_inner_resources; 2351ab64890Smrg XrmQuark *saved_icvalues; 2361ab64890Smrg int num_saved_icvalues; 2371ab64890Smrg XimPendingCallback pend_cb_que; 2381ab64890Smrg Bool waitCallback; 2391ab64890Smrg} XicProtoPrivateRec ; 2401ab64890Smrg 2411ab64890Smrg/* 2421ab64890Smrg * bit mask for the flag of XICPrivateRec 2431ab64890Smrg */ 2441ab64890Smrg#define IC_CONNECTED (1L) 2451ab64890Smrg#define FABLICATED (1L << 1) 2461ab64890Smrg#define NEED_SYNC_REPLY (1L << 2) 2471ab64890Smrg#define FOCUSED (1L << 3) 2481ab64890Smrg 2491ab64890Smrg/* 2501ab64890Smrg * macro for the flag of XICPrivateRec 2511ab64890Smrg */ 2521ab64890Smrg#define IS_IC_CONNECTED(ic) \ 2531ab64890Smrg (((Xic)ic)->private.proto.flag & IC_CONNECTED) 2541ab64890Smrg#define MARK_IC_CONNECTED(ic) \ 2551ab64890Smrg (((Xic)ic)->private.proto.flag |= IC_CONNECTED) 2561ab64890Smrg#define UNMARK_IC_CONNECTED(ic) \ 2571ab64890Smrg (((Xic)ic)->private.proto.flag &= ~IC_CONNECTED) 2581ab64890Smrg 2591ab64890Smrg#define IS_FABLICATED(ic) \ 2601ab64890Smrg (((Xic)ic)->private.proto.flag & FABLICATED) 2611ab64890Smrg#define MARK_FABLICATED(ic) \ 2621ab64890Smrg (((Xic)ic)->private.proto.flag |= FABLICATED) 2631ab64890Smrg#define UNMARK_FABLICATED(ic) \ 2641ab64890Smrg (((Xic)ic)->private.proto.flag &= ~FABLICATED) 2651ab64890Smrg 2661ab64890Smrg#define IS_NEED_SYNC_REPLY(ic) \ 2671ab64890Smrg (((Xic)ic)->private.proto.flag & NEED_SYNC_REPLY) 2681ab64890Smrg#define MARK_NEED_SYNC_REPLY(ic) \ 2691ab64890Smrg (((Xic)ic)->private.proto.flag |= NEED_SYNC_REPLY) 2701ab64890Smrg#define UNMARK_NEED_SYNC_REPLY(ic) \ 2711ab64890Smrg (((Xic)ic)->private.proto.flag &= ~NEED_SYNC_REPLY) 2721ab64890Smrg 2731ab64890Smrg#define IS_FOCUSED(ic) \ 2741ab64890Smrg (((Xic)ic)->private.proto.flag & FOCUSED) 2751ab64890Smrg#define MARK_FOCUSED(ic) \ 2761ab64890Smrg (((Xic)ic)->private.proto.flag |= FOCUSED) 2771ab64890Smrg#define UNMARK_FOCUSED(ic) \ 2781ab64890Smrg (((Xic)ic)->private.proto.flag &= ~FOCUSED) 2791ab64890Smrg 2801ab64890Smrg/* 2811ab64890Smrg * macro for the filter_event_mask of XICPrivateRec 2821ab64890Smrg */ 2831ab64890Smrg#define IS_NEGLECT_EVENT(ic, mask) \ 2841ab64890Smrg (((Xic)ic)->private.proto.filter_event_mask & (mask)) 2851ab64890Smrg 2861ab64890Smrg/* 2871ab64890Smrg * macro for the forward_event_mask of XICPrivateRec 2881ab64890Smrg */ 2891ab64890Smrg#define IS_FORWARD_EVENT(ic, mask) \ 2901ab64890Smrg (((Xic)ic)->private.proto.forward_event_mask & (mask)) 2911ab64890Smrg 2921ab64890Smrg/* 2931ab64890Smrg * macro for the synchronous_event_mask of XICPrivateRec 2941ab64890Smrg */ 2951ab64890Smrg#define IS_SYNCHRONOUS_EVENT(ic, mask) \ 2961ab64890Smrg ((((Xic)ic)->private.proto.synchronous_event_mask & (mask)) ? True: False) 2971ab64890Smrg 2981ab64890Smrg#define XIM_MAXIMNAMELEN 64 2991ab64890Smrg#define XIM_MAXLCNAMELEN 64 3001ab64890Smrg 3011ab64890Smrg#endif /* _XIMINTP_H */ 302