Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
Close stale issues and PRs / stale (push) Has been cancelled
475 lines
9.8 KiB
C
475 lines
9.8 KiB
C
/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
|
|
/******************************************************************
|
|
|
|
Copyright (C) 1994-1995 Sun Microsystems, Inc.
|
|
Copyright (C) 1993-1994 Hewlett-Packard Company
|
|
Copyright (C) 2014 Peng Huang <shawn.p.huang@gmail.com>
|
|
Copyright (C) 2014 Red Hat, Inc.
|
|
|
|
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 <X11/Xlib.h>
|
|
#include <X11/Xfuncs.h>
|
|
#include <X11/Xos.h>
|
|
#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 <stddef.h>
|
|
#include <stdlib.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"
|
|
|
|
typedef struct _NimfXim NimfXim;
|
|
|
|
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
|
|
{
|
|
Atom key;
|
|
unsigned long offset;
|
|
} Xi18nAtomOffsetPair;
|
|
|
|
typedef struct
|
|
{
|
|
size_t capacity;
|
|
size_t size;
|
|
Xi18nAtomOffsetPair *data;
|
|
} Xi18nOffsetCache;
|
|
|
|
typedef struct _Xi18nClient
|
|
{
|
|
int connect_id;
|
|
CARD8 byte_order;
|
|
/*
|
|
'?': initial value
|
|
'B': for Big-Endian
|
|
'l': for little-endian
|
|
*/
|
|
int sync;
|
|
XIMPending *pending;
|
|
Xi18nOffsetCache offset_cache;
|
|
void *trans_rec; /* contains transport specific data */
|
|
struct _Xi18nClient *next;
|
|
} Xi18nClient;
|
|
|
|
/*
|
|
* 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) (NimfXim *, IMProtocol*, void*);
|
|
|
|
/* Xi18nAddressRec structure */
|
|
typedef struct _Xi18nAddressRec
|
|
{
|
|
/* 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];
|
|
/* clients table */
|
|
Xi18nClient *clients;
|
|
Xi18nClient *free_clients;
|
|
} Xi18nAddressRec;
|
|
|
|
#endif
|
|
|