Blame


1 0206bd51 2008-01-30 rsc Path: uunet!wyse!mikew
2 0206bd51 2008-01-30 rsc From: mikew@wyse.wyse.com (Mike Wexler)
3 0206bd51 2008-01-30 rsc Newsgroups: comp.sources.x
4 0206bd51 2008-01-30 rsc Subject: v02i056: subroutine to print events in human readable form, Part01/01
5 0206bd51 2008-01-30 rsc Message-ID: <1935@wyse.wyse.com>
6 0206bd51 2008-01-30 rsc Date: 22 Dec 88 19:28:25 GMT
7 0206bd51 2008-01-30 rsc Organization: Wyse Technology, San Jose
8 0206bd51 2008-01-30 rsc Lines: 1093
9 0206bd51 2008-01-30 rsc Approved: mikew@wyse.com
10 0206bd51 2008-01-30 rsc
11 0206bd51 2008-01-30 rsc Submitted-by: richsun!darkstar!ken
12 0206bd51 2008-01-30 rsc Posting-number: Volume 2, Issue 56
13 0206bd51 2008-01-30 rsc Archive-name: showevent/part01
14 0206bd51 2008-01-30 rsc
15 0206bd51 2008-01-30 rsc
16 0206bd51 2008-01-30 rsc
17 0206bd51 2008-01-30 rsc Following is a shar file of a debugging aid along with a sample program to
18 0206bd51 2008-01-30 rsc show how it is used. The README contains more details.
19 0206bd51 2008-01-30 rsc
20 0206bd51 2008-01-30 rsc Ken
21 0206bd51 2008-01-30 rsc
22 0206bd51 2008-01-30 rsc #! /bin/sh
23 0206bd51 2008-01-30 rsc # This is a shell archive, meaning:
24 0206bd51 2008-01-30 rsc # 1. Remove everything above the #! /bin/sh line.
25 0206bd51 2008-01-30 rsc # 2. Save the resulting text in a file.
26 0206bd51 2008-01-30 rsc # 3. Execute the file with /bin/sh (not csh) to create the files:
27 0206bd51 2008-01-30 rsc # Makefile
28 0206bd51 2008-01-30 rsc # README
29 0206bd51 2008-01-30 rsc # ShowEvent.c
30 0206bd51 2008-01-30 rsc # ShowEvent.man
31 0206bd51 2008-01-30 rsc # patchlevel.h
32 0206bd51 2008-01-30 rsc # sample.c
33 0206bd51 2008-01-30 rsc # This archive created: Thu Dec 22 12:13:46 1988
34 0206bd51 2008-01-30 rsc export PATH; PATH=/bin:$PATH
35 0206bd51 2008-01-30 rsc if test -f 'Makefile'
36 0206bd51 2008-01-30 rsc then
37 0206bd51 2008-01-30 rsc echo shar: will not over-write existing file "'Makefile'"
38 0206bd51 2008-01-30 rsc else
39 0206bd51 2008-01-30 rsc cat << \SHAR_EOF > 'Makefile'
40 0206bd51 2008-01-30 rsc CFLAGS = -g
41 0206bd51 2008-01-30 rsc INCLUDE = -I/global/include
42 0206bd51 2008-01-30 rsc LFLAGS = -L/global/lib
43 0206bd51 2008-01-30 rsc OBJS = ShowEvent.o sample.o
44 0206bd51 2008-01-30 rsc LIBS = -lX11
45 0206bd51 2008-01-30 rsc
46 0206bd51 2008-01-30 rsc all: sample
47 0206bd51 2008-01-30 rsc
48 0206bd51 2008-01-30 rsc .c.o:
49 0206bd51 2008-01-30 rsc $(CC) $(INCLUDE) $(CFLAGS) -c $<
50 0206bd51 2008-01-30 rsc
51 0206bd51 2008-01-30 rsc sample: $(OBJS)
52 0206bd51 2008-01-30 rsc $(CC) $(LFLAGS) $(OBJS) $(LIBS) -o sample
53 0206bd51 2008-01-30 rsc SHAR_EOF
54 0206bd51 2008-01-30 rsc fi # end of overwriting check
55 0206bd51 2008-01-30 rsc if test -f 'README'
56 0206bd51 2008-01-30 rsc then
57 0206bd51 2008-01-30 rsc echo shar: will not over-write existing file "'README'"
58 0206bd51 2008-01-30 rsc else
59 0206bd51 2008-01-30 rsc cat << \SHAR_EOF > 'README'
60 0206bd51 2008-01-30 rsc There are times during debugging when it would be real useful to be able to
61 0206bd51 2008-01-30 rsc print the fields of an event in a human readable form. Too many times I found
62 0206bd51 2008-01-30 rsc myself scrounging around in section 8 of the Xlib manual looking for the valid
63 0206bd51 2008-01-30 rsc fields for the events I wanted to see, then adding printf's to display the
64 0206bd51 2008-01-30 rsc numeric values of the fields, and then scanning through X.h trying to decode
65 0206bd51 2008-01-30 rsc the cryptic detail and state fields. After playing with xev, I decided to
66 0206bd51 2008-01-30 rsc write a couple of standard functions that I could keep in a library and call
67 0206bd51 2008-01-30 rsc on whenever I needed a little debugging verbosity. The first function,
68 0206bd51 2008-01-30 rsc GetType(), is useful for returning the string representation of the type of
69 0206bd51 2008-01-30 rsc an event. The second function, ShowEvent(), is used to display all the fields
70 0206bd51 2008-01-30 rsc of an event in a readable format. The functions are not complicated, in fact,
71 0206bd51 2008-01-30 rsc they are mind-numbingly boring - but that's just the point nobody wants to
72 0206bd51 2008-01-30 rsc spend the time writing functions like this, they just want to have them when
73 0206bd51 2008-01-30 rsc they need them.
74 0206bd51 2008-01-30 rsc
75 0206bd51 2008-01-30 rsc A simple, sample program is included which does little else but to demonstrate
76 0206bd51 2008-01-30 rsc the use of these two functions. These functions have saved me many an hour
77 0206bd51 2008-01-30 rsc during debugging and I hope you find some benefit to these. If you have any
78 0206bd51 2008-01-30 rsc comments, suggestions, improvements, or if you find any blithering errors you
79 0206bd51 2008-01-30 rsc can get it touch with me at the following location:
80 0206bd51 2008-01-30 rsc
81 0206bd51 2008-01-30 rsc ken@richsun.UUCP
82 0206bd51 2008-01-30 rsc SHAR_EOF
83 0206bd51 2008-01-30 rsc fi # end of overwriting check
84 0206bd51 2008-01-30 rsc if test -f 'ShowEvent.c'
85 0206bd51 2008-01-30 rsc then
86 0206bd51 2008-01-30 rsc echo shar: will not over-write existing file "'ShowEvent.c'"
87 0206bd51 2008-01-30 rsc else
88 0206bd51 2008-01-30 rsc cat << \SHAR_EOF > 'ShowEvent.c'
89 0206bd51 2008-01-30 rsc #include <X11/Intrinsic.h>
90 0206bd51 2008-01-30 rsc #include <X11/Xproto.h>
91 0206bd51 2008-01-30 rsc
92 0206bd51 2008-01-30 rsc Boolean use_separate_lines = True;
93 0206bd51 2008-01-30 rsc static char *sep;
94 0206bd51 2008-01-30 rsc
95 0206bd51 2008-01-30 rsc /******************************************************************************/
96 0206bd51 2008-01-30 rsc /**** Miscellaneous routines to convert values to their string equivalents ****/
97 0206bd51 2008-01-30 rsc /******************************************************************************/
98 0206bd51 2008-01-30 rsc
99 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a boolean parameter */
100 0206bd51 2008-01-30 rsc static char *TorF(bool)
101 0206bd51 2008-01-30 rsc int bool;
102 0206bd51 2008-01-30 rsc {
103 0206bd51 2008-01-30 rsc switch (bool) {
104 0206bd51 2008-01-30 rsc case True:
105 0206bd51 2008-01-30 rsc return ("True");
106 0206bd51 2008-01-30 rsc
107 0206bd51 2008-01-30 rsc case False:
108 0206bd51 2008-01-30 rsc return ("False");
109 0206bd51 2008-01-30 rsc
110 0206bd51 2008-01-30 rsc default:
111 0206bd51 2008-01-30 rsc return ("?");
112 0206bd51 2008-01-30 rsc }
113 0206bd51 2008-01-30 rsc }
114 0206bd51 2008-01-30 rsc
115 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a property notify state */
116 0206bd51 2008-01-30 rsc static char *PropertyState(state)
117 0206bd51 2008-01-30 rsc int state;
118 0206bd51 2008-01-30 rsc {
119 0206bd51 2008-01-30 rsc switch (state) {
120 0206bd51 2008-01-30 rsc case PropertyNewValue:
121 0206bd51 2008-01-30 rsc return ("PropertyNewValue");
122 0206bd51 2008-01-30 rsc
123 0206bd51 2008-01-30 rsc case PropertyDelete:
124 0206bd51 2008-01-30 rsc return ("PropertyDelete");
125 0206bd51 2008-01-30 rsc
126 0206bd51 2008-01-30 rsc default:
127 0206bd51 2008-01-30 rsc return ("?");
128 0206bd51 2008-01-30 rsc }
129 0206bd51 2008-01-30 rsc }
130 0206bd51 2008-01-30 rsc
131 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a visibility notify state */
132 0206bd51 2008-01-30 rsc static char *VisibilityState(state)
133 0206bd51 2008-01-30 rsc int state;
134 0206bd51 2008-01-30 rsc {
135 0206bd51 2008-01-30 rsc switch (state) {
136 0206bd51 2008-01-30 rsc case VisibilityUnobscured:
137 0206bd51 2008-01-30 rsc return ("VisibilityUnobscured");
138 0206bd51 2008-01-30 rsc
139 0206bd51 2008-01-30 rsc case VisibilityPartiallyObscured:
140 0206bd51 2008-01-30 rsc return ("VisibilityPartiallyObscured");
141 0206bd51 2008-01-30 rsc
142 0206bd51 2008-01-30 rsc case VisibilityFullyObscured:
143 0206bd51 2008-01-30 rsc return ("VisibilityFullyObscured");
144 0206bd51 2008-01-30 rsc
145 0206bd51 2008-01-30 rsc default:
146 0206bd51 2008-01-30 rsc return ("?");
147 0206bd51 2008-01-30 rsc }
148 0206bd51 2008-01-30 rsc }
149 0206bd51 2008-01-30 rsc
150 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a timestamp */
151 0206bd51 2008-01-30 rsc static char *ServerTime(time)
152 0206bd51 2008-01-30 rsc Time time;
153 0206bd51 2008-01-30 rsc {
154 0206bd51 2008-01-30 rsc unsigned long msec;
155 0206bd51 2008-01-30 rsc unsigned long sec;
156 0206bd51 2008-01-30 rsc unsigned long min;
157 0206bd51 2008-01-30 rsc unsigned long hr;
158 0206bd51 2008-01-30 rsc unsigned long day;
159 0206bd51 2008-01-30 rsc char buffer[32];
160 0206bd51 2008-01-30 rsc
161 0206bd51 2008-01-30 rsc msec = time % 1000;
162 0206bd51 2008-01-30 rsc time /= 1000;
163 0206bd51 2008-01-30 rsc sec = time % 60;
164 0206bd51 2008-01-30 rsc time /= 60;
165 0206bd51 2008-01-30 rsc min = time % 60;
166 0206bd51 2008-01-30 rsc time /= 60;
167 0206bd51 2008-01-30 rsc hr = time % 24;
168 0206bd51 2008-01-30 rsc time /= 24;
169 0206bd51 2008-01-30 rsc day = time;
170 0206bd51 2008-01-30 rsc
171 0206bd51 2008-01-30 rsc sprintf(buffer, "%d day%s %02d:%02d:%02d.%03d",
172 0206bd51 2008-01-30 rsc day, day == 1 ? "" : "(s)", hr, min, sec, msec);
173 0206bd51 2008-01-30 rsc return (buffer);
174 0206bd51 2008-01-30 rsc }
175 0206bd51 2008-01-30 rsc
176 0206bd51 2008-01-30 rsc /* Simple structure to ease the interpretation of masks */
177 0206bd51 2008-01-30 rsc typedef struct _MaskType {
178 0206bd51 2008-01-30 rsc unsigned int value;
179 0206bd51 2008-01-30 rsc char *string;
180 0206bd51 2008-01-30 rsc } MaskType;
181 0206bd51 2008-01-30 rsc
182 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a mask of buttons and/or modifier keys */
183 0206bd51 2008-01-30 rsc static char *ButtonAndOrModifierState(state)
184 0206bd51 2008-01-30 rsc unsigned int state;
185 0206bd51 2008-01-30 rsc {
186 0206bd51 2008-01-30 rsc char buffer[256];
187 0206bd51 2008-01-30 rsc static MaskType masks[] = {
188 0206bd51 2008-01-30 rsc {Button1Mask, "Button1Mask"},
189 0206bd51 2008-01-30 rsc {Button2Mask, "Button2Mask"},
190 0206bd51 2008-01-30 rsc {Button3Mask, "Button3Mask"},
191 0206bd51 2008-01-30 rsc {Button4Mask, "Button4Mask"},
192 0206bd51 2008-01-30 rsc {Button5Mask, "Button5Mask"},
193 0206bd51 2008-01-30 rsc {ShiftMask, "ShiftMask"},
194 0206bd51 2008-01-30 rsc {LockMask, "LockMask"},
195 0206bd51 2008-01-30 rsc {ControlMask, "ControlMask"},
196 0206bd51 2008-01-30 rsc {Mod1Mask, "Mod1Mask"},
197 0206bd51 2008-01-30 rsc {Mod2Mask, "Mod2Mask"},
198 0206bd51 2008-01-30 rsc {Mod3Mask, "Mod3Mask"},
199 0206bd51 2008-01-30 rsc {Mod4Mask, "Mod4Mask"},
200 0206bd51 2008-01-30 rsc {Mod5Mask, "Mod5Mask"},
201 0206bd51 2008-01-30 rsc };
202 0206bd51 2008-01-30 rsc int num_masks = sizeof(masks) / sizeof(MaskType);
203 0206bd51 2008-01-30 rsc int i;
204 0206bd51 2008-01-30 rsc Boolean first = True;
205 0206bd51 2008-01-30 rsc
206 0206bd51 2008-01-30 rsc buffer[0] = NULL;
207 0206bd51 2008-01-30 rsc
208 0206bd51 2008-01-30 rsc for (i = 0; i < num_masks; i++)
209 0206bd51 2008-01-30 rsc if (state & masks[i].value)
210 0206bd51 2008-01-30 rsc if (first) {
211 0206bd51 2008-01-30 rsc first = False;
212 0206bd51 2008-01-30 rsc strcpy(buffer, masks[i].string);
213 0206bd51 2008-01-30 rsc } else {
214 0206bd51 2008-01-30 rsc strcat(buffer, " | ");
215 0206bd51 2008-01-30 rsc strcat(buffer, masks[i].string);
216 0206bd51 2008-01-30 rsc }
217 0206bd51 2008-01-30 rsc return (buffer);
218 0206bd51 2008-01-30 rsc }
219 0206bd51 2008-01-30 rsc
220 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a mask of configure window values */
221 0206bd51 2008-01-30 rsc static char *ConfigureValueMask(valuemask)
222 0206bd51 2008-01-30 rsc unsigned int valuemask;
223 0206bd51 2008-01-30 rsc {
224 0206bd51 2008-01-30 rsc char buffer[256];
225 0206bd51 2008-01-30 rsc static MaskType masks[] = {
226 0206bd51 2008-01-30 rsc {CWX, "CWX"},
227 0206bd51 2008-01-30 rsc {CWY, "CWY"},
228 0206bd51 2008-01-30 rsc {CWWidth, "CWWidth"},
229 0206bd51 2008-01-30 rsc {CWHeight, "CWHeight"},
230 0206bd51 2008-01-30 rsc {CWBorderWidth, "CWBorderWidth"},
231 0206bd51 2008-01-30 rsc {CWSibling, "CWSibling"},
232 0206bd51 2008-01-30 rsc {CWStackMode, "CWStackMode"},
233 0206bd51 2008-01-30 rsc };
234 0206bd51 2008-01-30 rsc int num_masks = sizeof(masks) / sizeof(MaskType);
235 0206bd51 2008-01-30 rsc int i;
236 0206bd51 2008-01-30 rsc Boolean first = True;
237 0206bd51 2008-01-30 rsc
238 0206bd51 2008-01-30 rsc buffer[0] = NULL;
239 0206bd51 2008-01-30 rsc
240 0206bd51 2008-01-30 rsc for (i = 0; i < num_masks; i++)
241 0206bd51 2008-01-30 rsc if (valuemask & masks[i].value)
242 0206bd51 2008-01-30 rsc if (first) {
243 0206bd51 2008-01-30 rsc first = False;
244 0206bd51 2008-01-30 rsc strcpy(buffer, masks[i].string);
245 0206bd51 2008-01-30 rsc } else {
246 0206bd51 2008-01-30 rsc strcat(buffer, " | ");
247 0206bd51 2008-01-30 rsc strcat(buffer, masks[i].string);
248 0206bd51 2008-01-30 rsc }
249 0206bd51 2008-01-30 rsc
250 0206bd51 2008-01-30 rsc return (buffer);
251 0206bd51 2008-01-30 rsc }
252 0206bd51 2008-01-30 rsc
253 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a motion hint */
254 0206bd51 2008-01-30 rsc static char *IsHint(is_hint)
255 0206bd51 2008-01-30 rsc char is_hint;
256 0206bd51 2008-01-30 rsc {
257 0206bd51 2008-01-30 rsc switch (is_hint) {
258 0206bd51 2008-01-30 rsc case NotifyNormal:
259 0206bd51 2008-01-30 rsc return ("NotifyNormal");
260 0206bd51 2008-01-30 rsc
261 0206bd51 2008-01-30 rsc case NotifyHint:
262 0206bd51 2008-01-30 rsc return ("NotifyHint");
263 0206bd51 2008-01-30 rsc
264 0206bd51 2008-01-30 rsc default:
265 0206bd51 2008-01-30 rsc return ("?");
266 0206bd51 2008-01-30 rsc }
267 0206bd51 2008-01-30 rsc }
268 0206bd51 2008-01-30 rsc
269 0206bd51 2008-01-30 rsc /* Returns the string equivalent of an id or the value "None" */
270 0206bd51 2008-01-30 rsc static char *MaybeNone(value)
271 0206bd51 2008-01-30 rsc int value;
272 0206bd51 2008-01-30 rsc {
273 0206bd51 2008-01-30 rsc char buffer[16];
274 0206bd51 2008-01-30 rsc
275 0206bd51 2008-01-30 rsc if (value == None)
276 0206bd51 2008-01-30 rsc return ("None");
277 0206bd51 2008-01-30 rsc else {
278 0206bd51 2008-01-30 rsc sprintf(buffer, "0x%x", value);
279 0206bd51 2008-01-30 rsc return (buffer);
280 0206bd51 2008-01-30 rsc }
281 0206bd51 2008-01-30 rsc }
282 0206bd51 2008-01-30 rsc
283 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a colormap state */
284 0206bd51 2008-01-30 rsc static char *ColormapState(state)
285 0206bd51 2008-01-30 rsc int state;
286 0206bd51 2008-01-30 rsc {
287 0206bd51 2008-01-30 rsc switch (state) {
288 0206bd51 2008-01-30 rsc case ColormapInstalled:
289 0206bd51 2008-01-30 rsc return ("ColormapInstalled");
290 0206bd51 2008-01-30 rsc
291 0206bd51 2008-01-30 rsc case ColormapUninstalled:
292 0206bd51 2008-01-30 rsc return ("ColormapUninstalled");
293 0206bd51 2008-01-30 rsc
294 0206bd51 2008-01-30 rsc default:
295 0206bd51 2008-01-30 rsc return ("?");
296 0206bd51 2008-01-30 rsc }
297 0206bd51 2008-01-30 rsc }
298 0206bd51 2008-01-30 rsc
299 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a crossing detail */
300 0206bd51 2008-01-30 rsc static char *CrossingDetail(detail)
301 0206bd51 2008-01-30 rsc int detail;
302 0206bd51 2008-01-30 rsc {
303 0206bd51 2008-01-30 rsc switch (detail) {
304 0206bd51 2008-01-30 rsc case NotifyAncestor:
305 0206bd51 2008-01-30 rsc return ("NotifyAncestor");
306 0206bd51 2008-01-30 rsc
307 0206bd51 2008-01-30 rsc case NotifyInferior:
308 0206bd51 2008-01-30 rsc return ("NotifyInferior");
309 0206bd51 2008-01-30 rsc
310 0206bd51 2008-01-30 rsc case NotifyVirtual:
311 0206bd51 2008-01-30 rsc return ("NotifyVirtual");
312 0206bd51 2008-01-30 rsc
313 0206bd51 2008-01-30 rsc case NotifyNonlinear:
314 0206bd51 2008-01-30 rsc return ("NotifyNonlinear");
315 0206bd51 2008-01-30 rsc
316 0206bd51 2008-01-30 rsc case NotifyNonlinearVirtual:
317 0206bd51 2008-01-30 rsc return ("NotifyNonlinearVirtual");
318 0206bd51 2008-01-30 rsc
319 0206bd51 2008-01-30 rsc default:
320 0206bd51 2008-01-30 rsc return ("?");
321 0206bd51 2008-01-30 rsc }
322 0206bd51 2008-01-30 rsc }
323 0206bd51 2008-01-30 rsc
324 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a focus change detail */
325 0206bd51 2008-01-30 rsc static char *FocusChangeDetail(detail)
326 0206bd51 2008-01-30 rsc int detail;
327 0206bd51 2008-01-30 rsc {
328 0206bd51 2008-01-30 rsc switch (detail) {
329 0206bd51 2008-01-30 rsc case NotifyAncestor:
330 0206bd51 2008-01-30 rsc return ("NotifyAncestor");
331 0206bd51 2008-01-30 rsc
332 0206bd51 2008-01-30 rsc case NotifyInferior:
333 0206bd51 2008-01-30 rsc return ("NotifyInferior");
334 0206bd51 2008-01-30 rsc
335 0206bd51 2008-01-30 rsc case NotifyVirtual:
336 0206bd51 2008-01-30 rsc return ("NotifyVirtual");
337 0206bd51 2008-01-30 rsc
338 0206bd51 2008-01-30 rsc case NotifyNonlinear:
339 0206bd51 2008-01-30 rsc return ("NotifyNonlinear");
340 0206bd51 2008-01-30 rsc
341 0206bd51 2008-01-30 rsc case NotifyNonlinearVirtual:
342 0206bd51 2008-01-30 rsc return ("NotifyNonlinearVirtual");
343 0206bd51 2008-01-30 rsc
344 0206bd51 2008-01-30 rsc case NotifyPointer:
345 0206bd51 2008-01-30 rsc return ("NotifyPointer");
346 0206bd51 2008-01-30 rsc
347 0206bd51 2008-01-30 rsc case NotifyPointerRoot:
348 0206bd51 2008-01-30 rsc return ("NotifyPointerRoot");
349 0206bd51 2008-01-30 rsc
350 0206bd51 2008-01-30 rsc case NotifyDetailNone:
351 0206bd51 2008-01-30 rsc return ("NotifyDetailNone");
352 0206bd51 2008-01-30 rsc
353 0206bd51 2008-01-30 rsc default:
354 0206bd51 2008-01-30 rsc return ("?");
355 0206bd51 2008-01-30 rsc }
356 0206bd51 2008-01-30 rsc }
357 0206bd51 2008-01-30 rsc
358 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a configure detail */
359 0206bd51 2008-01-30 rsc static char *ConfigureDetail(detail)
360 0206bd51 2008-01-30 rsc int detail;
361 0206bd51 2008-01-30 rsc {
362 0206bd51 2008-01-30 rsc switch (detail) {
363 0206bd51 2008-01-30 rsc case Above:
364 0206bd51 2008-01-30 rsc return ("Above");
365 0206bd51 2008-01-30 rsc
366 0206bd51 2008-01-30 rsc case Below:
367 0206bd51 2008-01-30 rsc return ("Below");
368 0206bd51 2008-01-30 rsc
369 0206bd51 2008-01-30 rsc case TopIf:
370 0206bd51 2008-01-30 rsc return ("TopIf");
371 0206bd51 2008-01-30 rsc
372 0206bd51 2008-01-30 rsc case BottomIf:
373 0206bd51 2008-01-30 rsc return ("BottomIf");
374 0206bd51 2008-01-30 rsc
375 0206bd51 2008-01-30 rsc case Opposite:
376 0206bd51 2008-01-30 rsc return ("Opposite");
377 0206bd51 2008-01-30 rsc
378 0206bd51 2008-01-30 rsc default:
379 0206bd51 2008-01-30 rsc return ("?");
380 0206bd51 2008-01-30 rsc }
381 0206bd51 2008-01-30 rsc }
382 0206bd51 2008-01-30 rsc
383 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a grab mode */
384 0206bd51 2008-01-30 rsc static char *GrabMode(mode)
385 0206bd51 2008-01-30 rsc int mode;
386 0206bd51 2008-01-30 rsc {
387 0206bd51 2008-01-30 rsc switch (mode) {
388 0206bd51 2008-01-30 rsc case NotifyNormal:
389 0206bd51 2008-01-30 rsc return ("NotifyNormal");
390 0206bd51 2008-01-30 rsc
391 0206bd51 2008-01-30 rsc case NotifyGrab:
392 0206bd51 2008-01-30 rsc return ("NotifyGrab");
393 0206bd51 2008-01-30 rsc
394 0206bd51 2008-01-30 rsc case NotifyUngrab:
395 0206bd51 2008-01-30 rsc return ("NotifyUngrab");
396 0206bd51 2008-01-30 rsc
397 0206bd51 2008-01-30 rsc case NotifyWhileGrabbed:
398 0206bd51 2008-01-30 rsc return ("NotifyWhileGrabbed");
399 0206bd51 2008-01-30 rsc
400 0206bd51 2008-01-30 rsc default:
401 0206bd51 2008-01-30 rsc return ("?");
402 0206bd51 2008-01-30 rsc }
403 0206bd51 2008-01-30 rsc }
404 0206bd51 2008-01-30 rsc
405 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a mapping request */
406 0206bd51 2008-01-30 rsc static char *MappingRequest(request)
407 0206bd51 2008-01-30 rsc int request;
408 0206bd51 2008-01-30 rsc {
409 0206bd51 2008-01-30 rsc switch (request) {
410 0206bd51 2008-01-30 rsc case MappingModifier:
411 0206bd51 2008-01-30 rsc return ("MappingModifier");
412 0206bd51 2008-01-30 rsc
413 0206bd51 2008-01-30 rsc case MappingKeyboard:
414 0206bd51 2008-01-30 rsc return ("MappingKeyboard");
415 0206bd51 2008-01-30 rsc
416 0206bd51 2008-01-30 rsc case MappingPointer:
417 0206bd51 2008-01-30 rsc return ("MappingPointer");
418 0206bd51 2008-01-30 rsc
419 0206bd51 2008-01-30 rsc default:
420 0206bd51 2008-01-30 rsc return ("?");
421 0206bd51 2008-01-30 rsc }
422 0206bd51 2008-01-30 rsc }
423 0206bd51 2008-01-30 rsc
424 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a stacking order place */
425 0206bd51 2008-01-30 rsc static char *Place(place)
426 0206bd51 2008-01-30 rsc int place;
427 0206bd51 2008-01-30 rsc {
428 0206bd51 2008-01-30 rsc switch (place) {
429 0206bd51 2008-01-30 rsc case PlaceOnTop:
430 0206bd51 2008-01-30 rsc return ("PlaceOnTop");
431 0206bd51 2008-01-30 rsc
432 0206bd51 2008-01-30 rsc case PlaceOnBottom:
433 0206bd51 2008-01-30 rsc return ("PlaceOnBottom");
434 0206bd51 2008-01-30 rsc
435 0206bd51 2008-01-30 rsc default:
436 0206bd51 2008-01-30 rsc return ("?");
437 0206bd51 2008-01-30 rsc }
438 0206bd51 2008-01-30 rsc }
439 0206bd51 2008-01-30 rsc
440 0206bd51 2008-01-30 rsc /* Returns the string equivalent of a major code */
441 0206bd51 2008-01-30 rsc static char *MajorCode(code)
442 0206bd51 2008-01-30 rsc int code;
443 0206bd51 2008-01-30 rsc {
444 0206bd51 2008-01-30 rsc char buffer[32];
445 0206bd51 2008-01-30 rsc
446 0206bd51 2008-01-30 rsc switch (code) {
447 0206bd51 2008-01-30 rsc case X_CopyArea:
448 0206bd51 2008-01-30 rsc return ("X_CopyArea");
449 0206bd51 2008-01-30 rsc
450 0206bd51 2008-01-30 rsc case X_CopyPlane:
451 0206bd51 2008-01-30 rsc return ("X_CopyPlane");
452 0206bd51 2008-01-30 rsc
453 0206bd51 2008-01-30 rsc default:
454 0206bd51 2008-01-30 rsc sprintf(buffer, "0x%x", code);
455 0206bd51 2008-01-30 rsc return (buffer);
456 0206bd51 2008-01-30 rsc }
457 0206bd51 2008-01-30 rsc }
458 0206bd51 2008-01-30 rsc
459 0206bd51 2008-01-30 rsc /* Returns the string equivalent the keycode contained in the key event */
460 0206bd51 2008-01-30 rsc static char *Keycode(ev)
461 0206bd51 2008-01-30 rsc XKeyEvent *ev;
462 0206bd51 2008-01-30 rsc {
463 0206bd51 2008-01-30 rsc char buffer[256];
464 0206bd51 2008-01-30 rsc KeySym keysym_str;
465 0206bd51 2008-01-30 rsc char *keysym_name;
466 0206bd51 2008-01-30 rsc char string[256];
467 0206bd51 2008-01-30 rsc
468 0206bd51 2008-01-30 rsc XLookupString(ev, string, 64, &keysym_str, NULL);
469 0206bd51 2008-01-30 rsc
470 0206bd51 2008-01-30 rsc if (keysym_str == NoSymbol)
471 0206bd51 2008-01-30 rsc keysym_name = "NoSymbol";
472 0206bd51 2008-01-30 rsc else if (!(keysym_name = XKeysymToString(keysym_str)))
473 0206bd51 2008-01-30 rsc keysym_name = "(no name)";
474 0206bd51 2008-01-30 rsc sprintf(buffer, "%u (keysym 0x%x \"%s\")",
475 0206bd51 2008-01-30 rsc ev->keycode, keysym_str, keysym_name);
476 0206bd51 2008-01-30 rsc return (buffer);
477 0206bd51 2008-01-30 rsc }
478 0206bd51 2008-01-30 rsc
479 0206bd51 2008-01-30 rsc /* Returns the string equivalent of an atom or "None"*/
480 0206bd51 2008-01-30 rsc static char *AtomName(dpy, atom)
481 0206bd51 2008-01-30 rsc Display *dpy;
482 0206bd51 2008-01-30 rsc Atom atom;
483 0206bd51 2008-01-30 rsc {
484 0206bd51 2008-01-30 rsc char buffer[256];
485 0206bd51 2008-01-30 rsc char *atom_name;
486 0206bd51 2008-01-30 rsc
487 0206bd51 2008-01-30 rsc if (atom == None)
488 0206bd51 2008-01-30 rsc return ("None");
489 0206bd51 2008-01-30 rsc
490 0206bd51 2008-01-30 rsc atom_name = XGetAtomName(dpy, atom);
491 0206bd51 2008-01-30 rsc strncpy(buffer, atom_name, 256);
492 0206bd51 2008-01-30 rsc XFree(atom_name);
493 0206bd51 2008-01-30 rsc return (buffer);
494 0206bd51 2008-01-30 rsc }
495 0206bd51 2008-01-30 rsc
496 0206bd51 2008-01-30 rsc /******************************************************************************/
497 0206bd51 2008-01-30 rsc /**** Routines to print out readable values for the field of various events ***/
498 0206bd51 2008-01-30 rsc /******************************************************************************/
499 0206bd51 2008-01-30 rsc
500 0206bd51 2008-01-30 rsc static void VerbMotion(ev)
501 0206bd51 2008-01-30 rsc XMotionEvent *ev;
502 0206bd51 2008-01-30 rsc {
503 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
504 0206bd51 2008-01-30 rsc printf("root=0x%x%s", ev->root, sep);
505 0206bd51 2008-01-30 rsc printf("subwindow=0x%x%s", ev->subwindow, sep);
506 0206bd51 2008-01-30 rsc printf("time=%s%s", ServerTime(ev->time), sep);
507 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
508 0206bd51 2008-01-30 rsc printf("x_root=%d y_root=%d%s", ev->x_root, ev->y_root, sep);
509 0206bd51 2008-01-30 rsc printf("state=%s%s", ButtonAndOrModifierState(ev->state), sep);
510 0206bd51 2008-01-30 rsc printf("is_hint=%s%s", IsHint(ev->is_hint), sep);
511 0206bd51 2008-01-30 rsc printf("same_screen=%s\n", TorF(ev->same_screen));
512 0206bd51 2008-01-30 rsc }
513 0206bd51 2008-01-30 rsc
514 0206bd51 2008-01-30 rsc static void VerbButton(ev)
515 0206bd51 2008-01-30 rsc XButtonEvent *ev;
516 0206bd51 2008-01-30 rsc {
517 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
518 0206bd51 2008-01-30 rsc printf("root=0x%x%s", ev->root, sep);
519 0206bd51 2008-01-30 rsc printf("subwindow=0x%x%s", ev->subwindow, sep);
520 0206bd51 2008-01-30 rsc printf("time=%s%s", ServerTime(ev->time), sep);
521 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
522 0206bd51 2008-01-30 rsc printf("x_root=%d y_root=%d%s", ev->x_root, ev->y_root, sep);
523 0206bd51 2008-01-30 rsc printf("state=%s%s", ButtonAndOrModifierState(ev->state), sep);
524 0206bd51 2008-01-30 rsc printf("button=%s%s", ButtonAndOrModifierState(ev->button), sep);
525 0206bd51 2008-01-30 rsc printf("same_screen=%s\n", TorF(ev->same_screen));
526 0206bd51 2008-01-30 rsc }
527 0206bd51 2008-01-30 rsc
528 0206bd51 2008-01-30 rsc static void VerbColormap(ev)
529 0206bd51 2008-01-30 rsc XColormapEvent *ev;
530 0206bd51 2008-01-30 rsc {
531 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
532 0206bd51 2008-01-30 rsc printf("colormap=%s%s", MaybeNone(ev->colormap), sep);
533 0206bd51 2008-01-30 rsc printf("new=%s%s", TorF(ev->new), sep);
534 0206bd51 2008-01-30 rsc printf("state=%s\n", ColormapState(ev->state));
535 0206bd51 2008-01-30 rsc }
536 0206bd51 2008-01-30 rsc
537 0206bd51 2008-01-30 rsc static void VerbCrossing(ev)
538 0206bd51 2008-01-30 rsc XCrossingEvent *ev;
539 0206bd51 2008-01-30 rsc {
540 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
541 0206bd51 2008-01-30 rsc printf("root=0x%x%s", ev->root, sep);
542 0206bd51 2008-01-30 rsc printf("subwindow=0x%x%s", ev->subwindow, sep);
543 0206bd51 2008-01-30 rsc printf("time=%s%s", ServerTime(ev->time), sep);
544 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
545 0206bd51 2008-01-30 rsc printf("x_root=%d y_root=%d%s", ev->x_root, ev->y_root, sep);
546 0206bd51 2008-01-30 rsc printf("mode=%s%s", GrabMode(ev->mode), sep);
547 0206bd51 2008-01-30 rsc printf("detail=%s%s", CrossingDetail(ev->detail), sep);
548 0206bd51 2008-01-30 rsc printf("same_screen=%s%s", TorF(ev->same_screen), sep);
549 0206bd51 2008-01-30 rsc printf("focus=%s%s", TorF(ev->focus), sep);
550 0206bd51 2008-01-30 rsc printf("state=%s\n", ButtonAndOrModifierState(ev->state));
551 0206bd51 2008-01-30 rsc }
552 0206bd51 2008-01-30 rsc
553 0206bd51 2008-01-30 rsc static void VerbExpose(ev)
554 0206bd51 2008-01-30 rsc XExposeEvent *ev;
555 0206bd51 2008-01-30 rsc {
556 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
557 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
558 0206bd51 2008-01-30 rsc printf("width=%d height=%d%s", ev->width, ev->height, sep);
559 0206bd51 2008-01-30 rsc printf("count=%d\n", ev->count);
560 0206bd51 2008-01-30 rsc }
561 0206bd51 2008-01-30 rsc
562 0206bd51 2008-01-30 rsc static void VerbGraphicsExpose(ev)
563 0206bd51 2008-01-30 rsc XGraphicsExposeEvent *ev;
564 0206bd51 2008-01-30 rsc {
565 0206bd51 2008-01-30 rsc printf("drawable=0x%x%s", ev->drawable, sep);
566 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
567 0206bd51 2008-01-30 rsc printf("width=%d height=%d%s", ev->width, ev->height, sep);
568 0206bd51 2008-01-30 rsc printf("major_code=%s%s", MajorCode(ev->major_code), sep);
569 0206bd51 2008-01-30 rsc printf("minor_code=%d\n", ev->minor_code);
570 0206bd51 2008-01-30 rsc }
571 0206bd51 2008-01-30 rsc
572 0206bd51 2008-01-30 rsc static void VerbNoExpose(ev)
573 0206bd51 2008-01-30 rsc XNoExposeEvent *ev;
574 0206bd51 2008-01-30 rsc {
575 0206bd51 2008-01-30 rsc printf("drawable=0x%x%s", ev->drawable, sep);
576 0206bd51 2008-01-30 rsc printf("major_code=%s%s", MajorCode(ev->major_code), sep);
577 0206bd51 2008-01-30 rsc printf("minor_code=%d\n", ev->minor_code);
578 0206bd51 2008-01-30 rsc }
579 0206bd51 2008-01-30 rsc
580 0206bd51 2008-01-30 rsc static void VerbFocus(ev)
581 0206bd51 2008-01-30 rsc XFocusChangeEvent *ev;
582 0206bd51 2008-01-30 rsc {
583 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
584 0206bd51 2008-01-30 rsc printf("mode=%s%s", GrabMode(ev->mode), sep);
585 0206bd51 2008-01-30 rsc printf("detail=%s\n", FocusChangeDetail(ev->detail));
586 0206bd51 2008-01-30 rsc }
587 0206bd51 2008-01-30 rsc
588 0206bd51 2008-01-30 rsc static void VerbKeymap(ev)
589 0206bd51 2008-01-30 rsc XKeymapEvent *ev;
590 0206bd51 2008-01-30 rsc {
591 0206bd51 2008-01-30 rsc int i;
592 0206bd51 2008-01-30 rsc
593 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
594 0206bd51 2008-01-30 rsc printf("key_vector=");
595 0206bd51 2008-01-30 rsc for (i = 0; i < 32; i++)
596 0206bd51 2008-01-30 rsc printf("%02x", ev->key_vector[i]);
597 0206bd51 2008-01-30 rsc printf("\n");
598 0206bd51 2008-01-30 rsc }
599 0206bd51 2008-01-30 rsc
600 0206bd51 2008-01-30 rsc static void VerbKey(ev)
601 0206bd51 2008-01-30 rsc XKeyEvent *ev;
602 0206bd51 2008-01-30 rsc {
603 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
604 0206bd51 2008-01-30 rsc printf("root=0x%x%s", ev->root, sep);
605 0206bd51 2008-01-30 rsc printf("subwindow=0x%x%s", ev->subwindow, sep);
606 0206bd51 2008-01-30 rsc printf("time=%s%s", ServerTime(ev->time), sep);
607 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
608 0206bd51 2008-01-30 rsc printf("x_root=%d y_root=%d%s", ev->x_root, ev->y_root, sep);
609 0206bd51 2008-01-30 rsc printf("state=%s%s", ButtonAndOrModifierState(ev->state), sep);
610 0206bd51 2008-01-30 rsc printf("keycode=%s%s", Keycode(ev), sep);
611 0206bd51 2008-01-30 rsc printf("same_screen=%s\n", TorF(ev->same_screen));
612 0206bd51 2008-01-30 rsc }
613 0206bd51 2008-01-30 rsc
614 0206bd51 2008-01-30 rsc static void VerbProperty(ev)
615 0206bd51 2008-01-30 rsc XPropertyEvent *ev;
616 0206bd51 2008-01-30 rsc {
617 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
618 0206bd51 2008-01-30 rsc printf("atom=%s%s", AtomName(ev->display, ev->atom), sep);
619 0206bd51 2008-01-30 rsc printf("time=%s%s", ServerTime(ev->time), sep);
620 0206bd51 2008-01-30 rsc printf("state=%s\n", PropertyState(ev->state));
621 0206bd51 2008-01-30 rsc }
622 0206bd51 2008-01-30 rsc
623 0206bd51 2008-01-30 rsc static void VerbResizeRequest(ev)
624 0206bd51 2008-01-30 rsc XResizeRequestEvent *ev;
625 0206bd51 2008-01-30 rsc {
626 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
627 0206bd51 2008-01-30 rsc printf("width=%d height=%d\n", ev->width, ev->height);
628 0206bd51 2008-01-30 rsc }
629 0206bd51 2008-01-30 rsc
630 0206bd51 2008-01-30 rsc static void VerbCirculate(ev)
631 0206bd51 2008-01-30 rsc XCirculateEvent *ev;
632 0206bd51 2008-01-30 rsc {
633 0206bd51 2008-01-30 rsc printf("event=0x%x%s", ev->event, sep);
634 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
635 0206bd51 2008-01-30 rsc printf("place=%s\n", Place(ev->place));
636 0206bd51 2008-01-30 rsc }
637 0206bd51 2008-01-30 rsc
638 0206bd51 2008-01-30 rsc static void VerbConfigure(ev)
639 0206bd51 2008-01-30 rsc XConfigureEvent *ev;
640 0206bd51 2008-01-30 rsc {
641 0206bd51 2008-01-30 rsc printf("event=0x%x%s", ev->event, sep);
642 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
643 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
644 0206bd51 2008-01-30 rsc printf("width=%d height=%d%s", ev->width, ev->height, sep);
645 0206bd51 2008-01-30 rsc printf("border_width=%d%s", ev->border_width, sep);
646 0206bd51 2008-01-30 rsc printf("above=%s%s", MaybeNone(ev->above), sep);
647 0206bd51 2008-01-30 rsc printf("override_redirect=%s\n", TorF(ev->override_redirect));
648 0206bd51 2008-01-30 rsc }
649 0206bd51 2008-01-30 rsc
650 0206bd51 2008-01-30 rsc static void VerbCreateWindow(ev)
651 0206bd51 2008-01-30 rsc XCreateWindowEvent *ev;
652 0206bd51 2008-01-30 rsc {
653 0206bd51 2008-01-30 rsc printf("parent=0x%x%s", ev->parent, sep);
654 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
655 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
656 0206bd51 2008-01-30 rsc printf("width=%d height=%d%s", ev->width, ev->height, sep);
657 0206bd51 2008-01-30 rsc printf("border_width=%d%s", ev->border_width, sep);
658 0206bd51 2008-01-30 rsc printf("override_redirect=%s\n", TorF(ev->override_redirect));
659 0206bd51 2008-01-30 rsc }
660 0206bd51 2008-01-30 rsc
661 0206bd51 2008-01-30 rsc static void VerbDestroyWindow(ev)
662 0206bd51 2008-01-30 rsc XDestroyWindowEvent *ev;
663 0206bd51 2008-01-30 rsc {
664 0206bd51 2008-01-30 rsc printf("event=0x%x%s", ev->event, sep);
665 0206bd51 2008-01-30 rsc printf("window=0x%x\n", ev->window);
666 0206bd51 2008-01-30 rsc }
667 0206bd51 2008-01-30 rsc
668 0206bd51 2008-01-30 rsc static void VerbGravity(ev)
669 0206bd51 2008-01-30 rsc XGravityEvent *ev;
670 0206bd51 2008-01-30 rsc {
671 0206bd51 2008-01-30 rsc printf("event=0x%x%s", ev->event, sep);
672 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
673 0206bd51 2008-01-30 rsc printf("x=%d y=%d\n", ev->x, ev->y);
674 0206bd51 2008-01-30 rsc }
675 0206bd51 2008-01-30 rsc
676 0206bd51 2008-01-30 rsc static void VerbMap(ev)
677 0206bd51 2008-01-30 rsc XMapEvent *ev;
678 0206bd51 2008-01-30 rsc {
679 0206bd51 2008-01-30 rsc printf("event=0x%x%s", ev->event, sep);
680 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
681 0206bd51 2008-01-30 rsc printf("override_redirect=%s\n", TorF(ev->override_redirect));
682 0206bd51 2008-01-30 rsc }
683 0206bd51 2008-01-30 rsc
684 0206bd51 2008-01-30 rsc static void VerbReparent(ev)
685 0206bd51 2008-01-30 rsc XReparentEvent *ev;
686 0206bd51 2008-01-30 rsc {
687 0206bd51 2008-01-30 rsc printf("event=0x%x%s", ev->event, sep);
688 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
689 0206bd51 2008-01-30 rsc printf("parent=0x%x%s", ev->parent, sep);
690 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
691 0206bd51 2008-01-30 rsc printf("override_redirect=%s\n", TorF(ev->override_redirect));
692 0206bd51 2008-01-30 rsc }
693 0206bd51 2008-01-30 rsc
694 0206bd51 2008-01-30 rsc static void VerbUnmap(ev)
695 0206bd51 2008-01-30 rsc XUnmapEvent *ev;
696 0206bd51 2008-01-30 rsc {
697 0206bd51 2008-01-30 rsc printf("event=0x%x%s", ev->event, sep);
698 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
699 0206bd51 2008-01-30 rsc printf("from_configure=%s\n", TorF(ev->from_configure));
700 0206bd51 2008-01-30 rsc }
701 0206bd51 2008-01-30 rsc
702 0206bd51 2008-01-30 rsc static void VerbCirculateRequest(ev)
703 0206bd51 2008-01-30 rsc XCirculateRequestEvent *ev;
704 0206bd51 2008-01-30 rsc {
705 0206bd51 2008-01-30 rsc printf("parent=0x%x%s", ev->parent, sep);
706 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
707 0206bd51 2008-01-30 rsc printf("place=%s\n", Place(ev->place));
708 0206bd51 2008-01-30 rsc }
709 0206bd51 2008-01-30 rsc
710 0206bd51 2008-01-30 rsc static void VerbConfigureRequest(ev)
711 0206bd51 2008-01-30 rsc XConfigureRequestEvent *ev;
712 0206bd51 2008-01-30 rsc {
713 0206bd51 2008-01-30 rsc printf("parent=0x%x%s", ev->parent, sep);
714 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
715 0206bd51 2008-01-30 rsc printf("x=%d y=%d%s", ev->x, ev->y, sep);
716 0206bd51 2008-01-30 rsc printf("width=%d height=%d%s", ev->width, ev->height, sep);
717 0206bd51 2008-01-30 rsc printf("border_width=%d%s", ev->border_width, sep);
718 0206bd51 2008-01-30 rsc printf("above=%s%s", MaybeNone(ev->above), sep);
719 0206bd51 2008-01-30 rsc printf("detail=0x%x%s", ConfigureDetail(ev->detail), sep);
720 0206bd51 2008-01-30 rsc printf("value_mask=%s\n", ConfigureValueMask(ev->value_mask));
721 0206bd51 2008-01-30 rsc }
722 0206bd51 2008-01-30 rsc
723 0206bd51 2008-01-30 rsc static void VerbMapRequest(ev)
724 0206bd51 2008-01-30 rsc XMapRequestEvent *ev;
725 0206bd51 2008-01-30 rsc {
726 0206bd51 2008-01-30 rsc printf("parent=0x%x%s", ev->parent, sep);
727 0206bd51 2008-01-30 rsc printf("window=0x%x\n", ev->window);
728 0206bd51 2008-01-30 rsc }
729 0206bd51 2008-01-30 rsc
730 0206bd51 2008-01-30 rsc static void VerbClient(ev)
731 0206bd51 2008-01-30 rsc XClientMessageEvent *ev;
732 0206bd51 2008-01-30 rsc {
733 0206bd51 2008-01-30 rsc int i;
734 0206bd51 2008-01-30 rsc
735 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
736 0206bd51 2008-01-30 rsc printf("message_type=%s%s", AtomName(ev->display, ev->message_type), sep);
737 0206bd51 2008-01-30 rsc printf("format=%d\n", ev->format);
738 0206bd51 2008-01-30 rsc printf("data (shown as longs)=");
739 0206bd51 2008-01-30 rsc for (i = 0; i < 5; i++)
740 0206bd51 2008-01-30 rsc printf(" 0x%08x", ev->data.l[i]);
741 0206bd51 2008-01-30 rsc printf("\n");
742 0206bd51 2008-01-30 rsc }
743 0206bd51 2008-01-30 rsc
744 0206bd51 2008-01-30 rsc static void VerbMapping(ev)
745 0206bd51 2008-01-30 rsc XMappingEvent *ev;
746 0206bd51 2008-01-30 rsc {
747 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
748 0206bd51 2008-01-30 rsc printf("request=0x%x%s", MappingRequest(ev->request), sep);
749 0206bd51 2008-01-30 rsc printf("first_keycode=0x%x%s", ev->first_keycode, sep);
750 0206bd51 2008-01-30 rsc printf("count=0x%x\n", ev->count);
751 0206bd51 2008-01-30 rsc }
752 0206bd51 2008-01-30 rsc
753 0206bd51 2008-01-30 rsc static void VerbSelectionClear(ev)
754 0206bd51 2008-01-30 rsc XSelectionClearEvent *ev;
755 0206bd51 2008-01-30 rsc {
756 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
757 0206bd51 2008-01-30 rsc printf("selection=%s%s", AtomName(ev->display, ev->selection), sep);
758 0206bd51 2008-01-30 rsc printf("time=%s\n", ServerTime(ev->time));
759 0206bd51 2008-01-30 rsc }
760 0206bd51 2008-01-30 rsc
761 0206bd51 2008-01-30 rsc static void VerbSelection(ev)
762 0206bd51 2008-01-30 rsc XSelectionEvent *ev;
763 0206bd51 2008-01-30 rsc {
764 0206bd51 2008-01-30 rsc printf("requestor=0x%x%s", ev->requestor, sep);
765 0206bd51 2008-01-30 rsc printf("selection=%s%s", AtomName(ev->display, ev->selection), sep);
766 0206bd51 2008-01-30 rsc printf("target=%s%s", AtomName(ev->display, ev->target), sep);
767 0206bd51 2008-01-30 rsc printf("property=%s%s", AtomName(ev->display, ev->property), sep);
768 0206bd51 2008-01-30 rsc printf("time=%s\n", ServerTime(ev->time));
769 0206bd51 2008-01-30 rsc }
770 0206bd51 2008-01-30 rsc
771 0206bd51 2008-01-30 rsc static void VerbSelectionRequest(ev)
772 0206bd51 2008-01-30 rsc XSelectionRequestEvent *ev;
773 0206bd51 2008-01-30 rsc {
774 0206bd51 2008-01-30 rsc printf("owner=0x%x%s", ev->owner, sep);
775 0206bd51 2008-01-30 rsc printf("requestor=0x%x%s", ev->requestor, sep);
776 0206bd51 2008-01-30 rsc printf("selection=%s%s", AtomName(ev->display, ev->selection), sep);
777 0206bd51 2008-01-30 rsc printf("target=%s%s", AtomName(ev->display, ev->target), sep);
778 0206bd51 2008-01-30 rsc printf("property=%s%s", AtomName(ev->display, ev->property), sep);
779 0206bd51 2008-01-30 rsc printf("time=%s\n", ServerTime(ev->time));
780 0206bd51 2008-01-30 rsc }
781 0206bd51 2008-01-30 rsc
782 0206bd51 2008-01-30 rsc static void VerbVisibility(ev)
783 0206bd51 2008-01-30 rsc XVisibilityEvent *ev;
784 0206bd51 2008-01-30 rsc {
785 0206bd51 2008-01-30 rsc printf("window=0x%x%s", ev->window, sep);
786 0206bd51 2008-01-30 rsc printf("state=%s\n", VisibilityState(ev->state));
787 0206bd51 2008-01-30 rsc }
788 0206bd51 2008-01-30 rsc
789 0206bd51 2008-01-30 rsc /******************************************************************************/
790 0206bd51 2008-01-30 rsc /************ Return the string representation for type of an event ***********/
791 0206bd51 2008-01-30 rsc /******************************************************************************/
792 0206bd51 2008-01-30 rsc
793 0206bd51 2008-01-30 rsc char *GetType(ev)
794 0206bd51 2008-01-30 rsc XEvent *ev;
795 0206bd51 2008-01-30 rsc {
796 0206bd51 2008-01-30 rsc switch (ev->type) {
797 0206bd51 2008-01-30 rsc case KeyPress:
798 0206bd51 2008-01-30 rsc return ("KeyPress");
799 0206bd51 2008-01-30 rsc case KeyRelease:
800 0206bd51 2008-01-30 rsc return ("KeyRelease");
801 0206bd51 2008-01-30 rsc case ButtonPress:
802 0206bd51 2008-01-30 rsc return ("ButtonPress");
803 0206bd51 2008-01-30 rsc case ButtonRelease:
804 0206bd51 2008-01-30 rsc return ("ButtonRelease");
805 0206bd51 2008-01-30 rsc case MotionNotify:
806 0206bd51 2008-01-30 rsc return ("MotionNotify");
807 0206bd51 2008-01-30 rsc case EnterNotify:
808 0206bd51 2008-01-30 rsc return ("EnterNotify");
809 0206bd51 2008-01-30 rsc case LeaveNotify:
810 0206bd51 2008-01-30 rsc return ("LeaveNotify");
811 0206bd51 2008-01-30 rsc case FocusIn:
812 0206bd51 2008-01-30 rsc return ("FocusIn");
813 0206bd51 2008-01-30 rsc case FocusOut:
814 0206bd51 2008-01-30 rsc return ("FocusOut");
815 0206bd51 2008-01-30 rsc case KeymapNotify:
816 0206bd51 2008-01-30 rsc return ("KeymapNotify");
817 0206bd51 2008-01-30 rsc case Expose:
818 0206bd51 2008-01-30 rsc return ("Expose");
819 0206bd51 2008-01-30 rsc case GraphicsExpose:
820 0206bd51 2008-01-30 rsc return ("GraphicsExpose");
821 0206bd51 2008-01-30 rsc case NoExpose:
822 0206bd51 2008-01-30 rsc return ("NoExpose");
823 0206bd51 2008-01-30 rsc case VisibilityNotify:
824 0206bd51 2008-01-30 rsc return ("VisibilityNotify");
825 0206bd51 2008-01-30 rsc case CreateNotify:
826 0206bd51 2008-01-30 rsc return ("CreateNotify");
827 0206bd51 2008-01-30 rsc case DestroyNotify:
828 0206bd51 2008-01-30 rsc return ("DestroyNotify");
829 0206bd51 2008-01-30 rsc case UnmapNotify:
830 0206bd51 2008-01-30 rsc return ("UnmapNotify");
831 0206bd51 2008-01-30 rsc case MapNotify:
832 0206bd51 2008-01-30 rsc return ("MapNotify");
833 0206bd51 2008-01-30 rsc case MapRequest:
834 0206bd51 2008-01-30 rsc return ("MapRequest");
835 0206bd51 2008-01-30 rsc case ReparentNotify:
836 0206bd51 2008-01-30 rsc return ("ReparentNotify");
837 0206bd51 2008-01-30 rsc case ConfigureNotify:
838 0206bd51 2008-01-30 rsc return ("ConfigureNotify");
839 0206bd51 2008-01-30 rsc case ConfigureRequest:
840 0206bd51 2008-01-30 rsc return ("ConfigureRequest");
841 0206bd51 2008-01-30 rsc case GravityNotify:
842 0206bd51 2008-01-30 rsc return ("GravityNotify");
843 0206bd51 2008-01-30 rsc case ResizeRequest:
844 0206bd51 2008-01-30 rsc return ("ResizeRequest");
845 0206bd51 2008-01-30 rsc case CirculateNotify:
846 0206bd51 2008-01-30 rsc return ("CirculateNotify");
847 0206bd51 2008-01-30 rsc case CirculateRequest:
848 0206bd51 2008-01-30 rsc return ("CirculateRequest");
849 0206bd51 2008-01-30 rsc case PropertyNotify:
850 0206bd51 2008-01-30 rsc return ("PropertyNotify");
851 0206bd51 2008-01-30 rsc case SelectionClear:
852 0206bd51 2008-01-30 rsc return ("SelectionClear");
853 0206bd51 2008-01-30 rsc case SelectionRequest:
854 0206bd51 2008-01-30 rsc return ("SelectionRequest");
855 0206bd51 2008-01-30 rsc case SelectionNotify:
856 0206bd51 2008-01-30 rsc return ("SelectionNotify");
857 0206bd51 2008-01-30 rsc case ColormapNotify:
858 0206bd51 2008-01-30 rsc return ("ColormapNotify");
859 0206bd51 2008-01-30 rsc case ClientMessage:
860 0206bd51 2008-01-30 rsc return ("ClientMessage");
861 0206bd51 2008-01-30 rsc case MappingNotify:
862 0206bd51 2008-01-30 rsc return ("MappingNotify");
863 0206bd51 2008-01-30 rsc }
864 0206bd51 2008-01-30 rsc }
865 0206bd51 2008-01-30 rsc
866 0206bd51 2008-01-30 rsc /******************************************************************************/
867 0206bd51 2008-01-30 rsc /**************** Print the values of all fields for any event ****************/
868 0206bd51 2008-01-30 rsc /******************************************************************************/
869 0206bd51 2008-01-30 rsc
870 0206bd51 2008-01-30 rsc void ShowEvent(ev)
871 0206bd51 2008-01-30 rsc XAnyEvent *ev;
872 0206bd51 2008-01-30 rsc {
873 0206bd51 2008-01-30 rsc /* determine which field separator to use */
874 0206bd51 2008-01-30 rsc if (use_separate_lines)
875 0206bd51 2008-01-30 rsc sep = "\n";
876 0206bd51 2008-01-30 rsc else
877 0206bd51 2008-01-30 rsc sep = " ";
878 0206bd51 2008-01-30 rsc
879 0206bd51 2008-01-30 rsc printf("type=%s%s", GetType(ev), sep);
880 0206bd51 2008-01-30 rsc printf("serial=%d%s", ev->serial, sep);
881 0206bd51 2008-01-30 rsc printf("send_event=%s%s", TorF(ev->send_event), sep);
882 0206bd51 2008-01-30 rsc printf("display=0x%x%s", ev->display, sep);
883 0206bd51 2008-01-30 rsc
884 0206bd51 2008-01-30 rsc switch (ev->type) {
885 0206bd51 2008-01-30 rsc case MotionNotify:
886 0206bd51 2008-01-30 rsc VerbMotion(ev);
887 0206bd51 2008-01-30 rsc break;
888 0206bd51 2008-01-30 rsc
889 0206bd51 2008-01-30 rsc case ButtonPress:
890 0206bd51 2008-01-30 rsc case ButtonRelease:
891 0206bd51 2008-01-30 rsc VerbButton(ev);
892 0206bd51 2008-01-30 rsc break;
893 0206bd51 2008-01-30 rsc
894 0206bd51 2008-01-30 rsc case ColormapNotify:
895 0206bd51 2008-01-30 rsc VerbColormap(ev);
896 0206bd51 2008-01-30 rsc break;
897 0206bd51 2008-01-30 rsc
898 0206bd51 2008-01-30 rsc case EnterNotify:
899 0206bd51 2008-01-30 rsc case LeaveNotify:
900 0206bd51 2008-01-30 rsc VerbCrossing(ev);
901 0206bd51 2008-01-30 rsc break;
902 0206bd51 2008-01-30 rsc
903 0206bd51 2008-01-30 rsc case Expose:
904 0206bd51 2008-01-30 rsc VerbExpose(ev);
905 0206bd51 2008-01-30 rsc break;
906 0206bd51 2008-01-30 rsc
907 0206bd51 2008-01-30 rsc case GraphicsExpose:
908 0206bd51 2008-01-30 rsc VerbGraphicsExpose(ev);
909 0206bd51 2008-01-30 rsc break;
910 0206bd51 2008-01-30 rsc
911 0206bd51 2008-01-30 rsc case NoExpose:
912 0206bd51 2008-01-30 rsc VerbNoExpose(ev);
913 0206bd51 2008-01-30 rsc break;
914 0206bd51 2008-01-30 rsc
915 0206bd51 2008-01-30 rsc case FocusIn:
916 0206bd51 2008-01-30 rsc case FocusOut:
917 0206bd51 2008-01-30 rsc VerbFocus(ev);
918 0206bd51 2008-01-30 rsc break;
919 0206bd51 2008-01-30 rsc
920 0206bd51 2008-01-30 rsc case KeymapNotify:
921 0206bd51 2008-01-30 rsc VerbKeymap(ev);
922 0206bd51 2008-01-30 rsc break;
923 0206bd51 2008-01-30 rsc
924 0206bd51 2008-01-30 rsc case KeyPress:
925 0206bd51 2008-01-30 rsc case KeyRelease:
926 0206bd51 2008-01-30 rsc VerbKey(ev);
927 0206bd51 2008-01-30 rsc break;
928 0206bd51 2008-01-30 rsc
929 0206bd51 2008-01-30 rsc case PropertyNotify:
930 0206bd51 2008-01-30 rsc VerbProperty(ev);
931 0206bd51 2008-01-30 rsc break;
932 0206bd51 2008-01-30 rsc
933 0206bd51 2008-01-30 rsc case ResizeRequest:
934 0206bd51 2008-01-30 rsc VerbResizeRequest(ev);
935 0206bd51 2008-01-30 rsc break;
936 0206bd51 2008-01-30 rsc
937 0206bd51 2008-01-30 rsc case CirculateNotify:
938 0206bd51 2008-01-30 rsc VerbCirculate(ev);
939 0206bd51 2008-01-30 rsc break;
940 0206bd51 2008-01-30 rsc
941 0206bd51 2008-01-30 rsc case ConfigureNotify:
942 0206bd51 2008-01-30 rsc VerbConfigure(ev);
943 0206bd51 2008-01-30 rsc break;
944 0206bd51 2008-01-30 rsc
945 0206bd51 2008-01-30 rsc case CreateNotify:
946 0206bd51 2008-01-30 rsc VerbCreateWindow(ev);
947 0206bd51 2008-01-30 rsc break;
948 0206bd51 2008-01-30 rsc
949 0206bd51 2008-01-30 rsc case DestroyNotify:
950 0206bd51 2008-01-30 rsc VerbDestroyWindow(ev);
951 0206bd51 2008-01-30 rsc break;
952 0206bd51 2008-01-30 rsc
953 0206bd51 2008-01-30 rsc case GravityNotify:
954 0206bd51 2008-01-30 rsc VerbGravity(ev);
955 0206bd51 2008-01-30 rsc break;
956 0206bd51 2008-01-30 rsc
957 0206bd51 2008-01-30 rsc case MapNotify:
958 0206bd51 2008-01-30 rsc VerbMap(ev);
959 0206bd51 2008-01-30 rsc break;
960 0206bd51 2008-01-30 rsc
961 0206bd51 2008-01-30 rsc case ReparentNotify:
962 0206bd51 2008-01-30 rsc VerbReparent(ev);
963 0206bd51 2008-01-30 rsc break;
964 0206bd51 2008-01-30 rsc
965 0206bd51 2008-01-30 rsc case UnmapNotify:
966 0206bd51 2008-01-30 rsc VerbUnmap(ev);
967 0206bd51 2008-01-30 rsc break;
968 0206bd51 2008-01-30 rsc
969 0206bd51 2008-01-30 rsc case CirculateRequest:
970 0206bd51 2008-01-30 rsc VerbCirculateRequest(ev);
971 0206bd51 2008-01-30 rsc break;
972 0206bd51 2008-01-30 rsc
973 0206bd51 2008-01-30 rsc case ConfigureRequest:
974 0206bd51 2008-01-30 rsc VerbConfigureRequest(ev);
975 0206bd51 2008-01-30 rsc break;
976 0206bd51 2008-01-30 rsc
977 0206bd51 2008-01-30 rsc case MapRequest:
978 0206bd51 2008-01-30 rsc VerbMapRequest(ev);
979 0206bd51 2008-01-30 rsc break;
980 0206bd51 2008-01-30 rsc
981 0206bd51 2008-01-30 rsc case ClientMessage:
982 0206bd51 2008-01-30 rsc VerbClient(ev);
983 0206bd51 2008-01-30 rsc break;
984 0206bd51 2008-01-30 rsc
985 0206bd51 2008-01-30 rsc case MappingNotify:
986 0206bd51 2008-01-30 rsc VerbMapping(ev);
987 0206bd51 2008-01-30 rsc break;
988 0206bd51 2008-01-30 rsc
989 0206bd51 2008-01-30 rsc case SelectionClear:
990 0206bd51 2008-01-30 rsc VerbSelectionClear(ev);
991 0206bd51 2008-01-30 rsc break;
992 0206bd51 2008-01-30 rsc
993 0206bd51 2008-01-30 rsc case SelectionNotify:
994 0206bd51 2008-01-30 rsc VerbSelection(ev);
995 0206bd51 2008-01-30 rsc break;
996 0206bd51 2008-01-30 rsc
997 0206bd51 2008-01-30 rsc case SelectionRequest:
998 0206bd51 2008-01-30 rsc VerbSelectionRequest(ev);
999 0206bd51 2008-01-30 rsc break;
1000 0206bd51 2008-01-30 rsc
1001 0206bd51 2008-01-30 rsc case VisibilityNotify:
1002 0206bd51 2008-01-30 rsc VerbVisibility(ev);
1003 0206bd51 2008-01-30 rsc break;
1004 0206bd51 2008-01-30 rsc
1005 0206bd51 2008-01-30 rsc }
1006 0206bd51 2008-01-30 rsc }
1007 0206bd51 2008-01-30 rsc SHAR_EOF
1008 0206bd51 2008-01-30 rsc fi # end of overwriting check
1009 0206bd51 2008-01-30 rsc if test -f 'ShowEvent.man'
1010 0206bd51 2008-01-30 rsc then
1011 0206bd51 2008-01-30 rsc echo shar: will not over-write existing file "'ShowEvent.man'"
1012 0206bd51 2008-01-30 rsc else
1013 0206bd51 2008-01-30 rsc cat << \SHAR_EOF > 'ShowEvent.man'
1014 0206bd51 2008-01-30 rsc .TH ShowEvent 3X11 "December 1988"
1015 0206bd51 2008-01-30 rsc .SH NAME
1016 0206bd51 2008-01-30 rsc .B ShowEvent \- display the fields of an event
1017 0206bd51 2008-01-30 rsc .br
1018 0206bd51 2008-01-30 rsc .B GetType - get a string representation of an event type
1019 0206bd51 2008-01-30 rsc
1020 0206bd51 2008-01-30 rsc .SH SYNOPSIS
1021 0206bd51 2008-01-30 rsc .B void ShowEvent(event)
1022 0206bd51 2008-01-30 rsc .br
1023 0206bd51 2008-01-30 rsc .B XEvent *event;
1024 0206bd51 2008-01-30 rsc .PP
1025 0206bd51 2008-01-30 rsc .B char *GetType(event)
1026 0206bd51 2008-01-30 rsc .br
1027 0206bd51 2008-01-30 rsc .B XEvent *event;
1028 0206bd51 2008-01-30 rsc
1029 0206bd51 2008-01-30 rsc .SH DESCRIPTION
1030 0206bd51 2008-01-30 rsc ShowEvent displays the fields of the specified event in a readable form.
1031 0206bd51 2008-01-30 rsc .PP
1032 0206bd51 2008-01-30 rsc GetType returns the string representation of the specified event type.
1033 0206bd51 2008-01-30 rsc
1034 0206bd51 2008-01-30 rsc SHAR_EOF
1035 0206bd51 2008-01-30 rsc fi # end of overwriting check
1036 0206bd51 2008-01-30 rsc if test -f 'patchlevel.h'
1037 0206bd51 2008-01-30 rsc then
1038 0206bd51 2008-01-30 rsc echo shar: will not over-write existing file "'patchlevel.h'"
1039 0206bd51 2008-01-30 rsc else
1040 0206bd51 2008-01-30 rsc cat << \SHAR_EOF > 'patchlevel.h'
1041 0206bd51 2008-01-30 rsc #define PATCHLEVEL 0
1042 0206bd51 2008-01-30 rsc SHAR_EOF
1043 0206bd51 2008-01-30 rsc fi # end of overwriting check
1044 0206bd51 2008-01-30 rsc if test -f 'sample.c'
1045 0206bd51 2008-01-30 rsc then
1046 0206bd51 2008-01-30 rsc echo shar: will not over-write existing file "'sample.c'"
1047 0206bd51 2008-01-30 rsc else
1048 0206bd51 2008-01-30 rsc cat << \SHAR_EOF > 'sample.c'
1049 0206bd51 2008-01-30 rsc #include <X11/Intrinsic.h>
1050 0206bd51 2008-01-30 rsc
1051 0206bd51 2008-01-30 rsc /*
1052 0206bd51 2008-01-30 rsc * Disclaimer: No I don't actually code like this but this is a simple,
1053 0206bd51 2008-01-30 rsc * "Quick-n-Dirty", plain, vanilla, "No ups, No extras" piece of code.
1054 0206bd51 2008-01-30 rsc */
1055 0206bd51 2008-01-30 rsc
1056 0206bd51 2008-01-30 rsc main(argc, argv)
1057 0206bd51 2008-01-30 rsc int argc;
1058 0206bd51 2008-01-30 rsc char **argv;
1059 0206bd51 2008-01-30 rsc {
1060 0206bd51 2008-01-30 rsc Display *dpy;
1061 0206bd51 2008-01-30 rsc int screen;
1062 0206bd51 2008-01-30 rsc Window window;
1063 0206bd51 2008-01-30 rsc XEvent event;
1064 0206bd51 2008-01-30 rsc extern Boolean use_separate_lines;
1065 0206bd51 2008-01-30 rsc
1066 0206bd51 2008-01-30 rsc if (!(dpy = XOpenDisplay(""))) {
1067 0206bd51 2008-01-30 rsc printf("Failed to open display...\n");
1068 0206bd51 2008-01-30 rsc exit(1);
1069 0206bd51 2008-01-30 rsc }
1070 0206bd51 2008-01-30 rsc screen = DefaultScreen(dpy);
1071 0206bd51 2008-01-30 rsc
1072 0206bd51 2008-01-30 rsc window = XCreateSimpleWindow(dpy, RootWindow(dpy, screen), 100, 100,
1073 0206bd51 2008-01-30 rsc 300, 200, 2, BlackPixel(dpy, screen), WhitePixel(dpy, screen));
1074 0206bd51 2008-01-30 rsc
1075 0206bd51 2008-01-30 rsc XSelectInput(dpy, window, KeyPressMask | KeyReleaseMask | ButtonPressMask |
1076 0206bd51 2008-01-30 rsc ButtonReleaseMask | EnterWindowMask | LeaveWindowMask |
1077 0206bd51 2008-01-30 rsc PointerMotionMask | PointerMotionHintMask | Button1MotionMask |
1078 0206bd51 2008-01-30 rsc Button2MotionMask | Button3MotionMask | Button4MotionMask |
1079 0206bd51 2008-01-30 rsc Button5MotionMask | ButtonMotionMask | KeymapStateMask |
1080 0206bd51 2008-01-30 rsc ExposureMask | VisibilityChangeMask | StructureNotifyMask |
1081 0206bd51 2008-01-30 rsc SubstructureNotifyMask | SubstructureRedirectMask | FocusChangeMask |
1082 0206bd51 2008-01-30 rsc PropertyChangeMask | ColormapChangeMask | OwnerGrabButtonMask);
1083 0206bd51 2008-01-30 rsc
1084 0206bd51 2008-01-30 rsc XMapWindow(dpy, window);
1085 0206bd51 2008-01-30 rsc
1086 0206bd51 2008-01-30 rsc /* set this to false to make ShowEvent take up less vertival space */
1087 0206bd51 2008-01-30 rsc use_separate_lines = True;
1088 0206bd51 2008-01-30 rsc
1089 0206bd51 2008-01-30 rsc while (1) {
1090 0206bd51 2008-01-30 rsc XNextEvent(dpy, &event);
1091 0206bd51 2008-01-30 rsc printf("Detail of %s event:\n", GetType(&event));
1092 0206bd51 2008-01-30 rsc ShowEvent(&event);
1093 0206bd51 2008-01-30 rsc printf("\n\n");
1094 0206bd51 2008-01-30 rsc }
1095 0206bd51 2008-01-30 rsc }
1096 0206bd51 2008-01-30 rsc
1097 0206bd51 2008-01-30 rsc SHAR_EOF
1098 0206bd51 2008-01-30 rsc fi # end of overwriting check
1099 0206bd51 2008-01-30 rsc # End of shell archive
1100 0206bd51 2008-01-30 rsc exit 0
1101 0206bd51 2008-01-30 rsc --
1102 0206bd51 2008-01-30 rsc Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330
1103 0206bd51 2008-01-30 rsc Moderator of comp.sources.x