1/****************************************************************** 2 3 Copyright 1992, 1993 by FUJITSU LIMITED 4 5Permission to use, copy, modify, distribute, and sell this software 6and its documentation for any purpose is hereby granted without fee, 7provided that the above copyright notice appear in all copies and 8that both that copyright notice and this permission notice appear 9in supporting documentation, and that the name of FUJITSU LIMITED 10not be used in advertising or publicity pertaining to distribution 11of the software without specific, written prior permission. 12FUJITSU LIMITED makes no representations about the suitability of 13this software for any purpose. 14It is provided "as is" without express or implied warranty. 15 16FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 17INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 18EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR 19CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 20USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 21OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22PERFORMANCE OF THIS SOFTWARE. 23 24 Author: Takashi Fujiwara FUJITSU LIMITED 25 fujiwara@a80.tech.yk.fujitsu.co.jp 26 27******************************************************************/ 28 29#ifndef _XIMPROTO_H 30#define _XIMPROTO_H 31 32/* 33 * Default Preconnection selection target 34 */ 35#define XIM_SERVERS "XIM_SERVERS" 36#define XIM_LOCALES "LOCALES" 37#define XIM_TRANSPORT "TRANSPORT" 38 39/* 40 * categories in XIM_SERVERS 41 */ 42#define XIM_SERVER_CATEGORY "@server=" 43#define XIM_LOCAL_CATEGORY "@locale=" 44#define XIM_TRANSPORT_CATEGORY "@transport=" 45 46/* 47 * Xim implementation revision 48 */ 49#define PROTOCOLMAJORVERSION 1 50#define PROTOCOLMINORVERSION 0 51 52/* 53 * Major Protocol number 54 */ 55#define XIM_CONNECT 1 56#define XIM_CONNECT_REPLY 2 57#define XIM_DISCONNECT 3 58#define XIM_DISCONNECT_REPLY 4 59 60#define XIM_AUTH_REQUIRED 10 61#define XIM_AUTH_REPLY 11 62#define XIM_AUTH_NEXT 12 63#define XIM_AUTH_SETUP 13 64#define XIM_AUTH_NG 14 65 66#define XIM_ERROR 20 67 68#define XIM_OPEN 30 69#define XIM_OPEN_REPLY 31 70#define XIM_CLOSE 32 71#define XIM_CLOSE_REPLY 33 72#define XIM_REGISTER_TRIGGERKEYS 34 73#define XIM_TRIGGER_NOTIFY 35 74#define XIM_TRIGGER_NOTIFY_REPLY 36 75#define XIM_SET_EVENT_MASK 37 76#define XIM_ENCODING_NEGOTIATION 38 77#define XIM_ENCODING_NEGOTIATION_REPLY 39 78#define XIM_QUERY_EXTENSION 40 79#define XIM_QUERY_EXTENSION_REPLY 41 80#define XIM_SET_IM_VALUES 42 81#define XIM_SET_IM_VALUES_REPLY 43 82#define XIM_GET_IM_VALUES 44 83#define XIM_GET_IM_VALUES_REPLY 45 84 85#define XIM_CREATE_IC 50 86#define XIM_CREATE_IC_REPLY 51 87#define XIM_DESTROY_IC 52 88#define XIM_DESTROY_IC_REPLY 53 89#define XIM_SET_IC_VALUES 54 90#define XIM_SET_IC_VALUES_REPLY 55 91#define XIM_GET_IC_VALUES 56 92#define XIM_GET_IC_VALUES_REPLY 57 93#define XIM_SET_IC_FOCUS 58 94#define XIM_UNSET_IC_FOCUS 59 95#define XIM_FORWARD_EVENT 60 96#define XIM_SYNC 61 97#define XIM_SYNC_REPLY 62 98#define XIM_COMMIT 63 99#define XIM_RESET_IC 64 100#define XIM_RESET_IC_REPLY 65 101 102#define XIM_GEOMETRY 70 103#define XIM_STR_CONVERSION 71 104#define XIM_STR_CONVERSION_REPLY 72 105#define XIM_PREEDIT_START 73 106#define XIM_PREEDIT_START_REPLY 74 107#define XIM_PREEDIT_DRAW 75 108#define XIM_PREEDIT_CARET 76 109#define XIM_PREEDIT_CARET_REPLY 77 110#define XIM_PREEDIT_DONE 78 111#define XIM_STATUS_START 79 112#define XIM_STATUS_DRAW 80 113#define XIM_STATUS_DONE 81 114#define XIM_PREEDITSTATE 82 115 116/* 117 * values for the flag of XIM_ERROR 118 */ 119#define XIM_IMID_VALID 0x0001 120#define XIM_ICID_VALID 0x0002 121 122/* 123 * XIM Error Code 124 */ 125#define XIM_BadAlloc 1 126#define XIM_BadStyle 2 127#define XIM_BadClientWindow 3 128#define XIM_BadFocusWindow 4 129#define XIM_BadArea 5 130#define XIM_BadSpotLocation 6 131#define XIM_BadColormap 7 132#define XIM_BadAtom 8 133#define XIM_BadPixel 9 134#define XIM_BadPixmap 10 135#define XIM_BadName 11 136#define XIM_BadCursor 12 137#define XIM_BadProtocol 13 138#define XIM_BadForeground 14 139#define XIM_BadBackground 15 140#define XIM_LocaleNotSupported 16 141#define XIM_BadSomething 999 142 143/* 144 * byte order 145 */ 146#define BIGENDIAN (CARD8)0x42 /* MSB first */ 147#define LITTLEENDIAN (CARD8)0x6c /* LSB first */ 148 149/* 150 * values for the type of XIMATTR & XICATTR 151 */ 152#define XimType_SeparatorOfNestedList 0 153#define XimType_CARD8 1 154#define XimType_CARD16 2 155#define XimType_CARD32 3 156#define XimType_STRING8 4 157#define XimType_Window 5 158#define XimType_XIMStyles 10 159#define XimType_XRectangle 11 160#define XimType_XPoint 12 161#define XimType_XFontSet 13 162#define XimType_XIMOptions 14 163#define XimType_XIMHotKeyTriggers 15 164#define XimType_XIMHotKeyState 16 165#define XimType_XIMStringConversion 17 166#define XimType_NEST 0x7fff 167 168/* 169 * values for the category of XIM_ENCODING_NEGITIATON_REPLY 170 */ 171#define XIM_Encoding_NameCategory 0 172#define XIM_Encoding_DetailCategory 1 173 174/* 175 * value for the index of XIM_ENCODING_NEGITIATON_REPLY 176 */ 177#define XIM_Default_Encoding_IDX -1 178 179/* 180 * value for the flag of XIM_FORWARD_EVENT, XIM_COMMIT 181 */ 182#define XimSYNCHRONUS 0x0001 183#define XimLookupChars 0x0002 184#define XimLookupKeySym 0x0004 185#define XimLookupBoth 0x0006 186 187/* 188 * request packet header size 189 */ 190#define XIM_HEADER_SIZE \ 191 ( sizeof(CARD8) /* sizeof major-opcode */ \ 192 + sizeof(CARD8) /* sizeof minor-opcode */ \ 193 + sizeof(INT16) ) /* sizeof length */ 194 195/* 196 * Client Message data size 197 */ 198#define XIM_CM_DATA_SIZE 20 199 200/* 201 * XIM data structure 202 */ 203typedef CARD16 BITMASK16; 204typedef CARD32 BITMASK32; 205typedef CARD32 EVENTMASK; 206 207typedef CARD16 XIMID; /* Input Method ID */ 208typedef CARD16 XICID; /* Input Context ID */ 209 210/* 211 * Padding macro 212 */ 213#define XIM_PAD(length) ((4 - ((length) % 4)) % 4) 214 215#define XIM_SET_PAD(ptr, length) \ 216 do { \ 217 register int Counter = XIM_PAD((int)length); \ 218 if (Counter) { \ 219 register char *Ptr = (char *)(ptr) + (length); \ 220 length += Counter; \ 221 for (; Counter; --Counter, ++Ptr) \ 222 *Ptr = '\0'; \ 223 } \ 224 } while (0) 225 226#endif /* _XIMPROTO_H */ 227