1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361
|
/******************************************************************
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: Hiromu Inukai (inukai@Japan.Sun.COM) Sun Microsystems, Inc.
Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc.
******************************************************************/
#ifndef _XIMPDATA_H_
#define _XIMPDATA_H_
#include <X11/Xlib.h>
#define XIMP_40
#include "XIMProto.h"
#include "IMdkit.h"
#define IS_VERSION_40(client) \
(((XimpClient *)client)->proto_version == XIMP_VERSION_40)
/* XIMP Valid Attribute Name Definition */
#define XIMPVersion "ximpVersion"
#define XIMPType "ximpType"
#define XIMPServerVersion "ximpServerVersion"
#define XIMPVendorName "ximpVendorName"
#define XIMPExtension "ximpExtension"
#define XIMPExtStatusWin "ximpExtStatusWin"
#define XIMPExtBackFront "ximpExtBackFront"
#define XIMPExtConversion "ximpExtConversion"
#define XIMP_OPEN 0
#define XIMP_SET 1
#define XIMP_GET 2
/*
* Used in supporting extensions
*/
#define EXT_STATUS (1L<<0)
#define EXT_BACKFRONT (1L<<1)
#define EXT_CONV (1L<<2)
/*
* Active filters on focus window
*/
#define FLT_NONE (0L)
#define FLT_KEYPRESS (1L<<0)
#define FLT_KEYRELEASE (1L<<1)
#define FLT_DESTROY (1L<<2)
typedef enum {
XIMP_VERSION_35,
XIMP_VERSION_40
} XimpProtocolVersion;
#define LONG_ENOUGH 250
typedef enum {
RESET_NOTHING = 0,
RESET_BY_CMSG,
RESET_BY_PROP
} XimpResetFlag;
/*
* Data interchange structures
*/
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
} XIMPAnyStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
CARD32 keycode;
CARD32 state;
CARD32 time;
} XIMPKeyEventStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
CARD32 input_style;
CARD32 attr_mask;
Ximp_PreeditPropRec4 *pre_values;
Ximp_StatusPropRec4 *sts_values;
char *pre_font;
char *sts_font;
} XIMPICValuesStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
Window new_client_win;
long new_fwin_mask;
} XIMPClientWindowStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
Window new_focus_win;
long new_fwin_mask;
} XIMPFocusWindowStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
INT32 x;
INT32 y;
} XIMPMoveStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
long new_fwin_sel_mask;
} XIMPEventMaskNotifyStruct;
typedef struct {
INT32 operation;
INT32 mode;
} XimpExtConv;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
long ext_type;
union {
unsigned long back_front; /* for _XIMP_EXT_BACK_FRONT */
XimpExtConv conversion; /* for _XIMP_EXT_CONVERSION */
} todo;
} XIMPExtensionStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
Atom stored;
} XIMPReadPropStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
char *ctext;
} XIMPResetStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
char *ctext;
} XIMPCommitStringStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
INT32 err_req;
INT32 err_detail;
INT32 extended;
} XIMPErrorStruct;
/* Callbacks */
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
union {
int return_value; /* PreeditStart */
XIMPreeditDrawCallbackStruct draw; /* PreeditDraw */
XIMPreeditCaretCallbackStruct caret; /* PreeditCaret */
} todo;
} XIMPPreeditCBStruct;
typedef struct {
INT32 type;
CARD32 icid;
Window focus_win;
long fwin_sel_mask;
CARD32 ximp_type_mask;
Window client_win;
union {
XIMStatusDrawCallbackStruct draw; /* StatusDraw */
} todo;
} XIMPStatusCBStruct;
typedef union _IMPProtocol {
int type;
XIMPAnyStruct any;
XIMPKeyEventStruct keyevent;
XIMPICValuesStruct create;
XIMPICValuesStruct setvalue;
XIMPICValuesStruct getvalue;
XIMPAnyStruct destroy;
XIMPAnyStruct regkey;
XIMPAnyStruct setfocus;
XIMPAnyStruct unsetfocus;
XIMPClientWindowStruct clientwin;
XIMPFocusWindowStruct focuswin;
XIMPMoveStruct move;
XIMPEventMaskNotifyStruct evmasknotify;
XIMPExtensionStruct extension;
XIMPReadPropStruct readprop;
XIMPResetStruct reset;
XIMPCommitStringStruct commitstring;
XIMPErrorStruct error;
XIMPAnyStruct geometry_cb;
XIMPPreeditCBStruct preedit_cb;
XIMPStatusCBStruct status_cb;
long pad[24];
} IMPProtocol;
typedef int (*IMProtoHandler)(
#if NeedFunctionPrototypes
XIMS, IMPProtocol*
#endif
);
typedef struct _XimpClient {
CARD32 id; /* client ID */
Window focus_window;
Window client_window;
long ev_flow_type; /* event flow type */
XimpProtocolVersion proto_version; /* protocol version: 3.5 or 4.0 */
Bool is_conv_on; /* holds current conversion state */
long ev_masks; /* holds client's interest masks */
CARD32 og_code; /* holds keycode to keep matching */
CARD32 og_state; /* holds keystate to keep matching */
long filters;
struct _XimpClient *next;
} XimpClient;
typedef struct _XIMPTypeRec {
int num_of_types;
unsigned long *types;
} XIMPTypeRec;
typedef struct _XIMPAtoms {
Atom selection_owner;
Atom selection_owner2;
Atom ctext_type;
Atom version;
Atom supported_styles;
Atom supported_types;
Atom server_name;
Atom server_version;
Atom vendor_name;
Atom keys;
Atom sproc_started_keys;
Atom sproc_stopped_keys;
Atom focus;
Atom preedit;
Atom status;
Atom preedit_font;
Atom status_font;
/* for XIMP_EXTENSION */
Atom extensions;
Atom ext_statuswin;
Atom ext_backfront;
Atom ext_conversion;
/* for Callbacks */
Atom preedit_draw_data;
Atom feedbacks;
} XIMPAtoms;
/* XimpCoreRec structure */
typedef struct _XIMPCoreRec {
Display *display;
int screen;
Atom ximp_request; /* Ximp message type */
/* common IM Values */
long imvalue_mask;
Window im_window; /* IMServerWindow */
char *im_name; /* IMServerName */
char *im_locale; /* IMLocale */
XIMStyles styles; /* IMInputStyles */
XIMTriggerKeys start_keys; /* IMOnKeysList */
XIMTriggerKeys stop_keys; /* IMOffKeysList */
IMProtoHandler improto; /* IMProtoHandler */
/* XIMProtocol Dependent IM Values */
char *ximp_version; /* XIMPVersion */
XIMPTypeRec ximp_type; /* XIMPType */
char *im_version; /* XIMPServerVersion */
char *vendor; /* XIMPVendorName */
/* Atoms */
XIMPAtoms atoms;
/* XIMPExtension */
CARD32 ext_flag; /* flag for supported_extensions */
long ext_backfront; /* XIMPExtBackFront value */
/* clients table */
XimpClient *clients;
XimpClient *free_clients;
} XIMPCoreRec, *XIMPCore;
#endif /* _XIMPDATA_H_ */
|