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