merge from trunk revisions 58933, 58935, 58936
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / X11Structs.cs
1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software",, to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
8 // 
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
11 // 
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 //
20 // Copyright (c) 2004 Novell, Inc.
21 //
22 // Authors:
23 //      Peter Bartok    pbartok@novell.com
24 //
25
26
27 // NOT COMPLETE
28
29 using System;
30 using System.ComponentModel;
31 using System.Collections;
32 using System.Drawing;
33 using System.Diagnostics;
34 using System.Runtime.InteropServices;
35
36 /// X11 Version
37 namespace System.Windows.Forms {
38         //
39         // In the structures below, fields of type long are mapped to IntPtr.
40         // This will work on all platforms where sizeof(long)==sizeof(void*), which
41         // is almost all platforms except WIN64.
42         //
43
44         [StructLayout(LayoutKind.Sequential)]
45         internal struct XAnyEvent {
46                 internal XEventName     type;
47                 internal IntPtr         serial;
48                 internal bool           send_event;
49                 internal IntPtr         display;
50                 internal IntPtr         window;
51         }
52
53         [StructLayout(LayoutKind.Sequential)]
54         internal struct XKeyEvent {
55                 internal XEventName     type;
56                 internal IntPtr         serial;
57                 internal bool           send_event;
58                 internal IntPtr         display;
59                 internal IntPtr         window;
60                 internal IntPtr         root;
61                 internal IntPtr         subwindow;
62                 internal IntPtr         time;
63                 internal int            x;
64                 internal int            y;
65                 internal int            x_root;
66                 internal int            y_root;
67                 internal int            state;
68                 internal int            keycode;
69                 internal bool           same_screen;
70         }
71
72         [StructLayout(LayoutKind.Sequential)]
73         internal struct XButtonEvent {
74                 internal XEventName     type;
75                 internal IntPtr         serial;
76                 internal bool           send_event;
77                 internal IntPtr         display;
78                 internal IntPtr         window;
79                 internal IntPtr         root;
80                 internal IntPtr         subwindow;
81                 internal IntPtr         time;
82                 internal int            x;
83                 internal int            y;
84                 internal int            x_root;
85                 internal int            y_root;
86                 internal int            state;
87                 internal int            button;
88                 internal bool           same_screen;
89         }
90
91         [StructLayout(LayoutKind.Sequential)]
92         internal struct XMotionEvent {
93                 internal XEventName     type;
94                 internal IntPtr         serial;
95                 internal bool           send_event;
96                 internal IntPtr         display;
97                 internal IntPtr         window;
98                 internal IntPtr         root;
99                 internal IntPtr         subwindow;
100                 internal IntPtr         time;
101                 internal int            x;
102                 internal int            y;
103                 internal int            x_root;
104                 internal int            y_root;
105                 internal int            state;
106                 internal byte           is_hint;
107                 internal bool           same_screen;
108         }
109
110         [StructLayout(LayoutKind.Sequential)]
111         internal struct XCrossingEvent {
112                 internal XEventName     type;
113                 internal IntPtr         serial;
114                 internal bool           send_event;
115                 internal IntPtr         display;
116                 internal IntPtr         window;
117                 internal IntPtr         root;
118                 internal IntPtr         subwindow;
119                 internal IntPtr         time;
120                 internal int            x;
121                 internal int            y;
122                 internal int            x_root;
123                 internal int            y_root;
124                 internal NotifyMode     mode;
125                 internal NotifyDetail   detail;
126                 internal bool           same_screen;
127                 internal bool           focus;
128                 internal int            state;
129         }
130
131         [StructLayout(LayoutKind.Sequential)]
132         internal struct XFocusChangeEvent {
133                 internal XEventName     type;
134                 internal IntPtr         serial;
135                 internal bool           send_event;
136                 internal IntPtr         display;
137                 internal IntPtr         window;
138                 internal int            mode;
139                 internal NotifyDetail   detail;
140         }
141
142         [StructLayout(LayoutKind.Sequential)]
143         internal struct XKeymapEvent {
144                 internal XEventName     type;
145                 internal IntPtr         serial;
146                 internal bool           send_event;
147                 internal IntPtr         display;
148                 internal IntPtr         window;
149                 internal byte           key_vector0;
150                 internal byte           key_vector1;
151                 internal byte           key_vector2;
152                 internal byte           key_vector3;
153                 internal byte           key_vector4;
154                 internal byte           key_vector5;
155                 internal byte           key_vector6;
156                 internal byte           key_vector7;
157                 internal byte           key_vector8;
158                 internal byte           key_vector9;
159                 internal byte           key_vector10;
160                 internal byte           key_vector11;
161                 internal byte           key_vector12;
162                 internal byte           key_vector13;
163                 internal byte           key_vector14;
164                 internal byte           key_vector15;
165                 internal byte           key_vector16;
166                 internal byte           key_vector17;
167                 internal byte           key_vector18;
168                 internal byte           key_vector19;
169                 internal byte           key_vector20;
170                 internal byte           key_vector21;
171                 internal byte           key_vector22;
172                 internal byte           key_vector23;
173                 internal byte           key_vector24;
174                 internal byte           key_vector25;
175                 internal byte           key_vector26;
176                 internal byte           key_vector27;
177                 internal byte           key_vector28;
178                 internal byte           key_vector29;
179                 internal byte           key_vector30;
180                 internal byte           key_vector31;
181         }
182
183         [StructLayout(LayoutKind.Sequential)]
184         internal struct XExposeEvent {
185                 internal XEventName     type;
186                 internal IntPtr         serial;
187                 internal bool           send_event;
188                 internal IntPtr         display;
189                 internal IntPtr         window;
190                 internal int            x;
191                 internal int            y;
192                 internal int            width;
193                 internal int            height;
194                 internal int            count;
195         }
196
197         [StructLayout(LayoutKind.Sequential)]
198         internal struct XGraphicsExposeEvent {
199                 internal XEventName     type;
200                 internal IntPtr         serial;
201                 internal bool           send_event;
202                 internal IntPtr         display;
203                 internal IntPtr         drawable;
204                 internal int            x;
205                 internal int            y;
206                 internal int            width;
207                 internal int            height;
208                 internal int            count;
209                 internal int            major_code;
210                 internal int            minor_code;
211         }
212
213         [StructLayout(LayoutKind.Sequential)]
214         internal struct XNoExposeEvent {
215                 internal XEventName     type;
216                 internal IntPtr         serial;
217                 internal bool           send_event;
218                 internal IntPtr         display;
219                 internal IntPtr         drawable;
220                 internal int            major_code;
221                 internal int            minor_code;
222         }
223
224         [StructLayout(LayoutKind.Sequential)]
225         internal struct XVisibilityEvent {
226                 internal XEventName     type;
227                 internal IntPtr         serial;
228                 internal bool           send_event;
229                 internal IntPtr         display;
230                 internal IntPtr         window;
231                 internal int            state;
232         }
233
234         [StructLayout(LayoutKind.Sequential)]
235         internal struct XCreateWindowEvent {
236                 internal XEventName     type;
237                 internal IntPtr         serial;
238                 internal bool           send_event;
239                 internal IntPtr         display;
240                 internal IntPtr         parent;
241                 internal IntPtr         window;
242                 internal int            x;
243                 internal int            y;
244                 internal int            width;
245                 internal int            height;
246                 internal int            border_width;
247                 internal bool           override_redirect;
248         }
249
250         [StructLayout(LayoutKind.Sequential)]
251         internal struct XDestroyWindowEvent {
252                 internal XEventName     type;
253                 internal IntPtr         serial;
254                 internal bool           send_event;
255                 internal IntPtr         display;
256                 internal IntPtr         xevent;
257                 internal IntPtr         window;
258         }
259
260         [StructLayout(LayoutKind.Sequential)]
261         internal struct XUnmapEvent {
262                 internal XEventName     type;
263                 internal IntPtr         serial;
264                 internal bool           send_event;
265                 internal IntPtr         display;
266                 internal IntPtr         xevent;
267                 internal IntPtr         window;
268                 internal bool           from_configure;
269         }
270
271         [StructLayout(LayoutKind.Sequential)]
272         internal struct XMapEvent {
273                 internal XEventName     type;
274                 internal IntPtr         serial;
275                 internal bool           send_event;
276                 internal IntPtr         display;
277                 internal IntPtr         xevent;
278                 internal IntPtr         window;
279                 internal bool           override_redirect;
280         }
281
282         [StructLayout(LayoutKind.Sequential)]
283         internal struct XMapRequestEvent {
284                 internal XEventName     type;
285                 internal IntPtr         serial;
286                 internal bool           send_event;
287                 internal IntPtr         display;
288                 internal IntPtr         parent;
289                 internal IntPtr         window;
290         }
291
292         [StructLayout(LayoutKind.Sequential)]
293         internal struct XReparentEvent {
294                 internal XEventName     type;
295                 internal IntPtr         serial;
296                 internal bool           send_event;
297                 internal IntPtr         display;
298                 internal IntPtr         xevent;
299                 internal IntPtr         window;
300                 internal IntPtr         parent;
301                 internal int            x;
302                 internal int            y;
303                 internal bool           override_redirect;
304         }
305
306         [StructLayout(LayoutKind.Sequential)]
307         internal struct XConfigureEvent {
308                 internal XEventName     type;
309                 internal IntPtr         serial;
310                 internal bool           send_event;
311                 internal IntPtr         display;
312                 internal IntPtr         xevent;
313                 internal IntPtr         window;
314                 internal int            x;
315                 internal int            y;
316                 internal int            width;
317                 internal int            height;
318                 internal int            border_width;
319                 internal IntPtr         above;
320                 internal bool           override_redirect;
321         }
322
323         [StructLayout(LayoutKind.Sequential)]
324         internal struct XGravityEvent {
325                 internal XEventName     type;
326                 internal IntPtr         serial;
327                 internal bool           send_event;
328                 internal IntPtr         display;
329                 internal IntPtr         xevent;
330                 internal IntPtr         window;
331                 internal int            x;
332                 internal int            y;
333         }
334
335         [StructLayout(LayoutKind.Sequential)]
336         internal struct XResizeRequestEvent {
337                 internal XEventName     type;
338                 internal IntPtr         serial;
339                 internal bool           send_event;
340                 internal IntPtr         display;
341                 internal IntPtr         window;
342                 internal int            width;
343                 internal int            height;
344         }
345
346         [StructLayout(LayoutKind.Sequential)]
347         internal struct XConfigureRequestEvent {
348                 internal XEventName     type;
349                 internal IntPtr         serial;
350                 internal bool           send_event;
351                 internal IntPtr         display;
352                 internal IntPtr         window;
353                 internal int            width;
354                 internal int            height;
355         }
356
357         [StructLayout(LayoutKind.Sequential)]
358         internal struct XCirculateEvent {
359                 internal XEventName     type;
360                 internal IntPtr         serial;
361                 internal bool           send_event;
362                 internal IntPtr         display;
363                 internal IntPtr         xevent;
364                 internal IntPtr         window;
365                 internal int            place;
366         }
367
368         [StructLayout(LayoutKind.Sequential)]
369         internal struct XCirculateRequestEvent {
370                 internal XEventName     type;
371                 internal IntPtr         serial;
372                 internal bool           send_event;
373                 internal IntPtr         display;
374                 internal IntPtr         parent;
375                 internal IntPtr         window;
376                 internal int            place;
377         }
378
379         [StructLayout(LayoutKind.Sequential)]
380         internal struct XPropertyEvent {
381                 internal XEventName     type;
382                 internal IntPtr         serial;
383                 internal bool           send_event;
384                 internal IntPtr         display;
385                 internal IntPtr         window;
386                 internal int            atom;
387                 internal IntPtr         time;
388                 internal int            state;
389         }
390
391         [StructLayout(LayoutKind.Sequential)]
392         internal struct XSelectionClearEvent {
393                 internal XEventName     type;
394                 internal IntPtr         serial;
395                 internal bool           send_event;
396                 internal IntPtr         display;
397                 internal IntPtr         window;
398                 internal int            selection;
399                 internal IntPtr         time;
400         }
401
402         [StructLayout(LayoutKind.Sequential)]
403         internal struct XSelectionRequestEvent {
404                 internal XEventName     type;
405                 internal IntPtr         serial;
406                 internal bool           send_event;
407                 internal IntPtr         display;
408                 internal IntPtr         owner;
409                 internal IntPtr         requestor;
410                 internal int            selection;
411                 internal int            target;
412                 internal int            property;
413                 internal IntPtr         time;
414         }
415
416         [StructLayout(LayoutKind.Sequential)]
417         internal struct XSelectionEvent {
418                 internal XEventName     type;
419                 internal IntPtr         serial;
420                 internal bool           send_event;
421                 internal IntPtr         display;
422                 internal IntPtr         requestor;
423                 internal int            selection;
424                 internal int            target;
425                 internal int            property;
426                 internal IntPtr         time;
427         }
428
429         [StructLayout(LayoutKind.Sequential)]
430         internal struct XColormapEvent {
431                 internal XEventName     type;
432                 internal IntPtr         serial;
433                 internal bool           send_event;
434                 internal IntPtr         display;
435                 internal IntPtr         window;
436                 internal IntPtr         colormap;
437                 internal bool           c_new;
438                 internal int            state;
439         }
440
441         [StructLayout(LayoutKind.Sequential)]
442         internal struct XClientMessageEvent {
443                 internal XEventName     type;
444                 internal IntPtr         serial;
445                 internal bool           send_event;
446                 internal IntPtr         display;
447                 internal IntPtr         window;
448                 internal IntPtr         message_type;
449                 internal int            format;
450                 internal IntPtr         ptr1;
451                 internal IntPtr         ptr2;
452                 internal IntPtr         ptr3;
453                 internal IntPtr         ptr4;
454                 internal IntPtr         ptr5;
455         }
456
457         [StructLayout(LayoutKind.Sequential)]
458         internal struct XMappingEvent {
459                 internal XEventName     type;
460                 internal IntPtr         serial;
461                 internal bool           send_event;
462                 internal IntPtr         display;
463                 internal IntPtr         window;
464                 internal int            request;
465                 internal int            first_keycode;
466                 internal int            count;
467         }
468
469         [StructLayout(LayoutKind.Sequential)]
470         internal struct XErrorEvent {
471                 internal XEventName     type;
472                 internal IntPtr         display;
473                 internal IntPtr         resourceid;
474                 internal IntPtr         serial;
475                 internal byte           error_code;
476                 internal XRequest       request_code;
477                 internal byte           minor_code;
478         }
479
480         [StructLayout(LayoutKind.Sequential)]
481         internal struct XTimerNotifyEvent {
482                 internal XEventName     type;
483                 internal EventHandler   handler;
484         }
485
486         [StructLayout(LayoutKind.Sequential)]
487         internal struct XEventPad {
488                 internal IntPtr pad0;
489                 internal IntPtr pad1;
490                 internal IntPtr pad2;
491                 internal IntPtr pad3;
492                 internal IntPtr pad4;
493                 internal IntPtr pad5;
494                 internal IntPtr pad6;
495                 internal IntPtr pad7;
496                 internal IntPtr pad8;
497                 internal IntPtr pad9;
498                 internal IntPtr pad10;
499                 internal IntPtr pad11;
500                 internal IntPtr pad12;
501                 internal IntPtr pad13;
502                 internal IntPtr pad14;
503                 internal IntPtr pad15;
504                 internal IntPtr pad16;
505                 internal IntPtr pad17;
506                 internal IntPtr pad18;
507                 internal IntPtr pad19;
508                 internal IntPtr pad20;
509                 internal IntPtr pad21;
510                 internal IntPtr pad22;
511                 internal IntPtr pad23;
512         }
513
514         [StructLayout(LayoutKind.Explicit)]
515         internal struct XEvent {
516                 [ FieldOffset(0) ] internal XEventName type;
517                 [ FieldOffset(0) ] internal XAnyEvent AnyEvent;
518                 [ FieldOffset(0) ] internal XKeyEvent KeyEvent;
519                 [ FieldOffset(0) ] internal XButtonEvent ButtonEvent;
520                 [ FieldOffset(0) ] internal XMotionEvent MotionEvent;
521                 [ FieldOffset(0) ] internal XCrossingEvent CrossingEvent;
522                 [ FieldOffset(0) ] internal XFocusChangeEvent FocusChangeEvent;
523                 [ FieldOffset(0) ] internal XExposeEvent ExposeEvent;
524                 [ FieldOffset(0) ] internal XGraphicsExposeEvent GraphicsExposeEvent;
525                 [ FieldOffset(0) ] internal XNoExposeEvent NoExposeEvent;
526                 [ FieldOffset(0) ] internal XVisibilityEvent VisibilityEvent;
527                 [ FieldOffset(0) ] internal XCreateWindowEvent CreateWindowEvent;
528                 [ FieldOffset(0) ] internal XDestroyWindowEvent DestroyWindowEvent;
529                 [ FieldOffset(0) ] internal XUnmapEvent UnmapEvent;
530                 [ FieldOffset(0) ] internal XMapEvent MapEvent;
531                 [ FieldOffset(0) ] internal XMapRequestEvent MapRequestEvent;
532                 [ FieldOffset(0) ] internal XReparentEvent ReparentEvent;
533                 [ FieldOffset(0) ] internal XConfigureEvent ConfigureEvent;
534                 [ FieldOffset(0) ] internal XGravityEvent GravityEvent;
535                 [ FieldOffset(0) ] internal XResizeRequestEvent ResizeRequestEvent;
536                 [ FieldOffset(0) ] internal XConfigureRequestEvent ConfigureRequestEvent;
537                 [ FieldOffset(0) ] internal XCirculateEvent CirculateEvent;
538                 [ FieldOffset(0) ] internal XCirculateRequestEvent CirculateRequestEvent;
539                 [ FieldOffset(0) ] internal XPropertyEvent PropertyEvent;
540                 [ FieldOffset(0) ] internal XSelectionClearEvent SelectionClearEvent;
541                 [ FieldOffset(0) ] internal XSelectionRequestEvent SelectionRequestEvent;
542                 [ FieldOffset(0) ] internal XSelectionEvent SelectionEvent;
543                 [ FieldOffset(0) ] internal XColormapEvent ColormapEvent;
544                 [ FieldOffset(0) ] internal XClientMessageEvent ClientMessageEvent;
545                 [ FieldOffset(0) ] internal XMappingEvent MappingEvent;
546                 [ FieldOffset(0) ] internal XErrorEvent ErrorEvent;
547                 [ FieldOffset(0) ] internal XKeymapEvent KeymapEvent;
548                 [ FieldOffset(0) ] internal XTimerNotifyEvent TimerNotifyEvent;
549
550                 //[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=24)]
551                 //[ FieldOffset(0) ] internal int[] pad;
552                 [ FieldOffset(0) ] internal XEventPad Pad;
553         }
554
555         [StructLayout(LayoutKind.Sequential)]
556         internal struct XSetWindowAttributes {
557                 internal IntPtr         background_pixmap;
558                 internal IntPtr         background_pixel;
559                 internal IntPtr         border_pixmap;
560                 internal IntPtr         border_pixel;
561                 internal Gravity        bit_gravity;
562                 internal Gravity        win_gravity;
563                 internal int            backing_store;
564                 internal IntPtr         backing_planes;
565                 internal IntPtr         backing_pixel;
566                 internal bool           save_under;
567                 internal IntPtr         event_mask;
568                 internal IntPtr         do_not_propagate_mask;
569                 internal bool           override_redirect;
570                 internal IntPtr         colormap;
571                 internal IntPtr         cursor;
572         }
573
574         [StructLayout(LayoutKind.Sequential)]
575         internal struct XWindowAttributes {
576                 internal int            x;
577                 internal int            y;
578                 internal int            width;
579                 internal int            height;
580                 internal int            border_width;
581                 internal int            depth;
582                 internal IntPtr         visual;
583                 internal IntPtr         root;
584                 internal int            c_class;
585                 internal Gravity        bit_gravity;
586                 internal Gravity        win_gravity;
587                 internal int            backing_store;
588                 internal IntPtr         backing_planes;
589                 internal IntPtr         backing_pixel;
590                 internal bool           save_under;
591                 internal IntPtr         colormap;
592                 internal bool           map_installed;
593                 internal MapState       map_state;
594                 internal IntPtr         all_event_masks;
595                 internal IntPtr         your_event_mask;
596                 internal IntPtr         do_not_propagate_mask;
597                 internal bool           override_direct;
598                 internal IntPtr         screen;
599         }
600
601         [StructLayout(LayoutKind.Sequential)]
602         internal struct XTextProperty {
603                 internal string         value;
604                 internal IntPtr         encoding;
605                 internal int            format;
606                 internal IntPtr         nitems;
607         }
608
609         internal enum XWindowClass {
610                 InputOutput     = 1,
611                 InputOnly       = 2
612         }
613
614         internal enum XEventName {
615                 KeyPress                = 2,
616                 KeyRelease              = 3,
617                 ButtonPress             = 4,
618                 ButtonRelease           = 5,
619                 MotionNotify            = 6,
620                 EnterNotify             = 7,
621                 LeaveNotify             = 8,
622                 FocusIn                 = 9,
623                 FocusOut                = 10,
624                 KeymapNotify            = 11,
625                 Expose                  = 12,
626                 GraphicsExpose          = 13,
627                 NoExpose                = 14,
628                 VisibilityNotify        = 15,
629                 CreateNotify            = 16,
630                 DestroyNotify           = 17,
631                 UnmapNotify             = 18,
632                 MapNotify               = 19,
633                 MapRequest              = 20,
634                 ReparentNotify          = 21,
635                 ConfigureNotify         = 22,
636                 ConfigureRequest        = 23,
637                 GravityNotify           = 24,
638                 ResizeRequest           = 25,
639                 CirculateNotify         = 26,
640                 CirculateRequest        = 27,
641                 PropertyNotify          = 28,
642                 SelectionClear          = 29,
643                 SelectionRequest        = 30,
644                 SelectionNotify         = 31,
645                 ColormapNotify          = 32,
646                 ClientMessage           = 33,
647                 MappingNotify           = 34,
648                 TimerNotify             = 100,
649
650                 LASTEvent
651         }
652
653         [Flags]
654         internal enum SetWindowValuemask {
655                 Nothing         = 0,
656                 BackPixmap      = 1,
657                 BackPixel       = 2,
658                 BorderPixmap    = 4,
659                 BorderPixel     = 8,
660                 BitGravity      = 16,
661                 WinGravity      = 32,
662                 BackingStore    = 64,
663                 BackingPlanes   = 128,
664                 BackingPixel    = 256,
665                 OverrideRedirect = 512,
666                 SaveUnder       = 1024,
667                 EventMask       = 2048,
668                 DontPropagate   = 4096,
669                 ColorMap        = 8192,
670                 Cursor          = 16384
671         }
672
673         internal enum CreateWindowArgs {
674                 CopyFromParent  = 0,
675                 ParentRelative  = 1,
676                 InputOutput     = 1,
677                 InputOnly       = 2
678         }
679
680         internal enum Gravity {
681                 ForgetGravity   = 0,
682                 NorthWestGravity= 1,
683                 NorthGravity    = 2,
684                 NorthEastGravity= 3,
685                 WestGravity     = 4,
686                 CenterGravity   = 5,
687                 EastGravity     = 6,
688                 SouthWestGravity= 7,
689                 SouthGravity    = 8,
690                 SouthEastGravity= 9,
691                 StaticGravity   = 10
692         }
693
694         internal enum XKeySym {
695                 XK_BackSpace    = 0xFF08,
696                 XK_Tab          = 0xFF09,
697                 XK_Clear        = 0xFF0B,
698                 XK_Return       = 0xFF0D,
699                 XK_Home         = 0xFF50,
700                 XK_Left         = 0xFF51,
701                 XK_Up           = 0xFF52,
702                 XK_Right        = 0xFF53,
703                 XK_Down         = 0xFF54,
704                 XK_Page_Up      = 0xFF55,
705                 XK_Page_Down    = 0xFF56,
706                 XK_End          = 0xFF57,
707                 XK_Begin        = 0xFF58,
708                 XK_Menu         = 0xFF67,
709                 XK_Shift_L      = 0xFFE1,
710                 XK_Shift_R      = 0xFFE2,
711                 XK_Control_L    = 0xFFE3,
712                 XK_Control_R    = 0xFFE4,
713                 XK_Caps_Lock    = 0xFFE5,
714                 XK_Shift_Lock   = 0xFFE6,       
715                 XK_Meta_L       = 0xFFE7,
716                 XK_Meta_R       = 0xFFE8,
717                 XK_Alt_L        = 0xFFE9,
718                 XK_Alt_R        = 0xFFEA,
719                 XK_Super_L      = 0xFFEB,
720                 XK_Super_R      = 0xFFEC,
721                 XK_Hyper_L      = 0xFFED,
722                 XK_Hyper_R      = 0xFFEE,
723         }
724
725         [Flags]
726         internal enum EventMask {
727                 NoEventMask             = 0,
728                 KeyPressMask            = 1<<0,
729                 KeyReleaseMask          = 1<<1,
730                 ButtonPressMask         = 1<<2,
731                 ButtonReleaseMask       = 1<<3,
732                 EnterWindowMask         = 1<<4,
733                 LeaveWindowMask         = 1<<5,
734                 PointerMotionMask       = 1<<6,
735                 PointerMotionHintMask   = 1<<7,
736                 Button1MotionMask       = 1<<8,
737                 Button2MotionMask       = 1<<9,
738                 Button3MotionMask       = 1<<10,
739                 Button4MotionMask       = 1<<11,
740                 Button5MotionMask       = 1<<12,
741                 ButtonMotionMask        = 1<<13,
742                 KeymapStateMask         = 1<<14,
743                 ExposureMask            = 1<<15,
744                 VisibilityChangeMask    = 1<<16,
745                 StructureNotifyMask     = 1<<17,
746                 ResizeRedirectMask      = 1<<18,
747                 SubstructureNotifyMask  = 1<<19,
748                 SubstructureRedirectMask= 1<<20,
749                 FocusChangeMask         = 1<<21,
750                 PropertyChangeMask      = 1<<22,
751                 ColormapChangeMask      = 1<<23,
752                 OwnerGrabButtonMask     = 1<<24
753         }
754
755         internal enum GrabMode {
756                 GrabModeSync            = 0,
757                 GrabModeAsync           = 1
758         }
759
760         [StructLayout(LayoutKind.Sequential)]
761         internal struct XStandardColormap {
762                 internal IntPtr         colormap;
763                 internal IntPtr         red_max;
764                 internal IntPtr         red_mult;
765                 internal IntPtr         green_max;
766                 internal IntPtr         green_mult;
767                 internal IntPtr         blue_max;
768                 internal IntPtr         blue_mult;
769                 internal IntPtr         base_pixel;
770                 internal IntPtr         visualid;
771                 internal IntPtr         killid;
772         }
773
774         [StructLayout(LayoutKind.Sequential, Pack=2)]
775         internal struct XColor {
776                 internal IntPtr         pixel;
777                 internal ushort         red;
778                 internal ushort         green;
779                 internal ushort         blue;
780                 internal byte           flags;
781                 internal byte           pad;
782         }
783
784         internal enum Atom {
785                 AnyPropertyType         = 0,
786                 XA_PRIMARY              = 1,
787                 XA_SECONDARY            = 2,
788                 XA_ARC                  = 3,
789                 XA_ATOM                 = 4,
790                 XA_BITMAP               = 5,
791                 XA_CARDINAL             = 6,
792                 XA_COLORMAP             = 7,
793                 XA_CURSOR               = 8,
794                 XA_CUT_BUFFER0          = 9,
795                 XA_CUT_BUFFER1          = 10,
796                 XA_CUT_BUFFER2          = 11,
797                 XA_CUT_BUFFER3          = 12,
798                 XA_CUT_BUFFER4          = 13,
799                 XA_CUT_BUFFER5          = 14,
800                 XA_CUT_BUFFER6          = 15,
801                 XA_CUT_BUFFER7          = 16,
802                 XA_DRAWABLE             = 17,
803                 XA_FONT                 = 18,
804                 XA_INTEGER              = 19,
805                 XA_PIXMAP               = 20,
806                 XA_POINT                = 21,
807                 XA_RECTANGLE            = 22,
808                 XA_RESOURCE_MANAGER     = 23,
809                 XA_RGB_COLOR_MAP        = 24,
810                 XA_RGB_BEST_MAP         = 25,
811                 XA_RGB_BLUE_MAP         = 26,
812                 XA_RGB_DEFAULT_MAP      = 27,
813                 XA_RGB_GRAY_MAP         = 28,
814                 XA_RGB_GREEN_MAP        = 29,
815                 XA_RGB_RED_MAP          = 30,
816                 XA_STRING               = 31,
817                 XA_VISUALID             = 32,
818                 XA_WINDOW               = 33,
819                 XA_WM_COMMAND           = 34,
820                 XA_WM_HINTS             = 35,
821                 XA_WM_CLIENT_MACHINE    = 36,
822                 XA_WM_ICON_NAME         = 37,
823                 XA_WM_ICON_SIZE         = 38,
824                 XA_WM_NAME              = 39,
825                 XA_WM_NORMAL_HINTS      = 40,
826                 XA_WM_SIZE_HINTS        = 41,
827                 XA_WM_ZOOM_HINTS        = 42,
828                 XA_MIN_SPACE            = 43,
829                 XA_NORM_SPACE           = 44,
830                 XA_MAX_SPACE            = 45,
831                 XA_END_SPACE            = 46,
832                 XA_SUPERSCRIPT_X        = 47,
833                 XA_SUPERSCRIPT_Y        = 48,
834                 XA_SUBSCRIPT_X          = 49,
835                 XA_SUBSCRIPT_Y          = 50,
836                 XA_UNDERLINE_POSITION   = 51,
837                 XA_UNDERLINE_THICKNESS  = 52,
838                 XA_STRIKEOUT_ASCENT     = 53,
839                 XA_STRIKEOUT_DESCENT    = 54,
840                 XA_ITALIC_ANGLE         = 55,
841                 XA_X_HEIGHT             = 56,
842                 XA_QUAD_WIDTH           = 57,
843                 XA_WEIGHT               = 58,
844                 XA_POINT_SIZE           = 59,
845                 XA_RESOLUTION           = 60,
846                 XA_COPYRIGHT            = 61,
847                 XA_NOTICE               = 62,
848                 XA_FONT_NAME            = 63,
849                 XA_FAMILY_NAME          = 64,
850                 XA_FULL_NAME            = 65,
851                 XA_CAP_HEIGHT           = 66,
852                 XA_WM_CLASS             = 67,
853                 XA_WM_TRANSIENT_FOR     = 68,
854
855                 XA_LAST_PREDEFINED      = 68
856         }
857
858         [StructLayout(LayoutKind.Sequential)]
859         internal struct XScreen {
860                 internal IntPtr         ext_data;
861                 internal IntPtr         display;
862                 internal IntPtr         root;
863                 internal int            width;
864                 internal int            height;
865                 internal int            mwidth;
866                 internal int            mheight;
867                 internal int            ndepths;
868                 internal IntPtr         depths;
869                 internal int            root_depth;
870                 internal IntPtr         root_visual;
871                 internal IntPtr         default_gc;
872                 internal IntPtr         cmap;
873                 internal IntPtr         white_pixel;
874                 internal IntPtr         black_pixel;
875                 internal int            max_maps;
876                 internal int            min_maps;
877                 internal int            backing_store;
878                 internal bool           save_unders;
879                 internal IntPtr     root_input_mask;
880         }
881
882         [Flags]
883         internal enum ChangeWindowFlags {
884                 CWX                     = 1<<0,
885                 CWY                     = 1<<1,
886                 CWWidth                 = 1<<2,
887                 CWHeight                = 1<<3,
888                 CWBorderWidth           = 1<<4,
889                 CWSibling               = 1<<5,
890                 CWStackMode             = 1<<6
891         }
892
893         internal enum StackMode {
894                 Above                   = 0,
895                 Below                   = 1,
896                 TopIf                   = 2,
897                 BottomIf                = 3,
898                 Opposite                = 4
899         }
900
901         [StructLayout(LayoutKind.Sequential)]
902         internal struct XWindowChanges {
903                 internal int            x;
904                 internal int            y;
905                 internal int            width;
906                 internal int            height;
907                 internal int            border_width;
908                 internal IntPtr         sibling;
909                 internal StackMode      stack_mode;
910         }       
911
912         [Flags]
913         internal enum ColorFlags {
914                 DoRed                   = 1<<0,
915                 DoGreen                 = 1<<1,
916                 DoBlue                  = 1<<2
917         }
918
919         internal enum NotifyMode {
920                 NotifyNormal            = 0,
921                 NotifyGrab              = 1,
922                 NotifyUngrab            = 2
923         }
924
925         internal enum NotifyDetail {
926                 NotifyAncestor          = 0,
927                 NotifyVirtual           = 1,
928                 NotifyInferior          = 2,
929                 NotifyNonlinear         = 3,
930                 NotifyNonlinearVirtual  = 4,
931                 NotifyPointer           = 5,
932                 NotifyPointerRoot       = 6,
933                 NotifyDetailNone        = 7
934         }
935
936         [StructLayout(LayoutKind.Sequential)]
937         internal struct MotifWmHints {
938                 internal IntPtr         flags;
939                 internal IntPtr         functions;
940                 internal IntPtr     decorations;
941                 internal IntPtr         input_mode;
942                 internal IntPtr         status;
943         }
944
945         [Flags]
946         internal enum MotifFlags {
947                 Functions               = 1,
948                 Decorations             = 2,
949                 InputMode               = 4,
950                 Status                  = 8
951         }
952
953         [Flags]
954         internal enum MotifFunctions {
955                 All                     = 0x01,
956                 Resize                  = 0x02,
957                 Move                    = 0x04,
958                 Minimize                = 0x08,
959                 Maximize                = 0x10,
960                 Close                   = 0x20
961         }
962
963         [Flags]
964         internal enum MotifDecorations {
965                 All                     = 0x01,
966                 Border                  = 0x02,
967                 ResizeH                 = 0x04,
968                 Title                   = 0x08,
969                 Menu                    = 0x10,
970                 Minimize                = 0x20,
971                 Maximize                = 0x40,
972                 
973         }
974
975         [Flags]
976         internal enum MotifInputMode {
977                 Modeless                = 0,
978                 ApplicationModal        = 1,
979                 SystemModal             = 2,
980                 FullApplicationMondal   = 3
981         }
982
983         [Flags]
984         internal enum KeyMasks {
985                 ShiftMask               = (1 << 0),
986                 LockMask                = (1 << 1),
987                 ControlMask             = (1 << 2),
988                 Mod1Mask                = (1 << 3),
989                 Mod2Mask                = (1 << 4),
990                 Mod3Mask                = (1 << 5),
991                 Mod4Mask                = (1 << 6),
992                 Mod5Mask                = (1 << 7),
993
994                 ModMasks                = Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask
995         }
996
997         [StructLayout (LayoutKind.Sequential)]
998         internal struct XModifierKeymap {
999                 public int max_keypermod;
1000                 public IntPtr modifiermap;
1001         } 
1002
1003         internal enum PropertyMode {
1004                 Replace                 = 0,
1005                 Prepend                 = 1,
1006                 Append                  = 2
1007         }
1008
1009         [StructLayout (LayoutKind.Sequential)]
1010         internal struct XKeyBoardState {
1011                 int key_click_percent;
1012                 int bell_percent;
1013                 uint bell_pitch, bell_duration;
1014                 IntPtr led_mask;
1015                 int global_auto_repeat;
1016                 AutoRepeats auto_repeats;
1017
1018                 [StructLayout (LayoutKind.Explicit)]
1019                         struct AutoRepeats {
1020                         [FieldOffset (0)]
1021                         byte first;
1022                                 
1023                         [FieldOffset (31)]
1024                         byte last;
1025                 }
1026         }
1027
1028         [Flags]
1029         internal enum GCFunction {
1030                 GCFunction              = 1<<0,
1031                 GCPlaneMask             = 1<<1,
1032                 GCForeground            = 1<<2,
1033                 GCBackground            = 1<<3,
1034                 GCLineWidth             = 1<<4,
1035                 GCLineStyle             = 1<<5,
1036                 GCCapStyle              = 1<<6,
1037                 GCJoinStyle             = 1<<7,
1038                 GCFillStyle             = 1<<8,
1039                 GCFillRule              = 1<<9, 
1040                 GCTile                  = 1<<10,
1041                 GCStipple               = 1<<11,
1042                 GCTileStipXOrigin       = 1<<12,
1043                 GCTileStipYOrigin       = 1<<13,
1044                 GCFont                  = 1<<14,
1045                 GCSubwindowMode         = 1<<15,
1046                 GCGraphicsExposures     = 1<<16,
1047                 GCClipXOrigin           = 1<<17,
1048                 GCClipYOrigin           = 1<<18,
1049                 GCClipMask              = 1<<19,
1050                 GCDashOffset            = 1<<20,
1051                 GCDashList              = 1<<21,
1052                 GCArcMode               = 1<<22
1053         }
1054
1055         internal enum GCJoinStyle {
1056                 JoinMiter               = 0,
1057                 JoinRound               = 1,
1058                 JoinBevel               = 2
1059         }
1060
1061         internal enum GCLineStyle {
1062                 LineSolid               = 0,
1063                 LineOnOffDash           = 1,
1064                 LineDoubleDash          = 2
1065         }
1066
1067         internal enum GCCapStyle {
1068                 CapNotLast              = 0,
1069                 CapButt                 = 1,
1070                 CapRound                = 2,
1071                 CapProjecting           = 3
1072         }
1073
1074         internal enum GCFillStyle {
1075                 FillSolid               = 0,
1076                 FillTiled               = 1,
1077                 FillStippled            = 2,
1078                 FillOpaqueStppled       = 3
1079         }
1080
1081         internal enum GCFillRule {
1082                 EvenOddRule             = 0,
1083                 WindingRule             = 1
1084         }
1085
1086         internal enum GCArcMode {
1087                 ArcChord                = 0,
1088                 ArcPieSlice             = 1
1089         }
1090
1091         internal enum GCSubwindowMode {
1092                 ClipByChildren          = 0,
1093                 IncludeInferiors        = 1
1094         }
1095
1096         [StructLayout (LayoutKind.Sequential)]
1097         internal struct XGCValues {
1098                 internal GXFunction             function;
1099                 internal IntPtr                 plane_mask;
1100                 internal IntPtr                 foreground;
1101                 internal IntPtr                 background;
1102                 internal int                    line_width;
1103                 internal GCLineStyle            line_style;
1104                 internal GCCapStyle             cap_style;
1105                 internal GCJoinStyle            join_style;
1106                 internal GCFillStyle            fill_style;
1107                 internal GCFillRule             fill_rule;
1108                 internal GCArcMode              arc_mode;
1109                 internal IntPtr                 tile;
1110                 internal IntPtr                 stipple;
1111                 internal int                    ts_x_origin;
1112                 internal int                    ts_y_origin;
1113                 internal IntPtr                 font;
1114                 internal GCSubwindowMode        subwindow_mode;
1115                 internal bool                   graphics_exposures;
1116                 internal int                    clip_x_origin;
1117                 internal int                    clib_y_origin;
1118                 internal IntPtr                 clip_mask;
1119                 internal int                    dash_offset;
1120                 internal byte                   dashes;
1121         }
1122
1123         internal enum GXFunction {
1124                 GXclear                         = 0x0,          /* 0 */
1125                 GXand                           = 0x1,          /* src AND dst */
1126                 GXandReverse                    = 0x2,          /* src AND NOT dst */
1127                 GXcopy                          = 0x3,          /* src */
1128                 GXandInverted                   = 0x4,          /* NOT src AND dst */
1129                 GXnoop                          = 0x5,          /* dst */
1130                 GXxor                           = 0x6,          /* src XOR dst */
1131                 GXor                            = 0x7,          /* src OR dst */
1132                 GXnor                           = 0x8,          /* NOT src AND NOT dst */
1133                 GXequiv                         = 0x9,          /* NOT src XOR dst */
1134                 GXinvert                        = 0xa,          /* NOT dst */
1135                 GXorReverse                     = 0xb,          /* src OR NOT dst */
1136                 GXcopyInverted                  = 0xc,          /* NOT src */
1137                 GXorInverted                    = 0xd,          /* NOT src OR dst */
1138                 GXnand                          = 0xe,          /* NOT src OR NOT dst */
1139                 GXset                           = 0xf           /* 1 */
1140         }
1141
1142         internal enum NetWindowManagerState {
1143                 Remove                          = 0,
1144                 Add                             = 1,
1145                 Toggle                          = 2
1146         }
1147
1148         internal enum RevertTo {
1149                 None                            = 0,
1150                 PointerRoot                     = 1,
1151                 Parent                          = 2
1152         }
1153
1154         internal enum MapState {
1155                 IsUnmapped                      = 0,
1156                 IsUnviewable                    = 1,
1157                 IsViewable                      = 2
1158         }
1159
1160         internal enum CursorFontShape {
1161                 XC_X_cursor                     = 0,
1162                 XC_arrow                        = 2,
1163                 XC_based_arrow_down             = 4,
1164                 XC_based_arrow_up               = 6,
1165                 XC_boat                         = 8,
1166                 XC_bogosity                     = 10,
1167                 XC_bottom_left_corner           = 12,
1168                 XC_bottom_right_corner          = 14,
1169                 XC_bottom_side                  = 16,
1170                 XC_bottom_tee                   = 18,
1171                 XC_box_spiral                   = 20,
1172                 XC_center_ptr                   = 22,
1173
1174                 XC_circle                       = 24,
1175                 XC_clock                        = 26,
1176                 XC_coffee_mug                   = 28,
1177                 XC_cross                        = 30,
1178                 XC_cross_reverse                = 32,
1179                 XC_crosshair                    = 34,
1180                 XC_diamond_cross                = 36,
1181                 XC_dot                          = 38,
1182                 XC_dotbox                       = 40,
1183                 XC_double_arrow                 = 42,
1184                 XC_draft_large                  = 44,
1185                 XC_draft_small                  = 46,
1186
1187                 XC_draped_box                   = 48,
1188                 XC_exchange                     = 50,
1189                 XC_fleur                        = 52,
1190                 XC_gobbler                      = 54,
1191                 XC_gumby                        = 56,
1192                 XC_hand1                        = 58,
1193                 XC_hand2                        = 60,
1194                 XC_heart                        = 62,
1195                 XC_icon                         = 64,
1196                 XC_iron_cross                   = 66,
1197                 XC_left_ptr                     = 68,
1198                 XC_left_side                    = 70,
1199
1200                 XC_left_tee                     = 72,
1201                 XC_left_button                  = 74,
1202                 XC_ll_angle                     = 76,
1203                 XC_lr_angle                     = 78,
1204                 XC_man                          = 80,
1205                 XC_middlebutton                 = 82,
1206                 XC_mouse                        = 84,
1207                 XC_pencil                       = 86,
1208                 XC_pirate                       = 88,
1209                 XC_plus                         = 90,
1210                 XC_question_arrow               = 92,
1211                 XC_right_ptr                    = 94,
1212
1213                 XC_right_side                   = 96,
1214                 XC_right_tee                    = 98,
1215                 XC_rightbutton                  = 100,
1216                 XC_rtl_logo                     = 102,
1217                 XC_sailboat                     = 104,
1218                 XC_sb_down_arrow                = 106,
1219                 XC_sb_h_double_arrow            = 108,
1220                 XC_sb_left_arrow                = 110,
1221                 XC_sb_right_arrow               = 112,
1222                 XC_sb_up_arrow                  = 114,
1223                 XC_sb_v_double_arrow            = 116,
1224                 XC_sb_shuttle                   = 118,
1225
1226                 XC_sizing                       = 120,
1227                 XC_spider                       = 122,
1228                 XC_spraycan                     = 124,
1229                 XC_star                         = 126,
1230                 XC_target                       = 128,
1231                 XC_tcross                       = 130,
1232                 XC_top_left_arrow               = 132,
1233                 XC_top_left_corner              = 134,
1234                 XC_top_right_corner             = 136,
1235                 XC_top_side                     = 138,
1236                 XC_top_tee                      = 140,
1237                 XC_trek                         = 142,
1238
1239                 XC_ul_angle                     = 144,
1240                 XC_umbrella                     = 146,
1241                 XC_ur_angle                     = 148,
1242                 XC_watch                        = 150,
1243                 XC_xterm                        = 152,
1244                 XC_num_glyphs                   = 154
1245         }
1246
1247         internal enum SystrayRequest {
1248                 SYSTEM_TRAY_REQUEST_DOCK        = 0,
1249                 SYSTEM_TRAY_BEGIN_MESSAGE       = 1,
1250                 SYSTEM_TRAY_CANCEL_MESSAGE      = 2
1251         }
1252
1253         [Flags]
1254         internal enum XSizeHintsFlags  {
1255                 USPosition                      = (1 << 0),
1256                 USSize                          = (1 << 1),
1257                 PPosition                       = (1 << 2),
1258                 PSize                           = (1 << 3),
1259                 PMinSize                        = (1 << 4),
1260                 PMaxSize                        = (1 << 5),
1261                 PResizeInc                      = (1 << 6),
1262                 PAspect                         = (1 << 7),
1263                 PAllHints                       = (PPosition | PSize | PMinSize | PMaxSize | PResizeInc | PAspect),
1264                 PBaseSize                       = (1 << 8),
1265                 PWinGravity                     = (1 << 9),
1266         }
1267
1268         [StructLayout(LayoutKind.Sequential)]
1269         internal struct XSizeHints {
1270                 internal IntPtr                 flags;
1271                 internal int                    x;
1272                 internal int                    y;
1273                 internal int                    width;
1274                 internal int                    height;
1275                 internal int                    min_width;
1276                 internal int                    min_height;
1277                 internal int                    max_width;
1278                 internal int                    max_height;
1279                 internal int                    width_inc;
1280                 internal int                    height_inc;
1281                 internal int                    min_aspect_x;
1282                 internal int                    min_aspect_y;
1283                 internal int                    max_aspect_x;
1284                 internal int                    max_aspect_y;
1285                 internal int                    base_width;
1286                 internal int                    base_height;
1287                 internal int                    win_gravity;
1288         }
1289
1290         [Flags]
1291         internal enum XWMHintsFlags {
1292                 InputHint                       = (1 << 0),
1293                 StateHint                       = (1 << 1),
1294                 IconPixmapHint                  = (1 << 2),
1295                 IconWindowHint                  = (1 << 3),
1296                 IconPositionHint                = (1 << 4),
1297                 IconMaskHint                    = (1 << 5),
1298                 WindowGroupHint                 = (1 << 6),
1299                 AllHints                        = (InputHint | StateHint | IconPixmapHint | IconWindowHint | IconPositionHint | IconMaskHint | WindowGroupHint)
1300         }
1301
1302         internal enum XInitialState {
1303                 DontCareState                   = 0,
1304                 NormalState                     = 1,
1305                 ZoomState                       = 2,
1306                 IconicState                     = 3,
1307                 InactiveState                   = 4
1308         }
1309
1310         [StructLayout(LayoutKind.Sequential)]
1311         internal struct XWMHints {
1312                 internal IntPtr                 flags;
1313                 internal bool                   input;
1314                 internal XInitialState          initial_state;
1315                 internal IntPtr                 icon_pixmap;
1316                 internal IntPtr                 icon_window;
1317                 internal int                    icon_x;
1318                 internal int                    icon_y;
1319                 internal IntPtr                 icon_mask;
1320                 internal IntPtr                 window_group;
1321         }
1322
1323         [StructLayout(LayoutKind.Sequential)]
1324         internal struct XIconSize {
1325                 internal int                    min_width;
1326                 internal int                    min_height;
1327                 internal int                    max_width;
1328                 internal int                    max_height;
1329                 internal int                    width_inc;
1330                 internal int                    height_inc;
1331         }
1332
1333         internal enum NA {
1334                 WM_PROTOCOLS,
1335                 WM_DELETE_WINDOW,
1336                 WM_TAKE_FOCUS,
1337
1338                 _NET_SUPPORTED,
1339                 _NET_CLIENT_LIST,
1340                 _NET_NUMBER_OF_DESKTOPS,
1341                 _NET_DESKTOP_GEOMETRY,
1342                 _NET_DESKTOP_VIEWPORT,
1343                 _NET_CURRENT_DESKTOP,
1344                 _NET_DESKTOP_NAMES,
1345                 _NET_ACTIVE_WINDOW,
1346                 _NET_WORKAREA,
1347                 _NET_SUPPORTING_WM_CHECK,
1348                 _NET_VIRTUAL_ROOTS,
1349                 _NET_DESKTOP_LAYOUT,
1350                 _NET_SHOWING_DESKTOP,
1351
1352                 _NET_CLOSE_WINDOW,
1353                 _NET_MOVERESIZE_WINDOW,
1354                 _NET_WM_MOVERESIZE,
1355                 _NET_RESTACK_WINDOW,
1356                 _NET_REQUEST_FRAME_EXTENTS,
1357
1358                 _NET_WM_NAME,
1359                 _NET_WM_VISIBLE_NAME,
1360                 _NET_WM_ICON_NAME,
1361                 _NET_WM_VISIBLE_ICON_NAME,
1362                 _NET_WM_DESKTOP,
1363                 _NET_WM_WINDOW_TYPE,
1364                 _NET_WM_STATE,
1365                 _NET_WM_ALLOWED_ACTIONS,
1366                 _NET_WM_STRUT,
1367                 _NET_WM_STRUT_PARTIAL,
1368                 _NET_WM_ICON_GEOMETRY,
1369                 _NET_WM_ICON,
1370                 _NET_WM_PID,
1371                 _NET_WM_HANDLED_ICONS,
1372                 _NET_WM_USER_TIME,
1373                 _NET_FRAME_EXTENTS,
1374
1375                 _NET_WM_PING,
1376                 _NET_WM_SYNC_REQUEST,
1377
1378                 _NET_SYSTEM_TRAY_S,
1379                 _NET_SYSTEM_TRAY_ORIENTATION,
1380                 _NET_SYSTEM_TRAY_OPCODE,
1381
1382                 _NET_WM_STATE_MAXIMIZED_HORZ,
1383                 _NET_WM_STATE_MAXIMIZED_VERT,
1384
1385                 _XEMBED,
1386                 _XEMBED_INFO,
1387
1388                 _MOTIF_WM_HINTS,
1389
1390                 _NET_WM_STATE_NO_TASKBAR,
1391                 _NET_WM_STATE_ABOVE,
1392                 _NET_WM_STATE_MODAL,
1393                 _NET_WM_CONTEXT_HELP,
1394
1395                 CLIPBOARD,
1396                 DIB,
1397                 OEMTEXT,
1398                 UNICODETEXT,
1399                 TARGETS,
1400
1401                 LAST_NET_ATOM
1402         }
1403
1404         internal struct CaretStruct {
1405                 internal Timer  Timer;                          // Blink interval
1406                 internal IntPtr Hwnd;                           // Window owning the caret
1407                 internal IntPtr Window;                         // Actual X11 handle of the window
1408                 internal int    X;                              // X position of the caret
1409                 internal int    Y;                              // Y position of the caret
1410                 internal int    Width;                          // Width of the caret; if no image used
1411                 internal int    Height;                         // Height of the caret, if no image used
1412                 internal int    Visible;                        // Counter for visible/hidden
1413                 internal bool   On;                             // Caret blink display state: On/Off
1414                 internal IntPtr gc;                             // Graphics context
1415                 internal bool   Paused;                         // Don't update right now
1416         }
1417
1418         internal struct HoverStruct {
1419                 internal Timer  Timer;                          // for hovering
1420                 internal IntPtr Window;                         // Last window we entered; used to generate WM_MOUSEHOVER (handle is X11 handle)
1421                 internal int    X;                              // Last MouseMove X coordinate; used to generate WM_MOUSEHOVER
1422                 internal int    Y;                              // Last MouseMove Y coordinate; used to generate WM_MOUSEHOVER
1423                 internal int    Interval;                       // in milliseconds, how long to hold before hover is generated
1424                 internal int    Atom;                           // X Atom
1425         }
1426
1427         internal struct ClickStruct {
1428                 internal IntPtr Hwnd;                           // 
1429                 internal Msg    Message;                        // 
1430                 internal IntPtr wParam;                         // 
1431                 internal IntPtr lParam;                         // 
1432                 internal long   Time;                           // Last time we received a mouse click
1433                 internal bool   Pending;                        // True if we haven't sent the last mouse click
1434         }
1435
1436         internal struct GrabStruct {
1437                 internal bool           Confined;               // Is the current grab (if any) confined to grab_area?
1438                 internal IntPtr         Hwnd;                   // The window that is grabbed
1439                 internal Rectangle      Area;                   // The area the current grab is confined to
1440         }
1441
1442         internal struct ClipboardStruct {
1443                 internal object         Item;                   // Object on the clipboard
1444                 internal object         Type;                   // Type if object on the clipboard
1445                 internal ArrayList      Formats;                // list of formats available in the clipboard
1446                 internal bool           Retrieving;             // true if we are requesting an item
1447                 internal bool           Enumerating;            // true if we are enumerating through all known types
1448                 internal XplatUI.ObjectToClipboard Converter;
1449         }
1450
1451         internal delegate int  XErrorHandler(IntPtr DisplayHandle, ref XErrorEvent error_event);
1452
1453         internal enum XRequest : byte {
1454                 X_CreateWindow                  = 1,
1455                 X_ChangeWindowAttributes        = 2,
1456                 X_GetWindowAttributes           = 3,
1457                 X_DestroyWindow                 = 4,
1458                 X_DestroySubwindows             = 5,
1459                 X_ChangeSaveSet                 = 6,
1460                 X_ReparentWindow                = 7,
1461                 X_MapWindow                     = 8,
1462                 X_MapSubwindows                 = 9,
1463                 X_UnmapWindow                   = 10,
1464                 X_UnmapSubwindows               = 11,
1465                 X_ConfigureWindow               = 12,
1466                 X_CirculateWindow               = 13,
1467                 X_GetGeometry                   = 14,
1468                 X_QueryTree                     = 15,
1469                 X_InternAtom                    = 16,
1470                 X_GetAtomName                   = 17,
1471                 X_ChangeProperty                = 18,
1472                 X_DeleteProperty                = 19,
1473                 X_GetProperty                   = 20,
1474                 X_ListProperties                = 21,
1475                 X_SetSelectionOwner             = 22,
1476                 X_GetSelectionOwner             = 23,
1477                 X_ConvertSelection              = 24,
1478                 X_SendEvent                     = 25,
1479                 X_GrabPointer                   = 26,
1480                 X_UngrabPointer                 = 27,
1481                 X_GrabButton                    = 28,
1482                 X_UngrabButton                  = 29,
1483                 X_ChangeActivePointerGrab       = 30,
1484                 X_GrabKeyboard                  = 31,
1485                 X_UngrabKeyboard                = 32,
1486                 X_GrabKey                       = 33,
1487                 X_UngrabKey                     = 34,
1488                 X_AllowEvents                   = 35,
1489                 X_GrabServer                    = 36,
1490                 X_UngrabServer                  = 37,
1491                 X_QueryPointer                  = 38,
1492                 X_GetMotionEvents               = 39,
1493                 X_TranslateCoords               = 40,
1494                 X_WarpPointer                   = 41,
1495                 X_SetInputFocus                 = 42,
1496                 X_GetInputFocus                 = 43,
1497                 X_QueryKeymap                   = 44,
1498                 X_OpenFont                      = 45,
1499                 X_CloseFont                     = 46,
1500                 X_QueryFont                     = 47,
1501                 X_QueryTextExtents              = 48,
1502                 X_ListFonts                     = 49,
1503                 X_ListFontsWithInfo             = 50,
1504                 X_SetFontPath                   = 51,
1505                 X_GetFontPath                   = 52,
1506                 X_CreatePixmap                  = 53,
1507                 X_FreePixmap                    = 54,
1508                 X_CreateGC                      = 55,
1509                 X_ChangeGC                      = 56,
1510                 X_CopyGC                        = 57,
1511                 X_SetDashes                     = 58,
1512                 X_SetClipRectangles             = 59,
1513                 X_FreeGC                        = 60,
1514                 X_ClearArea                     = 61,
1515                 X_CopyArea                      = 62,
1516                 X_CopyPlane                     = 63,
1517                 X_PolyPoint                     = 64,
1518                 X_PolyLine                      = 65,
1519                 X_PolySegment                   = 66,
1520                 X_PolyRectangle                 = 67,
1521                 X_PolyArc                       = 68,
1522                 X_FillPoly                      = 69,
1523                 X_PolyFillRectangle             = 70,
1524                 X_PolyFillArc                   = 71,
1525                 X_PutImage                      = 72,
1526                 X_GetImage                      = 73,
1527                 X_PolyText8                     = 74,
1528                 X_PolyText16                    = 75,
1529                 X_ImageText8                    = 76,
1530                 X_ImageText16                   = 77,
1531                 X_CreateColormap                = 78,
1532                 X_FreeColormap                  = 79,
1533                 X_CopyColormapAndFree           = 80,
1534                 X_InstallColormap               = 81,
1535                 X_UninstallColormap             = 82,
1536                 X_ListInstalledColormaps        = 83,
1537                 X_AllocColor                    = 84,
1538                 X_AllocNamedColor               = 85,
1539                 X_AllocColorCells               = 86,
1540                 X_AllocColorPlanes              = 87,
1541                 X_FreeColors                    = 88,
1542                 X_StoreColors                   = 89,
1543                 X_StoreNamedColor               = 90,
1544                 X_QueryColors                   = 91,
1545                 X_LookupColor                   = 92,
1546                 X_CreateCursor                  = 93,
1547                 X_CreateGlyphCursor             = 94,
1548                 X_FreeCursor                    = 95,
1549                 X_RecolorCursor                 = 96,
1550                 X_QueryBestSize                 = 97,
1551                 X_QueryExtension                = 98,
1552                 X_ListExtensions                = 99,
1553                 X_ChangeKeyboardMapping         = 100,
1554                 X_GetKeyboardMapping            = 101,
1555                 X_ChangeKeyboardControl         = 102,
1556                 X_GetKeyboardControl            = 103,
1557                 X_Bell                          = 104,
1558                 X_ChangePointerControl          = 105,
1559                 X_GetPointerControl             = 106,
1560                 X_SetScreenSaver                = 107,
1561                 X_GetScreenSaver                = 108,
1562                 X_ChangeHosts                   = 109,
1563                 X_ListHosts                     = 110,
1564                 X_SetAccessControl              = 111,
1565                 X_SetCloseDownMode              = 112,
1566                 X_KillClient                    = 113,
1567                 X_RotateProperties              = 114,
1568                 X_ForceScreenSaver              = 115,
1569                 X_SetPointerMapping             = 116,
1570                 X_GetPointerMapping             = 117,
1571                 X_SetModifierMapping            = 118,
1572                 X_GetModifierMapping            = 119,
1573                 X_NoOperation                   = 127
1574         }
1575 }