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