From bfbf55700091bb6084b3cbe151a762816db0e3f0 Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Wed, 11 Apr 2012 03:12:40 +0200 Subject: initial import --- IMdkit/Xi18n.h | 507 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 507 insertions(+) create mode 100644 IMdkit/Xi18n.h (limited to 'IMdkit/Xi18n.h') diff --git a/IMdkit/Xi18n.h b/IMdkit/Xi18n.h new file mode 100644 index 0000000..e673f54 --- /dev/null +++ b/IMdkit/Xi18n.h @@ -0,0 +1,507 @@ +/****************************************************************** + + Copyright 1994, 1995 by Sun Microsystems, Inc. + Copyright 1993, 1994 by Hewlett-Packard Company + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Sun Microsystems, Inc. +and Hewlett-Packard not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. +Sun Microsystems, Inc. and Hewlett-Packard make no representations about +the suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. + + This version tidied and debugged by Steve Underwood May 1999 + +******************************************************************/ + +#ifndef _Xi18n_h +#define _Xi18n_h +#include +#include +#include +#include "XimProto.h" + +/* + * Minor Protocol Number for Extension Protocol + */ +#define XIM_EXTENSION 128 +#define XIM_EXT_SET_EVENT_MASK (0x30) +#define XIM_EXT_FORWARD_KEYEVENT (0x32) +#define XIM_EXT_MOVE (0x33) +#define COMMON_EXTENSIONS_NUM 3 + +#include +#include "IMdkit.h" + +/* XI18N Valid Attribute Name Definition */ +#define ExtForwardKeyEvent "extForwardKeyEvent" +#define ExtMove "extMove" +#define ExtSetEventMask "extSetEventMask" + +/* + * Padding macro + */ +#define IMPAD(length) ((4 - ((length)%4))%4) + +/* + * Target Atom for Transport Connection + */ +#define LOCALES "LOCALES" +#define TRANSPORT "TRANSPORT" + +#define I18N_OPEN 0 +#define I18N_SET 1 +#define I18N_GET 2 + +typedef struct +{ + char *transportname; + int namelen; + Bool (*checkAddr) (); +} TransportSW; + +typedef struct _XIMPending +{ + unsigned char *p; + struct _XIMPending *next; +} XIMPending; + +typedef struct _XimProtoHdr +{ + CARD8 major_opcode; + CARD8 minor_opcode; + CARD16 length; +} XimProtoHdr; + +typedef struct +{ + CARD16 attribute_id; + CARD16 type; + CARD16 length; + char *name; +} XIMAttr; + +typedef struct +{ + CARD16 attribute_id; + CARD16 type; + CARD16 length; + char *name; +} XICAttr; + +typedef struct +{ + int attribute_id; + CARD16 name_length; + char *name; + int value_length; + void *value; + int type; +} XIMAttribute; + +typedef struct +{ + int attribute_id; + CARD16 name_length; + char *name; + int value_length; + void *value; + int type; +} XICAttribute; + +typedef struct +{ + int length; + char *name; +} XIMStr; + +typedef struct +{ + CARD16 major_opcode; + CARD16 minor_opcode; + CARD16 length; + char *name; +} XIMExt; + +typedef struct _Xi18nClient +{ + int connect_id; + CARD8 byte_order; + /* + '?': initial value + 'B': for Big-Endian + 'l': for little-endian + */ + int sync; + XIMPending *pending; + /* property offset to read next data */ + long property_offset; + void *trans_rec; /* contains transport specific data */ + struct _Xi18nClient *next; +} Xi18nClient; + +typedef struct _Xi18nCore *Xi18n; + +/* + * Callback Struct for XIM Protocol + */ +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; +} IMAnyStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD8 byte_order; + CARD16 major_version; + CARD16 minor_version; +} IMConnectStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; +} IMDisConnectStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + XIMStr lang; +} IMOpenStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; +} IMCloseStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 number; + XIMStr *extension; +} IMQueryExtensionStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 number; + char **im_attr_list; +} IMGetIMValuesStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + CARD16 preedit_attr_num; + CARD16 status_attr_num; + CARD16 ic_attr_num; + XICAttribute *preedit_attr; + XICAttribute *status_attr; + XICAttribute *ic_attr; +} IMChangeICStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; +} IMDestroyICStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + CARD16 length; + char *commit_string; +} IMResetICStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; +} IMChangeFocusStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + BITMASK16 sync_bit; + CARD16 serial_number; + XEvent event; +} IMForwardEventStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + CARD16 flag; + KeySym keysym; + char *commit_string; +} IMCommitStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + CARD32 flag; + CARD32 key_index; + CARD32 event_mask; +} IMTriggerNotifyStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 encoding_number; + XIMStr *encoding; /* name information */ + CARD16 encoding_info_number; + XIMStr *encodinginfo; /* detailed information */ + CARD16 category; /* #0 for name, #1 for detail */ + INT16 enc_index; /* index of the encoding determined */ +} IMEncodingNegotiationStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + CARD32 flag; + CARD32 forward_event_mask; + CARD32 sync_event_mask; +} IMSetEventMaskStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + CARD32 filter_event_mask; + CARD32 intercept_event_mask; + CARD32 select_event_mask; + CARD32 forward_event_mask; + CARD32 sync_event_mask; +} IMExtSetEventMaskStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + CARD16 x; + CARD16 y; +} IMMoveStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + BITMASK16 flag; + CARD16 error_code; + CARD16 str_length; + CARD16 error_type; + char *error_detail; +} IMErrorStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; +} IMPreeditStateStruct; + +/* Callbacks */ +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; +} IMGeometryCBStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + union + { + int return_value; /* PreeditStart */ + XIMPreeditDrawCallbackStruct draw; /* PreeditDraw */ + XIMPreeditCaretCallbackStruct caret; /* PreeditCaret */ + } todo; +} IMPreeditCBStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + union + { + XIMStatusDrawCallbackStruct draw; /* StatusDraw */ + } todo; +} IMStatusCBStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; + XIMStringConversionCallbackStruct strconv; +} IMStrConvCBStruct; + +typedef struct +{ + int major_code; + int minor_code; + CARD16 connect_id; + CARD16 icid; +} IMSyncXlibStruct; + +typedef union _IMProtocol +{ + int major_code; + IMAnyStruct any; + IMConnectStruct imconnect; + IMDisConnectStruct imdisconnect; + IMOpenStruct imopen; + IMCloseStruct imclose; + IMQueryExtensionStruct queryext; + IMGetIMValuesStruct getim; + IMEncodingNegotiationStruct encodingnego; + IMExtSetEventMaskStruct extsetevent; + IMMoveStruct extmove; + IMSetEventMaskStruct setevent; + IMChangeICStruct changeic; + IMDestroyICStruct destroyic; + IMResetICStruct resetic; + IMChangeFocusStruct changefocus; + IMCommitStruct commitstring; + IMForwardEventStruct forwardevent; + IMTriggerNotifyStruct triggernotify; + IMPreeditStateStruct preedit_state; + IMErrorStruct imerror; + IMGeometryCBStruct geometry_callback; + IMPreeditCBStruct preedit_callback; + IMStatusCBStruct status_callback; + IMStrConvCBStruct strconv_callback; + IMSyncXlibStruct sync_xlib; + long pad[32]; +} IMProtocol; + +typedef int (*IMProtoHandler) (XIMS, IMProtocol*); + +#define DEFAULT_FILTER_MASK (KeyPressMask) + +/* Xi18nAddressRec structure */ +typedef struct _Xi18nAddressRec +{ + Display *dpy; + CARD8 im_byteOrder; /* byte order 'B' or 'l' */ + /* IM Values */ + long imvalue_mask; + Window im_window; /* IMServerWindow */ + char *im_name; /* IMServerName */ + char *im_locale; /* IMLocale */ + char *im_addr; /* IMServerTransport */ + XIMStyles input_styles; /* IMInputStyles */ + XIMTriggerKeys on_keys; /* IMOnKeysList */ + XIMTriggerKeys off_keys; /* IMOffKeysList */ + XIMEncodings encoding_list; /* IMEncodingList */ + IMProtoHandler improto; /* IMProtocolHander */ + long filterevent_mask; /* IMFilterEventMask */ + /* XIM_SERVERS target Atoms */ + Atom selection; + Atom Localename; + Atom Transportname; + /* XIM/XIC Attr */ + int im_attr_num; + XIMAttr *xim_attr; + int ic_attr_num; + XICAttr *xic_attr; + CARD16 preeditAttr_id; + CARD16 statusAttr_id; + CARD16 separatorAttr_id; + /* XIMExtension List */ + int ext_num; + XIMExt extension[COMMON_EXTENSIONS_NUM]; + /* transport specific connection address */ + void *connect_addr; + /* actual data is defined: + XSpecRec in Xi18nX.h for X-based connection. + TransSpecRec in Xi18nTr.h for Socket-based connection. + */ + /* clients table */ + Xi18nClient *clients; + Xi18nClient *free_clients; +} Xi18nAddressRec; + +typedef struct _Xi18nMethodsRec +{ + Bool (*begin) (XIMS); + Bool (*end) (XIMS); + Bool (*send) (XIMS, CARD16, unsigned char*, long); + Bool (*wait) (XIMS, CARD16, CARD8, CARD8); + Bool (*disconnect) (XIMS, CARD16); +} Xi18nMethodsRec; + +typedef struct _Xi18nCore +{ + Xi18nAddressRec address; + Xi18nMethodsRec methods; +} Xi18nCore; + +#endif + -- cgit v1.2.3