active_window_x 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,751 @@
1
+ // -*- coding:utf-8; mode:c; -*-
2
+
3
+ #include <stdlib.h>
4
+ #include <stdio.h>
5
+ #include <locale.h>
6
+
7
+ #include <ruby.h>
8
+
9
+ #include <X11/Xlib.h>
10
+
11
+ #define GetDisplay(obj, d) { \
12
+ Data_Get_Struct(obj, Display, d); \
13
+ }
14
+ #define GetXEvent(obj, ev) { \
15
+ Data_Get_Struct(obj, XEvent, ev); \
16
+ }
17
+
18
+ VALUE active_window_x_module;
19
+ VALUE xlib_module;
20
+ VALUE display_class;
21
+ VALUE x_event_class;
22
+ VALUE x_property_event_class;
23
+ VALUE x_client_message_class;
24
+ VALUE unknown_display_name_class;
25
+ VALUE x_error_event_class;
26
+
27
+ /* error handling */
28
+ // TODO implement for thread safe
29
+ XErrorEvent *xerror = NULL;
30
+ int error_handler(Display* d, XErrorEvent* error_event){
31
+ xerror = error_event;
32
+ return 1;
33
+ }
34
+
35
+ #define ERROR_MESSAGE_BUFF 256
36
+ int raise_if_xerror_occurred(){
37
+ if (xerror == NULL) return 0;
38
+
39
+ char desc[ERROR_MESSAGE_BUFF];
40
+ XGetErrorText(xerror->display, xerror->error_code, desc, ERROR_MESSAGE_BUFF);
41
+ xerror = NULL;
42
+ rb_raise(x_error_event_class, "%s", desc);
43
+
44
+ return 1;
45
+ }
46
+ /* /error handling */
47
+
48
+ // XOpenDisplay
49
+ VALUE xlib_x_open_display(VALUE self, VALUE name_obj) {
50
+ const char* name;
51
+ Display* d;
52
+ if (TYPE(name_obj) == T_NIL){
53
+ name = NULL;
54
+ }else{
55
+ name = (const char*) StringValuePtr(name_obj);
56
+ }
57
+ d = XOpenDisplay(name);
58
+
59
+ if (d == NULL) {
60
+ rb_raise(unknown_display_name_class, "invalid name: %s", name);
61
+ return Qnil;
62
+ }
63
+ return Data_Wrap_Struct(display_class, 0, 0, d);
64
+ }
65
+
66
+ // XCloseDisplay
67
+ VALUE xlib_x_close_display(VALUE self, VALUE display_obj) {
68
+ Display* d;
69
+ int i;
70
+ GetDisplay(display_obj, d);
71
+ i = XCloseDisplay(d);
72
+ raise_if_xerror_occurred();
73
+ return INT2FIX(i);
74
+ }
75
+
76
+ // XGetInputFocus
77
+ VALUE xlib_x_get_input_focus(VALUE self, VALUE display_obj) {
78
+ Display* d;
79
+ Window window;
80
+ int revert_to;
81
+ VALUE arr_obj;
82
+
83
+ GetDisplay(display_obj, d);
84
+ XGetInputFocus(d, &window, &revert_to);
85
+ raise_if_xerror_occurred();
86
+
87
+ arr_obj = rb_ary_new2(2L);
88
+ rb_ary_push(arr_obj, window == None ? Qnil : ULONG2NUM((unsigned long) window));
89
+ rb_ary_push(arr_obj, INT2FIX(revert_to));
90
+
91
+ return arr_obj;
92
+ }
93
+
94
+ // XQueryTree
95
+ VALUE xlib_x_query_tree(VALUE self, VALUE d, VALUE w){
96
+ Display* display;
97
+ Window window;
98
+ Window root;
99
+ Window parent;
100
+ Window* children;
101
+ unsigned int nchildren, i;
102
+ VALUE arr_obj, children_obj;
103
+
104
+ GetDisplay(d, display);
105
+ window = NUM2ULONG(w);
106
+
107
+ i = XQueryTree(display, window, &root, &parent, &children, &nchildren);
108
+ raise_if_xerror_occurred();
109
+ if(i == 0) rb_raise(rb_eRuntimeError, "XQueryTree fail");
110
+
111
+ children_obj = rb_ary_new2(nchildren);
112
+ for(i=0; i < nchildren; i++){
113
+ rb_ary_push(children_obj, ULONG2NUM((unsigned long) children[i]));
114
+ }
115
+
116
+ arr_obj = rb_ary_new2(3L);
117
+ rb_ary_push(arr_obj, root == None ? Qnil : ULONG2NUM((unsigned long) root));
118
+ rb_ary_push(arr_obj, parent == None ? Qnil : ULONG2NUM((unsigned long) parent));
119
+ rb_ary_push(arr_obj, children_obj);
120
+
121
+ if(children != NULL) XFree(children);
122
+
123
+ return arr_obj;
124
+ }
125
+
126
+ // DefaultRootWindow
127
+ VALUE xlib_default_root_window(VALUE self, VALUE d) {
128
+ Display* display;
129
+ Window root;
130
+
131
+ GetDisplay(d, display);
132
+
133
+ root = DefaultRootWindow(display);
134
+
135
+ return root == None ? Qnil : ULONG2NUM(root);
136
+ }
137
+
138
+ // ConnectionNumber
139
+ VALUE xlib_connection_number(VALUE self, VALUE display_obj) {
140
+ Display* display;
141
+ GetDisplay(display_obj, display);
142
+ return INT2FIX(ConnectionNumber(display));
143
+ }
144
+
145
+ // XInternAtom
146
+ static VALUE xlib_x_intern_atom(VALUE self, VALUE d, VALUE name_obj, VALUE b) {
147
+ Display* display;
148
+ Atom atom;
149
+ char *name;
150
+ Bool bool;
151
+
152
+ GetDisplay(d, display);
153
+ name = StringValuePtr(name_obj);
154
+ bool = (b == Qfalse || b == Qnil) ? False : True;
155
+
156
+ atom = XInternAtom(display, name, bool);
157
+ raise_if_xerror_occurred();
158
+
159
+ return atom == None ? Qnil : ULONG2NUM((unsigned long) atom);
160
+ }
161
+
162
+ // XGetAtomName
163
+ static VALUE xlib_x_get_atom_name(VALUE self, VALUE d, VALUE atom_obj){
164
+ Display* display;
165
+ Atom atom;
166
+ char *name;
167
+ VALUE r;
168
+
169
+ GetDisplay(d, display);
170
+ atom = NUM2ULONG(atom_obj);
171
+
172
+ name = XGetAtomName(display, atom);
173
+ raise_if_xerror_occurred();
174
+
175
+ if(name == NULL) {
176
+ r = Qnil;
177
+ } else {
178
+ r = rb_str_new2(name);
179
+ XFree(name);
180
+ }
181
+ return r;
182
+ }
183
+
184
+ // XGetWindowProperty
185
+ static VALUE xlib_x_get_window_property(VALUE self, VALUE display_obj, VALUE w_obj,
186
+ VALUE property_obj, VALUE long_offset_obj,
187
+ VALUE long_length_obj, VALUE delete_obj,
188
+ VALUE req_type_obj){
189
+ Display* display;
190
+ Window w;
191
+ Atom property;
192
+ long long_offset, long_length;
193
+ Bool delete;
194
+ Atom req_type;
195
+ Atom actual_type_return;
196
+ int actual_format_return;
197
+ unsigned long nitems_return;
198
+ unsigned long bytes_after_return;
199
+ unsigned char *prop_return;
200
+ int result, prop_size, nbytes;
201
+ VALUE ary, prop;
202
+
203
+ GetDisplay(display_obj, display);
204
+ w = (Window) NUM2ULONG(w_obj);
205
+ property = (Atom) NUM2ULONG(property_obj);
206
+ long_offset = NUM2LONG(long_offset_obj);
207
+ long_length = NUM2LONG(long_length_obj);
208
+ delete = (delete_obj == Qfalse || delete_obj == Qnil) ? False : True;
209
+ req_type = (Atom) NUM2ULONG(req_type_obj);
210
+
211
+ result = XGetWindowProperty(display, w, property, long_offset, long_length, delete,
212
+ req_type,
213
+ &actual_type_return, &actual_format_return,
214
+ &nitems_return, &bytes_after_return, &prop_return);
215
+ raise_if_xerror_occurred();
216
+ if (result != Success)
217
+ rb_raise(rb_eRuntimeError, "XGetWindowProperty faild");
218
+
219
+ if (prop_return == NULL) {
220
+ prop = Qnil;
221
+ } else {
222
+ // get nbytes (reffer to Get_Window_Property_Data_And_Type of xprop)
223
+ switch (actual_format_return) {
224
+ case 32 : nbytes = sizeof(long); break;
225
+ case 16 : nbytes = 2; break;
226
+ case 8 : nbytes = 1; break;
227
+ case 0 : nbytes = 0; break;
228
+ default: rb_raise(rb_eRuntimeError,
229
+ "Unexpected actual_format_return(%d) on XGetWindowProperty",
230
+ actual_format_return);
231
+ }
232
+ prop_size = nbytes * nitems_return;
233
+ prop = rb_str_new(prop_return, prop_size);
234
+ XFree(prop_return);
235
+ }
236
+
237
+ ary = rb_ary_new2(5L);
238
+ rb_ary_push(ary, ULONG2NUM(actual_type_return));
239
+ rb_ary_push(ary, INT2FIX(actual_format_return));
240
+ rb_ary_push(ary, LONG2NUM(nitems_return));
241
+ rb_ary_push(ary, LONG2NUM(bytes_after_return));
242
+ rb_ary_push(ary, prop);
243
+
244
+ return ary;
245
+ }
246
+
247
+ VALUE xlib_x_list_properties(VALUE self, VALUE display_obj, VALUE w_obj) {
248
+ Display *display;
249
+ Window w;
250
+ int num_prop_return;
251
+ Atom *result;
252
+ int i;
253
+ VALUE ary;
254
+
255
+ GetDisplay(display_obj, display);
256
+ w = (Window) NUM2ULONG(w_obj);
257
+
258
+ result = XListProperties(display, w, &num_prop_return);
259
+ raise_if_xerror_occurred();
260
+ if (result == NULL) {
261
+ ary = Qnil;
262
+ }else{
263
+ ary = rb_ary_new2(num_prop_return);
264
+ for(i=0; i<num_prop_return; i++){
265
+ rb_ary_push(ary, result[i] == None ? Qnil : ULONG2NUM(result[i]));
266
+ }
267
+ XFree(result);
268
+ }
269
+
270
+ return ary;
271
+ }
272
+
273
+ VALUE xlib_x_select_input(VALUE self, VALUE display_obj, VALUE w_obj, VALUE event_mask_obj){
274
+ Display *display;
275
+ Window w;
276
+ long event_mask;
277
+ int result;
278
+
279
+ GetDisplay(display_obj, display);
280
+ w = (Window) NUM2ULONG(w_obj);
281
+ event_mask = NUM2LONG(event_mask_obj);
282
+
283
+ result = XSelectInput(display, w, event_mask);
284
+ raise_if_xerror_occurred();
285
+
286
+ return INT2NUM(result);
287
+ }
288
+
289
+ VALUE x_event_new(XEvent *xevent) {
290
+ VALUE ret;
291
+
292
+ switch (xevent->type){
293
+ case PropertyNotify:
294
+ ret = Data_Wrap_Struct(x_property_event_class, 0, 0, xevent);
295
+ // see `man XPropertyEvent`
296
+ rb_iv_set(ret, "@type", INT2FIX(xevent->xproperty.type));
297
+ rb_iv_set(ret, "@serial", ULONG2NUM(xevent->xproperty.serial));
298
+ rb_iv_set(ret, "@send_event", INT2FIX(xevent->xproperty.send_event));
299
+ rb_iv_set(ret, "@display", Data_Wrap_Struct(display_class, 0, 0, xevent->xproperty.display));
300
+ rb_iv_set(ret, "@window", ULONG2NUM(xevent->xproperty.window));
301
+ rb_iv_set(ret, "@atom", ULONG2NUM(xevent->xproperty.atom));
302
+ rb_iv_set(ret, "@time", ULONG2NUM(xevent->xproperty.time));
303
+ rb_iv_set(ret, "@state", INT2FIX(xevent->xproperty.state));
304
+ break;
305
+ case ClientMessage:
306
+ ret = Data_Wrap_Struct(x_client_message_class, 0, 0, xevent);
307
+ rb_iv_set(ret, "@type", INT2FIX(xevent->xclient.type));
308
+ rb_iv_set(ret, "@serial", ULONG2NUM(xevent->xclient.serial));
309
+ rb_iv_set(ret, "@send_event", INT2FIX(xevent->xproperty.send_event));
310
+ rb_iv_set(ret, "@display", Data_Wrap_Struct(display_class, 0, 0, xevent->xclient.display));
311
+ rb_iv_set(ret, "@window", ULONG2NUM(xevent->xclient.window));
312
+ rb_iv_set(ret, "@message_type", ULONG2NUM(xevent->xclient.message_type));
313
+ rb_iv_set(ret, "@format", INT2FIX(xevent->xclient.format));
314
+ rb_iv_set(ret, "@data", rb_str_new(xevent->xclient.data.b, 20));
315
+ break;
316
+ default:
317
+ ret = Data_Wrap_Struct(x_event_class, 0, 0, xevent);
318
+ rb_iv_set(ret, "@type", INT2FIX(xevent->type));
319
+ }
320
+
321
+ return ret;
322
+ }
323
+
324
+ VALUE xlib_x_next_event(VALUE self, VALUE display_obj) {
325
+ Display *display;
326
+ XEvent *event_return;
327
+ VALUE event_obj;
328
+
329
+ GetDisplay(display_obj, display);
330
+ event_return = ALLOC(XEvent);
331
+
332
+ XNextEvent(display, event_return);
333
+
334
+ return x_event_new(event_return);
335
+ }
336
+
337
+ VALUE xlib_x_pending(VALUE self, VALUE display_obj) {
338
+ Display *display;
339
+ GetDisplay(display_obj, display);
340
+ return INT2FIX(XPending(display));
341
+ }
342
+
343
+ VALUE xlib_x_set_wm_protocols(VALUE self, VALUE display_obj, VALUE w_obj,
344
+ VALUE atom_ary_obj) {
345
+ Display *display;
346
+ Window w;
347
+ Atom *atom_ary;
348
+ int count, s, len, i;
349
+
350
+ GetDisplay(display_obj, display);
351
+ w = (Window) NUM2ULONG(w_obj);
352
+ count = RARRAY(atom_ary_obj)->len;
353
+ atom_ary = ALLOC_N(Atom, len);
354
+ for (i=0; i<count; i++) atom_ary[i] = RARRAY(atom_ary_obj)->ptr[i];
355
+
356
+ s = XSetWMProtocols(display, w, atom_ary, count);
357
+ raise_if_xerror_occurred();
358
+ if (s != Success) rb_raise(rb_eRuntimeError, "XSetWMProtocols faild");
359
+
360
+ return INT2FIX(s);
361
+ }
362
+
363
+ void Init_xlib(void){
364
+
365
+ setlocale(LC_ALL, "");
366
+ XSetErrorHandler(error_handler);
367
+
368
+ active_window_x_module = rb_define_module("ActiveWindowX");
369
+ xlib_module = rb_define_module_under(active_window_x_module, "Xlib");
370
+ display_class = rb_define_class_under(xlib_module, "Display", rb_cData);
371
+ x_event_class = rb_define_class_under(xlib_module, "XEvent", rb_cData);
372
+ rb_define_attr(x_event_class, "type", True, True);
373
+ x_property_event_class =
374
+ rb_define_class_under(xlib_module, "XPropertyEvent", x_event_class);
375
+ rb_define_attr(x_property_event_class, "type", True, True);
376
+ rb_define_attr(x_property_event_class, "serial", True, True);
377
+ rb_define_attr(x_property_event_class, "send_event", True, True);
378
+ rb_define_attr(x_property_event_class, "display", True, True);
379
+ rb_define_attr(x_property_event_class, "window", True, True);
380
+ rb_define_attr(x_property_event_class, "atom", True, True);
381
+ rb_define_attr(x_property_event_class, "time", True, True);
382
+ rb_define_attr(x_property_event_class, "state", True, True);
383
+ x_client_message_class =
384
+ rb_define_class_under(xlib_module, "XClientMessageClass", x_event_class);
385
+ rb_define_attr(x_client_message_class, "type", True, True);
386
+ rb_define_attr(x_client_message_class, "serial", True, True);
387
+ rb_define_attr(x_client_message_class, "send_event", True, True);
388
+ rb_define_attr(x_client_message_class, "display", True, True);
389
+ rb_define_attr(x_client_message_class, "window", True, True);
390
+ rb_define_attr(x_client_message_class, "message_type", True, True);
391
+ rb_define_attr(x_client_message_class, "format", True, True);
392
+ rb_define_attr(x_client_message_class, "data", True, True);
393
+ unknown_display_name_class =
394
+ rb_define_class_under(xlib_module, "UnknownDisplayName", rb_eRuntimeError);
395
+ x_error_event_class =
396
+ rb_define_class_under(xlib_module, "XErrorEvent", rb_eRuntimeError);
397
+
398
+ rb_define_singleton_method(xlib_module, "x_open_display", xlib_x_open_display, 1);
399
+ rb_define_singleton_method(xlib_module, "x_close_display", xlib_x_close_display, 1);
400
+ rb_define_singleton_method(xlib_module, "x_get_input_focus", xlib_x_get_input_focus, 1);
401
+ rb_define_singleton_method(xlib_module, "x_query_tree", xlib_x_query_tree, 2);
402
+ rb_define_singleton_method(xlib_module, "default_root_window",
403
+ xlib_default_root_window, 1);
404
+ rb_define_singleton_method(xlib_module, "connection_number", xlib_connection_number, 1);
405
+ rb_define_singleton_method(xlib_module, "x_intern_atom", xlib_x_intern_atom, 3);
406
+ rb_define_singleton_method(xlib_module, "x_get_atom_name", xlib_x_get_atom_name, 2);
407
+ rb_define_singleton_method(xlib_module, "x_get_window_property",
408
+ xlib_x_get_window_property, 7);
409
+ rb_define_singleton_method(xlib_module, "x_list_properties", xlib_x_list_properties, 2);
410
+ rb_define_singleton_method(xlib_module, "x_select_input", xlib_x_select_input, 3);
411
+ rb_define_singleton_method(xlib_module, "x_next_event", xlib_x_next_event, 1);
412
+ rb_define_singleton_method(xlib_module, "x_pending", xlib_x_pending, 1);
413
+ rb_define_singleton_method(xlib_module, "x_set_wm_protocols",
414
+ xlib_x_set_wm_protocols, 3);
415
+
416
+ /*
417
+ Constants on X.h
418
+ the results of the following command
419
+ ```
420
+ grep '#define ' /usr/include/X11/X.h |\
421
+ sed -e 's/^.define \([a-zA-Z]*\).*./rb_define_const(xlib_module, "\1", INT2NUM(\1));/'|uniq
422
+ ```
423
+ */
424
+ #ifdef X
425
+ rb_define_const(xlib_module, "X", INT2NUM(X));
426
+ #endif
427
+ rb_define_const(xlib_module, "None", INT2NUM(None));
428
+ rb_define_const(xlib_module, "ParentRelative", INT2NUM(ParentRelative));
429
+ rb_define_const(xlib_module, "CopyFromParent", INT2NUM(CopyFromParent));
430
+ rb_define_const(xlib_module, "PointerWindow", INT2NUM(PointerWindow));
431
+ rb_define_const(xlib_module, "InputFocus", INT2NUM(InputFocus));
432
+ rb_define_const(xlib_module, "PointerRoot", INT2NUM(PointerRoot));
433
+ rb_define_const(xlib_module, "AnyPropertyType", INT2NUM(AnyPropertyType));
434
+ rb_define_const(xlib_module, "AnyKey", INT2NUM(AnyKey));
435
+ rb_define_const(xlib_module, "AnyButton", INT2NUM(AnyButton));
436
+ rb_define_const(xlib_module, "AllTemporary", INT2NUM(AllTemporary));
437
+ rb_define_const(xlib_module, "CurrentTime", INT2NUM(CurrentTime));
438
+ rb_define_const(xlib_module, "NoSymbol", INT2NUM(NoSymbol));
439
+ rb_define_const(xlib_module, "NoEventMask", INT2NUM(NoEventMask));
440
+ rb_define_const(xlib_module, "KeyPressMask", INT2NUM(KeyPressMask));
441
+ rb_define_const(xlib_module, "KeyReleaseMask", INT2NUM(KeyReleaseMask));
442
+ rb_define_const(xlib_module, "ButtonPressMask", INT2NUM(ButtonPressMask));
443
+ rb_define_const(xlib_module, "ButtonReleaseMask", INT2NUM(ButtonReleaseMask));
444
+ rb_define_const(xlib_module, "EnterWindowMask", INT2NUM(EnterWindowMask));
445
+ rb_define_const(xlib_module, "LeaveWindowMask", INT2NUM(LeaveWindowMask));
446
+ rb_define_const(xlib_module, "PointerMotionMask", INT2NUM(PointerMotionMask));
447
+ rb_define_const(xlib_module, "PointerMotionHintMask", INT2NUM(PointerMotionHintMask));
448
+ rb_define_const(xlib_module, "ButtonMotionMask", INT2NUM(ButtonMotionMask));
449
+ rb_define_const(xlib_module, "KeymapStateMask", INT2NUM(KeymapStateMask));
450
+ rb_define_const(xlib_module, "ExposureMask", INT2NUM(ExposureMask));
451
+ rb_define_const(xlib_module, "VisibilityChangeMask", INT2NUM(VisibilityChangeMask));
452
+ rb_define_const(xlib_module, "StructureNotifyMask", INT2NUM(StructureNotifyMask));
453
+ rb_define_const(xlib_module, "ResizeRedirectMask", INT2NUM(ResizeRedirectMask));
454
+ rb_define_const(xlib_module, "SubstructureNotifyMask", INT2NUM(SubstructureNotifyMask));
455
+ rb_define_const(xlib_module, "SubstructureRedirectMask", INT2NUM(SubstructureRedirectMask));
456
+ rb_define_const(xlib_module, "FocusChangeMask", INT2NUM(FocusChangeMask));
457
+ rb_define_const(xlib_module, "PropertyChangeMask", INT2NUM(PropertyChangeMask));
458
+ rb_define_const(xlib_module, "ColormapChangeMask", INT2NUM(ColormapChangeMask));
459
+ rb_define_const(xlib_module, "OwnerGrabButtonMask", INT2NUM(OwnerGrabButtonMask));
460
+ rb_define_const(xlib_module, "KeyPress", INT2NUM(KeyPress));
461
+ rb_define_const(xlib_module, "KeyRelease", INT2NUM(KeyRelease));
462
+ rb_define_const(xlib_module, "ButtonPress", INT2NUM(ButtonPress));
463
+ rb_define_const(xlib_module, "ButtonRelease", INT2NUM(ButtonRelease));
464
+ rb_define_const(xlib_module, "MotionNotify", INT2NUM(MotionNotify));
465
+ rb_define_const(xlib_module, "EnterNotify", INT2NUM(EnterNotify));
466
+ rb_define_const(xlib_module, "LeaveNotify", INT2NUM(LeaveNotify));
467
+ rb_define_const(xlib_module, "FocusIn", INT2NUM(FocusIn));
468
+ rb_define_const(xlib_module, "FocusOut", INT2NUM(FocusOut));
469
+ rb_define_const(xlib_module, "KeymapNotify", INT2NUM(KeymapNotify));
470
+ rb_define_const(xlib_module, "Expose", INT2NUM(Expose));
471
+ rb_define_const(xlib_module, "GraphicsExpose", INT2NUM(GraphicsExpose));
472
+ rb_define_const(xlib_module, "NoExpose", INT2NUM(NoExpose));
473
+ rb_define_const(xlib_module, "VisibilityNotify", INT2NUM(VisibilityNotify));
474
+ rb_define_const(xlib_module, "CreateNotify", INT2NUM(CreateNotify));
475
+ rb_define_const(xlib_module, "DestroyNotify", INT2NUM(DestroyNotify));
476
+ rb_define_const(xlib_module, "UnmapNotify", INT2NUM(UnmapNotify));
477
+ rb_define_const(xlib_module, "MapNotify", INT2NUM(MapNotify));
478
+ rb_define_const(xlib_module, "MapRequest", INT2NUM(MapRequest));
479
+ rb_define_const(xlib_module, "ReparentNotify", INT2NUM(ReparentNotify));
480
+ rb_define_const(xlib_module, "ConfigureNotify", INT2NUM(ConfigureNotify));
481
+ rb_define_const(xlib_module, "ConfigureRequest", INT2NUM(ConfigureRequest));
482
+ rb_define_const(xlib_module, "GravityNotify", INT2NUM(GravityNotify));
483
+ rb_define_const(xlib_module, "ResizeRequest", INT2NUM(ResizeRequest));
484
+ rb_define_const(xlib_module, "CirculateNotify", INT2NUM(CirculateNotify));
485
+ rb_define_const(xlib_module, "CirculateRequest", INT2NUM(CirculateRequest));
486
+ rb_define_const(xlib_module, "PropertyNotify", INT2NUM(PropertyNotify));
487
+ rb_define_const(xlib_module, "SelectionClear", INT2NUM(SelectionClear));
488
+ rb_define_const(xlib_module, "SelectionRequest", INT2NUM(SelectionRequest));
489
+ rb_define_const(xlib_module, "SelectionNotify", INT2NUM(SelectionNotify));
490
+ rb_define_const(xlib_module, "ColormapNotify", INT2NUM(ColormapNotify));
491
+ rb_define_const(xlib_module, "ClientMessage", INT2NUM(ClientMessage));
492
+ rb_define_const(xlib_module, "MappingNotify", INT2NUM(MappingNotify));
493
+ rb_define_const(xlib_module, "GenericEvent", INT2NUM(GenericEvent));
494
+ rb_define_const(xlib_module, "LASTEvent", INT2NUM(LASTEvent));
495
+ rb_define_const(xlib_module, "ShiftMask", INT2NUM(ShiftMask));
496
+ rb_define_const(xlib_module, "LockMask", INT2NUM(LockMask));
497
+ rb_define_const(xlib_module, "ControlMask", INT2NUM(ControlMask));
498
+ #ifdef Mod
499
+ rb_define_const(xlib_module, "Mod", INT2NUM(Mod));
500
+ #endif
501
+ rb_define_const(xlib_module, "ShiftMapIndex", INT2NUM(ShiftMapIndex));
502
+ rb_define_const(xlib_module, "LockMapIndex", INT2NUM(LockMapIndex));
503
+ rb_define_const(xlib_module, "ControlMapIndex", INT2NUM(ControlMapIndex));
504
+ #ifdef Button
505
+ rb_define_const(xlib_module, "Button", INT2NUM(Button));
506
+ #endif
507
+ rb_define_const(xlib_module, "AnyModifier", INT2NUM(AnyModifier));
508
+ rb_define_const(xlib_module, "NotifyNormal", INT2NUM(NotifyNormal));
509
+ rb_define_const(xlib_module, "NotifyGrab", INT2NUM(NotifyGrab));
510
+ rb_define_const(xlib_module, "NotifyUngrab", INT2NUM(NotifyUngrab));
511
+ rb_define_const(xlib_module, "NotifyWhileGrabbed", INT2NUM(NotifyWhileGrabbed));
512
+ rb_define_const(xlib_module, "NotifyHint", INT2NUM(NotifyHint));
513
+ rb_define_const(xlib_module, "NotifyAncestor", INT2NUM(NotifyAncestor));
514
+ rb_define_const(xlib_module, "NotifyVirtual", INT2NUM(NotifyVirtual));
515
+ rb_define_const(xlib_module, "NotifyInferior", INT2NUM(NotifyInferior));
516
+ rb_define_const(xlib_module, "NotifyNonlinear", INT2NUM(NotifyNonlinear));
517
+ rb_define_const(xlib_module, "NotifyNonlinearVirtual", INT2NUM(NotifyNonlinearVirtual));
518
+ rb_define_const(xlib_module, "NotifyPointer", INT2NUM(NotifyPointer));
519
+ rb_define_const(xlib_module, "NotifyPointerRoot", INT2NUM(NotifyPointerRoot));
520
+ rb_define_const(xlib_module, "NotifyDetailNone", INT2NUM(NotifyDetailNone));
521
+ rb_define_const(xlib_module, "VisibilityUnobscured", INT2NUM(VisibilityUnobscured));
522
+ rb_define_const(xlib_module, "VisibilityPartiallyObscured", INT2NUM(VisibilityPartiallyObscured));
523
+ rb_define_const(xlib_module, "VisibilityFullyObscured", INT2NUM(VisibilityFullyObscured));
524
+ rb_define_const(xlib_module, "PlaceOnTop", INT2NUM(PlaceOnTop));
525
+ rb_define_const(xlib_module, "PlaceOnBottom", INT2NUM(PlaceOnBottom));
526
+ rb_define_const(xlib_module, "FamilyDECnet", INT2NUM(FamilyDECnet));
527
+ rb_define_const(xlib_module, "FamilyChaos", INT2NUM(FamilyChaos));
528
+ rb_define_const(xlib_module, "FamilyInternet", INT2NUM(FamilyInternet));
529
+ rb_define_const(xlib_module, "FamilyServerInterpreted", INT2NUM(FamilyServerInterpreted));
530
+ rb_define_const(xlib_module, "PropertyNewValue", INT2NUM(PropertyNewValue));
531
+ rb_define_const(xlib_module, "PropertyDelete", INT2NUM(PropertyDelete));
532
+ rb_define_const(xlib_module, "ColormapUninstalled", INT2NUM(ColormapUninstalled));
533
+ rb_define_const(xlib_module, "ColormapInstalled", INT2NUM(ColormapInstalled));
534
+ rb_define_const(xlib_module, "GrabModeSync", INT2NUM(GrabModeSync));
535
+ rb_define_const(xlib_module, "GrabModeAsync", INT2NUM(GrabModeAsync));
536
+ rb_define_const(xlib_module, "GrabSuccess", INT2NUM(GrabSuccess));
537
+ rb_define_const(xlib_module, "AlreadyGrabbed", INT2NUM(AlreadyGrabbed));
538
+ rb_define_const(xlib_module, "GrabInvalidTime", INT2NUM(GrabInvalidTime));
539
+ rb_define_const(xlib_module, "GrabNotViewable", INT2NUM(GrabNotViewable));
540
+ rb_define_const(xlib_module, "GrabFrozen", INT2NUM(GrabFrozen));
541
+ rb_define_const(xlib_module, "AsyncPointer", INT2NUM(AsyncPointer));
542
+ rb_define_const(xlib_module, "SyncPointer", INT2NUM(SyncPointer));
543
+ rb_define_const(xlib_module, "ReplayPointer", INT2NUM(ReplayPointer));
544
+ rb_define_const(xlib_module, "AsyncKeyboard", INT2NUM(AsyncKeyboard));
545
+ rb_define_const(xlib_module, "SyncKeyboard", INT2NUM(SyncKeyboard));
546
+ rb_define_const(xlib_module, "ReplayKeyboard", INT2NUM(ReplayKeyboard));
547
+ rb_define_const(xlib_module, "AsyncBoth", INT2NUM(AsyncBoth));
548
+ rb_define_const(xlib_module, "SyncBoth", INT2NUM(SyncBoth));
549
+ rb_define_const(xlib_module, "RevertToNone", INT2NUM(RevertToNone));
550
+ rb_define_const(xlib_module, "RevertToPointerRoot", INT2NUM(RevertToPointerRoot));
551
+ rb_define_const(xlib_module, "RevertToParent", INT2NUM(RevertToParent));
552
+ rb_define_const(xlib_module, "Success", INT2NUM(Success));
553
+ rb_define_const(xlib_module, "BadRequest", INT2NUM(BadRequest));
554
+ rb_define_const(xlib_module, "BadValue", INT2NUM(BadValue));
555
+ rb_define_const(xlib_module, "BadWindow", INT2NUM(BadWindow));
556
+ rb_define_const(xlib_module, "BadPixmap", INT2NUM(BadPixmap));
557
+ rb_define_const(xlib_module, "BadAtom", INT2NUM(BadAtom));
558
+ rb_define_const(xlib_module, "BadCursor", INT2NUM(BadCursor));
559
+ rb_define_const(xlib_module, "BadFont", INT2NUM(BadFont));
560
+ rb_define_const(xlib_module, "BadMatch", INT2NUM(BadMatch));
561
+ rb_define_const(xlib_module, "BadDrawable", INT2NUM(BadDrawable));
562
+ rb_define_const(xlib_module, "BadAccess", INT2NUM(BadAccess));
563
+ rb_define_const(xlib_module, "BadAlloc", INT2NUM(BadAlloc));
564
+ rb_define_const(xlib_module, "BadColor", INT2NUM(BadColor));
565
+ rb_define_const(xlib_module, "BadGC", INT2NUM(BadGC));
566
+ rb_define_const(xlib_module, "BadIDChoice", INT2NUM(BadIDChoice));
567
+ rb_define_const(xlib_module, "BadName", INT2NUM(BadName));
568
+ rb_define_const(xlib_module, "BadLength", INT2NUM(BadLength));
569
+ rb_define_const(xlib_module, "BadImplementation", INT2NUM(BadImplementation));
570
+ rb_define_const(xlib_module, "FirstExtensionError", INT2NUM(FirstExtensionError));
571
+ rb_define_const(xlib_module, "LastExtensionError", INT2NUM(LastExtensionError));
572
+ rb_define_const(xlib_module, "InputOutput", INT2NUM(InputOutput));
573
+ rb_define_const(xlib_module, "InputOnly", INT2NUM(InputOnly));
574
+ rb_define_const(xlib_module, "CWBackPixmap", INT2NUM(CWBackPixmap));
575
+ rb_define_const(xlib_module, "CWBackPixel", INT2NUM(CWBackPixel));
576
+ rb_define_const(xlib_module, "CWBorderPixmap", INT2NUM(CWBorderPixmap));
577
+ rb_define_const(xlib_module, "CWBorderPixel", INT2NUM(CWBorderPixel));
578
+ rb_define_const(xlib_module, "CWBitGravity", INT2NUM(CWBitGravity));
579
+ rb_define_const(xlib_module, "CWWinGravity", INT2NUM(CWWinGravity));
580
+ rb_define_const(xlib_module, "CWBackingStore", INT2NUM(CWBackingStore));
581
+ rb_define_const(xlib_module, "CWBackingPlanes", INT2NUM(CWBackingPlanes));
582
+ rb_define_const(xlib_module, "CWBackingPixel", INT2NUM(CWBackingPixel));
583
+ rb_define_const(xlib_module, "CWOverrideRedirect", INT2NUM(CWOverrideRedirect));
584
+ rb_define_const(xlib_module, "CWSaveUnder", INT2NUM(CWSaveUnder));
585
+ rb_define_const(xlib_module, "CWEventMask", INT2NUM(CWEventMask));
586
+ rb_define_const(xlib_module, "CWDontPropagate", INT2NUM(CWDontPropagate));
587
+ rb_define_const(xlib_module, "CWColormap", INT2NUM(CWColormap));
588
+ rb_define_const(xlib_module, "CWCursor", INT2NUM(CWCursor));
589
+ rb_define_const(xlib_module, "CWX", INT2NUM(CWX));
590
+ rb_define_const(xlib_module, "CWY", INT2NUM(CWY));
591
+ rb_define_const(xlib_module, "CWWidth", INT2NUM(CWWidth));
592
+ rb_define_const(xlib_module, "CWHeight", INT2NUM(CWHeight));
593
+ rb_define_const(xlib_module, "CWBorderWidth", INT2NUM(CWBorderWidth));
594
+ rb_define_const(xlib_module, "CWSibling", INT2NUM(CWSibling));
595
+ rb_define_const(xlib_module, "CWStackMode", INT2NUM(CWStackMode));
596
+ rb_define_const(xlib_module, "ForgetGravity", INT2NUM(ForgetGravity));
597
+ rb_define_const(xlib_module, "NorthWestGravity", INT2NUM(NorthWestGravity));
598
+ rb_define_const(xlib_module, "NorthGravity", INT2NUM(NorthGravity));
599
+ rb_define_const(xlib_module, "NorthEastGravity", INT2NUM(NorthEastGravity));
600
+ rb_define_const(xlib_module, "WestGravity", INT2NUM(WestGravity));
601
+ rb_define_const(xlib_module, "CenterGravity", INT2NUM(CenterGravity));
602
+ rb_define_const(xlib_module, "EastGravity", INT2NUM(EastGravity));
603
+ rb_define_const(xlib_module, "SouthWestGravity", INT2NUM(SouthWestGravity));
604
+ rb_define_const(xlib_module, "SouthGravity", INT2NUM(SouthGravity));
605
+ rb_define_const(xlib_module, "SouthEastGravity", INT2NUM(SouthEastGravity));
606
+ rb_define_const(xlib_module, "StaticGravity", INT2NUM(StaticGravity));
607
+ rb_define_const(xlib_module, "UnmapGravity", INT2NUM(UnmapGravity));
608
+ rb_define_const(xlib_module, "NotUseful", INT2NUM(NotUseful));
609
+ rb_define_const(xlib_module, "WhenMapped", INT2NUM(WhenMapped));
610
+ rb_define_const(xlib_module, "Always", INT2NUM(Always));
611
+ rb_define_const(xlib_module, "IsUnmapped", INT2NUM(IsUnmapped));
612
+ rb_define_const(xlib_module, "IsUnviewable", INT2NUM(IsUnviewable));
613
+ rb_define_const(xlib_module, "IsViewable", INT2NUM(IsViewable));
614
+ rb_define_const(xlib_module, "SetModeInsert", INT2NUM(SetModeInsert));
615
+ rb_define_const(xlib_module, "SetModeDelete", INT2NUM(SetModeDelete));
616
+ rb_define_const(xlib_module, "DestroyAll", INT2NUM(DestroyAll));
617
+ rb_define_const(xlib_module, "RetainPermanent", INT2NUM(RetainPermanent));
618
+ rb_define_const(xlib_module, "RetainTemporary", INT2NUM(RetainTemporary));
619
+ rb_define_const(xlib_module, "Above", INT2NUM(Above));
620
+ rb_define_const(xlib_module, "Below", INT2NUM(Below));
621
+ rb_define_const(xlib_module, "TopIf", INT2NUM(TopIf));
622
+ rb_define_const(xlib_module, "BottomIf", INT2NUM(BottomIf));
623
+ rb_define_const(xlib_module, "Opposite", INT2NUM(Opposite));
624
+ rb_define_const(xlib_module, "RaiseLowest", INT2NUM(RaiseLowest));
625
+ rb_define_const(xlib_module, "LowerHighest", INT2NUM(LowerHighest));
626
+ rb_define_const(xlib_module, "PropModeReplace", INT2NUM(PropModeReplace));
627
+ rb_define_const(xlib_module, "PropModePrepend", INT2NUM(PropModePrepend));
628
+ rb_define_const(xlib_module, "PropModeAppend", INT2NUM(PropModeAppend));
629
+ rb_define_const(xlib_module, "GXand", INT2NUM(GXand));
630
+ rb_define_const(xlib_module, "GXandReverse", INT2NUM(GXandReverse));
631
+ rb_define_const(xlib_module, "GXcopy", INT2NUM(GXcopy));
632
+ rb_define_const(xlib_module, "GXandInverted", INT2NUM(GXandInverted));
633
+ rb_define_const(xlib_module, "GXxor", INT2NUM(GXxor));
634
+ rb_define_const(xlib_module, "GXor", INT2NUM(GXor));
635
+ rb_define_const(xlib_module, "GXnor", INT2NUM(GXnor));
636
+ rb_define_const(xlib_module, "GXequiv", INT2NUM(GXequiv));
637
+ rb_define_const(xlib_module, "GXinvert", INT2NUM(GXinvert));
638
+ rb_define_const(xlib_module, "GXorReverse", INT2NUM(GXorReverse));
639
+ rb_define_const(xlib_module, "GXcopyInverted", INT2NUM(GXcopyInverted));
640
+ rb_define_const(xlib_module, "GXorInverted", INT2NUM(GXorInverted));
641
+ rb_define_const(xlib_module, "GXnand", INT2NUM(GXnand));
642
+ rb_define_const(xlib_module, "GXset", INT2NUM(GXset));
643
+ rb_define_const(xlib_module, "LineSolid", INT2NUM(LineSolid));
644
+ rb_define_const(xlib_module, "LineOnOffDash", INT2NUM(LineOnOffDash));
645
+ rb_define_const(xlib_module, "LineDoubleDash", INT2NUM(LineDoubleDash));
646
+ rb_define_const(xlib_module, "CapNotLast", INT2NUM(CapNotLast));
647
+ rb_define_const(xlib_module, "CapButt", INT2NUM(CapButt));
648
+ rb_define_const(xlib_module, "CapRound", INT2NUM(CapRound));
649
+ rb_define_const(xlib_module, "CapProjecting", INT2NUM(CapProjecting));
650
+ rb_define_const(xlib_module, "JoinMiter", INT2NUM(JoinMiter));
651
+ rb_define_const(xlib_module, "JoinRound", INT2NUM(JoinRound));
652
+ rb_define_const(xlib_module, "JoinBevel", INT2NUM(JoinBevel));
653
+ rb_define_const(xlib_module, "FillSolid", INT2NUM(FillSolid));
654
+ rb_define_const(xlib_module, "FillTiled", INT2NUM(FillTiled));
655
+ rb_define_const(xlib_module, "FillStippled", INT2NUM(FillStippled));
656
+ rb_define_const(xlib_module, "FillOpaqueStippled", INT2NUM(FillOpaqueStippled));
657
+ rb_define_const(xlib_module, "EvenOddRule", INT2NUM(EvenOddRule));
658
+ rb_define_const(xlib_module, "WindingRule", INT2NUM(WindingRule));
659
+ rb_define_const(xlib_module, "ClipByChildren", INT2NUM(ClipByChildren));
660
+ rb_define_const(xlib_module, "IncludeInferiors", INT2NUM(IncludeInferiors));
661
+ rb_define_const(xlib_module, "Unsorted", INT2NUM(Unsorted));
662
+ rb_define_const(xlib_module, "YSorted", INT2NUM(YSorted));
663
+ rb_define_const(xlib_module, "YXSorted", INT2NUM(YXSorted));
664
+ rb_define_const(xlib_module, "YXBanded", INT2NUM(YXBanded));
665
+ rb_define_const(xlib_module, "CoordModeOrigin", INT2NUM(CoordModeOrigin));
666
+ rb_define_const(xlib_module, "CoordModePrevious", INT2NUM(CoordModePrevious));
667
+ rb_define_const(xlib_module, "Complex", INT2NUM(Complex));
668
+ rb_define_const(xlib_module, "Nonconvex", INT2NUM(Nonconvex));
669
+ rb_define_const(xlib_module, "Convex", INT2NUM(Convex));
670
+ rb_define_const(xlib_module, "ArcChord", INT2NUM(ArcChord));
671
+ rb_define_const(xlib_module, "ArcPieSlice", INT2NUM(ArcPieSlice));
672
+ rb_define_const(xlib_module, "GCFunction", INT2NUM(GCFunction));
673
+ rb_define_const(xlib_module, "GCPlaneMask", INT2NUM(GCPlaneMask));
674
+ rb_define_const(xlib_module, "GCForeground", INT2NUM(GCForeground));
675
+ rb_define_const(xlib_module, "GCBackground", INT2NUM(GCBackground));
676
+ rb_define_const(xlib_module, "GCLineWidth", INT2NUM(GCLineWidth));
677
+ rb_define_const(xlib_module, "GCLineStyle", INT2NUM(GCLineStyle));
678
+ rb_define_const(xlib_module, "GCCapStyle", INT2NUM(GCCapStyle));
679
+ rb_define_const(xlib_module, "GCJoinStyle", INT2NUM(GCJoinStyle));
680
+ rb_define_const(xlib_module, "GCFillStyle", INT2NUM(GCFillStyle));
681
+ rb_define_const(xlib_module, "GCFillRule", INT2NUM(GCFillRule));
682
+ rb_define_const(xlib_module, "GCTile", INT2NUM(GCTile));
683
+ rb_define_const(xlib_module, "GCStipple", INT2NUM(GCStipple));
684
+ rb_define_const(xlib_module, "GCTileStipXOrigin", INT2NUM(GCTileStipXOrigin));
685
+ rb_define_const(xlib_module, "GCTileStipYOrigin", INT2NUM(GCTileStipYOrigin));
686
+ rb_define_const(xlib_module, "GCFont", INT2NUM(GCFont));
687
+ rb_define_const(xlib_module, "GCSubwindowMode", INT2NUM(GCSubwindowMode));
688
+ rb_define_const(xlib_module, "GCGraphicsExposures", INT2NUM(GCGraphicsExposures));
689
+ rb_define_const(xlib_module, "GCClipXOrigin", INT2NUM(GCClipXOrigin));
690
+ rb_define_const(xlib_module, "GCClipYOrigin", INT2NUM(GCClipYOrigin));
691
+ rb_define_const(xlib_module, "GCClipMask", INT2NUM(GCClipMask));
692
+ rb_define_const(xlib_module, "GCDashOffset", INT2NUM(GCDashOffset));
693
+ rb_define_const(xlib_module, "GCDashList", INT2NUM(GCDashList));
694
+ rb_define_const(xlib_module, "GCArcMode", INT2NUM(GCArcMode));
695
+ rb_define_const(xlib_module, "GCLastBit", INT2NUM(GCLastBit));
696
+ rb_define_const(xlib_module, "FontLeftToRight", INT2NUM(FontLeftToRight));
697
+ rb_define_const(xlib_module, "FontRightToLeft", INT2NUM(FontRightToLeft));
698
+ rb_define_const(xlib_module, "FontChange", INT2NUM(FontChange));
699
+ rb_define_const(xlib_module, "XYBitmap", INT2NUM(XYBitmap));
700
+ rb_define_const(xlib_module, "XYPixmap", INT2NUM(XYPixmap));
701
+ rb_define_const(xlib_module, "ZPixmap", INT2NUM(ZPixmap));
702
+ rb_define_const(xlib_module, "AllocNone", INT2NUM(AllocNone));
703
+ rb_define_const(xlib_module, "AllocAll", INT2NUM(AllocAll));
704
+ rb_define_const(xlib_module, "DoRed", INT2NUM(DoRed));
705
+ rb_define_const(xlib_module, "DoGreen", INT2NUM(DoGreen));
706
+ rb_define_const(xlib_module, "DoBlue", INT2NUM(DoBlue));
707
+ rb_define_const(xlib_module, "CursorShape", INT2NUM(CursorShape));
708
+ rb_define_const(xlib_module, "TileShape", INT2NUM(TileShape));
709
+ rb_define_const(xlib_module, "StippleShape", INT2NUM(StippleShape));
710
+ rb_define_const(xlib_module, "AutoRepeatModeOff", INT2NUM(AutoRepeatModeOff));
711
+ rb_define_const(xlib_module, "AutoRepeatModeOn", INT2NUM(AutoRepeatModeOn));
712
+ rb_define_const(xlib_module, "AutoRepeatModeDefault", INT2NUM(AutoRepeatModeDefault));
713
+ rb_define_const(xlib_module, "LedModeOff", INT2NUM(LedModeOff));
714
+ rb_define_const(xlib_module, "LedModeOn", INT2NUM(LedModeOn));
715
+ rb_define_const(xlib_module, "KBKeyClickPercent", INT2NUM(KBKeyClickPercent));
716
+ rb_define_const(xlib_module, "KBBellPercent", INT2NUM(KBBellPercent));
717
+ rb_define_const(xlib_module, "KBBellPitch", INT2NUM(KBBellPitch));
718
+ rb_define_const(xlib_module, "KBBellDuration", INT2NUM(KBBellDuration));
719
+ rb_define_const(xlib_module, "KBLed", INT2NUM(KBLed));
720
+ rb_define_const(xlib_module, "KBLedMode", INT2NUM(KBLedMode));
721
+ rb_define_const(xlib_module, "KBKey", INT2NUM(KBKey));
722
+ rb_define_const(xlib_module, "KBAutoRepeatMode", INT2NUM(KBAutoRepeatMode));
723
+ rb_define_const(xlib_module, "MappingSuccess", INT2NUM(MappingSuccess));
724
+ rb_define_const(xlib_module, "MappingBusy", INT2NUM(MappingBusy));
725
+ rb_define_const(xlib_module, "MappingFailed", INT2NUM(MappingFailed));
726
+ rb_define_const(xlib_module, "MappingModifier", INT2NUM(MappingModifier));
727
+ rb_define_const(xlib_module, "MappingKeyboard", INT2NUM(MappingKeyboard));
728
+ rb_define_const(xlib_module, "MappingPointer", INT2NUM(MappingPointer));
729
+ rb_define_const(xlib_module, "DontPreferBlanking", INT2NUM(DontPreferBlanking));
730
+ rb_define_const(xlib_module, "PreferBlanking", INT2NUM(PreferBlanking));
731
+ rb_define_const(xlib_module, "DefaultBlanking", INT2NUM(DefaultBlanking));
732
+ rb_define_const(xlib_module, "DisableScreenSaver", INT2NUM(DisableScreenSaver));
733
+ rb_define_const(xlib_module, "DisableScreenInterval", INT2NUM(DisableScreenInterval));
734
+ rb_define_const(xlib_module, "DontAllowExposures", INT2NUM(DontAllowExposures));
735
+ rb_define_const(xlib_module, "AllowExposures", INT2NUM(AllowExposures));
736
+ rb_define_const(xlib_module, "DefaultExposures", INT2NUM(DefaultExposures));
737
+ rb_define_const(xlib_module, "ScreenSaverReset", INT2NUM(ScreenSaverReset));
738
+ rb_define_const(xlib_module, "ScreenSaverActive", INT2NUM(ScreenSaverActive));
739
+ rb_define_const(xlib_module, "HostInsert", INT2NUM(HostInsert));
740
+ rb_define_const(xlib_module, "HostDelete", INT2NUM(HostDelete));
741
+ rb_define_const(xlib_module, "EnableAccess", INT2NUM(EnableAccess));
742
+ rb_define_const(xlib_module, "DisableAccess", INT2NUM(DisableAccess));
743
+ rb_define_const(xlib_module, "StaticGray", INT2NUM(StaticGray));
744
+ rb_define_const(xlib_module, "GrayScale", INT2NUM(GrayScale));
745
+ rb_define_const(xlib_module, "StaticColor", INT2NUM(StaticColor));
746
+ rb_define_const(xlib_module, "PseudoColor", INT2NUM(PseudoColor));
747
+ rb_define_const(xlib_module, "TrueColor", INT2NUM(TrueColor));
748
+ rb_define_const(xlib_module, "DirectColor", INT2NUM(DirectColor));
749
+ rb_define_const(xlib_module, "LSBFirst", INT2NUM(LSBFirst));
750
+ rb_define_const(xlib_module, "MSBFirst", INT2NUM(MSBFirst));
751
+ }