mirror of
https://github.com/Ryujinx/Opentk.git
synced 2024-12-25 18:35:30 +00:00
f538b93ad3
The mask part of an XIEventMask struct is actually not a pointer to an integer containing the mask, but rather to an array of bytes each holding 8 bits of the mask, with the first byte holding bit 0-7. Therefore the old code would only work on little endian arches.
1908 lines
51 KiB
C#
1908 lines
51 KiB
C#
// Permission is hereby granted, free of charge, to any person obtaining
|
|
// a copy of this software and associated documentation files (the
|
|
// "Software",, to deal in the Software without restriction, including
|
|
// without limitation the rights to use, copy, modify, merge, publish,
|
|
// distribute, sublicense, and/or sell copies of the Software, and to
|
|
// permit persons to whom the Software is furnished to do so, subject to
|
|
// the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be
|
|
// included in all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
// Copyright (c) 2004 Novell, Inc.
|
|
//
|
|
// Authors:
|
|
// Peter Bartok pbartok@novell.com
|
|
//
|
|
|
|
|
|
// NOT COMPLETE
|
|
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Collections;
|
|
#if !MINIMAL
|
|
using System.Drawing;
|
|
#endif
|
|
using System.Diagnostics;
|
|
using System.Runtime.InteropServices;
|
|
|
|
// Disable unused field warnings. This is interop, we don't use everything
|
|
#pragma warning disable 0649
|
|
|
|
// X11 Version
|
|
namespace OpenTK.Platform.X11
|
|
{
|
|
using Bool = System.Boolean;
|
|
using Time = System.IntPtr;
|
|
using Window = System.IntPtr;
|
|
|
|
//
|
|
// In the structures below, fields of type long are mapped to IntPtr.
|
|
// This will work on all platforms where sizeof(long)==sizeof(void*), which
|
|
// is almost all platforms except WIN64.
|
|
//
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XAnyEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XKeyEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr root;
|
|
public IntPtr subwindow;
|
|
public IntPtr time;
|
|
public int x;
|
|
public int y;
|
|
public int x_root;
|
|
public int y_root;
|
|
public int state;
|
|
public int keycode;
|
|
public bool same_screen;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XButtonEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr root;
|
|
public IntPtr subwindow;
|
|
public IntPtr time;
|
|
public int x;
|
|
public int y;
|
|
public int x_root;
|
|
public int y_root;
|
|
public int state;
|
|
public int button;
|
|
public bool same_screen;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XMotionEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr root;
|
|
public IntPtr subwindow;
|
|
public IntPtr time;
|
|
public int x;
|
|
public int y;
|
|
public int x_root;
|
|
public int y_root;
|
|
public int state;
|
|
public byte is_hint;
|
|
public bool same_screen;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XCrossingEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr root;
|
|
public IntPtr subwindow;
|
|
public IntPtr time;
|
|
public int x;
|
|
public int y;
|
|
public int x_root;
|
|
public int y_root;
|
|
public NotifyMode mode;
|
|
public NotifyDetail detail;
|
|
public bool same_screen;
|
|
public bool focus;
|
|
public int state;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XFocusChangeEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public int mode;
|
|
public NotifyDetail detail;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XKeymapEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public byte key_vector0;
|
|
public byte key_vector1;
|
|
public byte key_vector2;
|
|
public byte key_vector3;
|
|
public byte key_vector4;
|
|
public byte key_vector5;
|
|
public byte key_vector6;
|
|
public byte key_vector7;
|
|
public byte key_vector8;
|
|
public byte key_vector9;
|
|
public byte key_vector10;
|
|
public byte key_vector11;
|
|
public byte key_vector12;
|
|
public byte key_vector13;
|
|
public byte key_vector14;
|
|
public byte key_vector15;
|
|
public byte key_vector16;
|
|
public byte key_vector17;
|
|
public byte key_vector18;
|
|
public byte key_vector19;
|
|
public byte key_vector20;
|
|
public byte key_vector21;
|
|
public byte key_vector22;
|
|
public byte key_vector23;
|
|
public byte key_vector24;
|
|
public byte key_vector25;
|
|
public byte key_vector26;
|
|
public byte key_vector27;
|
|
public byte key_vector28;
|
|
public byte key_vector29;
|
|
public byte key_vector30;
|
|
public byte key_vector31;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XExposeEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int count;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XGraphicsExposeEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr drawable;
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int count;
|
|
public int major_code;
|
|
public int minor_code;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XNoExposeEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr drawable;
|
|
public int major_code;
|
|
public int minor_code;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XVisibilityEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public int state;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XCreateWindowEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr parent;
|
|
public IntPtr window;
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int border_width;
|
|
public bool override_redirect;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XDestroyWindowEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr xevent;
|
|
public IntPtr window;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XUnmapEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr xevent;
|
|
public IntPtr window;
|
|
public bool from_configure;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XMapEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr xevent;
|
|
public IntPtr window;
|
|
public bool override_redirect;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XMapRequestEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr parent;
|
|
public IntPtr window;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XReparentEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr xevent;
|
|
public IntPtr window;
|
|
public IntPtr parent;
|
|
public int x;
|
|
public int y;
|
|
public bool override_redirect;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XConfigureEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr xevent;
|
|
public IntPtr window;
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int border_width;
|
|
public IntPtr above;
|
|
public bool override_redirect;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XGravityEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr xevent;
|
|
public IntPtr window;
|
|
public int x;
|
|
public int y;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XResizeRequestEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public int width;
|
|
public int height;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XConfigureRequestEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr parent;
|
|
public IntPtr window;
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int border_width;
|
|
public IntPtr above;
|
|
public int detail;
|
|
public IntPtr value_mask;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XCirculateEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr xevent;
|
|
public IntPtr window;
|
|
public int place;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XCirculateRequestEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr parent;
|
|
public IntPtr window;
|
|
public int place;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XPropertyEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr atom;
|
|
public IntPtr time;
|
|
public int state;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XSelectionClearEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr selection;
|
|
public IntPtr time;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XSelectionRequestEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr owner;
|
|
public IntPtr requestor;
|
|
public IntPtr selection;
|
|
public IntPtr target;
|
|
public IntPtr property;
|
|
public IntPtr time;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XSelectionEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr requestor;
|
|
public IntPtr selection;
|
|
public IntPtr target;
|
|
public IntPtr property;
|
|
public IntPtr time;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XColormapEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr colormap;
|
|
public bool c_new;
|
|
public int state;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XClientMessageEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public IntPtr message_type;
|
|
public int format;
|
|
public IntPtr ptr1;
|
|
public IntPtr ptr2;
|
|
public IntPtr ptr3;
|
|
public IntPtr ptr4;
|
|
public IntPtr ptr5;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XMappingEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr serial;
|
|
public bool send_event;
|
|
public IntPtr display;
|
|
public IntPtr window;
|
|
public int request;
|
|
public int first_keycode;
|
|
public int count;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XErrorEvent
|
|
{
|
|
public XEventName type;
|
|
public IntPtr display;
|
|
public IntPtr resourceid;
|
|
public IntPtr serial;
|
|
public byte error_code;
|
|
public XRequest request_code;
|
|
public byte minor_code;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XEventPad
|
|
{
|
|
public IntPtr pad0;
|
|
public IntPtr pad1;
|
|
public IntPtr pad2;
|
|
public IntPtr pad3;
|
|
public IntPtr pad4;
|
|
public IntPtr pad5;
|
|
public IntPtr pad6;
|
|
public IntPtr pad7;
|
|
public IntPtr pad8;
|
|
public IntPtr pad9;
|
|
public IntPtr pad10;
|
|
public IntPtr pad11;
|
|
public IntPtr pad12;
|
|
public IntPtr pad13;
|
|
public IntPtr pad14;
|
|
public IntPtr pad15;
|
|
public IntPtr pad16;
|
|
public IntPtr pad17;
|
|
public IntPtr pad18;
|
|
public IntPtr pad19;
|
|
public IntPtr pad20;
|
|
public IntPtr pad21;
|
|
public IntPtr pad22;
|
|
public IntPtr pad23;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XGenericEvent
|
|
{
|
|
public int type; // of event. Always GenericEvent
|
|
public IntPtr serial; // # of last request processed
|
|
public bool send_event; // true if from SendEvent request
|
|
public IntPtr display; // Display the event was read from
|
|
public int extension; // major opcode of extension that caused the event
|
|
public int evtype; // actual event type.
|
|
}
|
|
|
|
internal struct XGenericEventCookie
|
|
{
|
|
public int type; // of event. Always GenericEvent
|
|
public IntPtr serial; // # of last request processed
|
|
public bool send_event; // true if from SendEvent request
|
|
public IntPtr display; // Display the event was read from
|
|
public int extension; // major opcode of extension that caused the event
|
|
public int evtype; // actual event type.
|
|
public uint cookie; // unique event cookie
|
|
public IntPtr data; // actual event data
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Explicit)]
|
|
internal struct XEvent
|
|
{
|
|
[FieldOffset(0)]
|
|
public XEventName type;
|
|
[FieldOffset(0)]
|
|
public XAnyEvent AnyEvent;
|
|
[FieldOffset(0)]
|
|
public XKeyEvent KeyEvent;
|
|
[FieldOffset(0)]
|
|
public XButtonEvent ButtonEvent;
|
|
[FieldOffset(0)]
|
|
public XMotionEvent MotionEvent;
|
|
[FieldOffset(0)]
|
|
public XCrossingEvent CrossingEvent;
|
|
[FieldOffset(0)]
|
|
public XFocusChangeEvent FocusChangeEvent;
|
|
[FieldOffset(0)]
|
|
public XExposeEvent ExposeEvent;
|
|
[FieldOffset(0)]
|
|
public XGraphicsExposeEvent GraphicsExposeEvent;
|
|
[FieldOffset(0)]
|
|
public XNoExposeEvent NoExposeEvent;
|
|
[FieldOffset(0)]
|
|
public XVisibilityEvent VisibilityEvent;
|
|
[FieldOffset(0)]
|
|
public XCreateWindowEvent CreateWindowEvent;
|
|
[FieldOffset(0)]
|
|
public XDestroyWindowEvent DestroyWindowEvent;
|
|
[FieldOffset(0)]
|
|
public XUnmapEvent UnmapEvent;
|
|
[FieldOffset(0)]
|
|
public XMapEvent MapEvent;
|
|
[FieldOffset(0)]
|
|
public XMapRequestEvent MapRequestEvent;
|
|
[FieldOffset(0)]
|
|
public XReparentEvent ReparentEvent;
|
|
[FieldOffset(0)]
|
|
public XConfigureEvent ConfigureEvent;
|
|
[FieldOffset(0)]
|
|
public XGravityEvent GravityEvent;
|
|
[FieldOffset(0)]
|
|
public XResizeRequestEvent ResizeRequestEvent;
|
|
[FieldOffset(0)]
|
|
public XConfigureRequestEvent ConfigureRequestEvent;
|
|
[FieldOffset(0)]
|
|
public XCirculateEvent CirculateEvent;
|
|
[FieldOffset(0)]
|
|
public XCirculateRequestEvent CirculateRequestEvent;
|
|
[FieldOffset(0)]
|
|
public XPropertyEvent PropertyEvent;
|
|
[FieldOffset(0)]
|
|
public XSelectionClearEvent SelectionClearEvent;
|
|
[FieldOffset(0)]
|
|
public XSelectionRequestEvent SelectionRequestEvent;
|
|
[FieldOffset(0)]
|
|
public XSelectionEvent SelectionEvent;
|
|
[FieldOffset(0)]
|
|
public XColormapEvent ColormapEvent;
|
|
[FieldOffset(0)]
|
|
public XClientMessageEvent ClientMessageEvent;
|
|
[FieldOffset(0)]
|
|
public XMappingEvent MappingEvent;
|
|
[FieldOffset(0)]
|
|
public XErrorEvent ErrorEvent;
|
|
[FieldOffset(0)]
|
|
public XKeymapEvent KeymapEvent;
|
|
[FieldOffset(0)]
|
|
public XGenericEvent GenericEvent;
|
|
[FieldOffset(0)]
|
|
public XGenericEventCookie GenericEventCookie;
|
|
|
|
//[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=24)]
|
|
//[ FieldOffset(0) ] public int[] pad;
|
|
[FieldOffset(0)]
|
|
public XEventPad Pad;
|
|
public override string ToString()
|
|
{
|
|
switch (type)
|
|
{
|
|
case XEventName.PropertyNotify:
|
|
return ToString(PropertyEvent);
|
|
case XEventName.ResizeRequest:
|
|
return ToString(ResizeRequestEvent);
|
|
case XEventName.ConfigureNotify:
|
|
return ToString(ConfigureEvent);
|
|
default:
|
|
return type.ToString();
|
|
}
|
|
}
|
|
|
|
public static string ToString(object ev)
|
|
{
|
|
string result = string.Empty;
|
|
Type type = ev.GetType();
|
|
System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Instance);
|
|
for (int i = 0; i < fields.Length; i++)
|
|
{
|
|
if (result != string.Empty)
|
|
{
|
|
result += ", ";
|
|
}
|
|
object value = fields[i].GetValue(ev);
|
|
result += fields[i].Name + "=" + (value == null ? "<null>" : value.ToString());
|
|
}
|
|
return type.Name + " (" + result + ")";
|
|
}
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XSetWindowAttributes
|
|
{
|
|
public IntPtr background_pixmap;
|
|
public IntPtr background_pixel;
|
|
public IntPtr border_pixmap;
|
|
public IntPtr border_pixel;
|
|
public Gravity bit_gravity;
|
|
public Gravity win_gravity;
|
|
public int backing_store;
|
|
public IntPtr backing_planes;
|
|
public IntPtr backing_pixel;
|
|
public bool save_under;
|
|
public IntPtr event_mask;
|
|
public IntPtr do_not_propagate_mask;
|
|
public bool override_redirect;
|
|
public IntPtr colormap;
|
|
public IntPtr cursor;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XWindowAttributes
|
|
{
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int border_width;
|
|
public int depth;
|
|
public IntPtr visual;
|
|
public IntPtr root;
|
|
public int c_class;
|
|
public Gravity bit_gravity;
|
|
public Gravity win_gravity;
|
|
public int backing_store;
|
|
public IntPtr backing_planes;
|
|
public IntPtr backing_pixel;
|
|
public bool save_under;
|
|
public IntPtr colormap;
|
|
public bool map_installed;
|
|
public MapState map_state;
|
|
public IntPtr all_event_masks;
|
|
public IntPtr your_event_mask;
|
|
public IntPtr do_not_propagate_mask;
|
|
public bool override_direct;
|
|
public IntPtr screen;
|
|
|
|
public override string ToString()
|
|
{
|
|
return XEvent.ToString(this);
|
|
}
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XTextProperty
|
|
{
|
|
public string value;
|
|
public IntPtr encoding;
|
|
public int format;
|
|
public IntPtr nitems;
|
|
}
|
|
|
|
internal struct XClassHint
|
|
{
|
|
[MarshalAs(UnmanagedType.LPStr)]
|
|
public string Name;
|
|
[MarshalAs(UnmanagedType.LPStr)]
|
|
public string Class;
|
|
}
|
|
|
|
internal enum XWindowClass
|
|
{
|
|
InputOutput = 1,
|
|
InputOnly = 2
|
|
}
|
|
|
|
internal enum XEventName
|
|
{
|
|
KeyPress = 2,
|
|
KeyRelease = 3,
|
|
ButtonPress = 4,
|
|
ButtonRelease = 5,
|
|
MotionNotify = 6,
|
|
EnterNotify = 7,
|
|
LeaveNotify = 8,
|
|
FocusIn = 9,
|
|
FocusOut = 10,
|
|
KeymapNotify = 11,
|
|
Expose = 12,
|
|
GraphicsExpose = 13,
|
|
NoExpose = 14,
|
|
VisibilityNotify = 15,
|
|
CreateNotify = 16,
|
|
DestroyNotify = 17,
|
|
UnmapNotify = 18,
|
|
MapNotify = 19,
|
|
MapRequest = 20,
|
|
ReparentNotify = 21,
|
|
ConfigureNotify = 22,
|
|
ConfigureRequest = 23,
|
|
GravityNotify = 24,
|
|
ResizeRequest = 25,
|
|
CirculateNotify = 26,
|
|
CirculateRequest = 27,
|
|
PropertyNotify = 28,
|
|
SelectionClear = 29,
|
|
SelectionRequest = 30,
|
|
SelectionNotify = 31,
|
|
ColormapNotify = 32,
|
|
ClientMessage = 33,
|
|
MappingNotify = 34,
|
|
GenericEvent = 35,
|
|
|
|
LASTEvent
|
|
}
|
|
|
|
[Flags]
|
|
internal enum SetWindowValuemask
|
|
{
|
|
Nothing = 0,
|
|
BackPixmap = 1,
|
|
BackPixel = 2,
|
|
BorderPixmap = 4,
|
|
BorderPixel = 8,
|
|
BitGravity = 16,
|
|
WinGravity = 32,
|
|
BackingStore = 64,
|
|
BackingPlanes = 128,
|
|
BackingPixel = 256,
|
|
OverrideRedirect = 512,
|
|
SaveUnder = 1024,
|
|
EventMask = 2048,
|
|
DontPropagate = 4096,
|
|
ColorMap = 8192,
|
|
Cursor = 16384
|
|
}
|
|
|
|
internal enum CreateWindowArgs
|
|
{
|
|
CopyFromParent = 0,
|
|
ParentRelative = 1,
|
|
InputOutput = 1,
|
|
InputOnly = 2
|
|
}
|
|
|
|
internal enum Gravity
|
|
{
|
|
ForgetGravity = 0,
|
|
NorthWestGravity = 1,
|
|
NorthGravity = 2,
|
|
NorthEastGravity = 3,
|
|
WestGravity = 4,
|
|
CenterGravity = 5,
|
|
EastGravity = 6,
|
|
SouthWestGravity = 7,
|
|
SouthGravity = 8,
|
|
SouthEastGravity = 9,
|
|
StaticGravity = 10
|
|
}
|
|
|
|
internal enum XKeySym : uint
|
|
{
|
|
XK_BackSpace = 0xFF08,
|
|
XK_Tab = 0xFF09,
|
|
XK_Clear = 0xFF0B,
|
|
XK_Return = 0xFF0D,
|
|
XK_Home = 0xFF50,
|
|
XK_Left = 0xFF51,
|
|
XK_Up = 0xFF52,
|
|
XK_Right = 0xFF53,
|
|
XK_Down = 0xFF54,
|
|
XK_Page_Up = 0xFF55,
|
|
XK_Page_Down = 0xFF56,
|
|
XK_End = 0xFF57,
|
|
XK_Begin = 0xFF58,
|
|
XK_Menu = 0xFF67,
|
|
XK_Shift_L = 0xFFE1,
|
|
XK_Shift_R = 0xFFE2,
|
|
XK_Control_L = 0xFFE3,
|
|
XK_Control_R = 0xFFE4,
|
|
XK_Caps_Lock = 0xFFE5,
|
|
XK_Shift_Lock = 0xFFE6,
|
|
XK_Meta_L = 0xFFE7,
|
|
XK_Meta_R = 0xFFE8,
|
|
XK_Alt_L = 0xFFE9,
|
|
XK_Alt_R = 0xFFEA,
|
|
XK_Super_L = 0xFFEB,
|
|
XK_Super_R = 0xFFEC,
|
|
XK_Hyper_L = 0xFFED,
|
|
XK_Hyper_R = 0xFFEE,
|
|
}
|
|
|
|
#pragma warning disable 1591
|
|
|
|
[Flags]
|
|
public enum EventMask
|
|
{
|
|
NoEventMask = 0,
|
|
KeyPressMask = 1 << 0,
|
|
KeyReleaseMask = 1 << 1,
|
|
ButtonPressMask = 1 << 2,
|
|
ButtonReleaseMask = 1 << 3,
|
|
EnterWindowMask = 1 << 4,
|
|
LeaveWindowMask = 1 << 5,
|
|
PointerMotionMask = 1 << 6,
|
|
PointerMotionHintMask = 1 << 7,
|
|
Button1MotionMask = 1 << 8,
|
|
Button2MotionMask = 1 << 9,
|
|
Button3MotionMask = 1 << 10,
|
|
Button4MotionMask = 1 << 11,
|
|
Button5MotionMask = 1 << 12,
|
|
ButtonMotionMask = 1 << 13,
|
|
KeymapStateMask = 1 << 14,
|
|
ExposureMask = 1 << 15,
|
|
VisibilityChangeMask = 1 << 16,
|
|
StructureNotifyMask = 1 << 17,
|
|
ResizeRedirectMask = 1 << 18,
|
|
SubstructureNotifyMask = 1 << 19,
|
|
SubstructureRedirectMask = 1 << 20,
|
|
FocusChangeMask = 1 << 21,
|
|
PropertyChangeMask = 1 << 22,
|
|
ColormapChangeMask = 1 << 23,
|
|
OwnerGrabButtonMask = 1 << 24
|
|
}
|
|
|
|
#pragma warning restore 1591
|
|
|
|
internal enum GrabMode
|
|
{
|
|
GrabModeSync = 0,
|
|
GrabModeAsync = 1
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XStandardColormap
|
|
{
|
|
public IntPtr colormap;
|
|
public IntPtr red_max;
|
|
public IntPtr red_mult;
|
|
public IntPtr green_max;
|
|
public IntPtr green_mult;
|
|
public IntPtr blue_max;
|
|
public IntPtr blue_mult;
|
|
public IntPtr base_pixel;
|
|
public IntPtr visualid;
|
|
public IntPtr killid;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = 2)]
|
|
internal struct XColor
|
|
{
|
|
public IntPtr pixel;
|
|
public ushort red;
|
|
public ushort green;
|
|
public ushort blue;
|
|
public byte flags;
|
|
public byte pad;
|
|
}
|
|
|
|
internal enum AtomName
|
|
{
|
|
AnyPropertyType = 0,
|
|
XA_PRIMARY = 1,
|
|
XA_SECONDARY = 2,
|
|
XA_ARC = 3,
|
|
XA_ATOM = 4,
|
|
XA_BITMAP = 5,
|
|
XA_CARDINAL = 6,
|
|
XA_COLORMAP = 7,
|
|
XA_CURSOR = 8,
|
|
XA_CUT_BUFFER0 = 9,
|
|
XA_CUT_BUFFER1 = 10,
|
|
XA_CUT_BUFFER2 = 11,
|
|
XA_CUT_BUFFER3 = 12,
|
|
XA_CUT_BUFFER4 = 13,
|
|
XA_CUT_BUFFER5 = 14,
|
|
XA_CUT_BUFFER6 = 15,
|
|
XA_CUT_BUFFER7 = 16,
|
|
XA_DRAWABLE = 17,
|
|
XA_FONT = 18,
|
|
XA_INTEGER = 19,
|
|
XA_PIXMAP = 20,
|
|
XA_POINT = 21,
|
|
XA_RECTANGLE = 22,
|
|
XA_RESOURCE_MANAGER = 23,
|
|
XA_RGB_COLOR_MAP = 24,
|
|
XA_RGB_BEST_MAP = 25,
|
|
XA_RGB_BLUE_MAP = 26,
|
|
XA_RGB_DEFAULT_MAP = 27,
|
|
XA_RGB_GRAY_MAP = 28,
|
|
XA_RGB_GREEN_MAP = 29,
|
|
XA_RGB_RED_MAP = 30,
|
|
XA_STRING = 31,
|
|
XA_VISUALID = 32,
|
|
XA_WINDOW = 33,
|
|
XA_WM_COMMAND = 34,
|
|
XA_WM_HINTS = 35,
|
|
XA_WM_CLIENT_MACHINE = 36,
|
|
XA_WM_ICON_NAME = 37,
|
|
XA_WM_ICON_SIZE = 38,
|
|
XA_WM_NAME = 39,
|
|
XA_WM_NORMAL_HINTS = 40,
|
|
XA_WM_SIZE_HINTS = 41,
|
|
XA_WM_ZOOM_HINTS = 42,
|
|
XA_MIN_SPACE = 43,
|
|
XA_NORM_SPACE = 44,
|
|
XA_MAX_SPACE = 45,
|
|
XA_END_SPACE = 46,
|
|
XA_SUPERSCRIPT_X = 47,
|
|
XA_SUPERSCRIPT_Y = 48,
|
|
XA_SUBSCRIPT_X = 49,
|
|
XA_SUBSCRIPT_Y = 50,
|
|
XA_UNDERLINE_POSITION = 51,
|
|
XA_UNDERLINE_THICKNESS = 52,
|
|
XA_STRIKEOUT_ASCENT = 53,
|
|
XA_STRIKEOUT_DESCENT = 54,
|
|
XA_ITALIC_ANGLE = 55,
|
|
XA_X_HEIGHT = 56,
|
|
XA_QUAD_WIDTH = 57,
|
|
XA_WEIGHT = 58,
|
|
XA_POINT_SIZE = 59,
|
|
XA_RESOLUTION = 60,
|
|
XA_COPYRIGHT = 61,
|
|
XA_NOTICE = 62,
|
|
XA_FONT_NAME = 63,
|
|
XA_FAMILY_NAME = 64,
|
|
XA_FULL_NAME = 65,
|
|
XA_CAP_HEIGHT = 66,
|
|
XA_WM_CLASS = 67,
|
|
XA_WM_TRANSIENT_FOR = 68,
|
|
|
|
XA_LAST_PREDEFINED = 68
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XScreen
|
|
{
|
|
public IntPtr ext_data;
|
|
public IntPtr display;
|
|
public IntPtr root;
|
|
public int width;
|
|
public int height;
|
|
public int mwidth;
|
|
public int mheight;
|
|
public int ndepths;
|
|
public IntPtr depths;
|
|
public int root_depth;
|
|
public IntPtr root_visual;
|
|
public IntPtr default_gc;
|
|
public IntPtr cmap;
|
|
public IntPtr white_pixel;
|
|
public IntPtr black_pixel;
|
|
public int max_maps;
|
|
public int min_maps;
|
|
public int backing_store;
|
|
public bool save_unders;
|
|
public IntPtr root_input_mask;
|
|
}
|
|
|
|
[Flags]
|
|
internal enum ChangeWindowAttributes
|
|
{
|
|
X = 1 << 0,
|
|
Y = 1 << 1,
|
|
Width = 1 << 2,
|
|
Height = 1 << 3,
|
|
BorderWidth = 1 << 4,
|
|
Sibling = 1 << 5,
|
|
StackMode = 1 << 6,
|
|
|
|
//BackPixmap (1L<<0)
|
|
//BackPixel (1L<<1)
|
|
//SaveUnder (1L<<10)
|
|
//EventMask (1L<<11)
|
|
//DontPropagate (1L<<12)
|
|
//Colormap (1L<<13)
|
|
//Cursor (1L<<14)
|
|
//BorderPixmap (1L<<2)
|
|
//BorderPixel (1L<<3)
|
|
//BitGravity (1L<<4)
|
|
//WinGravity (1L<<5)
|
|
//BackingStore (1L<<6)
|
|
//BackingPlanes (1L<<7)
|
|
//BackingPixel (1L<<8)
|
|
OverrideRedirect = 1<<9,
|
|
}
|
|
|
|
internal enum StackMode
|
|
{
|
|
Above = 0,
|
|
Below = 1,
|
|
TopIf = 2,
|
|
BottomIf = 3,
|
|
Opposite = 4
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XWindowChanges
|
|
{
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int border_width;
|
|
public IntPtr sibling;
|
|
public StackMode stack_mode;
|
|
}
|
|
|
|
[Flags]
|
|
internal enum ColorFlags
|
|
{
|
|
DoRed = 1 << 0,
|
|
DoGreen = 1 << 1,
|
|
DoBlue = 1 << 2
|
|
}
|
|
|
|
internal enum NotifyMode
|
|
{
|
|
NotifyNormal = 0,
|
|
NotifyGrab = 1,
|
|
NotifyUngrab = 2
|
|
}
|
|
|
|
internal enum NotifyDetail
|
|
{
|
|
NotifyAncestor = 0,
|
|
NotifyVirtual = 1,
|
|
NotifyInferior = 2,
|
|
NotifyNonlinear = 3,
|
|
NotifyNonlinearVirtual = 4,
|
|
NotifyPointer = 5,
|
|
NotifyPointerRoot = 6,
|
|
NotifyDetailNone = 7
|
|
}
|
|
|
|
[Flags]
|
|
internal enum KeyMasks
|
|
{
|
|
ShiftMask = (1 << 0),
|
|
LockMask = (1 << 1),
|
|
ControlMask = (1 << 2),
|
|
Mod1Mask = (1 << 3),
|
|
Mod2Mask = (1 << 4),
|
|
Mod3Mask = (1 << 5),
|
|
Mod4Mask = (1 << 6),
|
|
Mod5Mask = (1 << 7),
|
|
|
|
ModMasks = Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XModifierKeymap
|
|
{
|
|
public int max_keypermod;
|
|
public IntPtr modifiermap;
|
|
}
|
|
|
|
internal enum PropertyMode
|
|
{
|
|
Replace = 0,
|
|
Prepend = 1,
|
|
Append = 2
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XKeyBoardState
|
|
{
|
|
public int key_click_percent;
|
|
public int bell_percent;
|
|
public uint bell_pitch, bell_duration;
|
|
public IntPtr led_mask;
|
|
public int global_auto_repeat;
|
|
public AutoRepeats auto_repeats;
|
|
|
|
[StructLayout(LayoutKind.Explicit)]
|
|
internal struct AutoRepeats
|
|
{
|
|
[FieldOffset(0)]
|
|
public byte first;
|
|
|
|
[FieldOffset(31)]
|
|
public byte last;
|
|
}
|
|
}
|
|
|
|
[Flags]
|
|
internal enum GCFunction
|
|
{
|
|
GCFunction = 1 << 0,
|
|
GCPlaneMask = 1 << 1,
|
|
GCForeground = 1 << 2,
|
|
GCBackground = 1 << 3,
|
|
GCLineWidth = 1 << 4,
|
|
GCLineStyle = 1 << 5,
|
|
GCCapStyle = 1 << 6,
|
|
GCJoinStyle = 1 << 7,
|
|
GCFillStyle = 1 << 8,
|
|
GCFillRule = 1 << 9,
|
|
GCTile = 1 << 10,
|
|
GCStipple = 1 << 11,
|
|
GCTileStipXOrigin = 1 << 12,
|
|
GCTileStipYOrigin = 1 << 13,
|
|
GCFont = 1 << 14,
|
|
GCSubwindowMode = 1 << 15,
|
|
GCGraphicsExposures = 1 << 16,
|
|
GCClipXOrigin = 1 << 17,
|
|
GCClipYOrigin = 1 << 18,
|
|
GCClipMask = 1 << 19,
|
|
GCDashOffset = 1 << 20,
|
|
GCDashList = 1 << 21,
|
|
GCArcMode = 1 << 22
|
|
}
|
|
|
|
internal enum GCJoinStyle
|
|
{
|
|
JoinMiter = 0,
|
|
JoinRound = 1,
|
|
JoinBevel = 2
|
|
}
|
|
|
|
internal enum GCLineStyle
|
|
{
|
|
LineSolid = 0,
|
|
LineOnOffDash = 1,
|
|
LineDoubleDash = 2
|
|
}
|
|
|
|
internal enum GCCapStyle
|
|
{
|
|
CapNotLast = 0,
|
|
CapButt = 1,
|
|
CapRound = 2,
|
|
CapProjecting = 3
|
|
}
|
|
|
|
internal enum GCFillStyle
|
|
{
|
|
FillSolid = 0,
|
|
FillTiled = 1,
|
|
FillStippled = 2,
|
|
FillOpaqueStppled = 3
|
|
}
|
|
|
|
internal enum GCFillRule
|
|
{
|
|
EvenOddRule = 0,
|
|
WindingRule = 1
|
|
}
|
|
|
|
internal enum GCArcMode
|
|
{
|
|
ArcChord = 0,
|
|
ArcPieSlice = 1
|
|
}
|
|
|
|
internal enum GCSubwindowMode
|
|
{
|
|
ClipByChildren = 0,
|
|
IncludeInferiors = 1
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XGCValues
|
|
{
|
|
public GXFunction function;
|
|
public IntPtr plane_mask;
|
|
public IntPtr foreground;
|
|
public IntPtr background;
|
|
public int line_width;
|
|
public GCLineStyle line_style;
|
|
public GCCapStyle cap_style;
|
|
public GCJoinStyle join_style;
|
|
public GCFillStyle fill_style;
|
|
public GCFillRule fill_rule;
|
|
public GCArcMode arc_mode;
|
|
public IntPtr tile;
|
|
public IntPtr stipple;
|
|
public int ts_x_origin;
|
|
public int ts_y_origin;
|
|
public IntPtr font;
|
|
public GCSubwindowMode subwindow_mode;
|
|
public bool graphics_exposures;
|
|
public int clip_x_origin;
|
|
public int clib_y_origin;
|
|
public IntPtr clip_mask;
|
|
public int dash_offset;
|
|
public byte dashes;
|
|
}
|
|
|
|
internal enum GXFunction
|
|
{
|
|
GXclear = 0x0, /* 0 */
|
|
GXand = 0x1, /* src AND dst */
|
|
GXandReverse = 0x2, /* src AND NOT dst */
|
|
GXcopy = 0x3, /* src */
|
|
GXandInverted = 0x4, /* NOT src AND dst */
|
|
GXnoop = 0x5, /* dst */
|
|
GXxor = 0x6, /* src XOR dst */
|
|
GXor = 0x7, /* src OR dst */
|
|
GXnor = 0x8, /* NOT src AND NOT dst */
|
|
GXequiv = 0x9, /* NOT src XOR dst */
|
|
GXinvert = 0xa, /* NOT dst */
|
|
GXorReverse = 0xb, /* src OR NOT dst */
|
|
GXcopyInverted = 0xc, /* NOT src */
|
|
GXorInverted = 0xd, /* NOT src OR dst */
|
|
GXnand = 0xe, /* NOT src OR NOT dst */
|
|
GXset = 0xf /* 1 */
|
|
}
|
|
|
|
internal enum NetWindowManagerState
|
|
{
|
|
Remove = 0,
|
|
Add = 1,
|
|
Toggle = 2
|
|
}
|
|
|
|
internal enum RevertTo
|
|
{
|
|
None = 0,
|
|
PointerRoot = 1,
|
|
Parent = 2
|
|
}
|
|
|
|
internal enum MapState
|
|
{
|
|
IsUnmapped = 0,
|
|
IsUnviewable = 1,
|
|
IsViewable = 2
|
|
}
|
|
|
|
internal enum CursorFontShape
|
|
{
|
|
XC_X_cursor = 0,
|
|
XC_arrow = 2,
|
|
XC_based_arrow_down = 4,
|
|
XC_based_arrow_up = 6,
|
|
XC_boat = 8,
|
|
XC_bogosity = 10,
|
|
XC_bottom_left_corner = 12,
|
|
XC_bottom_right_corner = 14,
|
|
XC_bottom_side = 16,
|
|
XC_bottom_tee = 18,
|
|
XC_box_spiral = 20,
|
|
XC_center_ptr = 22,
|
|
|
|
XC_circle = 24,
|
|
XC_clock = 26,
|
|
XC_coffee_mug = 28,
|
|
XC_cross = 30,
|
|
XC_cross_reverse = 32,
|
|
XC_crosshair = 34,
|
|
XC_diamond_cross = 36,
|
|
XC_dot = 38,
|
|
XC_dotbox = 40,
|
|
XC_double_arrow = 42,
|
|
XC_draft_large = 44,
|
|
XC_draft_small = 46,
|
|
|
|
XC_draped_box = 48,
|
|
XC_exchange = 50,
|
|
XC_fleur = 52,
|
|
XC_gobbler = 54,
|
|
XC_gumby = 56,
|
|
XC_hand1 = 58,
|
|
XC_hand2 = 60,
|
|
XC_heart = 62,
|
|
XC_icon = 64,
|
|
XC_iron_cross = 66,
|
|
XC_left_ptr = 68,
|
|
XC_left_side = 70,
|
|
|
|
XC_left_tee = 72,
|
|
XC_left_button = 74,
|
|
XC_ll_angle = 76,
|
|
XC_lr_angle = 78,
|
|
XC_man = 80,
|
|
XC_middlebutton = 82,
|
|
XC_mouse = 84,
|
|
XC_pencil = 86,
|
|
XC_pirate = 88,
|
|
XC_plus = 90,
|
|
XC_question_arrow = 92,
|
|
XC_right_ptr = 94,
|
|
|
|
XC_right_side = 96,
|
|
XC_right_tee = 98,
|
|
XC_rightbutton = 100,
|
|
XC_rtl_logo = 102,
|
|
XC_sailboat = 104,
|
|
XC_sb_down_arrow = 106,
|
|
XC_sb_h_double_arrow = 108,
|
|
XC_sb_left_arrow = 110,
|
|
XC_sb_right_arrow = 112,
|
|
XC_sb_up_arrow = 114,
|
|
XC_sb_v_double_arrow = 116,
|
|
XC_sb_shuttle = 118,
|
|
|
|
XC_sizing = 120,
|
|
XC_spider = 122,
|
|
XC_spraycan = 124,
|
|
XC_star = 126,
|
|
XC_target = 128,
|
|
XC_tcross = 130,
|
|
XC_top_left_arrow = 132,
|
|
XC_top_left_corner = 134,
|
|
XC_top_right_corner = 136,
|
|
XC_top_side = 138,
|
|
XC_top_tee = 140,
|
|
XC_trek = 142,
|
|
|
|
XC_ul_angle = 144,
|
|
XC_umbrella = 146,
|
|
XC_ur_angle = 148,
|
|
XC_watch = 150,
|
|
XC_xterm = 152,
|
|
XC_num_glyphs = 154
|
|
}
|
|
|
|
internal enum SystrayRequest
|
|
{
|
|
SYSTEM_TRAY_REQUEST_DOCK = 0,
|
|
SYSTEM_TRAY_BEGIN_MESSAGE = 1,
|
|
SYSTEM_TRAY_CANCEL_MESSAGE = 2
|
|
}
|
|
|
|
[Flags]
|
|
internal enum XSizeHintsFlags
|
|
{
|
|
USPosition = (1 << 0),
|
|
USSize = (1 << 1),
|
|
PPosition = (1 << 2),
|
|
PSize = (1 << 3),
|
|
PMinSize = (1 << 4),
|
|
PMaxSize = (1 << 5),
|
|
PResizeInc = (1 << 6),
|
|
PAspect = (1 << 7),
|
|
PAllHints = (PPosition | PSize | PMinSize | PMaxSize | PResizeInc | PAspect),
|
|
PBaseSize = (1 << 8),
|
|
PWinGravity = (1 << 9),
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XSizeHints
|
|
{
|
|
public IntPtr flags;
|
|
public int x;
|
|
public int y;
|
|
public int width;
|
|
public int height;
|
|
public int min_width;
|
|
public int min_height;
|
|
public int max_width;
|
|
public int max_height;
|
|
public int width_inc;
|
|
public int height_inc;
|
|
public int min_aspect_x;
|
|
public int min_aspect_y;
|
|
public int max_aspect_x;
|
|
public int max_aspect_y;
|
|
public int base_width;
|
|
public int base_height;
|
|
public int win_gravity;
|
|
}
|
|
|
|
[Flags]
|
|
internal enum XWMHintsFlags
|
|
{
|
|
InputHint = (1 << 0),
|
|
StateHint = (1 << 1),
|
|
IconPixmapHint = (1 << 2),
|
|
IconWindowHint = (1 << 3),
|
|
IconPositionHint = (1 << 4),
|
|
IconMaskHint = (1 << 5),
|
|
WindowGroupHint = (1 << 6),
|
|
AllHints = (InputHint | StateHint | IconPixmapHint | IconWindowHint | IconPositionHint | IconMaskHint | WindowGroupHint)
|
|
}
|
|
|
|
internal enum XInitialState
|
|
{
|
|
DontCareState = 0,
|
|
NormalState = 1,
|
|
ZoomState = 2,
|
|
IconicState = 3,
|
|
InactiveState = 4
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XWMHints
|
|
{
|
|
public IntPtr flags;
|
|
public bool input;
|
|
public XInitialState initial_state;
|
|
public IntPtr icon_pixmap;
|
|
public IntPtr icon_window;
|
|
public int icon_x;
|
|
public int icon_y;
|
|
public IntPtr icon_mask;
|
|
public IntPtr window_group;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct XIconSize
|
|
{
|
|
public int min_width;
|
|
public int min_height;
|
|
public int max_width;
|
|
public int max_height;
|
|
public int width_inc;
|
|
public int height_inc;
|
|
}
|
|
|
|
internal delegate int XErrorHandler(IntPtr DisplayHandle, ref XErrorEvent error_event);
|
|
|
|
internal enum XRequest : byte
|
|
{
|
|
X_CreateWindow = 1,
|
|
X_ChangeWindowAttributes = 2,
|
|
X_GetWindowAttributes = 3,
|
|
X_DestroyWindow = 4,
|
|
X_DestroySubwindows = 5,
|
|
X_ChangeSaveSet = 6,
|
|
X_ReparentWindow = 7,
|
|
X_MapWindow = 8,
|
|
X_MapSubwindows = 9,
|
|
X_UnmapWindow = 10,
|
|
X_UnmapSubwindows = 11,
|
|
X_ConfigureWindow = 12,
|
|
X_CirculateWindow = 13,
|
|
X_GetGeometry = 14,
|
|
X_QueryTree = 15,
|
|
X_InternAtom = 16,
|
|
X_GetAtomName = 17,
|
|
X_ChangeProperty = 18,
|
|
X_DeleteProperty = 19,
|
|
X_GetProperty = 20,
|
|
X_ListProperties = 21,
|
|
X_SetSelectionOwner = 22,
|
|
X_GetSelectionOwner = 23,
|
|
X_ConvertSelection = 24,
|
|
X_SendEvent = 25,
|
|
X_GrabPointer = 26,
|
|
X_UngrabPointer = 27,
|
|
X_GrabButton = 28,
|
|
X_UngrabButton = 29,
|
|
X_ChangeActivePointerGrab = 30,
|
|
X_GrabKeyboard = 31,
|
|
X_UngrabKeyboard = 32,
|
|
X_GrabKey = 33,
|
|
X_UngrabKey = 34,
|
|
X_AllowEvents = 35,
|
|
X_GrabServer = 36,
|
|
X_UngrabServer = 37,
|
|
X_QueryPointer = 38,
|
|
X_GetMotionEvents = 39,
|
|
X_TranslateCoords = 40,
|
|
X_WarpPointer = 41,
|
|
X_SetInputFocus = 42,
|
|
X_GetInputFocus = 43,
|
|
X_QueryKeymap = 44,
|
|
X_OpenFont = 45,
|
|
X_CloseFont = 46,
|
|
X_QueryFont = 47,
|
|
X_QueryTextExtents = 48,
|
|
X_ListFonts = 49,
|
|
X_ListFontsWithInfo = 50,
|
|
X_SetFontPath = 51,
|
|
X_GetFontPath = 52,
|
|
X_CreatePixmap = 53,
|
|
X_FreePixmap = 54,
|
|
X_CreateGC = 55,
|
|
X_ChangeGC = 56,
|
|
X_CopyGC = 57,
|
|
X_SetDashes = 58,
|
|
X_SetClipRectangles = 59,
|
|
X_FreeGC = 60,
|
|
X_ClearArea = 61,
|
|
X_CopyArea = 62,
|
|
X_CopyPlane = 63,
|
|
X_PolyPoint = 64,
|
|
X_PolyLine = 65,
|
|
X_PolySegment = 66,
|
|
X_PolyRectangle = 67,
|
|
X_PolyArc = 68,
|
|
X_FillPoly = 69,
|
|
X_PolyFillRectangle = 70,
|
|
X_PolyFillArc = 71,
|
|
X_PutImage = 72,
|
|
X_GetImage = 73,
|
|
X_PolyText8 = 74,
|
|
X_PolyText16 = 75,
|
|
X_ImageText8 = 76,
|
|
X_ImageText16 = 77,
|
|
X_CreateColormap = 78,
|
|
X_FreeColormap = 79,
|
|
X_CopyColormapAndFree = 80,
|
|
X_InstallColormap = 81,
|
|
X_UninstallColormap = 82,
|
|
X_ListInstalledColormaps = 83,
|
|
X_AllocColor = 84,
|
|
X_AllocNamedColor = 85,
|
|
X_AllocColorCells = 86,
|
|
X_AllocColorPlanes = 87,
|
|
X_FreeColors = 88,
|
|
X_StoreColors = 89,
|
|
X_StoreNamedColor = 90,
|
|
X_QueryColors = 91,
|
|
X_LookupColor = 92,
|
|
X_CreateCursor = 93,
|
|
X_CreateGlyphCursor = 94,
|
|
X_FreeCursor = 95,
|
|
X_RecolorCursor = 96,
|
|
X_QueryBestSize = 97,
|
|
X_QueryExtension = 98,
|
|
X_ListExtensions = 99,
|
|
X_ChangeKeyboardMapping = 100,
|
|
X_GetKeyboardMapping = 101,
|
|
X_ChangeKeyboardControl = 102,
|
|
X_GetKeyboardControl = 103,
|
|
X_Bell = 104,
|
|
X_ChangePointerControl = 105,
|
|
X_GetPointerControl = 106,
|
|
X_SetScreenSaver = 107,
|
|
X_GetScreenSaver = 108,
|
|
X_ChangeHosts = 109,
|
|
X_ListHosts = 110,
|
|
X_SetAccessControl = 111,
|
|
X_SetCloseDownMode = 112,
|
|
X_KillClient = 113,
|
|
X_RotateProperties = 114,
|
|
X_ForceScreenSaver = 115,
|
|
X_SetPointerMapping = 116,
|
|
X_GetPointerMapping = 117,
|
|
X_SetModifierMapping = 118,
|
|
X_GetModifierMapping = 119,
|
|
X_NoOperation = 127
|
|
}
|
|
|
|
[Flags]
|
|
internal enum XIMProperties
|
|
{
|
|
XIMPreeditArea = 0x0001,
|
|
XIMPreeditCallbacks = 0x0002,
|
|
XIMPreeditPosition = 0x0004,
|
|
XIMPreeditNothing = 0x0008,
|
|
XIMPreeditNone = 0x0010,
|
|
XIMStatusArea = 0x0100,
|
|
XIMStatusCallbacks = 0x0200,
|
|
XIMStatusNothing = 0x0400,
|
|
XIMStatusNone = 0x0800,
|
|
}
|
|
|
|
[Flags]
|
|
internal enum WindowType
|
|
{
|
|
Client = 1,
|
|
Whole = 2,
|
|
Both = 3
|
|
}
|
|
|
|
internal enum XEmbedMessage
|
|
{
|
|
EmbeddedNotify = 0,
|
|
WindowActivate = 1,
|
|
WindowDeactivate = 2,
|
|
RequestFocus = 3,
|
|
FocusIn = 4,
|
|
FocusOut = 5,
|
|
FocusNext = 6,
|
|
FocusPrev = 7,
|
|
/* 8-9 were used for XEMBED_GRAB_KEY/XEMBED_UNGRAB_KEY */
|
|
ModalityOn = 10,
|
|
ModalityOff = 11,
|
|
RegisterAccelerator = 12,
|
|
UnregisterAccelerator = 13,
|
|
ActivateAccelerator = 14
|
|
}
|
|
|
|
internal enum ImageFormat
|
|
{
|
|
XYPixmap = 1,
|
|
ZPixmap
|
|
}
|
|
|
|
// XInput2 structures
|
|
|
|
enum XIClassType
|
|
{
|
|
Button = 1,
|
|
Valuator = 2,
|
|
Scroll = 3,
|
|
}
|
|
|
|
enum XIScrollType
|
|
{
|
|
Vertical = 1,
|
|
Horizontal = 2
|
|
}
|
|
|
|
struct XIDeviceInfo
|
|
{
|
|
public int deviceid;
|
|
public IntPtr name; // byte*
|
|
public XIDeviceType use;
|
|
public int attachment;
|
|
public Bool enabled;
|
|
public int num_classes;
|
|
public IntPtr classes; // XIAnyClassInfo**
|
|
}
|
|
|
|
struct XIAnyClassInfo
|
|
{
|
|
public XIClassType type;
|
|
public int sourceid;
|
|
}
|
|
|
|
struct XIButtonClassInfo
|
|
{
|
|
public XIClassType type;
|
|
public int sourceid;
|
|
public int num_buttons;
|
|
public IntPtr labels; // Atom*
|
|
public XIButtonState state;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
struct XIScrollClassInfo
|
|
{
|
|
public XIClassType type;
|
|
public int sourceid;
|
|
public int number;
|
|
public XIScrollType scroll_type;
|
|
public double increment;
|
|
public int flags;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
struct XIValuatorClassInfo
|
|
{
|
|
public XIClassType type;
|
|
public int sourceid;
|
|
public int number;
|
|
public IntPtr label;
|
|
public double min;
|
|
public double max;
|
|
public double value;
|
|
public int resolution;
|
|
public XIMode mode;
|
|
}
|
|
|
|
struct XIDeviceEvent
|
|
{
|
|
public int type; /* GenericEvent */
|
|
public IntPtr serial; /* # of last request processed by server */
|
|
public bool send_event; /* true if this came from a SendEvent request */
|
|
public IntPtr display; /* Display the event was read from */
|
|
public int extension; /* XI extension offset */
|
|
public XIEventType evtype;
|
|
public Time time;
|
|
public int deviceid;
|
|
public int sourceid;
|
|
public int detail;
|
|
public Window root;
|
|
public Window @event;
|
|
public Window child;
|
|
public double root_x;
|
|
public double root_y;
|
|
public double event_x;
|
|
public double event_y;
|
|
public XIEventFlags flags;
|
|
public XIButtonState buttons;
|
|
public XIValuatorState valuators;
|
|
public XIModifierState mods;
|
|
public XIGroupState @group;
|
|
}
|
|
|
|
struct XIRawEvent
|
|
{
|
|
public int type; /* GenericEvent */
|
|
public IntPtr serial; /* # of last request processed by server */
|
|
public Bool send_event; /* true if this came from a SendEvent request */
|
|
public IntPtr display; /* Display the event was read from */
|
|
public int extension; /* XI extension offset */
|
|
public XIEventType evtype; /* XI_RawKeyPress, XI_RawKeyRelease, etc. */
|
|
public Time time;
|
|
public int deviceid;
|
|
public int sourceid;
|
|
public int detail;
|
|
public XIEventFlags flags;
|
|
public XIValuatorState valuators;
|
|
public IntPtr raw_values; // FP3232*
|
|
}
|
|
|
|
struct XIButtonState
|
|
{
|
|
public int mask_len;
|
|
public IntPtr mask; // byte*
|
|
}
|
|
|
|
struct XIModifierState
|
|
{
|
|
public int @base;
|
|
public int latched;
|
|
public int locked;
|
|
public int effective;
|
|
}
|
|
|
|
struct XIGroupState
|
|
{
|
|
public int @base;
|
|
public int latched;
|
|
public int locked;
|
|
public int effective;
|
|
}
|
|
|
|
struct XIValuatorState
|
|
{
|
|
public int mask_len;
|
|
public IntPtr mask; // byte*
|
|
public IntPtr values; // double*
|
|
}
|
|
|
|
struct XIEventMask : IDisposable
|
|
{
|
|
public int deviceid; // 0 = XIAllDevices, 1 = XIAllMasterDevices
|
|
int mask_len;
|
|
unsafe byte* mask;
|
|
|
|
public XIEventMask(int id, XIEventMasks m)
|
|
{
|
|
deviceid = id;
|
|
mask_len = sizeof(XIEventMasks);
|
|
unsafe
|
|
{
|
|
mask = (byte*)Marshal.AllocHGlobal(mask_len);
|
|
for (int i = 0; i < mask_len; i++)
|
|
mask[i] = (byte)((uint)m >> i*8);
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
unsafe
|
|
{
|
|
Marshal.FreeHGlobal(new IntPtr((void*)mask));
|
|
}
|
|
}
|
|
}
|
|
|
|
enum XIEventType
|
|
{
|
|
DeviceChanged = 1,
|
|
KeyPress,
|
|
KeyRelease,
|
|
ButtonPress,
|
|
ButtonRelease,
|
|
Motion,
|
|
Enter,
|
|
Leave,
|
|
FocusIn,
|
|
FocusOut,
|
|
HierarchyChanged,
|
|
PropertyEvent,
|
|
RawKeyPress,
|
|
RawKeyRelease,
|
|
RawButtonPress,
|
|
RawButtonRelease,
|
|
RawMotion,
|
|
LastEvent = RawMotion
|
|
}
|
|
|
|
enum XIEventMasks
|
|
{
|
|
DeviceChangedMask = (1 << (int)XIEventType.DeviceChanged),
|
|
KeyPressMask = (1 << (int)XIEventType.KeyPress),
|
|
KeyReleaseMask = (1 << (int)XIEventType.KeyRelease),
|
|
ButtonPressMask = (1 << (int)XIEventType.ButtonPress),
|
|
ButtonReleaseMask = (1 << (int)XIEventType.ButtonRelease),
|
|
MotionMask = (1 << (int)XIEventType.Motion),
|
|
EnterMask = (1 << (int)XIEventType.Enter),
|
|
LeaveMask = (1 << (int)XIEventType.Leave),
|
|
FocusInMask = (1 << (int)XIEventType.FocusIn),
|
|
FocusOutMask = (1 << (int)XIEventType.FocusOut),
|
|
HierarchyChangedMask = (1 << (int)XIEventType.HierarchyChanged),
|
|
PropertyEventMask = (1 << (int)XIEventType.PropertyEvent),
|
|
RawKeyPressMask = (1 << (int)XIEventType.RawKeyPress),
|
|
RawKeyReleaseMask = (1 << (int)XIEventType.RawKeyRelease),
|
|
RawButtonPressMask = (1 << (int)XIEventType.RawButtonPress),
|
|
RawButtonReleaseMask = (1 << (int)XIEventType.RawButtonRelease),
|
|
RawMotionMask = (1 << (int)XIEventType.RawMotion),
|
|
}
|
|
|
|
[Flags]
|
|
enum XIKeyEventFlags
|
|
{
|
|
Repeat = (1 << 16),
|
|
}
|
|
|
|
[Flags]
|
|
enum XIPointerEventFlags
|
|
{
|
|
Emulated = (1 << 16),
|
|
}
|
|
|
|
[Flags]
|
|
enum XITouchEventFlags
|
|
{
|
|
PendingEnd = (1 << 16),
|
|
EmulatingPointer = (1 << 17),
|
|
}
|
|
|
|
[Flags]
|
|
enum XIEventFlags
|
|
{
|
|
KeyRepeat = XIKeyEventFlags.Repeat,
|
|
PointerEmulated = XIPointerEventFlags.Emulated,
|
|
TouchPendingEnd = XITouchEventFlags.PendingEnd,
|
|
TouchEmulatingPointer = XITouchEventFlags.EmulatingPointer
|
|
}
|
|
}
|