<Compile Include="src\ParsingException.cs" />
<Compile Include="src\IMLAttributes.cs" />
<Compile Include="src\GraphicObjects\DockStack.cs" />
- <Compile Include="src\XLib\Display.cs" />
- <Compile Include="src\XLib\NativeMethods.cs" />
- <Compile Include="src\XLib\Window.cs" />
- <Compile Include="src\XLib\X11Structs.cs" />
- <Compile Include="src\XLib\XKeySym.cs" />
<Compile Include="src\debug\DebugLogger.cs" />
+ <Compile Include="src\IBackend.cs" />
+ <Compile Include="src\backends\X11Structs.cs" />
+ <Compile Include="src\backends\XKeySym.cs" />
+ <Compile Include="src\backends\XLibBackend.cs" />
+ <Compile Include="src\backends\XCBBackend.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Folder Include="src\rsvg\" />
<Folder Include="src\IML\" />
<Folder Include="Icons\" />
- <Folder Include="src\XLib\" />
<Folder Include="src\debug\" />
+ <Folder Include="src\backends\" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Images\Icons\updown.svg" />
app.KeyboardKeyDown += App_KeyboardKeyDown;
- //app.AddWidget (@"Interfaces/Divers/0.crow").DataSource = app;
+ app.AddWidget (@"Interfaces/Divers/0.crow").DataSource = app;
//app.AddWidget (@"Interfaces/Splitter/1.crow").DataSource = app;
- app.AddWidget (@"Interfaces/Container/0.crow").DataSource = app;
+ //app.AddWidget (@"Interfaces/Container/0.crow").DataSource = app;
//app.AddWidget (@"Interfaces/Divers/colorPicker.crow").DataSource = app;
//app.AddWidget ("Interfaces/Divers/perfMeasures.crow").DataSource = app;
<Compile Include="GraphicObjects\SimpleGauge.cs" />
<Compile Include="GraphicObjects\HexaContainer.cs" />
<Compile Include="GraphicObjects\TechBorder.cs" />
- <Compile Include="testCairoXLib.cs" />
<Compile Include="keysyms.cs" />
</ItemGroup>
<ItemGroup>
public static void Main(string[] args)
{
using (StreamWriter sw = new StreamWriter ("test.cs")) {
- using (StreamReader r = new StreamReader ("/usr/include/X11/keysymdef.h")) {
+ using (StreamReader r = new StreamReader ("/usr/include/xkbcommon/xkbcommon-keysyms.h")) {
bool skip = false;
int maxChar = 0;
sw.WriteLine ("/* autogenerated */");
sw.WriteLine ("using System;\n");
- sw.WriteLine ("namespace XLib");
+ sw.WriteLine ("namespace Crow.XCB");
sw.WriteLine ("{");
sw.WriteLine ("\t[Flags]");
sw.WriteLine ("\tpublic enum KeySym");
sw.WriteLine ("\t{");
+ r.ReadLine ();
+ r.ReadLine ();
while (!r.EndOfStream) {
string s = r.ReadLine ().Trim();
if (skip) {
continue;
string[] tmp = s.Split (new char[] {' ', '\t'}, StringSplitOptions.RemoveEmptyEntries);
- if (tmp [1].Length > maxChar)
- maxChar = tmp [1].Length;
+ string keyName = tmp [1].Substring (8);
+ if (char.IsDigit (keyName [0]))
+ keyName = "key_" + keyName;
- int nbTab = tmp [1].Length / 4;
+ if (keyName.Length > maxChar)
+ maxChar = keyName.Length;
+
+ int nbTab = keyName.Length / 4;
nbTab = 8 - nbTab;
- sw.WriteLine ("\t\t{0}{1}= {2},", tmp[1],new String('\t',nbTab), tmp[2]);
+ sw.WriteLine ("\t\t{0}{1}= {2},", keyName, new String('\t',nbTab), tmp[2]);
}
sw.WriteLine ("\t}");
sw.WriteLine ("}");
static internal IntPtr xHandle, xwinHnd;
static internal Int32 xScreen;
static IntPtr xLastEvent;
- static XLib.XErrorHandler errorHnd;
+ static XErrorHandler errorHnd;
static Pollfd[] pollfds;
}
#endif
protected GraphicObject child;
- #if DEBUG_LAYOUTING
+ #if DEBUG_LOG
internal GraphicObject getTemplateRoot {
get { return child; }
}
--- /dev/null
+//
+// IBackend.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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.
+using System;
+
+namespace Crow
+{
+ public interface IBackend
+ {
+ void Init(Interface iFace);
+ void CleanUp();
+ void Flush();
+ void ProcessEvents();
+ }
+}
+
}
#endregion
- internal IntPtr xDisp, xwinHnd, xDefaultRootWin, xDefaultVisual;
- internal UInt32 xDefaultDepth;
- internal Int32 xScreen;
- XLib.XErrorHandler errorHnd;
+ internal IBackend backend;
#region CTOR
static Interface(){
Init ();
- initX ();
- }
- private int HandleError (IntPtr display, ref XLib.XErrorEvent error_event)
- {
- /*if (ErrorExceptions)
- throw new X11Exception (error_event.display, error_event.resourceid,
- error_event.serial, error_event.error_code,
- error_event.request_code, error_event.minor_code);
- else
- Console.WriteLine ("X11 Error encountered: {0}{1}\n",
- X11Exception.GetMessage(error_event.display, error_event.resourceid,
- error_event.serial, error_event.error_code,
- error_event.request_code, error_event.minor_code),
- WhereString());*/
- Debug.WriteLine ("XERROR {0}", error_event.error_code);
- return 0;
+ InitBackend ();
}
#endregion
+ protected virtual void InitBackend () {
+ backend = new Crow.XCB.XCBBackend ();
+ backend.Init (this);
+
+ Thread t = new Thread (interfaceThread);
+ t.IsBackground = true;
+ t.Start ();
+ }
+
void interfaceThread()
{
while (true) {
Update ();
- if (XLib.NativeMethods.XPending (xDisp) > 0) {
- XLib.XEvent xevent = new XLib.XEvent ();
- XLib.NativeMethods.XNextEvent (xDisp, ref xevent);
-
- switch (xevent.type) {
- case XLib.XEventName.Expose:
- ProcessResize (new Rectangle (0, 0, xevent.ExposeEvent.width, xevent.ExposeEvent.height));
- break;
- case XLib.XEventName.KeyPress:
- ProcessKeyDown (xevent.KeyEvent.keycode);
-
- /*int min_keycode, max_keycode, keysyms_per_keycode;
- XLib.NativeMethods.XDisplayKeycodes (xDisp, out min_keycode, out max_keycode);
-
- IntPtr ksp = XLib.NativeMethods.XGetKeyboardMapping (xDisp, (byte)min_keycode,
- max_keycode + 1 - min_keycode, out keysyms_per_keycode);
- XLib.NativeMethods.XFree (ksp);*/
-
- uint keySym;
- keySym = XLib.NativeMethods.XKeycodeToKeysym (xDisp, xevent.KeyEvent.keycode, 0);
- char c = (char)keySym;
-
- Debug.WriteLine ("keycode:{0}; keysym:{1}; char:{2}", xevent.KeyEvent.keycode, keySym, c);
- break;
- case XLib.XEventName.KeyRelease:
- ProcessKeyUp (xevent.KeyEvent.keycode);
- //Debug.WriteLine ("keypress: {0}", xevent.KeyEvent.keycode);
- break;
- case XLib.XEventName.MotionNotify:
- //Debug.WriteLine ("motion: ({0},{1})", xevent.MotionEvent.x, xevent.MotionEvent.y);
- ProcessMouseMove (xevent.MotionEvent.x, xevent.MotionEvent.y);
- break;
- case XLib.XEventName.ButtonPress:
- //Debug.WriteLine ("button press: {0}", xevent.ButtonEvent.button);
- if (xevent.ButtonEvent.button == 4)
- ProcessMouseWheelChanged (WheelIncrement);
- else if(xevent.ButtonEvent.button == 5)
- ProcessMouseWheelChanged (-WheelIncrement);
- else
- ProcessMouseButtonDown (xevent.ButtonEvent.button - 1);
- break;
- case XLib.XEventName.ButtonRelease:
- //Debug.WriteLine ("button release: {0}", xevent.ButtonEvent.button);
- ProcessMouseButtonUp (xevent.ButtonEvent.button - 1);
- break;
-
- }
- }
+ backend.ProcessEvents ();
}
}
// TODO: dispose managed state (managed objects).
}
- //Marshal.FreeHGlobal (lastEvent);
- XLib.NativeMethods.XCloseDisplay (xDisp);
+ backend.CleanUp ();
+
disposedValue = true;
}
#endif
}
- protected virtual void initX() {
- XLib.NativeMethods.XInitThreads ();
- xDisp = XLib.NativeMethods.XOpenDisplay(IntPtr.Zero);
- if (xDisp == IntPtr.Zero)
- throw new NotSupportedException("[XLib] Failed to open display.");
-
- xScreen = XLib.NativeMethods.XDefaultScreen(xDisp);
-
- xDefaultRootWin = XLib.NativeMethods.XDefaultRootWindow (xDisp);
- xDefaultVisual = XLib.NativeMethods.XDefaultVisual (xDisp, xScreen);
- xDefaultDepth = XLib.NativeMethods.XDefaultDepth (xDisp, xScreen);
-
- xwinHnd = XLib.NativeMethods.XCreateSimpleWindow (xDisp, xDefaultRootWin,
- 0, 0, (uint)clientRectangle.Width, (uint)clientRectangle.Height, 0, IntPtr.Zero, IntPtr.Zero);
- if (xwinHnd == IntPtr.Zero)
- throw new NotSupportedException("[XLib] Failed to create window.");
-
- XLib.NativeMethods.XSelectInput (xDisp, xwinHnd, XLib.EventMask.ExposureMask |
- XLib.EventMask.KeyPressMask | XLib.EventMask.KeyReleaseMask |
- XLib.EventMask.PointerMotionMask | XLib.EventMask.ButtonPressMask | XLib.EventMask.ButtonReleaseMask);
-
- XLib.NativeMethods.XMapWindow (xDisp, xwinHnd);
-
- surf = new Cairo.XlibSurface (xDisp, xwinHnd, xDefaultVisual, clientRectangle.Width, clientRectangle.Height);
-
- errorHnd = new XLib.XErrorHandler (HandleError);
- XLib.NativeMethods.XSetErrorHandler (errorHnd);
-
- int min_keycode, max_keycode, keysyms_per_keycode;
-
- XLib.NativeMethods.XDisplayKeycodes (xDisp, out min_keycode, out max_keycode);
- IntPtr ksp = XLib.NativeMethods.XGetKeyboardMapping (xDisp, (byte) min_keycode,
- max_keycode + 1 - min_keycode, out keysyms_per_keycode);
- XLib.NativeMethods.XFree (ksp);
-
- unsafe {
- byte* modmap_unmanaged = XLib.NativeMethods.XGetModifierMapping (xDisp);
- int nummodmap = 0;
- int* ptr = (int*)modmap_unmanaged;
- nummodmap = ptr [0];
-
- for (int i = 0; i< nummodmap; i++) {
- Console.WriteLine(modmap_unmanaged[i+4]);
- }
- XLib.NativeMethods.XFree ((IntPtr)modmap_unmanaged);
- }
-
-
- Thread t = new Thread (interfaceThread);
- t.IsBackground = true;
- t.Start ();
-
- }
-
#region Static and constants
/// <summary>
/// Crow configuration root path
//}
//surf.WriteToPng (@"/mnt/data/test.png");
- //XLib.NativeMethods.XSync (xHandle, 0);
+ backend?.Flush ();
}
}
#if MEASURE_TIME
/// <returns>return true, if interface handled the event, false otherwise.</returns>
/// <param name="button">Button index</param>
public bool ProcessKeyDown(int Key){
- Keyboard.SetKeyState((Crow.Key)Key,true);
+ //Keyboard.SetKeyState((Crow.Key)Key,true);
KeyboardKeyEventArgs e = lastKeyDownEvt = new KeyboardKeyEventArgs((Crow.Key)Key, false, Keyboard);
lastKeyDownEvt.IsRepeat = true;
/// <returns>return true, if interface handled the event, false otherwise.</returns>
/// <param name="button">Button index</param>
public bool ProcessKeyUp(int Key){
- Keyboard.SetKeyState((Crow.Key)Key,false);
+ //Keyboard.SetKeyState((Crow.Key)Key,false);
if (_focusedWidget == null)
return false;
KeyboardKeyEventArgs e = new KeyboardKeyEventArgs((Crow.Key)Key, false, Keyboard);
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace XLib
-{
- public class Display : IDisposable
- {
- internal IntPtr handle;
- internal Int32 screen;
- IntPtr lastEvent;
-
- public Display()
- {
- handle = NativeMethods.XOpenDisplay(IntPtr.Zero);
- if (handle == IntPtr.Zero)
- throw new NotSupportedException("[XLib] Failed to open display.");
-
- screen = NativeMethods.XDefaultScreen(handle);
- lastEvent = Marshal.AllocHGlobal(96);
- }
-
- /*public IntPtr NextEvent {
- get {
- NativeMethods.XNextEvent(handle, lastEvent);
- return lastEvent;
- }
- }*/
-
- #region IDisposable Support
- private bool disposedValue = false; // To detect redundant calls
-
- protected virtual void Dispose(bool disposing)
- {
- if (!disposedValue)
- {
- if (disposing)
- {
- // TODO: dispose managed state (managed objects).
- }
-
- //Marshal.FreeHGlobal (lastEvent);
- NativeMethods.XCloseDisplay (handle);
-
- disposedValue = true;
- }
- }
-
- // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources.
- ~Display() {
- // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
- Dispose(false);
- }
-
- // This code added to correctly implement the disposable pattern.
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- #endregion
-
-
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace XLib
-{
- public static class NativeMethods
- {
- #region pinvoke
- [DllImportAttribute("X11")]
- public static extern int XInitThreads();
- [DllImportAttribute("X11")]
- public static extern IntPtr XOpenDisplay(IntPtr displayName);
- [DllImportAttribute("X11")]
- public static extern IntPtr XCloseDisplay(IntPtr disp);
- [DllImportAttribute("X11")]
- public static extern Int32 XDefaultScreen(IntPtr disp);
- [DllImportAttribute("X11")]
- public static extern IntPtr XDefaultRootWindow(IntPtr disp);
- [DllImportAttribute("X11")]
- public static extern UInt32 XDefaultDepth (IntPtr disp, Int32 screen);
- [DllImportAttribute("X11")]
- public static extern IntPtr XDefaultVisual(IntPtr disp, Int32 screen);
- [DllImportAttribute("X11")]
- public static extern IntPtr XCreateSimpleWindow(IntPtr disp, IntPtr rootWindow, Int32 x, Int32 y, UInt32 width, UInt32 height,
- UInt32 borderWidth, IntPtr border, IntPtr background);
- [DllImportAttribute("X11")]
- public static extern IntPtr XCreatePixmap(IntPtr disp, IntPtr rootWindow, UInt32 width, UInt32 height, UInt32 depth);
- [DllImportAttribute("X11")]
- public static extern IntPtr XFreePixmap(IntPtr disp, IntPtr pixmap);
- [DllImportAttribute("X11")]
- public static extern IntPtr XFree(IntPtr data);
- [DllImportAttribute("X11")]
- public static extern Int32 XSelectInput(IntPtr disp, IntPtr win, EventMask eventMask);
- [DllImportAttribute("X11")]
- public static extern Int32 XMapWindow(IntPtr disp, IntPtr win);
- [DllImportAttribute("X11")]
- public static extern int XPending (IntPtr disp);
- [DllImportAttribute("X11")]
- public static extern IntPtr XNextEvent(IntPtr disp, ref XEvent xevent);
- [DllImportAttribute("X11")]
- public static extern Int32 XSync(IntPtr disp, int discard);
- [DllImportAttribute("X11")]
- public static extern int XConnectionNumber(IntPtr disp);
- [DllImportAttribute("X11")]
- public static extern IntPtr XSetErrorHandler(XErrorHandler error_handler);
-
- [DllImport ("libX11")]
- public static extern void XDisplayKeycodes (IntPtr disp, out int min, out int max);
- [DllImport ("libX11")]
- public static extern IntPtr XGetKeyboardMapping (IntPtr disp, byte first_keycode, int keycode_count,
- out int keysyms_per_keycode_return);
- [DllImport ("libX11")]
- unsafe public extern static byte* XGetModifierMapping (IntPtr disp);
- [DllImport ("libX11")]
- public static extern uint XKeycodeToKeysym (IntPtr display, int keycode, int index);
- #endregion
-
-
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace XLib
-{
-
- public enum EventType {
- KeyPress = 2,
- KeyRelease,
- ButtonPress,
- ButtonRelease,
- MotionNotify,
- EnterNotify,
- LeaveNotify,
- FocusIn,
- FocusOut,
- KeymapNotify,
- Expose,
- GraphicsExpose,
- NoExpose,
- VisibilityNotify,
- CreateNotify,
- DestroyNotify,
- UnmapNotify,
- MapNotify,
- MapRequest,
- ReparentNotify,
- ConfigureNotify,
- ConfigureRequest,
- GravityNotify,
- ResizeRequest,
- CirculateNotify,
- CirculateRequest,
- PropertyNotify,
- SelectionClear,
- SelectionRequest,
- SelectionNotify,
- ColormapNotify,
- ClientMessage,
- MappingNotify,
- GenericEvent,
- LASTEvent = 36 /* must be bigger than any event # */
- }
- public class Window
- {
- IntPtr handle;
- Display disp;
-
- public Window (Display display, UInt32 width = 800, UInt32 height = 600, Int32 x = 0, Int32 y = 0) {
- disp = display;
- handle = NativeMethods.XCreateSimpleWindow (disp.handle, NativeMethods.XDefaultRootWindow(disp.handle), x, y, width, height,
- 0, IntPtr.Zero, IntPtr.Zero);
- if (handle == IntPtr.Zero)
- throw new NotSupportedException("[XLib] Failed to create window.");
-
- NativeMethods.XSelectInput (disp.handle, handle, EventMask.ExposureMask | EventMask.KeyPressMask);
-
- NativeMethods.XMapWindow (disp.handle, handle);
- }
-
- }
-}
+++ /dev/null
-// 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;
-using System.Drawing;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-using System.Threading;
-
-/// X11 Version
-namespace XLib {
- //
- // 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)]
- public struct XAnyEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public struct XVisibilityEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public int state;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public 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)]
- public struct XDestroyWindowEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public 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)]
- public 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)]
- public struct XMapRequestEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr parent;
- public IntPtr window;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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)]
- public 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.Explicit)]
- public 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;
-
- //[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.ButtonPress:
- case XEventName.ButtonRelease:
- return ToString (ButtonEvent);
- case XEventName.CirculateNotify:
- case XEventName.CirculateRequest:
- return ToString (CirculateEvent);
- case XEventName.ClientMessage:
- return ToString (ClientMessageEvent);
- case XEventName.ColormapNotify:
- return ToString (ColormapEvent);
- case XEventName.ConfigureNotify:
- return ToString (ConfigureEvent);
- case XEventName.ConfigureRequest:
- return ToString (ConfigureRequestEvent);
- case XEventName.CreateNotify:
- return ToString (CreateWindowEvent);
- case XEventName.DestroyNotify:
- return ToString (DestroyWindowEvent);
- case XEventName.Expose:
- return ToString (ExposeEvent);
- case XEventName.FocusIn:
- case XEventName.FocusOut:
- return ToString (FocusChangeEvent);
- case XEventName.GraphicsExpose:
- return ToString (GraphicsExposeEvent);
- case XEventName.GravityNotify:
- return ToString (GravityEvent);
- case XEventName.KeymapNotify:
- return ToString (KeymapEvent);
- case XEventName.MapNotify:
- return ToString (MapEvent);
- case XEventName.MappingNotify:
- return ToString (MappingEvent);
- case XEventName.MapRequest:
- return ToString (MapRequestEvent);
- case XEventName.MotionNotify:
- return ToString (MotionEvent);
- case XEventName.NoExpose:
- return ToString (NoExposeEvent);
- case XEventName.PropertyNotify:
- return ToString (PropertyEvent);
- case XEventName.ReparentNotify:
- return ToString (ReparentEvent);
- case XEventName.ResizeRequest:
- return ToString (ResizeRequestEvent);
- case XEventName.SelectionClear:
- return ToString (SelectionClearEvent);
- case XEventName.SelectionNotify:
- return ToString (SelectionEvent);
- case XEventName.SelectionRequest:
- return ToString (SelectionRequestEvent);
- case XEventName.UnmapNotify:
- return ToString (UnmapEvent);
- case XEventName.VisibilityNotify:
- return ToString (VisibilityEvent);
- case XEventName.EnterNotify:
- case XEventName.LeaveNotify:
- return ToString (CrossingEvent);
- 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)]
- public 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)]
- public 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)]
- public struct XTextProperty {
- public string value;
- public IntPtr encoding;
- public int format;
- public IntPtr nitems;
- }
-
- public enum XWindowClass {
- InputOutput = 1,
- InputOnly = 2
- }
-
- public 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,
-
- LASTEvent
- }
-
- [Flags]
- public 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
- }
-
- public enum SendEventValues {
- PointerWindow = 0,
- InputFocus = 1
- }
-
- public enum CreateWindowArgs {
- CopyFromParent = 0,
- ParentRelative = 1,
- InputOutput = 1,
- InputOnly = 2
- }
-
- public enum Gravity {
- ForgetGravity = 0,
- NorthWestGravity= 1,
- NorthGravity = 2,
- NorthEastGravity= 3,
- WestGravity = 4,
- CenterGravity = 5,
- EastGravity = 6,
- SouthWestGravity= 7,
- SouthGravity = 8,
- SouthEastGravity= 9,
- StaticGravity = 10
- }
-
- public 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,
- }
-
- [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
- }
-
- public enum GrabMode {
- GrabModeSync = 0,
- GrabModeAsync = 1
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public 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)]
- public struct XColor {
- public IntPtr pixel;
- public ushort red;
- public ushort green;
- public ushort blue;
- public byte flags;
- public byte pad;
- }
-
- public enum Atom {
- 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)]
- public 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]
- public enum ChangeWindowFlags {
- CWX = 1<<0,
- CWY = 1<<1,
- CWWidth = 1<<2,
- CWHeight = 1<<3,
- CWBorderWidth = 1<<4,
- CWSibling = 1<<5,
- CWStackMode = 1<<6
- }
-
- public enum StackMode {
- Above = 0,
- Below = 1,
- TopIf = 2,
- BottomIf = 3,
- Opposite = 4
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public 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]
- public enum ColorFlags {
- DoRed = 1<<0,
- DoGreen = 1<<1,
- DoBlue = 1<<2
- }
-
- public enum NotifyMode {
- NotifyNormal = 0,
- NotifyGrab = 1,
- NotifyUngrab = 2
- }
-
- public enum NotifyDetail {
- NotifyAncestor = 0,
- NotifyVirtual = 1,
- NotifyInferior = 2,
- NotifyNonlinear = 3,
- NotifyNonlinearVirtual = 4,
- NotifyPointer = 5,
- NotifyPointerRoot = 6,
- NotifyDetailNone = 7
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct MotifWmHints {
- public IntPtr flags;
- public IntPtr functions;
- public IntPtr decorations;
- public IntPtr input_mode;
- public IntPtr status;
-
- public override string ToString ()
- {
- return string.Format("MotifWmHints <flags={0}, functions={1}, decorations={2}, input_mode={3}, status={4}", (MotifFlags) flags.ToInt32 (), (MotifFunctions) functions.ToInt32 (), (MotifDecorations) decorations.ToInt32 (), (MotifInputMode) input_mode.ToInt32 (), status.ToInt32 ());
- }
- }
-
- [Flags]
- public enum MotifFlags {
- Functions = 1,
- Decorations = 2,
- InputMode = 4,
- Status = 8
- }
-
- [Flags]
- public enum MotifFunctions {
- All = 0x01,
- Resize = 0x02,
- Move = 0x04,
- Minimize = 0x08,
- Maximize = 0x10,
- Close = 0x20
- }
-
- [Flags]
- public enum MotifDecorations {
- All = 0x01,
- Border = 0x02,
- ResizeH = 0x04,
- Title = 0x08,
- Menu = 0x10,
- Minimize = 0x20,
- Maximize = 0x40,
-
- }
-
- [Flags]
- public enum MotifInputMode {
- Modeless = 0,
- ApplicationModal = 1,
- SystemModal = 2,
- FullApplicationModal = 3
- }
-
- [Flags]
- public 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
- }
-
- [Flags]
- public enum MouseKeyMasks {
- Button1Mask = (1 << 8),
- Button2Mask = (1 << 9),
- Button3Mask = (1 << 10),
- Button4Mask = (1 << 11),
- Button5Mask = (1 << 12),
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XModifierKeymap {
- public int max_keypermod;
- public IntPtr modifiermap;
- }
-
- public enum PropertyMode {
- Replace = 0,
- Prepend = 1,
- Append = 2
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public 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)]
- public struct AutoRepeats {
- [FieldOffset (0)]
- public byte first;
-
- [FieldOffset (31)]
- public byte last;
- }
- }
-
- [Flags]
- public 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
- }
-
- public enum GCJoinStyle {
- JoinMiter = 0,
- JoinRound = 1,
- JoinBevel = 2
- }
-
- public enum GCLineStyle {
- LineSolid = 0,
- LineOnOffDash = 1,
- LineDoubleDash = 2
- }
-
- public enum GCCapStyle {
- CapNotLast = 0,
- CapButt = 1,
- CapRound = 2,
- CapProjecting = 3
- }
-
- public enum GCFillStyle {
- FillSolid = 0,
- FillTiled = 1,
- FillStippled = 2,
- FillOpaqueStppled = 3
- }
-
- public enum GCFillRule {
- EvenOddRule = 0,
- WindingRule = 1
- }
-
- public enum GCArcMode {
- ArcChord = 0,
- ArcPieSlice = 1
- }
-
- public enum GCSubwindowMode {
- ClipByChildren = 0,
- IncludeInferiors = 1
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public 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;
- }
-
- public 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 */
- }
-
- public enum NetWindowManagerState {
- Remove = 0,
- Add = 1,
- Toggle = 2
- }
-
- public enum RevertTo {
- None = 0,
- PointerRoot = 1,
- Parent = 2
- }
-
- public enum MapState {
- IsUnmapped = 0,
- IsUnviewable = 1,
- IsViewable = 2
- }
-
- public 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
- }
-
- public enum SystrayRequest {
- SYSTEM_TRAY_REQUEST_DOCK = 0,
- SYSTEM_TRAY_BEGIN_MESSAGE = 1,
- SYSTEM_TRAY_CANCEL_MESSAGE = 2
- }
-
- public enum NetWmStateRequest {
- _NET_WM_STATE_REMOVE = 0,
- _NET_WM_STATE_ADD = 1,
- _NET_WM_STATE_TOGGLE = 2
- }
-
- public enum NetWmMoveResize {
- _NET_WM_MOVERESIZE_SIZE_TOPLEFT = 0,
- _NET_WM_MOVERESIZE_SIZE_TOP = 1,
- _NET_WM_MOVERESIZE_SIZE_TOPRIGHT = 2,
- _NET_WM_MOVERESIZE_SIZE_RIGHT = 3,
- _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT = 4,
- _NET_WM_MOVERESIZE_SIZE_BOTTOM = 5,
- _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT = 6,
- _NET_WM_MOVERESIZE_SIZE_LEFT = 7,
- _NET_WM_MOVERESIZE_MOVE = 8,
- _NET_WM_MOVERESIZE_SIZE_KEYBOARD = 9,
- _NET_WM_MOVERESIZE_MOVE_KEYBOARD = 10,
- _NET_WM_MOVERESIZE_CANCEL = 11
- }
-
- [Flags]
- public 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)]
- public 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]
- public 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)
- }
-
- public enum XInitialState {
- DontCareState = 0,
- NormalState = 1,
- ZoomState = 2,
- IconicState = 3,
- InactiveState = 4
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public 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)]
- public 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;
- }
-
- public struct CaretStruct {
- public Timer Timer; // Blink interval
- public IntPtr Hwnd; // Window owning the caret
- public IntPtr Window; // Actual X11 handle of the window
- public int X; // X position of the caret
- public int Y; // Y position of the caret
- public int Width; // Width of the caret; if no image used
- public int Height; // Height of the caret, if no image used
- public bool Visible; // Is caret visible?
- public bool On; // Caret blink display state: On/Off
- public IntPtr gc; // Graphics context
- public bool Paused; // Don't update right now
- }
-
- public struct HoverStruct {
- public Timer Timer; // for hovering
- public IntPtr Window; // Last window we entered; used to generate WM_MOUSEHOVER (handle is X11 handle)
- public int X; // Last MouseMove X coordinate; used to generate WM_MOUSEHOVER
- public int Y; // Last MouseMove Y coordinate; used to generate WM_MOUSEHOVER
- public Size Size; // Size of the rectangle the mouse has to stay in to generate hover
- public int Interval; // in milliseconds, how long to hold before hover is generated
- public IntPtr Atom; // X Atom
- }
-
- /*public struct ClickStruct {
- public IntPtr Hwnd; //
- public Msg Message; //
- public IntPtr wParam; //
- public IntPtr lParam; //
- public long Time; // Last time we received a mouse click
- public bool Pending; // True if we haven't sent the last mouse click
- }*/
-
- public struct GrabStruct {
- public bool Confined; // Is the current grab (if any) confined to grab_area?
- public IntPtr Hwnd; // The window that is grabbed
- public Rectangle Area; // The area the current grab is confined to
- }
-
- public delegate int XErrorHandler(IntPtr DisplayHandle, ref XErrorEvent error_event);
-
- public 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]
- public enum XIMProperties {
- XIMPreeditArea = 0x0001,
- XIMPreeditCallbacks = 0x0002,
- XIMPreeditPosition = 0x0004,
- XIMPreeditNothing = 0x0008,
- XIMPreeditNone = 0x0010,
- XIMStatusArea = 0x0100,
- XIMStatusCallbacks = 0x0200,
- XIMStatusNothing = 0x0400,
- XIMStatusNone = 0x0800,
- }
-
- [Flags]
- public enum WindowType {
- Client = 1,
- Whole = 2,
- Both = 3
- }
-
- public 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
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XcursorImage
- {
- private int version;
- public int size; /* nominal size for matching */
- public int width; /* actual width */
- public int height; /* actual height */
- public int xhot; /* hot spot x (must be inside image) */
- public int yhot; /* hot spot y (must be inside image) */
- public int delay; /* hot spot y (must be inside image) */
- public IntPtr pixels; /* pointer to pixels */
-
- public override string ToString ()
- {
- return string.Format ("XCursorImage (version: {0}, size: {1}, width: {2}, height: {3}, xhot: {4}, yhot: {5}, delay: {6}, pixels: {7}",
- version, size, width, height, xhot, yhot, delay, pixels);
- }
- } ;
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XcursorImages
- {
- public int nimage; /* number of images */
- public IntPtr images; /* array of XcursorImage pointers */
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XIMStyles
- {
- public ushort count_styles;
- public IntPtr supported_styles;
- }
-
- [StructLayout (LayoutKind.Sequential)]
- [Serializable]
- public class XPoint
- {
- public short X;
- public short Y;
- }
-
- [StructLayout (LayoutKind.Sequential)]
- [Serializable]
- public class XIMCallback
- {
- public IntPtr client_data;
- public XIMProc callback;
- [NonSerialized]
- GCHandle gch;
-
- public XIMCallback (IntPtr clientData, XIMProc proc)
- {
- this.client_data = clientData;
- this.gch = GCHandle.Alloc (proc);
- this.callback = proc;
- }
-
- ~XIMCallback ()
- {
- gch.Free ();
- }
- }
-
- public enum XIMFeedback
- {
- Reverse = 1,
- Underline = 2,
- Highlight = 4,
- Primary = 32,
- Secondary = 64,
- Tertiary = 128,
- }
-
- public struct XIMFeedbackStruct
- {
- public byte FeedbackMask; // one or more of XIMFeedback enum
- }
-
- public struct XIMText
- {
- public ushort Length;
- public IntPtr Feedback; // to XIMFeedbackStruct
- public bool EncodingIsWChar;
- public IntPtr String; // it could be either char* or wchar_t*
- }
-
- public struct XIMPreeditDrawCallbackStruct
- {
- public int Caret;
- public int ChangeFirst;
- public int ChangeLength;
- public IntPtr Text; // to XIMText
- }
-
- public enum XIMCaretDirection
- {
- XIMForwardChar,
- XIMBackwardChar,
- XIMForwardWord,
- XIMBackwardWord,
- XIMCaretUp,
- XIMCaretDown,
- XIMNextLine,
- XIMPreviousLine,
- XIMLineStart,
- XIMLineEnd,
- XIMAbsolutePosition,
- XIMDontChange
- }
-
- public enum XIMCaretStyle
- {
- IsInvisible,
- IsPrimary,
- IsSecondary
- }
-
- public struct XIMPreeditCaretCallbackStruct
- {
- public int Position;
- public XIMCaretDirection Direction;
- public XIMCaretStyle Style;
- }
-
- // only PreeditStartCallback requires return value though.
- public delegate int XIMProc (IntPtr xim, IntPtr clientData, IntPtr callData);
-
- public static class XNames
- {
- public const string XNVaNestedList = "XNVaNestedList";
- public const string XNQueryInputStyle = "queryInputStyle";
- public const string XNClientWindow = "clientWindow";
- public const string XNInputStyle = "inputStyle";
- public const string XNFocusWindow = "focusWindow";
-
- // XIMPreeditCallbacks delegate names.
- public const string XNPreeditStartCallback = "preeditStartCallback";
- public const string XNPreeditDoneCallback = "preeditDoneCallback";
- public const string XNPreeditDrawCallback = "preeditDrawCallback";
- public const string XNPreeditCaretCallback = "preeditCaretCallback";
- public const string XNPreeditStateNotifyCallback = "preeditStateNotifyCallback";
- public const string XNPreeditAttributes = "preeditAttributes";
- // XIMStatusCallbacks delegate names.
- public const string XNStatusStartCallback = "statusStartCallback";
- public const string XNStatusDoneCallback = "statusDoneCallback";
- public const string XNStatusDrawCallback = "statusDrawCallback";
- public const string XNStatusAttributes = "statusAttributes";
-
- public const string XNArea = "area";
- public const string XNAreaNeeded = "areaNeeded";
- public const string XNSpotLocation = "spotLocation";
- public const string XNFontSet = "fontSet";
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XineramaScreenInfo
- {
- public int screen_number;
- public short x_org;
- public short y_org;
- public short width;
- public short height;
- }
-}
+++ /dev/null
-/* autogenerated */
-using System;
-
-namespace XLib
-{
- [Flags]
- public enum KeySym
- {
- XK_VoidSymbol = 0xffffff,
- XK_BackSpace = 0xff08,
- XK_Tab = 0xff09,
- XK_Linefeed = 0xff0a,
- XK_Clear = 0xff0b,
- XK_Return = 0xff0d,
- XK_Pause = 0xff13,
- XK_Scroll_Lock = 0xff14,
- XK_Sys_Req = 0xff15,
- XK_Escape = 0xff1b,
- XK_Delete = 0xffff,
- XK_Multi_key = 0xff20,
- XK_Codeinput = 0xff37,
- XK_SingleCandidate = 0xff3c,
- XK_MultipleCandidate = 0xff3d,
- XK_PreviousCandidate = 0xff3e,
- XK_Kanji = 0xff21,
- XK_Muhenkan = 0xff22,
- XK_Henkan_Mode = 0xff23,
- XK_Henkan = 0xff23,
- XK_Romaji = 0xff24,
- XK_Hiragana = 0xff25,
- XK_Katakana = 0xff26,
- XK_Hiragana_Katakana = 0xff27,
- XK_Zenkaku = 0xff28,
- XK_Hankaku = 0xff29,
- XK_Zenkaku_Hankaku = 0xff2a,
- XK_Touroku = 0xff2b,
- XK_Massyo = 0xff2c,
- XK_Kana_Lock = 0xff2d,
- XK_Kana_Shift = 0xff2e,
- XK_Eisu_Shift = 0xff2f,
- XK_Eisu_toggle = 0xff30,
- XK_Kanji_Bangou = 0xff37,
- XK_Zen_Koho = 0xff3d,
- XK_Mae_Koho = 0xff3e,
- XK_Home = 0xff50,
- XK_Left = 0xff51,
- XK_Up = 0xff52,
- XK_Right = 0xff53,
- XK_Down = 0xff54,
- XK_Prior = 0xff55,
- XK_Page_Up = 0xff55,
- XK_Next = 0xff56,
- XK_Page_Down = 0xff56,
- XK_End = 0xff57,
- XK_Begin = 0xff58,
- XK_Select = 0xff60,
- XK_Print = 0xff61,
- XK_Execute = 0xff62,
- XK_Insert = 0xff63,
- XK_Undo = 0xff65,
- XK_Redo = 0xff66,
- XK_Menu = 0xff67,
- XK_Find = 0xff68,
- XK_Cancel = 0xff69,
- XK_Help = 0xff6a,
- XK_Break = 0xff6b,
- XK_Mode_switch = 0xff7e,
- XK_script_switch = 0xff7e,
- XK_Num_Lock = 0xff7f,
- XK_KP_Space = 0xff80,
- XK_KP_Tab = 0xff89,
- XK_KP_Enter = 0xff8d,
- XK_KP_F1 = 0xff91,
- XK_KP_F2 = 0xff92,
- XK_KP_F3 = 0xff93,
- XK_KP_F4 = 0xff94,
- XK_KP_Home = 0xff95,
- XK_KP_Left = 0xff96,
- XK_KP_Up = 0xff97,
- XK_KP_Right = 0xff98,
- XK_KP_Down = 0xff99,
- XK_KP_Prior = 0xff9a,
- XK_KP_Page_Up = 0xff9a,
- XK_KP_Next = 0xff9b,
- XK_KP_Page_Down = 0xff9b,
- XK_KP_End = 0xff9c,
- XK_KP_Begin = 0xff9d,
- XK_KP_Insert = 0xff9e,
- XK_KP_Delete = 0xff9f,
- XK_KP_Equal = 0xffbd,
- XK_KP_Multiply = 0xffaa,
- XK_KP_Add = 0xffab,
- XK_KP_Separator = 0xffac,
- XK_KP_Subtract = 0xffad,
- XK_KP_Decimal = 0xffae,
- XK_KP_Divide = 0xffaf,
- XK_KP_0 = 0xffb0,
- XK_KP_1 = 0xffb1,
- XK_KP_2 = 0xffb2,
- XK_KP_3 = 0xffb3,
- XK_KP_4 = 0xffb4,
- XK_KP_5 = 0xffb5,
- XK_KP_6 = 0xffb6,
- XK_KP_7 = 0xffb7,
- XK_KP_8 = 0xffb8,
- XK_KP_9 = 0xffb9,
- XK_F1 = 0xffbe,
- XK_F2 = 0xffbf,
- XK_F3 = 0xffc0,
- XK_F4 = 0xffc1,
- XK_F5 = 0xffc2,
- XK_F6 = 0xffc3,
- XK_F7 = 0xffc4,
- XK_F8 = 0xffc5,
- XK_F9 = 0xffc6,
- XK_F10 = 0xffc7,
- XK_F11 = 0xffc8,
- XK_L1 = 0xffc8,
- XK_F12 = 0xffc9,
- XK_L2 = 0xffc9,
- XK_F13 = 0xffca,
- XK_L3 = 0xffca,
- XK_F14 = 0xffcb,
- XK_L4 = 0xffcb,
- XK_F15 = 0xffcc,
- XK_L5 = 0xffcc,
- XK_F16 = 0xffcd,
- XK_L6 = 0xffcd,
- XK_F17 = 0xffce,
- XK_L7 = 0xffce,
- XK_F18 = 0xffcf,
- XK_L8 = 0xffcf,
- XK_F19 = 0xffd0,
- XK_L9 = 0xffd0,
- XK_F20 = 0xffd1,
- XK_L10 = 0xffd1,
- XK_F21 = 0xffd2,
- XK_R1 = 0xffd2,
- XK_F22 = 0xffd3,
- XK_R2 = 0xffd3,
- XK_F23 = 0xffd4,
- XK_R3 = 0xffd4,
- XK_F24 = 0xffd5,
- XK_R4 = 0xffd5,
- XK_F25 = 0xffd6,
- XK_R5 = 0xffd6,
- XK_F26 = 0xffd7,
- XK_R6 = 0xffd7,
- XK_F27 = 0xffd8,
- XK_R7 = 0xffd8,
- XK_F28 = 0xffd9,
- XK_R8 = 0xffd9,
- XK_F29 = 0xffda,
- XK_R9 = 0xffda,
- XK_F30 = 0xffdb,
- XK_R10 = 0xffdb,
- XK_F31 = 0xffdc,
- XK_R11 = 0xffdc,
- XK_F32 = 0xffdd,
- XK_R12 = 0xffdd,
- XK_F33 = 0xffde,
- XK_R13 = 0xffde,
- XK_F34 = 0xffdf,
- XK_R14 = 0xffdf,
- XK_F35 = 0xffe0,
- XK_R15 = 0xffe0,
- 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,
- XK_ISO_Lock = 0xfe01,
- XK_ISO_Level2_Latch = 0xfe02,
- XK_ISO_Level3_Shift = 0xfe03,
- XK_ISO_Level3_Latch = 0xfe04,
- XK_ISO_Level3_Lock = 0xfe05,
- XK_ISO_Level5_Shift = 0xfe11,
- XK_ISO_Level5_Latch = 0xfe12,
- XK_ISO_Level5_Lock = 0xfe13,
- XK_ISO_Group_Shift = 0xff7e,
- XK_ISO_Group_Latch = 0xfe06,
- XK_ISO_Group_Lock = 0xfe07,
- XK_ISO_Next_Group = 0xfe08,
- XK_ISO_Next_Group_Lock = 0xfe09,
- XK_ISO_Prev_Group = 0xfe0a,
- XK_ISO_Prev_Group_Lock = 0xfe0b,
- XK_ISO_First_Group = 0xfe0c,
- XK_ISO_First_Group_Lock = 0xfe0d,
- XK_ISO_Last_Group = 0xfe0e,
- XK_ISO_Last_Group_Lock = 0xfe0f,
- XK_ISO_Left_Tab = 0xfe20,
- XK_ISO_Move_Line_Up = 0xfe21,
- XK_ISO_Move_Line_Down = 0xfe22,
- XK_ISO_Partial_Line_Up = 0xfe23,
- XK_ISO_Partial_Line_Down = 0xfe24,
- XK_ISO_Partial_Space_Left = 0xfe25,
- XK_ISO_Partial_Space_Right = 0xfe26,
- XK_ISO_Set_Margin_Left = 0xfe27,
- XK_ISO_Set_Margin_Right = 0xfe28,
- XK_ISO_Release_Margin_Left = 0xfe29,
- XK_ISO_Release_Margin_Right = 0xfe2a,
- XK_ISO_Release_Both_Margins = 0xfe2b,
- XK_ISO_Fast_Cursor_Left = 0xfe2c,
- XK_ISO_Fast_Cursor_Right = 0xfe2d,
- XK_ISO_Fast_Cursor_Up = 0xfe2e,
- XK_ISO_Fast_Cursor_Down = 0xfe2f,
- XK_ISO_Continuous_Underline = 0xfe30,
- XK_ISO_Discontinuous_Underline = 0xfe31,
- XK_ISO_Emphasize = 0xfe32,
- XK_ISO_Center_Object = 0xfe33,
- XK_ISO_Enter = 0xfe34,
- XK_dead_grave = 0xfe50,
- XK_dead_acute = 0xfe51,
- XK_dead_circumflex = 0xfe52,
- XK_dead_tilde = 0xfe53,
- XK_dead_perispomeni = 0xfe53,
- XK_dead_macron = 0xfe54,
- XK_dead_breve = 0xfe55,
- XK_dead_abovedot = 0xfe56,
- XK_dead_diaeresis = 0xfe57,
- XK_dead_abovering = 0xfe58,
- XK_dead_doubleacute = 0xfe59,
- XK_dead_caron = 0xfe5a,
- XK_dead_cedilla = 0xfe5b,
- XK_dead_ogonek = 0xfe5c,
- XK_dead_iota = 0xfe5d,
- XK_dead_voiced_sound = 0xfe5e,
- XK_dead_semivoiced_sound = 0xfe5f,
- XK_dead_belowdot = 0xfe60,
- XK_dead_hook = 0xfe61,
- XK_dead_horn = 0xfe62,
- XK_dead_stroke = 0xfe63,
- XK_dead_abovecomma = 0xfe64,
- XK_dead_psili = 0xfe64,
- XK_dead_abovereversedcomma = 0xfe65,
- XK_dead_dasia = 0xfe65,
- XK_dead_doublegrave = 0xfe66,
- XK_dead_belowring = 0xfe67,
- XK_dead_belowmacron = 0xfe68,
- XK_dead_belowcircumflex = 0xfe69,
- XK_dead_belowtilde = 0xfe6a,
- XK_dead_belowbreve = 0xfe6b,
- XK_dead_belowdiaeresis = 0xfe6c,
- XK_dead_invertedbreve = 0xfe6d,
- XK_dead_belowcomma = 0xfe6e,
- XK_dead_currency = 0xfe6f,
- XK_dead_lowline = 0xfe90,
- XK_dead_aboveverticalline = 0xfe91,
- XK_dead_belowverticalline = 0xfe92,
- XK_dead_longsolidusoverlay = 0xfe93,
- XK_dead_a = 0xfe80,
- XK_dead_A = 0xfe81,
- XK_dead_e = 0xfe82,
- XK_dead_E = 0xfe83,
- XK_dead_i = 0xfe84,
- XK_dead_I = 0xfe85,
- XK_dead_o = 0xfe86,
- XK_dead_O = 0xfe87,
- XK_dead_u = 0xfe88,
- XK_dead_U = 0xfe89,
- XK_dead_small_schwa = 0xfe8a,
- XK_dead_capital_schwa = 0xfe8b,
- XK_dead_greek = 0xfe8c,
- XK_First_Virtual_Screen = 0xfed0,
- XK_Prev_Virtual_Screen = 0xfed1,
- XK_Next_Virtual_Screen = 0xfed2,
- XK_Last_Virtual_Screen = 0xfed4,
- XK_Terminate_Server = 0xfed5,
- XK_AccessX_Enable = 0xfe70,
- XK_AccessX_Feedback_Enable = 0xfe71,
- XK_RepeatKeys_Enable = 0xfe72,
- XK_SlowKeys_Enable = 0xfe73,
- XK_BounceKeys_Enable = 0xfe74,
- XK_StickyKeys_Enable = 0xfe75,
- XK_MouseKeys_Enable = 0xfe76,
- XK_MouseKeys_Accel_Enable = 0xfe77,
- XK_Overlay1_Enable = 0xfe78,
- XK_Overlay2_Enable = 0xfe79,
- XK_AudibleBell_Enable = 0xfe7a,
- XK_Pointer_Left = 0xfee0,
- XK_Pointer_Right = 0xfee1,
- XK_Pointer_Up = 0xfee2,
- XK_Pointer_Down = 0xfee3,
- XK_Pointer_UpLeft = 0xfee4,
- XK_Pointer_UpRight = 0xfee5,
- XK_Pointer_DownLeft = 0xfee6,
- XK_Pointer_DownRight = 0xfee7,
- XK_Pointer_Button_Dflt = 0xfee8,
- XK_Pointer_Button1 = 0xfee9,
- XK_Pointer_Button2 = 0xfeea,
- XK_Pointer_Button3 = 0xfeeb,
- XK_Pointer_Button4 = 0xfeec,
- XK_Pointer_Button5 = 0xfeed,
- XK_Pointer_DblClick_Dflt = 0xfeee,
- XK_Pointer_DblClick1 = 0xfeef,
- XK_Pointer_DblClick2 = 0xfef0,
- XK_Pointer_DblClick3 = 0xfef1,
- XK_Pointer_DblClick4 = 0xfef2,
- XK_Pointer_DblClick5 = 0xfef3,
- XK_Pointer_Drag_Dflt = 0xfef4,
- XK_Pointer_Drag1 = 0xfef5,
- XK_Pointer_Drag2 = 0xfef6,
- XK_Pointer_Drag3 = 0xfef7,
- XK_Pointer_Drag4 = 0xfef8,
- XK_Pointer_Drag5 = 0xfefd,
- XK_Pointer_EnableKeys = 0xfef9,
- XK_Pointer_Accelerate = 0xfefa,
- XK_Pointer_DfltBtnNext = 0xfefb,
- XK_Pointer_DfltBtnPrev = 0xfefc,
- XK_ch = 0xfea0,
- XK_Ch = 0xfea1,
- XK_CH = 0xfea2,
- XK_c_h = 0xfea3,
- XK_C_h = 0xfea4,
- XK_C_H = 0xfea5,
- XK_3270_Duplicate = 0xfd01,
- XK_3270_FieldMark = 0xfd02,
- XK_3270_Right2 = 0xfd03,
- XK_3270_Left2 = 0xfd04,
- XK_3270_BackTab = 0xfd05,
- XK_3270_EraseEOF = 0xfd06,
- XK_3270_EraseInput = 0xfd07,
- XK_3270_Reset = 0xfd08,
- XK_3270_Quit = 0xfd09,
- XK_3270_PA1 = 0xfd0a,
- XK_3270_PA2 = 0xfd0b,
- XK_3270_PA3 = 0xfd0c,
- XK_3270_Test = 0xfd0d,
- XK_3270_Attn = 0xfd0e,
- XK_3270_CursorBlink = 0xfd0f,
- XK_3270_AltCursor = 0xfd10,
- XK_3270_KeyClick = 0xfd11,
- XK_3270_Jump = 0xfd12,
- XK_3270_Ident = 0xfd13,
- XK_3270_Rule = 0xfd14,
- XK_3270_Copy = 0xfd15,
- XK_3270_Play = 0xfd16,
- XK_3270_Setup = 0xfd17,
- XK_3270_Record = 0xfd18,
- XK_3270_ChangeScreen = 0xfd19,
- XK_3270_DeleteWord = 0xfd1a,
- XK_3270_ExSelect = 0xfd1b,
- XK_3270_CursorSelect = 0xfd1c,
- XK_3270_PrintScreen = 0xfd1d,
- XK_3270_Enter = 0xfd1e,
- XK_space = 0x0020,
- XK_exclam = 0x0021,
- XK_quotedbl = 0x0022,
- XK_numbersign = 0x0023,
- XK_dollar = 0x0024,
- XK_percent = 0x0025,
- XK_ampersand = 0x0026,
- XK_apostrophe = 0x0027,
- XK_quoteright = 0x0027,
- XK_parenleft = 0x0028,
- XK_parenright = 0x0029,
- XK_asterisk = 0x002a,
- XK_plus = 0x002b,
- XK_comma = 0x002c,
- XK_minus = 0x002d,
- XK_period = 0x002e,
- XK_slash = 0x002f,
- XK_0 = 0x0030,
- XK_1 = 0x0031,
- XK_2 = 0x0032,
- XK_3 = 0x0033,
- XK_4 = 0x0034,
- XK_5 = 0x0035,
- XK_6 = 0x0036,
- XK_7 = 0x0037,
- XK_8 = 0x0038,
- XK_9 = 0x0039,
- XK_colon = 0x003a,
- XK_semicolon = 0x003b,
- XK_less = 0x003c,
- XK_equal = 0x003d,
- XK_greater = 0x003e,
- XK_question = 0x003f,
- XK_at = 0x0040,
- XK_A = 0x0041,
- XK_B = 0x0042,
- XK_C = 0x0043,
- XK_D = 0x0044,
- XK_E = 0x0045,
- XK_F = 0x0046,
- XK_G = 0x0047,
- XK_H = 0x0048,
- XK_I = 0x0049,
- XK_J = 0x004a,
- XK_K = 0x004b,
- XK_L = 0x004c,
- XK_M = 0x004d,
- XK_N = 0x004e,
- XK_O = 0x004f,
- XK_P = 0x0050,
- XK_Q = 0x0051,
- XK_R = 0x0052,
- XK_S = 0x0053,
- XK_T = 0x0054,
- XK_U = 0x0055,
- XK_V = 0x0056,
- XK_W = 0x0057,
- XK_X = 0x0058,
- XK_Y = 0x0059,
- XK_Z = 0x005a,
- XK_bracketleft = 0x005b,
- XK_backslash = 0x005c,
- XK_bracketright = 0x005d,
- XK_asciicircum = 0x005e,
- XK_underscore = 0x005f,
- XK_grave = 0x0060,
- XK_quoteleft = 0x0060,
- XK_a = 0x0061,
- XK_b = 0x0062,
- XK_c = 0x0063,
- XK_d = 0x0064,
- XK_e = 0x0065,
- XK_f = 0x0066,
- XK_g = 0x0067,
- XK_h = 0x0068,
- XK_i = 0x0069,
- XK_j = 0x006a,
- XK_k = 0x006b,
- XK_l = 0x006c,
- XK_m = 0x006d,
- XK_n = 0x006e,
- XK_o = 0x006f,
- XK_p = 0x0070,
- XK_q = 0x0071,
- XK_r = 0x0072,
- XK_s = 0x0073,
- XK_t = 0x0074,
- XK_u = 0x0075,
- XK_v = 0x0076,
- XK_w = 0x0077,
- XK_x = 0x0078,
- XK_y = 0x0079,
- XK_z = 0x007a,
- XK_braceleft = 0x007b,
- XK_bar = 0x007c,
- XK_braceright = 0x007d,
- XK_asciitilde = 0x007e,
- XK_nobreakspace = 0x00a0,
- XK_exclamdown = 0x00a1,
- XK_cent = 0x00a2,
- XK_sterling = 0x00a3,
- XK_currency = 0x00a4,
- XK_yen = 0x00a5,
- XK_brokenbar = 0x00a6,
- XK_section = 0x00a7,
- XK_diaeresis = 0x00a8,
- XK_copyright = 0x00a9,
- XK_ordfeminine = 0x00aa,
- XK_guillemotleft = 0x00ab,
- XK_notsign = 0x00ac,
- XK_hyphen = 0x00ad,
- XK_registered = 0x00ae,
- XK_macron = 0x00af,
- XK_degree = 0x00b0,
- XK_plusminus = 0x00b1,
- XK_twosuperior = 0x00b2,
- XK_threesuperior = 0x00b3,
- XK_acute = 0x00b4,
- XK_mu = 0x00b5,
- XK_paragraph = 0x00b6,
- XK_periodcentered = 0x00b7,
- XK_cedilla = 0x00b8,
- XK_onesuperior = 0x00b9,
- XK_masculine = 0x00ba,
- XK_guillemotright = 0x00bb,
- XK_onequarter = 0x00bc,
- XK_onehalf = 0x00bd,
- XK_threequarters = 0x00be,
- XK_questiondown = 0x00bf,
- XK_Agrave = 0x00c0,
- XK_Aacute = 0x00c1,
- XK_Acircumflex = 0x00c2,
- XK_Atilde = 0x00c3,
- XK_Adiaeresis = 0x00c4,
- XK_Aring = 0x00c5,
- XK_AE = 0x00c6,
- XK_Ccedilla = 0x00c7,
- XK_Egrave = 0x00c8,
- XK_Eacute = 0x00c9,
- XK_Ecircumflex = 0x00ca,
- XK_Ediaeresis = 0x00cb,
- XK_Igrave = 0x00cc,
- XK_Iacute = 0x00cd,
- XK_Icircumflex = 0x00ce,
- XK_Idiaeresis = 0x00cf,
- XK_ETH = 0x00d0,
- XK_Eth = 0x00d0,
- XK_Ntilde = 0x00d1,
- XK_Ograve = 0x00d2,
- XK_Oacute = 0x00d3,
- XK_Ocircumflex = 0x00d4,
- XK_Otilde = 0x00d5,
- XK_Odiaeresis = 0x00d6,
- XK_multiply = 0x00d7,
- XK_Oslash = 0x00d8,
- XK_Ooblique = 0x00d8,
- XK_Ugrave = 0x00d9,
- XK_Uacute = 0x00da,
- XK_Ucircumflex = 0x00db,
- XK_Udiaeresis = 0x00dc,
- XK_Yacute = 0x00dd,
- XK_THORN = 0x00de,
- XK_Thorn = 0x00de,
- XK_ssharp = 0x00df,
- XK_agrave = 0x00e0,
- XK_aacute = 0x00e1,
- XK_acircumflex = 0x00e2,
- XK_atilde = 0x00e3,
- XK_adiaeresis = 0x00e4,
- XK_aring = 0x00e5,
- XK_ae = 0x00e6,
- XK_ccedilla = 0x00e7,
- XK_egrave = 0x00e8,
- XK_eacute = 0x00e9,
- XK_ecircumflex = 0x00ea,
- XK_ediaeresis = 0x00eb,
- XK_igrave = 0x00ec,
- XK_iacute = 0x00ed,
- XK_icircumflex = 0x00ee,
- XK_idiaeresis = 0x00ef,
- XK_eth = 0x00f0,
- XK_ntilde = 0x00f1,
- XK_ograve = 0x00f2,
- XK_oacute = 0x00f3,
- XK_ocircumflex = 0x00f4,
- XK_otilde = 0x00f5,
- XK_odiaeresis = 0x00f6,
- XK_division = 0x00f7,
- XK_oslash = 0x00f8,
- XK_ooblique = 0x00f8,
- XK_ugrave = 0x00f9,
- XK_uacute = 0x00fa,
- XK_ucircumflex = 0x00fb,
- XK_udiaeresis = 0x00fc,
- XK_yacute = 0x00fd,
- XK_thorn = 0x00fe,
- XK_ydiaeresis = 0x00ff,
- XK_Aogonek = 0x01a1,
- XK_breve = 0x01a2,
- XK_Lstroke = 0x01a3,
- XK_Lcaron = 0x01a5,
- XK_Sacute = 0x01a6,
- XK_Scaron = 0x01a9,
- XK_Scedilla = 0x01aa,
- XK_Tcaron = 0x01ab,
- XK_Zacute = 0x01ac,
- XK_Zcaron = 0x01ae,
- XK_Zabovedot = 0x01af,
- XK_aogonek = 0x01b1,
- XK_ogonek = 0x01b2,
- XK_lstroke = 0x01b3,
- XK_lcaron = 0x01b5,
- XK_sacute = 0x01b6,
- XK_caron = 0x01b7,
- XK_scaron = 0x01b9,
- XK_scedilla = 0x01ba,
- XK_tcaron = 0x01bb,
- XK_zacute = 0x01bc,
- XK_doubleacute = 0x01bd,
- XK_zcaron = 0x01be,
- XK_zabovedot = 0x01bf,
- XK_Racute = 0x01c0,
- XK_Abreve = 0x01c3,
- XK_Lacute = 0x01c5,
- XK_Cacute = 0x01c6,
- XK_Ccaron = 0x01c8,
- XK_Eogonek = 0x01ca,
- XK_Ecaron = 0x01cc,
- XK_Dcaron = 0x01cf,
- XK_Dstroke = 0x01d0,
- XK_Nacute = 0x01d1,
- XK_Ncaron = 0x01d2,
- XK_Odoubleacute = 0x01d5,
- XK_Rcaron = 0x01d8,
- XK_Uring = 0x01d9,
- XK_Udoubleacute = 0x01db,
- XK_Tcedilla = 0x01de,
- XK_racute = 0x01e0,
- XK_abreve = 0x01e3,
- XK_lacute = 0x01e5,
- XK_cacute = 0x01e6,
- XK_ccaron = 0x01e8,
- XK_eogonek = 0x01ea,
- XK_ecaron = 0x01ec,
- XK_dcaron = 0x01ef,
- XK_dstroke = 0x01f0,
- XK_nacute = 0x01f1,
- XK_ncaron = 0x01f2,
- XK_odoubleacute = 0x01f5,
- XK_rcaron = 0x01f8,
- XK_uring = 0x01f9,
- XK_udoubleacute = 0x01fb,
- XK_tcedilla = 0x01fe,
- XK_abovedot = 0x01ff,
- XK_Hstroke = 0x02a1,
- XK_Hcircumflex = 0x02a6,
- XK_Iabovedot = 0x02a9,
- XK_Gbreve = 0x02ab,
- XK_Jcircumflex = 0x02ac,
- XK_hstroke = 0x02b1,
- XK_hcircumflex = 0x02b6,
- XK_idotless = 0x02b9,
- XK_gbreve = 0x02bb,
- XK_jcircumflex = 0x02bc,
- XK_Cabovedot = 0x02c5,
- XK_Ccircumflex = 0x02c6,
- XK_Gabovedot = 0x02d5,
- XK_Gcircumflex = 0x02d8,
- XK_Ubreve = 0x02dd,
- XK_Scircumflex = 0x02de,
- XK_cabovedot = 0x02e5,
- XK_ccircumflex = 0x02e6,
- XK_gabovedot = 0x02f5,
- XK_gcircumflex = 0x02f8,
- XK_ubreve = 0x02fd,
- XK_scircumflex = 0x02fe,
- XK_kra = 0x03a2,
- XK_kappa = 0x03a2,
- XK_Rcedilla = 0x03a3,
- XK_Itilde = 0x03a5,
- XK_Lcedilla = 0x03a6,
- XK_Emacron = 0x03aa,
- XK_Gcedilla = 0x03ab,
- XK_Tslash = 0x03ac,
- XK_rcedilla = 0x03b3,
- XK_itilde = 0x03b5,
- XK_lcedilla = 0x03b6,
- XK_emacron = 0x03ba,
- XK_gcedilla = 0x03bb,
- XK_tslash = 0x03bc,
- XK_ENG = 0x03bd,
- XK_eng = 0x03bf,
- XK_Amacron = 0x03c0,
- XK_Iogonek = 0x03c7,
- XK_Eabovedot = 0x03cc,
- XK_Imacron = 0x03cf,
- XK_Ncedilla = 0x03d1,
- XK_Omacron = 0x03d2,
- XK_Kcedilla = 0x03d3,
- XK_Uogonek = 0x03d9,
- XK_Utilde = 0x03dd,
- XK_Umacron = 0x03de,
- XK_amacron = 0x03e0,
- XK_iogonek = 0x03e7,
- XK_eabovedot = 0x03ec,
- XK_imacron = 0x03ef,
- XK_ncedilla = 0x03f1,
- XK_omacron = 0x03f2,
- XK_kcedilla = 0x03f3,
- XK_uogonek = 0x03f9,
- XK_utilde = 0x03fd,
- XK_umacron = 0x03fe,
- XK_Wcircumflex = 0x1000174,
- XK_wcircumflex = 0x1000175,
- XK_Ycircumflex = 0x1000176,
- XK_ycircumflex = 0x1000177,
- XK_Babovedot = 0x1001e02,
- XK_babovedot = 0x1001e03,
- XK_Dabovedot = 0x1001e0a,
- XK_dabovedot = 0x1001e0b,
- XK_Fabovedot = 0x1001e1e,
- XK_fabovedot = 0x1001e1f,
- XK_Mabovedot = 0x1001e40,
- XK_mabovedot = 0x1001e41,
- XK_Pabovedot = 0x1001e56,
- XK_pabovedot = 0x1001e57,
- XK_Sabovedot = 0x1001e60,
- XK_sabovedot = 0x1001e61,
- XK_Tabovedot = 0x1001e6a,
- XK_tabovedot = 0x1001e6b,
- XK_Wgrave = 0x1001e80,
- XK_wgrave = 0x1001e81,
- XK_Wacute = 0x1001e82,
- XK_wacute = 0x1001e83,
- XK_Wdiaeresis = 0x1001e84,
- XK_wdiaeresis = 0x1001e85,
- XK_Ygrave = 0x1001ef2,
- XK_ygrave = 0x1001ef3,
- XK_OE = 0x13bc,
- XK_oe = 0x13bd,
- XK_Ydiaeresis = 0x13be,
- XK_overline = 0x047e,
- XK_kana_fullstop = 0x04a1,
- XK_kana_openingbracket = 0x04a2,
- XK_kana_closingbracket = 0x04a3,
- XK_kana_comma = 0x04a4,
- XK_kana_conjunctive = 0x04a5,
- XK_kana_middledot = 0x04a5,
- XK_kana_WO = 0x04a6,
- XK_kana_a = 0x04a7,
- XK_kana_i = 0x04a8,
- XK_kana_u = 0x04a9,
- XK_kana_e = 0x04aa,
- XK_kana_o = 0x04ab,
- XK_kana_ya = 0x04ac,
- XK_kana_yu = 0x04ad,
- XK_kana_yo = 0x04ae,
- XK_kana_tsu = 0x04af,
- XK_kana_tu = 0x04af,
- XK_prolongedsound = 0x04b0,
- XK_kana_A = 0x04b1,
- XK_kana_I = 0x04b2,
- XK_kana_U = 0x04b3,
- XK_kana_E = 0x04b4,
- XK_kana_O = 0x04b5,
- XK_kana_KA = 0x04b6,
- XK_kana_KI = 0x04b7,
- XK_kana_KU = 0x04b8,
- XK_kana_KE = 0x04b9,
- XK_kana_KO = 0x04ba,
- XK_kana_SA = 0x04bb,
- XK_kana_SHI = 0x04bc,
- XK_kana_SU = 0x04bd,
- XK_kana_SE = 0x04be,
- XK_kana_SO = 0x04bf,
- XK_kana_TA = 0x04c0,
- XK_kana_CHI = 0x04c1,
- XK_kana_TI = 0x04c1,
- XK_kana_TSU = 0x04c2,
- XK_kana_TU = 0x04c2,
- XK_kana_TE = 0x04c3,
- XK_kana_TO = 0x04c4,
- XK_kana_NA = 0x04c5,
- XK_kana_NI = 0x04c6,
- XK_kana_NU = 0x04c7,
- XK_kana_NE = 0x04c8,
- XK_kana_NO = 0x04c9,
- XK_kana_HA = 0x04ca,
- XK_kana_HI = 0x04cb,
- XK_kana_FU = 0x04cc,
- XK_kana_HU = 0x04cc,
- XK_kana_HE = 0x04cd,
- XK_kana_HO = 0x04ce,
- XK_kana_MA = 0x04cf,
- XK_kana_MI = 0x04d0,
- XK_kana_MU = 0x04d1,
- XK_kana_ME = 0x04d2,
- XK_kana_MO = 0x04d3,
- XK_kana_YA = 0x04d4,
- XK_kana_YU = 0x04d5,
- XK_kana_YO = 0x04d6,
- XK_kana_RA = 0x04d7,
- XK_kana_RI = 0x04d8,
- XK_kana_RU = 0x04d9,
- XK_kana_RE = 0x04da,
- XK_kana_RO = 0x04db,
- XK_kana_WA = 0x04dc,
- XK_kana_N = 0x04dd,
- XK_voicedsound = 0x04de,
- XK_semivoicedsound = 0x04df,
- XK_kana_switch = 0xff7e,
- XK_Farsi_0 = 0x10006f0,
- XK_Farsi_1 = 0x10006f1,
- XK_Farsi_2 = 0x10006f2,
- XK_Farsi_3 = 0x10006f3,
- XK_Farsi_4 = 0x10006f4,
- XK_Farsi_5 = 0x10006f5,
- XK_Farsi_6 = 0x10006f6,
- XK_Farsi_7 = 0x10006f7,
- XK_Farsi_8 = 0x10006f8,
- XK_Farsi_9 = 0x10006f9,
- XK_Arabic_percent = 0x100066a,
- XK_Arabic_superscript_alef = 0x1000670,
- XK_Arabic_tteh = 0x1000679,
- XK_Arabic_peh = 0x100067e,
- XK_Arabic_tcheh = 0x1000686,
- XK_Arabic_ddal = 0x1000688,
- XK_Arabic_rreh = 0x1000691,
- XK_Arabic_comma = 0x05ac,
- XK_Arabic_fullstop = 0x10006d4,
- XK_Arabic_0 = 0x1000660,
- XK_Arabic_1 = 0x1000661,
- XK_Arabic_2 = 0x1000662,
- XK_Arabic_3 = 0x1000663,
- XK_Arabic_4 = 0x1000664,
- XK_Arabic_5 = 0x1000665,
- XK_Arabic_6 = 0x1000666,
- XK_Arabic_7 = 0x1000667,
- XK_Arabic_8 = 0x1000668,
- XK_Arabic_9 = 0x1000669,
- XK_Arabic_semicolon = 0x05bb,
- XK_Arabic_question_mark = 0x05bf,
- XK_Arabic_hamza = 0x05c1,
- XK_Arabic_maddaonalef = 0x05c2,
- XK_Arabic_hamzaonalef = 0x05c3,
- XK_Arabic_hamzaonwaw = 0x05c4,
- XK_Arabic_hamzaunderalef = 0x05c5,
- XK_Arabic_hamzaonyeh = 0x05c6,
- XK_Arabic_alef = 0x05c7,
- XK_Arabic_beh = 0x05c8,
- XK_Arabic_tehmarbuta = 0x05c9,
- XK_Arabic_teh = 0x05ca,
- XK_Arabic_theh = 0x05cb,
- XK_Arabic_jeem = 0x05cc,
- XK_Arabic_hah = 0x05cd,
- XK_Arabic_khah = 0x05ce,
- XK_Arabic_dal = 0x05cf,
- XK_Arabic_thal = 0x05d0,
- XK_Arabic_ra = 0x05d1,
- XK_Arabic_zain = 0x05d2,
- XK_Arabic_seen = 0x05d3,
- XK_Arabic_sheen = 0x05d4,
- XK_Arabic_sad = 0x05d5,
- XK_Arabic_dad = 0x05d6,
- XK_Arabic_tah = 0x05d7,
- XK_Arabic_zah = 0x05d8,
- XK_Arabic_ain = 0x05d9,
- XK_Arabic_ghain = 0x05da,
- XK_Arabic_tatweel = 0x05e0,
- XK_Arabic_feh = 0x05e1,
- XK_Arabic_qaf = 0x05e2,
- XK_Arabic_kaf = 0x05e3,
- XK_Arabic_lam = 0x05e4,
- XK_Arabic_meem = 0x05e5,
- XK_Arabic_noon = 0x05e6,
- XK_Arabic_ha = 0x05e7,
- XK_Arabic_heh = 0x05e7,
- XK_Arabic_waw = 0x05e8,
- XK_Arabic_alefmaksura = 0x05e9,
- XK_Arabic_yeh = 0x05ea,
- XK_Arabic_fathatan = 0x05eb,
- XK_Arabic_dammatan = 0x05ec,
- XK_Arabic_kasratan = 0x05ed,
- XK_Arabic_fatha = 0x05ee,
- XK_Arabic_damma = 0x05ef,
- XK_Arabic_kasra = 0x05f0,
- XK_Arabic_shadda = 0x05f1,
- XK_Arabic_sukun = 0x05f2,
- XK_Arabic_madda_above = 0x1000653,
- XK_Arabic_hamza_above = 0x1000654,
- XK_Arabic_hamza_below = 0x1000655,
- XK_Arabic_jeh = 0x1000698,
- XK_Arabic_veh = 0x10006a4,
- XK_Arabic_keheh = 0x10006a9,
- XK_Arabic_gaf = 0x10006af,
- XK_Arabic_noon_ghunna = 0x10006ba,
- XK_Arabic_heh_doachashmee = 0x10006be,
- XK_Farsi_yeh = 0x10006cc,
- XK_Arabic_farsi_yeh = 0x10006cc,
- XK_Arabic_yeh_baree = 0x10006d2,
- XK_Arabic_heh_goal = 0x10006c1,
- XK_Arabic_switch = 0xff7e,
- XK_Cyrillic_GHE_bar = 0x1000492,
- XK_Cyrillic_ghe_bar = 0x1000493,
- XK_Cyrillic_ZHE_descender = 0x1000496,
- XK_Cyrillic_zhe_descender = 0x1000497,
- XK_Cyrillic_KA_descender = 0x100049a,
- XK_Cyrillic_ka_descender = 0x100049b,
- XK_Cyrillic_KA_vertstroke = 0x100049c,
- XK_Cyrillic_ka_vertstroke = 0x100049d,
- XK_Cyrillic_EN_descender = 0x10004a2,
- XK_Cyrillic_en_descender = 0x10004a3,
- XK_Cyrillic_U_straight = 0x10004ae,
- XK_Cyrillic_u_straight = 0x10004af,
- XK_Cyrillic_U_straight_bar = 0x10004b0,
- XK_Cyrillic_u_straight_bar = 0x10004b1,
- XK_Cyrillic_HA_descender = 0x10004b2,
- XK_Cyrillic_ha_descender = 0x10004b3,
- XK_Cyrillic_CHE_descender = 0x10004b6,
- XK_Cyrillic_che_descender = 0x10004b7,
- XK_Cyrillic_CHE_vertstroke = 0x10004b8,
- XK_Cyrillic_che_vertstroke = 0x10004b9,
- XK_Cyrillic_SHHA = 0x10004ba,
- XK_Cyrillic_shha = 0x10004bb,
- XK_Cyrillic_SCHWA = 0x10004d8,
- XK_Cyrillic_schwa = 0x10004d9,
- XK_Cyrillic_I_macron = 0x10004e2,
- XK_Cyrillic_i_macron = 0x10004e3,
- XK_Cyrillic_O_bar = 0x10004e8,
- XK_Cyrillic_o_bar = 0x10004e9,
- XK_Cyrillic_U_macron = 0x10004ee,
- XK_Cyrillic_u_macron = 0x10004ef,
- XK_Serbian_dje = 0x06a1,
- XK_Macedonia_gje = 0x06a2,
- XK_Cyrillic_io = 0x06a3,
- XK_Ukrainian_ie = 0x06a4,
- XK_Ukranian_je = 0x06a4,
- XK_Macedonia_dse = 0x06a5,
- XK_Ukrainian_i = 0x06a6,
- XK_Ukranian_i = 0x06a6,
- XK_Ukrainian_yi = 0x06a7,
- XK_Ukranian_yi = 0x06a7,
- XK_Cyrillic_je = 0x06a8,
- XK_Serbian_je = 0x06a8,
- XK_Cyrillic_lje = 0x06a9,
- XK_Serbian_lje = 0x06a9,
- XK_Cyrillic_nje = 0x06aa,
- XK_Serbian_nje = 0x06aa,
- XK_Serbian_tshe = 0x06ab,
- XK_Macedonia_kje = 0x06ac,
- XK_Ukrainian_ghe_with_upturn = 0x06ad,
- XK_Byelorussian_shortu = 0x06ae,
- XK_Cyrillic_dzhe = 0x06af,
- XK_Serbian_dze = 0x06af,
- XK_numerosign = 0x06b0,
- XK_Serbian_DJE = 0x06b1,
- XK_Macedonia_GJE = 0x06b2,
- XK_Cyrillic_IO = 0x06b3,
- XK_Ukrainian_IE = 0x06b4,
- XK_Ukranian_JE = 0x06b4,
- XK_Macedonia_DSE = 0x06b5,
- XK_Ukrainian_I = 0x06b6,
- XK_Ukranian_I = 0x06b6,
- XK_Ukrainian_YI = 0x06b7,
- XK_Ukranian_YI = 0x06b7,
- XK_Cyrillic_JE = 0x06b8,
- XK_Serbian_JE = 0x06b8,
- XK_Cyrillic_LJE = 0x06b9,
- XK_Serbian_LJE = 0x06b9,
- XK_Cyrillic_NJE = 0x06ba,
- XK_Serbian_NJE = 0x06ba,
- XK_Serbian_TSHE = 0x06bb,
- XK_Macedonia_KJE = 0x06bc,
- XK_Ukrainian_GHE_WITH_UPTURN = 0x06bd,
- XK_Byelorussian_SHORTU = 0x06be,
- XK_Cyrillic_DZHE = 0x06bf,
- XK_Serbian_DZE = 0x06bf,
- XK_Cyrillic_yu = 0x06c0,
- XK_Cyrillic_a = 0x06c1,
- XK_Cyrillic_be = 0x06c2,
- XK_Cyrillic_tse = 0x06c3,
- XK_Cyrillic_de = 0x06c4,
- XK_Cyrillic_ie = 0x06c5,
- XK_Cyrillic_ef = 0x06c6,
- XK_Cyrillic_ghe = 0x06c7,
- XK_Cyrillic_ha = 0x06c8,
- XK_Cyrillic_i = 0x06c9,
- XK_Cyrillic_shorti = 0x06ca,
- XK_Cyrillic_ka = 0x06cb,
- XK_Cyrillic_el = 0x06cc,
- XK_Cyrillic_em = 0x06cd,
- XK_Cyrillic_en = 0x06ce,
- XK_Cyrillic_o = 0x06cf,
- XK_Cyrillic_pe = 0x06d0,
- XK_Cyrillic_ya = 0x06d1,
- XK_Cyrillic_er = 0x06d2,
- XK_Cyrillic_es = 0x06d3,
- XK_Cyrillic_te = 0x06d4,
- XK_Cyrillic_u = 0x06d5,
- XK_Cyrillic_zhe = 0x06d6,
- XK_Cyrillic_ve = 0x06d7,
- XK_Cyrillic_softsign = 0x06d8,
- XK_Cyrillic_yeru = 0x06d9,
- XK_Cyrillic_ze = 0x06da,
- XK_Cyrillic_sha = 0x06db,
- XK_Cyrillic_e = 0x06dc,
- XK_Cyrillic_shcha = 0x06dd,
- XK_Cyrillic_che = 0x06de,
- XK_Cyrillic_hardsign = 0x06df,
- XK_Cyrillic_YU = 0x06e0,
- XK_Cyrillic_A = 0x06e1,
- XK_Cyrillic_BE = 0x06e2,
- XK_Cyrillic_TSE = 0x06e3,
- XK_Cyrillic_DE = 0x06e4,
- XK_Cyrillic_IE = 0x06e5,
- XK_Cyrillic_EF = 0x06e6,
- XK_Cyrillic_GHE = 0x06e7,
- XK_Cyrillic_HA = 0x06e8,
- XK_Cyrillic_I = 0x06e9,
- XK_Cyrillic_SHORTI = 0x06ea,
- XK_Cyrillic_KA = 0x06eb,
- XK_Cyrillic_EL = 0x06ec,
- XK_Cyrillic_EM = 0x06ed,
- XK_Cyrillic_EN = 0x06ee,
- XK_Cyrillic_O = 0x06ef,
- XK_Cyrillic_PE = 0x06f0,
- XK_Cyrillic_YA = 0x06f1,
- XK_Cyrillic_ER = 0x06f2,
- XK_Cyrillic_ES = 0x06f3,
- XK_Cyrillic_TE = 0x06f4,
- XK_Cyrillic_U = 0x06f5,
- XK_Cyrillic_ZHE = 0x06f6,
- XK_Cyrillic_VE = 0x06f7,
- XK_Cyrillic_SOFTSIGN = 0x06f8,
- XK_Cyrillic_YERU = 0x06f9,
- XK_Cyrillic_ZE = 0x06fa,
- XK_Cyrillic_SHA = 0x06fb,
- XK_Cyrillic_E = 0x06fc,
- XK_Cyrillic_SHCHA = 0x06fd,
- XK_Cyrillic_CHE = 0x06fe,
- XK_Cyrillic_HARDSIGN = 0x06ff,
- XK_Greek_ALPHAaccent = 0x07a1,
- XK_Greek_EPSILONaccent = 0x07a2,
- XK_Greek_ETAaccent = 0x07a3,
- XK_Greek_IOTAaccent = 0x07a4,
- XK_Greek_IOTAdieresis = 0x07a5,
- XK_Greek_IOTAdiaeresis = 0x07a5,
- XK_Greek_OMICRONaccent = 0x07a7,
- XK_Greek_UPSILONaccent = 0x07a8,
- XK_Greek_UPSILONdieresis = 0x07a9,
- XK_Greek_OMEGAaccent = 0x07ab,
- XK_Greek_accentdieresis = 0x07ae,
- XK_Greek_horizbar = 0x07af,
- XK_Greek_alphaaccent = 0x07b1,
- XK_Greek_epsilonaccent = 0x07b2,
- XK_Greek_etaaccent = 0x07b3,
- XK_Greek_iotaaccent = 0x07b4,
- XK_Greek_iotadieresis = 0x07b5,
- XK_Greek_iotaaccentdieresis = 0x07b6,
- XK_Greek_omicronaccent = 0x07b7,
- XK_Greek_upsilonaccent = 0x07b8,
- XK_Greek_upsilondieresis = 0x07b9,
- XK_Greek_upsilonaccentdieresis = 0x07ba,
- XK_Greek_omegaaccent = 0x07bb,
- XK_Greek_ALPHA = 0x07c1,
- XK_Greek_BETA = 0x07c2,
- XK_Greek_GAMMA = 0x07c3,
- XK_Greek_DELTA = 0x07c4,
- XK_Greek_EPSILON = 0x07c5,
- XK_Greek_ZETA = 0x07c6,
- XK_Greek_ETA = 0x07c7,
- XK_Greek_THETA = 0x07c8,
- XK_Greek_IOTA = 0x07c9,
- XK_Greek_KAPPA = 0x07ca,
- XK_Greek_LAMDA = 0x07cb,
- XK_Greek_LAMBDA = 0x07cb,
- XK_Greek_MU = 0x07cc,
- XK_Greek_NU = 0x07cd,
- XK_Greek_XI = 0x07ce,
- XK_Greek_OMICRON = 0x07cf,
- XK_Greek_PI = 0x07d0,
- XK_Greek_RHO = 0x07d1,
- XK_Greek_SIGMA = 0x07d2,
- XK_Greek_TAU = 0x07d4,
- XK_Greek_UPSILON = 0x07d5,
- XK_Greek_PHI = 0x07d6,
- XK_Greek_CHI = 0x07d7,
- XK_Greek_PSI = 0x07d8,
- XK_Greek_OMEGA = 0x07d9,
- XK_Greek_alpha = 0x07e1,
- XK_Greek_beta = 0x07e2,
- XK_Greek_gamma = 0x07e3,
- XK_Greek_delta = 0x07e4,
- XK_Greek_epsilon = 0x07e5,
- XK_Greek_zeta = 0x07e6,
- XK_Greek_eta = 0x07e7,
- XK_Greek_theta = 0x07e8,
- XK_Greek_iota = 0x07e9,
- XK_Greek_kappa = 0x07ea,
- XK_Greek_lamda = 0x07eb,
- XK_Greek_lambda = 0x07eb,
- XK_Greek_mu = 0x07ec,
- XK_Greek_nu = 0x07ed,
- XK_Greek_xi = 0x07ee,
- XK_Greek_omicron = 0x07ef,
- XK_Greek_pi = 0x07f0,
- XK_Greek_rho = 0x07f1,
- XK_Greek_sigma = 0x07f2,
- XK_Greek_finalsmallsigma = 0x07f3,
- XK_Greek_tau = 0x07f4,
- XK_Greek_upsilon = 0x07f5,
- XK_Greek_phi = 0x07f6,
- XK_Greek_chi = 0x07f7,
- XK_Greek_psi = 0x07f8,
- XK_Greek_omega = 0x07f9,
- XK_Greek_switch = 0xff7e,
- XK_leftradical = 0x08a1,
- XK_topleftradical = 0x08a2,
- XK_horizconnector = 0x08a3,
- XK_topintegral = 0x08a4,
- XK_botintegral = 0x08a5,
- XK_vertconnector = 0x08a6,
- XK_topleftsqbracket = 0x08a7,
- XK_botleftsqbracket = 0x08a8,
- XK_toprightsqbracket = 0x08a9,
- XK_botrightsqbracket = 0x08aa,
- XK_topleftparens = 0x08ab,
- XK_botleftparens = 0x08ac,
- XK_toprightparens = 0x08ad,
- XK_botrightparens = 0x08ae,
- XK_leftmiddlecurlybrace = 0x08af,
- XK_rightmiddlecurlybrace = 0x08b0,
- XK_topleftsummation = 0x08b1,
- XK_botleftsummation = 0x08b2,
- XK_topvertsummationconnector = 0x08b3,
- XK_botvertsummationconnector = 0x08b4,
- XK_toprightsummation = 0x08b5,
- XK_botrightsummation = 0x08b6,
- XK_rightmiddlesummation = 0x08b7,
- XK_lessthanequal = 0x08bc,
- XK_notequal = 0x08bd,
- XK_greaterthanequal = 0x08be,
- XK_integral = 0x08bf,
- XK_therefore = 0x08c0,
- XK_variation = 0x08c1,
- XK_infinity = 0x08c2,
- XK_nabla = 0x08c5,
- XK_approximate = 0x08c8,
- XK_similarequal = 0x08c9,
- XK_ifonlyif = 0x08cd,
- XK_implies = 0x08ce,
- XK_identical = 0x08cf,
- XK_radical = 0x08d6,
- XK_includedin = 0x08da,
- XK_includes = 0x08db,
- XK_intersection = 0x08dc,
- XK_union = 0x08dd,
- XK_logicaland = 0x08de,
- XK_logicalor = 0x08df,
- XK_partialderivative = 0x08ef,
- XK_function = 0x08f6,
- XK_leftarrow = 0x08fb,
- XK_uparrow = 0x08fc,
- XK_rightarrow = 0x08fd,
- XK_downarrow = 0x08fe,
- XK_blank = 0x09df,
- XK_soliddiamond = 0x09e0,
- XK_checkerboard = 0x09e1,
- XK_ht = 0x09e2,
- XK_ff = 0x09e3,
- XK_cr = 0x09e4,
- XK_lf = 0x09e5,
- XK_nl = 0x09e8,
- XK_vt = 0x09e9,
- XK_lowrightcorner = 0x09ea,
- XK_uprightcorner = 0x09eb,
- XK_upleftcorner = 0x09ec,
- XK_lowleftcorner = 0x09ed,
- XK_crossinglines = 0x09ee,
- XK_horizlinescan1 = 0x09ef,
- XK_horizlinescan3 = 0x09f0,
- XK_horizlinescan5 = 0x09f1,
- XK_horizlinescan7 = 0x09f2,
- XK_horizlinescan9 = 0x09f3,
- XK_leftt = 0x09f4,
- XK_rightt = 0x09f5,
- XK_bott = 0x09f6,
- XK_topt = 0x09f7,
- XK_vertbar = 0x09f8,
- XK_emspace = 0x0aa1,
- XK_enspace = 0x0aa2,
- XK_em3space = 0x0aa3,
- XK_em4space = 0x0aa4,
- XK_digitspace = 0x0aa5,
- XK_punctspace = 0x0aa6,
- XK_thinspace = 0x0aa7,
- XK_hairspace = 0x0aa8,
- XK_emdash = 0x0aa9,
- XK_endash = 0x0aaa,
- XK_signifblank = 0x0aac,
- XK_ellipsis = 0x0aae,
- XK_doubbaselinedot = 0x0aaf,
- XK_onethird = 0x0ab0,
- XK_twothirds = 0x0ab1,
- XK_onefifth = 0x0ab2,
- XK_twofifths = 0x0ab3,
- XK_threefifths = 0x0ab4,
- XK_fourfifths = 0x0ab5,
- XK_onesixth = 0x0ab6,
- XK_fivesixths = 0x0ab7,
- XK_careof = 0x0ab8,
- XK_figdash = 0x0abb,
- XK_leftanglebracket = 0x0abc,
- XK_decimalpoint = 0x0abd,
- XK_rightanglebracket = 0x0abe,
- XK_marker = 0x0abf,
- XK_oneeighth = 0x0ac3,
- XK_threeeighths = 0x0ac4,
- XK_fiveeighths = 0x0ac5,
- XK_seveneighths = 0x0ac6,
- XK_trademark = 0x0ac9,
- XK_signaturemark = 0x0aca,
- XK_trademarkincircle = 0x0acb,
- XK_leftopentriangle = 0x0acc,
- XK_rightopentriangle = 0x0acd,
- XK_emopencircle = 0x0ace,
- XK_emopenrectangle = 0x0acf,
- XK_leftsinglequotemark = 0x0ad0,
- XK_rightsinglequotemark = 0x0ad1,
- XK_leftdoublequotemark = 0x0ad2,
- XK_rightdoublequotemark = 0x0ad3,
- XK_prescription = 0x0ad4,
- XK_permille = 0x0ad5,
- XK_minutes = 0x0ad6,
- XK_seconds = 0x0ad7,
- XK_latincross = 0x0ad9,
- XK_hexagram = 0x0ada,
- XK_filledrectbullet = 0x0adb,
- XK_filledlefttribullet = 0x0adc,
- XK_filledrighttribullet = 0x0add,
- XK_emfilledcircle = 0x0ade,
- XK_emfilledrect = 0x0adf,
- XK_enopencircbullet = 0x0ae0,
- XK_enopensquarebullet = 0x0ae1,
- XK_openrectbullet = 0x0ae2,
- XK_opentribulletup = 0x0ae3,
- XK_opentribulletdown = 0x0ae4,
- XK_openstar = 0x0ae5,
- XK_enfilledcircbullet = 0x0ae6,
- XK_enfilledsqbullet = 0x0ae7,
- XK_filledtribulletup = 0x0ae8,
- XK_filledtribulletdown = 0x0ae9,
- XK_leftpointer = 0x0aea,
- XK_rightpointer = 0x0aeb,
- XK_club = 0x0aec,
- XK_diamond = 0x0aed,
- XK_heart = 0x0aee,
- XK_maltesecross = 0x0af0,
- XK_dagger = 0x0af1,
- XK_doubledagger = 0x0af2,
- XK_checkmark = 0x0af3,
- XK_ballotcross = 0x0af4,
- XK_musicalsharp = 0x0af5,
- XK_musicalflat = 0x0af6,
- XK_malesymbol = 0x0af7,
- XK_femalesymbol = 0x0af8,
- XK_telephone = 0x0af9,
- XK_telephonerecorder = 0x0afa,
- XK_phonographcopyright = 0x0afb,
- XK_caret = 0x0afc,
- XK_singlelowquotemark = 0x0afd,
- XK_doublelowquotemark = 0x0afe,
- XK_cursor = 0x0aff,
- XK_leftcaret = 0x0ba3,
- XK_rightcaret = 0x0ba6,
- XK_downcaret = 0x0ba8,
- XK_upcaret = 0x0ba9,
- XK_overbar = 0x0bc0,
- XK_downtack = 0x0bc2,
- XK_upshoe = 0x0bc3,
- XK_downstile = 0x0bc4,
- XK_underbar = 0x0bc6,
- XK_jot = 0x0bca,
- XK_quad = 0x0bcc,
- XK_uptack = 0x0bce,
- XK_circle = 0x0bcf,
- XK_upstile = 0x0bd3,
- XK_downshoe = 0x0bd6,
- XK_rightshoe = 0x0bd8,
- XK_leftshoe = 0x0bda,
- XK_lefttack = 0x0bdc,
- XK_righttack = 0x0bfc,
- XK_hebrew_doublelowline = 0x0cdf,
- XK_hebrew_aleph = 0x0ce0,
- XK_hebrew_bet = 0x0ce1,
- XK_hebrew_beth = 0x0ce1,
- XK_hebrew_gimel = 0x0ce2,
- XK_hebrew_gimmel = 0x0ce2,
- XK_hebrew_dalet = 0x0ce3,
- XK_hebrew_daleth = 0x0ce3,
- XK_hebrew_he = 0x0ce4,
- XK_hebrew_waw = 0x0ce5,
- XK_hebrew_zain = 0x0ce6,
- XK_hebrew_zayin = 0x0ce6,
- XK_hebrew_chet = 0x0ce7,
- XK_hebrew_het = 0x0ce7,
- XK_hebrew_tet = 0x0ce8,
- XK_hebrew_teth = 0x0ce8,
- XK_hebrew_yod = 0x0ce9,
- XK_hebrew_finalkaph = 0x0cea,
- XK_hebrew_kaph = 0x0ceb,
- XK_hebrew_lamed = 0x0cec,
- XK_hebrew_finalmem = 0x0ced,
- XK_hebrew_mem = 0x0cee,
- XK_hebrew_finalnun = 0x0cef,
- XK_hebrew_nun = 0x0cf0,
- XK_hebrew_samech = 0x0cf1,
- XK_hebrew_samekh = 0x0cf1,
- XK_hebrew_ayin = 0x0cf2,
- XK_hebrew_finalpe = 0x0cf3,
- XK_hebrew_pe = 0x0cf4,
- XK_hebrew_finalzade = 0x0cf5,
- XK_hebrew_finalzadi = 0x0cf5,
- XK_hebrew_zade = 0x0cf6,
- XK_hebrew_zadi = 0x0cf6,
- XK_hebrew_qoph = 0x0cf7,
- XK_hebrew_kuf = 0x0cf7,
- XK_hebrew_resh = 0x0cf8,
- XK_hebrew_shin = 0x0cf9,
- XK_hebrew_taw = 0x0cfa,
- XK_hebrew_taf = 0x0cfa,
- XK_Hebrew_switch = 0xff7e,
- XK_Thai_kokai = 0x0da1,
- XK_Thai_khokhai = 0x0da2,
- XK_Thai_khokhuat = 0x0da3,
- XK_Thai_khokhwai = 0x0da4,
- XK_Thai_khokhon = 0x0da5,
- XK_Thai_khorakhang = 0x0da6,
- XK_Thai_ngongu = 0x0da7,
- XK_Thai_chochan = 0x0da8,
- XK_Thai_choching = 0x0da9,
- XK_Thai_chochang = 0x0daa,
- XK_Thai_soso = 0x0dab,
- XK_Thai_chochoe = 0x0dac,
- XK_Thai_yoying = 0x0dad,
- XK_Thai_dochada = 0x0dae,
- XK_Thai_topatak = 0x0daf,
- XK_Thai_thothan = 0x0db0,
- XK_Thai_thonangmontho = 0x0db1,
- XK_Thai_thophuthao = 0x0db2,
- XK_Thai_nonen = 0x0db3,
- XK_Thai_dodek = 0x0db4,
- XK_Thai_totao = 0x0db5,
- XK_Thai_thothung = 0x0db6,
- XK_Thai_thothahan = 0x0db7,
- XK_Thai_thothong = 0x0db8,
- XK_Thai_nonu = 0x0db9,
- XK_Thai_bobaimai = 0x0dba,
- XK_Thai_popla = 0x0dbb,
- XK_Thai_phophung = 0x0dbc,
- XK_Thai_fofa = 0x0dbd,
- XK_Thai_phophan = 0x0dbe,
- XK_Thai_fofan = 0x0dbf,
- XK_Thai_phosamphao = 0x0dc0,
- XK_Thai_moma = 0x0dc1,
- XK_Thai_yoyak = 0x0dc2,
- XK_Thai_rorua = 0x0dc3,
- XK_Thai_ru = 0x0dc4,
- XK_Thai_loling = 0x0dc5,
- XK_Thai_lu = 0x0dc6,
- XK_Thai_wowaen = 0x0dc7,
- XK_Thai_sosala = 0x0dc8,
- XK_Thai_sorusi = 0x0dc9,
- XK_Thai_sosua = 0x0dca,
- XK_Thai_hohip = 0x0dcb,
- XK_Thai_lochula = 0x0dcc,
- XK_Thai_oang = 0x0dcd,
- XK_Thai_honokhuk = 0x0dce,
- XK_Thai_paiyannoi = 0x0dcf,
- XK_Thai_saraa = 0x0dd0,
- XK_Thai_maihanakat = 0x0dd1,
- XK_Thai_saraaa = 0x0dd2,
- XK_Thai_saraam = 0x0dd3,
- XK_Thai_sarai = 0x0dd4,
- XK_Thai_saraii = 0x0dd5,
- XK_Thai_saraue = 0x0dd6,
- XK_Thai_sarauee = 0x0dd7,
- XK_Thai_sarau = 0x0dd8,
- XK_Thai_sarauu = 0x0dd9,
- XK_Thai_phinthu = 0x0dda,
- XK_Thai_maihanakat_maitho = 0x0dde,
- XK_Thai_baht = 0x0ddf,
- XK_Thai_sarae = 0x0de0,
- XK_Thai_saraae = 0x0de1,
- XK_Thai_sarao = 0x0de2,
- XK_Thai_saraaimaimuan = 0x0de3,
- XK_Thai_saraaimaimalai = 0x0de4,
- XK_Thai_lakkhangyao = 0x0de5,
- XK_Thai_maiyamok = 0x0de6,
- XK_Thai_maitaikhu = 0x0de7,
- XK_Thai_maiek = 0x0de8,
- XK_Thai_maitho = 0x0de9,
- XK_Thai_maitri = 0x0dea,
- XK_Thai_maichattawa = 0x0deb,
- XK_Thai_thanthakhat = 0x0dec,
- XK_Thai_nikhahit = 0x0ded,
- XK_Thai_leksun = 0x0df0,
- XK_Thai_leknung = 0x0df1,
- XK_Thai_leksong = 0x0df2,
- XK_Thai_leksam = 0x0df3,
- XK_Thai_leksi = 0x0df4,
- XK_Thai_lekha = 0x0df5,
- XK_Thai_lekhok = 0x0df6,
- XK_Thai_lekchet = 0x0df7,
- XK_Thai_lekpaet = 0x0df8,
- XK_Thai_lekkao = 0x0df9,
- XK_Hangul = 0xff31,
- XK_Hangul_Start = 0xff32,
- XK_Hangul_End = 0xff33,
- XK_Hangul_Hanja = 0xff34,
- XK_Hangul_Jamo = 0xff35,
- XK_Hangul_Romaja = 0xff36,
- XK_Hangul_Codeinput = 0xff37,
- XK_Hangul_Jeonja = 0xff38,
- XK_Hangul_Banja = 0xff39,
- XK_Hangul_PreHanja = 0xff3a,
- XK_Hangul_PostHanja = 0xff3b,
- XK_Hangul_SingleCandidate = 0xff3c,
- XK_Hangul_MultipleCandidate = 0xff3d,
- XK_Hangul_PreviousCandidate = 0xff3e,
- XK_Hangul_Special = 0xff3f,
- XK_Hangul_switch = 0xff7e,
- XK_Hangul_Kiyeog = 0x0ea1,
- XK_Hangul_SsangKiyeog = 0x0ea2,
- XK_Hangul_KiyeogSios = 0x0ea3,
- XK_Hangul_Nieun = 0x0ea4,
- XK_Hangul_NieunJieuj = 0x0ea5,
- XK_Hangul_NieunHieuh = 0x0ea6,
- XK_Hangul_Dikeud = 0x0ea7,
- XK_Hangul_SsangDikeud = 0x0ea8,
- XK_Hangul_Rieul = 0x0ea9,
- XK_Hangul_RieulKiyeog = 0x0eaa,
- XK_Hangul_RieulMieum = 0x0eab,
- XK_Hangul_RieulPieub = 0x0eac,
- XK_Hangul_RieulSios = 0x0ead,
- XK_Hangul_RieulTieut = 0x0eae,
- XK_Hangul_RieulPhieuf = 0x0eaf,
- XK_Hangul_RieulHieuh = 0x0eb0,
- XK_Hangul_Mieum = 0x0eb1,
- XK_Hangul_Pieub = 0x0eb2,
- XK_Hangul_SsangPieub = 0x0eb3,
- XK_Hangul_PieubSios = 0x0eb4,
- XK_Hangul_Sios = 0x0eb5,
- XK_Hangul_SsangSios = 0x0eb6,
- XK_Hangul_Ieung = 0x0eb7,
- XK_Hangul_Jieuj = 0x0eb8,
- XK_Hangul_SsangJieuj = 0x0eb9,
- XK_Hangul_Cieuc = 0x0eba,
- XK_Hangul_Khieuq = 0x0ebb,
- XK_Hangul_Tieut = 0x0ebc,
- XK_Hangul_Phieuf = 0x0ebd,
- XK_Hangul_Hieuh = 0x0ebe,
- XK_Hangul_A = 0x0ebf,
- XK_Hangul_AE = 0x0ec0,
- XK_Hangul_YA = 0x0ec1,
- XK_Hangul_YAE = 0x0ec2,
- XK_Hangul_EO = 0x0ec3,
- XK_Hangul_E = 0x0ec4,
- XK_Hangul_YEO = 0x0ec5,
- XK_Hangul_YE = 0x0ec6,
- XK_Hangul_O = 0x0ec7,
- XK_Hangul_WA = 0x0ec8,
- XK_Hangul_WAE = 0x0ec9,
- XK_Hangul_OE = 0x0eca,
- XK_Hangul_YO = 0x0ecb,
- XK_Hangul_U = 0x0ecc,
- XK_Hangul_WEO = 0x0ecd,
- XK_Hangul_WE = 0x0ece,
- XK_Hangul_WI = 0x0ecf,
- XK_Hangul_YU = 0x0ed0,
- XK_Hangul_EU = 0x0ed1,
- XK_Hangul_YI = 0x0ed2,
- XK_Hangul_I = 0x0ed3,
- XK_Hangul_J_Kiyeog = 0x0ed4,
- XK_Hangul_J_SsangKiyeog = 0x0ed5,
- XK_Hangul_J_KiyeogSios = 0x0ed6,
- XK_Hangul_J_Nieun = 0x0ed7,
- XK_Hangul_J_NieunJieuj = 0x0ed8,
- XK_Hangul_J_NieunHieuh = 0x0ed9,
- XK_Hangul_J_Dikeud = 0x0eda,
- XK_Hangul_J_Rieul = 0x0edb,
- XK_Hangul_J_RieulKiyeog = 0x0edc,
- XK_Hangul_J_RieulMieum = 0x0edd,
- XK_Hangul_J_RieulPieub = 0x0ede,
- XK_Hangul_J_RieulSios = 0x0edf,
- XK_Hangul_J_RieulTieut = 0x0ee0,
- XK_Hangul_J_RieulPhieuf = 0x0ee1,
- XK_Hangul_J_RieulHieuh = 0x0ee2,
- XK_Hangul_J_Mieum = 0x0ee3,
- XK_Hangul_J_Pieub = 0x0ee4,
- XK_Hangul_J_PieubSios = 0x0ee5,
- XK_Hangul_J_Sios = 0x0ee6,
- XK_Hangul_J_SsangSios = 0x0ee7,
- XK_Hangul_J_Ieung = 0x0ee8,
- XK_Hangul_J_Jieuj = 0x0ee9,
- XK_Hangul_J_Cieuc = 0x0eea,
- XK_Hangul_J_Khieuq = 0x0eeb,
- XK_Hangul_J_Tieut = 0x0eec,
- XK_Hangul_J_Phieuf = 0x0eed,
- XK_Hangul_J_Hieuh = 0x0eee,
- XK_Hangul_RieulYeorinHieuh = 0x0eef,
- XK_Hangul_SunkyeongeumMieum = 0x0ef0,
- XK_Hangul_SunkyeongeumPieub = 0x0ef1,
- XK_Hangul_PanSios = 0x0ef2,
- XK_Hangul_KkogjiDalrinIeung = 0x0ef3,
- XK_Hangul_SunkyeongeumPhieuf = 0x0ef4,
- XK_Hangul_YeorinHieuh = 0x0ef5,
- XK_Hangul_AraeA = 0x0ef6,
- XK_Hangul_AraeAE = 0x0ef7,
- XK_Hangul_J_PanSios = 0x0ef8,
- XK_Hangul_J_KkogjiDalrinIeung = 0x0ef9,
- XK_Hangul_J_YeorinHieuh = 0x0efa,
- XK_Korean_Won = 0x0eff,
- XK_Armenian_ligature_ew = 0x1000587,
- XK_Armenian_full_stop = 0x1000589,
- XK_Armenian_verjaket = 0x1000589,
- XK_Armenian_separation_mark = 0x100055d,
- XK_Armenian_but = 0x100055d,
- XK_Armenian_hyphen = 0x100058a,
- XK_Armenian_yentamna = 0x100058a,
- XK_Armenian_exclam = 0x100055c,
- XK_Armenian_amanak = 0x100055c,
- XK_Armenian_accent = 0x100055b,
- XK_Armenian_shesht = 0x100055b,
- XK_Armenian_question = 0x100055e,
- XK_Armenian_paruyk = 0x100055e,
- XK_Armenian_AYB = 0x1000531,
- XK_Armenian_ayb = 0x1000561,
- XK_Armenian_BEN = 0x1000532,
- XK_Armenian_ben = 0x1000562,
- XK_Armenian_GIM = 0x1000533,
- XK_Armenian_gim = 0x1000563,
- XK_Armenian_DA = 0x1000534,
- XK_Armenian_da = 0x1000564,
- XK_Armenian_YECH = 0x1000535,
- XK_Armenian_yech = 0x1000565,
- XK_Armenian_ZA = 0x1000536,
- XK_Armenian_za = 0x1000566,
- XK_Armenian_E = 0x1000537,
- XK_Armenian_e = 0x1000567,
- XK_Armenian_AT = 0x1000538,
- XK_Armenian_at = 0x1000568,
- XK_Armenian_TO = 0x1000539,
- XK_Armenian_to = 0x1000569,
- XK_Armenian_ZHE = 0x100053a,
- XK_Armenian_zhe = 0x100056a,
- XK_Armenian_INI = 0x100053b,
- XK_Armenian_ini = 0x100056b,
- XK_Armenian_LYUN = 0x100053c,
- XK_Armenian_lyun = 0x100056c,
- XK_Armenian_KHE = 0x100053d,
- XK_Armenian_khe = 0x100056d,
- XK_Armenian_TSA = 0x100053e,
- XK_Armenian_tsa = 0x100056e,
- XK_Armenian_KEN = 0x100053f,
- XK_Armenian_ken = 0x100056f,
- XK_Armenian_HO = 0x1000540,
- XK_Armenian_ho = 0x1000570,
- XK_Armenian_DZA = 0x1000541,
- XK_Armenian_dza = 0x1000571,
- XK_Armenian_GHAT = 0x1000542,
- XK_Armenian_ghat = 0x1000572,
- XK_Armenian_TCHE = 0x1000543,
- XK_Armenian_tche = 0x1000573,
- XK_Armenian_MEN = 0x1000544,
- XK_Armenian_men = 0x1000574,
- XK_Armenian_HI = 0x1000545,
- XK_Armenian_hi = 0x1000575,
- XK_Armenian_NU = 0x1000546,
- XK_Armenian_nu = 0x1000576,
- XK_Armenian_SHA = 0x1000547,
- XK_Armenian_sha = 0x1000577,
- XK_Armenian_VO = 0x1000548,
- XK_Armenian_vo = 0x1000578,
- XK_Armenian_CHA = 0x1000549,
- XK_Armenian_cha = 0x1000579,
- XK_Armenian_PE = 0x100054a,
- XK_Armenian_pe = 0x100057a,
- XK_Armenian_JE = 0x100054b,
- XK_Armenian_je = 0x100057b,
- XK_Armenian_RA = 0x100054c,
- XK_Armenian_ra = 0x100057c,
- XK_Armenian_SE = 0x100054d,
- XK_Armenian_se = 0x100057d,
- XK_Armenian_VEV = 0x100054e,
- XK_Armenian_vev = 0x100057e,
- XK_Armenian_TYUN = 0x100054f,
- XK_Armenian_tyun = 0x100057f,
- XK_Armenian_RE = 0x1000550,
- XK_Armenian_re = 0x1000580,
- XK_Armenian_TSO = 0x1000551,
- XK_Armenian_tso = 0x1000581,
- XK_Armenian_VYUN = 0x1000552,
- XK_Armenian_vyun = 0x1000582,
- XK_Armenian_PYUR = 0x1000553,
- XK_Armenian_pyur = 0x1000583,
- XK_Armenian_KE = 0x1000554,
- XK_Armenian_ke = 0x1000584,
- XK_Armenian_O = 0x1000555,
- XK_Armenian_o = 0x1000585,
- XK_Armenian_FE = 0x1000556,
- XK_Armenian_fe = 0x1000586,
- XK_Armenian_apostrophe = 0x100055a,
- XK_Georgian_an = 0x10010d0,
- XK_Georgian_ban = 0x10010d1,
- XK_Georgian_gan = 0x10010d2,
- XK_Georgian_don = 0x10010d3,
- XK_Georgian_en = 0x10010d4,
- XK_Georgian_vin = 0x10010d5,
- XK_Georgian_zen = 0x10010d6,
- XK_Georgian_tan = 0x10010d7,
- XK_Georgian_in = 0x10010d8,
- XK_Georgian_kan = 0x10010d9,
- XK_Georgian_las = 0x10010da,
- XK_Georgian_man = 0x10010db,
- XK_Georgian_nar = 0x10010dc,
- XK_Georgian_on = 0x10010dd,
- XK_Georgian_par = 0x10010de,
- XK_Georgian_zhar = 0x10010df,
- XK_Georgian_rae = 0x10010e0,
- XK_Georgian_san = 0x10010e1,
- XK_Georgian_tar = 0x10010e2,
- XK_Georgian_un = 0x10010e3,
- XK_Georgian_phar = 0x10010e4,
- XK_Georgian_khar = 0x10010e5,
- XK_Georgian_ghan = 0x10010e6,
- XK_Georgian_qar = 0x10010e7,
- XK_Georgian_shin = 0x10010e8,
- XK_Georgian_chin = 0x10010e9,
- XK_Georgian_can = 0x10010ea,
- XK_Georgian_jil = 0x10010eb,
- XK_Georgian_cil = 0x10010ec,
- XK_Georgian_char = 0x10010ed,
- XK_Georgian_xan = 0x10010ee,
- XK_Georgian_jhan = 0x10010ef,
- XK_Georgian_hae = 0x10010f0,
- XK_Georgian_he = 0x10010f1,
- XK_Georgian_hie = 0x10010f2,
- XK_Georgian_we = 0x10010f3,
- XK_Georgian_har = 0x10010f4,
- XK_Georgian_hoe = 0x10010f5,
- XK_Georgian_fi = 0x10010f6,
- XK_Xabovedot = 0x1001e8a,
- XK_Ibreve = 0x100012c,
- XK_Zstroke = 0x10001b5,
- XK_Gcaron = 0x10001e6,
- XK_Ocaron = 0x10001d1,
- XK_Obarred = 0x100019f,
- XK_xabovedot = 0x1001e8b,
- XK_ibreve = 0x100012d,
- XK_zstroke = 0x10001b6,
- XK_gcaron = 0x10001e7,
- XK_ocaron = 0x10001d2,
- XK_obarred = 0x1000275,
- XK_SCHWA = 0x100018f,
- XK_schwa = 0x1000259,
- XK_EZH = 0x10001b7,
- XK_ezh = 0x1000292,
- XK_Lbelowdot = 0x1001e36,
- XK_lbelowdot = 0x1001e37,
- XK_Abelowdot = 0x1001ea0,
- XK_abelowdot = 0x1001ea1,
- XK_Ahook = 0x1001ea2,
- XK_ahook = 0x1001ea3,
- XK_Acircumflexacute = 0x1001ea4,
- XK_acircumflexacute = 0x1001ea5,
- XK_Acircumflexgrave = 0x1001ea6,
- XK_acircumflexgrave = 0x1001ea7,
- XK_Acircumflexhook = 0x1001ea8,
- XK_acircumflexhook = 0x1001ea9,
- XK_Acircumflextilde = 0x1001eaa,
- XK_acircumflextilde = 0x1001eab,
- XK_Acircumflexbelowdot = 0x1001eac,
- XK_acircumflexbelowdot = 0x1001ead,
- XK_Abreveacute = 0x1001eae,
- XK_abreveacute = 0x1001eaf,
- XK_Abrevegrave = 0x1001eb0,
- XK_abrevegrave = 0x1001eb1,
- XK_Abrevehook = 0x1001eb2,
- XK_abrevehook = 0x1001eb3,
- XK_Abrevetilde = 0x1001eb4,
- XK_abrevetilde = 0x1001eb5,
- XK_Abrevebelowdot = 0x1001eb6,
- XK_abrevebelowdot = 0x1001eb7,
- XK_Ebelowdot = 0x1001eb8,
- XK_ebelowdot = 0x1001eb9,
- XK_Ehook = 0x1001eba,
- XK_ehook = 0x1001ebb,
- XK_Etilde = 0x1001ebc,
- XK_etilde = 0x1001ebd,
- XK_Ecircumflexacute = 0x1001ebe,
- XK_ecircumflexacute = 0x1001ebf,
- XK_Ecircumflexgrave = 0x1001ec0,
- XK_ecircumflexgrave = 0x1001ec1,
- XK_Ecircumflexhook = 0x1001ec2,
- XK_ecircumflexhook = 0x1001ec3,
- XK_Ecircumflextilde = 0x1001ec4,
- XK_ecircumflextilde = 0x1001ec5,
- XK_Ecircumflexbelowdot = 0x1001ec6,
- XK_ecircumflexbelowdot = 0x1001ec7,
- XK_Ihook = 0x1001ec8,
- XK_ihook = 0x1001ec9,
- XK_Ibelowdot = 0x1001eca,
- XK_ibelowdot = 0x1001ecb,
- XK_Obelowdot = 0x1001ecc,
- XK_obelowdot = 0x1001ecd,
- XK_Ohook = 0x1001ece,
- XK_ohook = 0x1001ecf,
- XK_Ocircumflexacute = 0x1001ed0,
- XK_ocircumflexacute = 0x1001ed1,
- XK_Ocircumflexgrave = 0x1001ed2,
- XK_ocircumflexgrave = 0x1001ed3,
- XK_Ocircumflexhook = 0x1001ed4,
- XK_ocircumflexhook = 0x1001ed5,
- XK_Ocircumflextilde = 0x1001ed6,
- XK_ocircumflextilde = 0x1001ed7,
- XK_Ocircumflexbelowdot = 0x1001ed8,
- XK_ocircumflexbelowdot = 0x1001ed9,
- XK_Ohornacute = 0x1001eda,
- XK_ohornacute = 0x1001edb,
- XK_Ohorngrave = 0x1001edc,
- XK_ohorngrave = 0x1001edd,
- XK_Ohornhook = 0x1001ede,
- XK_ohornhook = 0x1001edf,
- XK_Ohorntilde = 0x1001ee0,
- XK_ohorntilde = 0x1001ee1,
- XK_Ohornbelowdot = 0x1001ee2,
- XK_ohornbelowdot = 0x1001ee3,
- XK_Ubelowdot = 0x1001ee4,
- XK_ubelowdot = 0x1001ee5,
- XK_Uhook = 0x1001ee6,
- XK_uhook = 0x1001ee7,
- XK_Uhornacute = 0x1001ee8,
- XK_uhornacute = 0x1001ee9,
- XK_Uhorngrave = 0x1001eea,
- XK_uhorngrave = 0x1001eeb,
- XK_Uhornhook = 0x1001eec,
- XK_uhornhook = 0x1001eed,
- XK_Uhorntilde = 0x1001eee,
- XK_uhorntilde = 0x1001eef,
- XK_Uhornbelowdot = 0x1001ef0,
- XK_uhornbelowdot = 0x1001ef1,
- XK_Ybelowdot = 0x1001ef4,
- XK_ybelowdot = 0x1001ef5,
- XK_Yhook = 0x1001ef6,
- XK_yhook = 0x1001ef7,
- XK_Ytilde = 0x1001ef8,
- XK_ytilde = 0x1001ef9,
- XK_Ohorn = 0x10001a0,
- XK_ohorn = 0x10001a1,
- XK_Uhorn = 0x10001af,
- XK_uhorn = 0x10001b0,
- XK_EcuSign = 0x10020a0,
- XK_ColonSign = 0x10020a1,
- XK_CruzeiroSign = 0x10020a2,
- XK_FFrancSign = 0x10020a3,
- XK_LiraSign = 0x10020a4,
- XK_MillSign = 0x10020a5,
- XK_NairaSign = 0x10020a6,
- XK_PesetaSign = 0x10020a7,
- XK_RupeeSign = 0x10020a8,
- XK_WonSign = 0x10020a9,
- XK_NewSheqelSign = 0x10020aa,
- XK_DongSign = 0x10020ab,
- XK_EuroSign = 0x20ac,
- XK_zerosuperior = 0x1002070,
- XK_foursuperior = 0x1002074,
- XK_fivesuperior = 0x1002075,
- XK_sixsuperior = 0x1002076,
- XK_sevensuperior = 0x1002077,
- XK_eightsuperior = 0x1002078,
- XK_ninesuperior = 0x1002079,
- XK_zerosubscript = 0x1002080,
- XK_onesubscript = 0x1002081,
- XK_twosubscript = 0x1002082,
- XK_threesubscript = 0x1002083,
- XK_foursubscript = 0x1002084,
- XK_fivesubscript = 0x1002085,
- XK_sixsubscript = 0x1002086,
- XK_sevensubscript = 0x1002087,
- XK_eightsubscript = 0x1002088,
- XK_ninesubscript = 0x1002089,
- XK_partdifferential = 0x1002202,
- XK_emptyset = 0x1002205,
- XK_elementof = 0x1002208,
- XK_notelementof = 0x1002209,
- XK_containsas = 0x100220B,
- XK_squareroot = 0x100221A,
- XK_cuberoot = 0x100221B,
- XK_fourthroot = 0x100221C,
- XK_dintegral = 0x100222C,
- XK_tintegral = 0x100222D,
- XK_because = 0x1002235,
- XK_approxeq = 0x1002248,
- XK_notapproxeq = 0x1002247,
- XK_notidentical = 0x1002262,
- XK_stricteq = 0x1002263,
- XK_braille_dot_1 = 0xfff1,
- XK_braille_dot_2 = 0xfff2,
- XK_braille_dot_3 = 0xfff3,
- XK_braille_dot_4 = 0xfff4,
- XK_braille_dot_5 = 0xfff5,
- XK_braille_dot_6 = 0xfff6,
- XK_braille_dot_7 = 0xfff7,
- XK_braille_dot_8 = 0xfff8,
- XK_braille_dot_9 = 0xfff9,
- XK_braille_dot_10 = 0xfffa,
- XK_braille_blank = 0x1002800,
- XK_braille_dots_1 = 0x1002801,
- XK_braille_dots_2 = 0x1002802,
- XK_braille_dots_12 = 0x1002803,
- XK_braille_dots_3 = 0x1002804,
- XK_braille_dots_13 = 0x1002805,
- XK_braille_dots_23 = 0x1002806,
- XK_braille_dots_123 = 0x1002807,
- XK_braille_dots_4 = 0x1002808,
- XK_braille_dots_14 = 0x1002809,
- XK_braille_dots_24 = 0x100280a,
- XK_braille_dots_124 = 0x100280b,
- XK_braille_dots_34 = 0x100280c,
- XK_braille_dots_134 = 0x100280d,
- XK_braille_dots_234 = 0x100280e,
- XK_braille_dots_1234 = 0x100280f,
- XK_braille_dots_5 = 0x1002810,
- XK_braille_dots_15 = 0x1002811,
- XK_braille_dots_25 = 0x1002812,
- XK_braille_dots_125 = 0x1002813,
- XK_braille_dots_35 = 0x1002814,
- XK_braille_dots_135 = 0x1002815,
- XK_braille_dots_235 = 0x1002816,
- XK_braille_dots_1235 = 0x1002817,
- XK_braille_dots_45 = 0x1002818,
- XK_braille_dots_145 = 0x1002819,
- XK_braille_dots_245 = 0x100281a,
- XK_braille_dots_1245 = 0x100281b,
- XK_braille_dots_345 = 0x100281c,
- XK_braille_dots_1345 = 0x100281d,
- XK_braille_dots_2345 = 0x100281e,
- XK_braille_dots_12345 = 0x100281f,
- XK_braille_dots_6 = 0x1002820,
- XK_braille_dots_16 = 0x1002821,
- XK_braille_dots_26 = 0x1002822,
- XK_braille_dots_126 = 0x1002823,
- XK_braille_dots_36 = 0x1002824,
- XK_braille_dots_136 = 0x1002825,
- XK_braille_dots_236 = 0x1002826,
- XK_braille_dots_1236 = 0x1002827,
- XK_braille_dots_46 = 0x1002828,
- XK_braille_dots_146 = 0x1002829,
- XK_braille_dots_246 = 0x100282a,
- XK_braille_dots_1246 = 0x100282b,
- XK_braille_dots_346 = 0x100282c,
- XK_braille_dots_1346 = 0x100282d,
- XK_braille_dots_2346 = 0x100282e,
- XK_braille_dots_12346 = 0x100282f,
- XK_braille_dots_56 = 0x1002830,
- XK_braille_dots_156 = 0x1002831,
- XK_braille_dots_256 = 0x1002832,
- XK_braille_dots_1256 = 0x1002833,
- XK_braille_dots_356 = 0x1002834,
- XK_braille_dots_1356 = 0x1002835,
- XK_braille_dots_2356 = 0x1002836,
- XK_braille_dots_12356 = 0x1002837,
- XK_braille_dots_456 = 0x1002838,
- XK_braille_dots_1456 = 0x1002839,
- XK_braille_dots_2456 = 0x100283a,
- XK_braille_dots_12456 = 0x100283b,
- XK_braille_dots_3456 = 0x100283c,
- XK_braille_dots_13456 = 0x100283d,
- XK_braille_dots_23456 = 0x100283e,
- XK_braille_dots_123456 = 0x100283f,
- XK_braille_dots_7 = 0x1002840,
- XK_braille_dots_17 = 0x1002841,
- XK_braille_dots_27 = 0x1002842,
- XK_braille_dots_127 = 0x1002843,
- XK_braille_dots_37 = 0x1002844,
- XK_braille_dots_137 = 0x1002845,
- XK_braille_dots_237 = 0x1002846,
- XK_braille_dots_1237 = 0x1002847,
- XK_braille_dots_47 = 0x1002848,
- XK_braille_dots_147 = 0x1002849,
- XK_braille_dots_247 = 0x100284a,
- XK_braille_dots_1247 = 0x100284b,
- XK_braille_dots_347 = 0x100284c,
- XK_braille_dots_1347 = 0x100284d,
- XK_braille_dots_2347 = 0x100284e,
- XK_braille_dots_12347 = 0x100284f,
- XK_braille_dots_57 = 0x1002850,
- XK_braille_dots_157 = 0x1002851,
- XK_braille_dots_257 = 0x1002852,
- XK_braille_dots_1257 = 0x1002853,
- XK_braille_dots_357 = 0x1002854,
- XK_braille_dots_1357 = 0x1002855,
- XK_braille_dots_2357 = 0x1002856,
- XK_braille_dots_12357 = 0x1002857,
- XK_braille_dots_457 = 0x1002858,
- XK_braille_dots_1457 = 0x1002859,
- XK_braille_dots_2457 = 0x100285a,
- XK_braille_dots_12457 = 0x100285b,
- XK_braille_dots_3457 = 0x100285c,
- XK_braille_dots_13457 = 0x100285d,
- XK_braille_dots_23457 = 0x100285e,
- XK_braille_dots_123457 = 0x100285f,
- XK_braille_dots_67 = 0x1002860,
- XK_braille_dots_167 = 0x1002861,
- XK_braille_dots_267 = 0x1002862,
- XK_braille_dots_1267 = 0x1002863,
- XK_braille_dots_367 = 0x1002864,
- XK_braille_dots_1367 = 0x1002865,
- XK_braille_dots_2367 = 0x1002866,
- XK_braille_dots_12367 = 0x1002867,
- XK_braille_dots_467 = 0x1002868,
- XK_braille_dots_1467 = 0x1002869,
- XK_braille_dots_2467 = 0x100286a,
- XK_braille_dots_12467 = 0x100286b,
- XK_braille_dots_3467 = 0x100286c,
- XK_braille_dots_13467 = 0x100286d,
- XK_braille_dots_23467 = 0x100286e,
- XK_braille_dots_123467 = 0x100286f,
- XK_braille_dots_567 = 0x1002870,
- XK_braille_dots_1567 = 0x1002871,
- XK_braille_dots_2567 = 0x1002872,
- XK_braille_dots_12567 = 0x1002873,
- XK_braille_dots_3567 = 0x1002874,
- XK_braille_dots_13567 = 0x1002875,
- XK_braille_dots_23567 = 0x1002876,
- XK_braille_dots_123567 = 0x1002877,
- XK_braille_dots_4567 = 0x1002878,
- XK_braille_dots_14567 = 0x1002879,
- XK_braille_dots_24567 = 0x100287a,
- XK_braille_dots_124567 = 0x100287b,
- XK_braille_dots_34567 = 0x100287c,
- XK_braille_dots_134567 = 0x100287d,
- XK_braille_dots_234567 = 0x100287e,
- XK_braille_dots_1234567 = 0x100287f,
- XK_braille_dots_8 = 0x1002880,
- XK_braille_dots_18 = 0x1002881,
- XK_braille_dots_28 = 0x1002882,
- XK_braille_dots_128 = 0x1002883,
- XK_braille_dots_38 = 0x1002884,
- XK_braille_dots_138 = 0x1002885,
- XK_braille_dots_238 = 0x1002886,
- XK_braille_dots_1238 = 0x1002887,
- XK_braille_dots_48 = 0x1002888,
- XK_braille_dots_148 = 0x1002889,
- XK_braille_dots_248 = 0x100288a,
- XK_braille_dots_1248 = 0x100288b,
- XK_braille_dots_348 = 0x100288c,
- XK_braille_dots_1348 = 0x100288d,
- XK_braille_dots_2348 = 0x100288e,
- XK_braille_dots_12348 = 0x100288f,
- XK_braille_dots_58 = 0x1002890,
- XK_braille_dots_158 = 0x1002891,
- XK_braille_dots_258 = 0x1002892,
- XK_braille_dots_1258 = 0x1002893,
- XK_braille_dots_358 = 0x1002894,
- XK_braille_dots_1358 = 0x1002895,
- XK_braille_dots_2358 = 0x1002896,
- XK_braille_dots_12358 = 0x1002897,
- XK_braille_dots_458 = 0x1002898,
- XK_braille_dots_1458 = 0x1002899,
- XK_braille_dots_2458 = 0x100289a,
- XK_braille_dots_12458 = 0x100289b,
- XK_braille_dots_3458 = 0x100289c,
- XK_braille_dots_13458 = 0x100289d,
- XK_braille_dots_23458 = 0x100289e,
- XK_braille_dots_123458 = 0x100289f,
- XK_braille_dots_68 = 0x10028a0,
- XK_braille_dots_168 = 0x10028a1,
- XK_braille_dots_268 = 0x10028a2,
- XK_braille_dots_1268 = 0x10028a3,
- XK_braille_dots_368 = 0x10028a4,
- XK_braille_dots_1368 = 0x10028a5,
- XK_braille_dots_2368 = 0x10028a6,
- XK_braille_dots_12368 = 0x10028a7,
- XK_braille_dots_468 = 0x10028a8,
- XK_braille_dots_1468 = 0x10028a9,
- XK_braille_dots_2468 = 0x10028aa,
- XK_braille_dots_12468 = 0x10028ab,
- XK_braille_dots_3468 = 0x10028ac,
- XK_braille_dots_13468 = 0x10028ad,
- XK_braille_dots_23468 = 0x10028ae,
- XK_braille_dots_123468 = 0x10028af,
- XK_braille_dots_568 = 0x10028b0,
- XK_braille_dots_1568 = 0x10028b1,
- XK_braille_dots_2568 = 0x10028b2,
- XK_braille_dots_12568 = 0x10028b3,
- XK_braille_dots_3568 = 0x10028b4,
- XK_braille_dots_13568 = 0x10028b5,
- XK_braille_dots_23568 = 0x10028b6,
- XK_braille_dots_123568 = 0x10028b7,
- XK_braille_dots_4568 = 0x10028b8,
- XK_braille_dots_14568 = 0x10028b9,
- XK_braille_dots_24568 = 0x10028ba,
- XK_braille_dots_124568 = 0x10028bb,
- XK_braille_dots_34568 = 0x10028bc,
- XK_braille_dots_134568 = 0x10028bd,
- XK_braille_dots_234568 = 0x10028be,
- XK_braille_dots_1234568 = 0x10028bf,
- XK_braille_dots_78 = 0x10028c0,
- XK_braille_dots_178 = 0x10028c1,
- XK_braille_dots_278 = 0x10028c2,
- XK_braille_dots_1278 = 0x10028c3,
- XK_braille_dots_378 = 0x10028c4,
- XK_braille_dots_1378 = 0x10028c5,
- XK_braille_dots_2378 = 0x10028c6,
- XK_braille_dots_12378 = 0x10028c7,
- XK_braille_dots_478 = 0x10028c8,
- XK_braille_dots_1478 = 0x10028c9,
- XK_braille_dots_2478 = 0x10028ca,
- XK_braille_dots_12478 = 0x10028cb,
- XK_braille_dots_3478 = 0x10028cc,
- XK_braille_dots_13478 = 0x10028cd,
- XK_braille_dots_23478 = 0x10028ce,
- XK_braille_dots_123478 = 0x10028cf,
- XK_braille_dots_578 = 0x10028d0,
- XK_braille_dots_1578 = 0x10028d1,
- XK_braille_dots_2578 = 0x10028d2,
- XK_braille_dots_12578 = 0x10028d3,
- XK_braille_dots_3578 = 0x10028d4,
- XK_braille_dots_13578 = 0x10028d5,
- XK_braille_dots_23578 = 0x10028d6,
- XK_braille_dots_123578 = 0x10028d7,
- XK_braille_dots_4578 = 0x10028d8,
- XK_braille_dots_14578 = 0x10028d9,
- XK_braille_dots_24578 = 0x10028da,
- XK_braille_dots_124578 = 0x10028db,
- XK_braille_dots_34578 = 0x10028dc,
- XK_braille_dots_134578 = 0x10028dd,
- XK_braille_dots_234578 = 0x10028de,
- XK_braille_dots_1234578 = 0x10028df,
- XK_braille_dots_678 = 0x10028e0,
- XK_braille_dots_1678 = 0x10028e1,
- XK_braille_dots_2678 = 0x10028e2,
- XK_braille_dots_12678 = 0x10028e3,
- XK_braille_dots_3678 = 0x10028e4,
- XK_braille_dots_13678 = 0x10028e5,
- XK_braille_dots_23678 = 0x10028e6,
- XK_braille_dots_123678 = 0x10028e7,
- XK_braille_dots_4678 = 0x10028e8,
- XK_braille_dots_14678 = 0x10028e9,
- XK_braille_dots_24678 = 0x10028ea,
- XK_braille_dots_124678 = 0x10028eb,
- XK_braille_dots_34678 = 0x10028ec,
- XK_braille_dots_134678 = 0x10028ed,
- XK_braille_dots_234678 = 0x10028ee,
- XK_braille_dots_1234678 = 0x10028ef,
- XK_braille_dots_5678 = 0x10028f0,
- XK_braille_dots_15678 = 0x10028f1,
- XK_braille_dots_25678 = 0x10028f2,
- XK_braille_dots_125678 = 0x10028f3,
- XK_braille_dots_35678 = 0x10028f4,
- XK_braille_dots_135678 = 0x10028f5,
- XK_braille_dots_235678 = 0x10028f6,
- XK_braille_dots_1235678 = 0x10028f7,
- XK_braille_dots_45678 = 0x10028f8,
- XK_braille_dots_145678 = 0x10028f9,
- XK_braille_dots_245678 = 0x10028fa,
- XK_braille_dots_1245678 = 0x10028fb,
- XK_braille_dots_345678 = 0x10028fc,
- XK_braille_dots_1345678 = 0x10028fd,
- XK_braille_dots_2345678 = 0x10028fe,
- XK_braille_dots_12345678 = 0x10028ff,
- XK_Sinh_ng = 0x1000d82,
- XK_Sinh_h2 = 0x1000d83,
- XK_Sinh_a = 0x1000d85,
- XK_Sinh_aa = 0x1000d86,
- XK_Sinh_ae = 0x1000d87,
- XK_Sinh_aee = 0x1000d88,
- XK_Sinh_i = 0x1000d89,
- XK_Sinh_ii = 0x1000d8a,
- XK_Sinh_u = 0x1000d8b,
- XK_Sinh_uu = 0x1000d8c,
- XK_Sinh_ri = 0x1000d8d,
- XK_Sinh_rii = 0x1000d8e,
- XK_Sinh_lu = 0x1000d8f,
- XK_Sinh_luu = 0x1000d90,
- XK_Sinh_e = 0x1000d91,
- XK_Sinh_ee = 0x1000d92,
- XK_Sinh_ai = 0x1000d93,
- XK_Sinh_o = 0x1000d94,
- XK_Sinh_oo = 0x1000d95,
- XK_Sinh_au = 0x1000d96,
- XK_Sinh_ka = 0x1000d9a,
- XK_Sinh_kha = 0x1000d9b,
- XK_Sinh_ga = 0x1000d9c,
- XK_Sinh_gha = 0x1000d9d,
- XK_Sinh_ng2 = 0x1000d9e,
- XK_Sinh_nga = 0x1000d9f,
- XK_Sinh_ca = 0x1000da0,
- XK_Sinh_cha = 0x1000da1,
- XK_Sinh_ja = 0x1000da2,
- XK_Sinh_jha = 0x1000da3,
- XK_Sinh_nya = 0x1000da4,
- XK_Sinh_jnya = 0x1000da5,
- XK_Sinh_nja = 0x1000da6,
- XK_Sinh_tta = 0x1000da7,
- XK_Sinh_ttha = 0x1000da8,
- XK_Sinh_dda = 0x1000da9,
- XK_Sinh_ddha = 0x1000daa,
- XK_Sinh_nna = 0x1000dab,
- XK_Sinh_ndda = 0x1000dac,
- XK_Sinh_tha = 0x1000dad,
- XK_Sinh_thha = 0x1000dae,
- XK_Sinh_dha = 0x1000daf,
- XK_Sinh_dhha = 0x1000db0,
- XK_Sinh_na = 0x1000db1,
- XK_Sinh_ndha = 0x1000db3,
- XK_Sinh_pa = 0x1000db4,
- XK_Sinh_pha = 0x1000db5,
- XK_Sinh_ba = 0x1000db6,
- XK_Sinh_bha = 0x1000db7,
- XK_Sinh_ma = 0x1000db8,
- XK_Sinh_mba = 0x1000db9,
- XK_Sinh_ya = 0x1000dba,
- XK_Sinh_ra = 0x1000dbb,
- XK_Sinh_la = 0x1000dbd,
- XK_Sinh_va = 0x1000dc0,
- XK_Sinh_sha = 0x1000dc1,
- XK_Sinh_ssha = 0x1000dc2,
- XK_Sinh_sa = 0x1000dc3,
- XK_Sinh_ha = 0x1000dc4,
- XK_Sinh_lla = 0x1000dc5,
- XK_Sinh_fa = 0x1000dc6,
- XK_Sinh_al = 0x1000dca,
- XK_Sinh_aa2 = 0x1000dcf,
- XK_Sinh_ae2 = 0x1000dd0,
- XK_Sinh_aee2 = 0x1000dd1,
- XK_Sinh_i2 = 0x1000dd2,
- XK_Sinh_ii2 = 0x1000dd3,
- XK_Sinh_u2 = 0x1000dd4,
- XK_Sinh_uu2 = 0x1000dd6,
- XK_Sinh_ru2 = 0x1000dd8,
- XK_Sinh_e2 = 0x1000dd9,
- XK_Sinh_ee2 = 0x1000dda,
- XK_Sinh_ai2 = 0x1000ddb,
- XK_Sinh_o2 = 0x1000ddc,
- XK_Sinh_oo2 = 0x1000ddd,
- XK_Sinh_au2 = 0x1000dde,
- XK_Sinh_lu2 = 0x1000ddf,
- XK_Sinh_ruu2 = 0x1000df2,
- XK_Sinh_luu2 = 0x1000df3,
- XK_Sinh_kunddaliya = 0x1000df4,
- }
-}
--- /dev/null
+using System;
+using System.Runtime.InteropServices;
+
+namespace XLib
+{
+ public class Display : IDisposable
+ {
+ internal IntPtr handle;
+ internal Int32 screen;
+ IntPtr lastEvent;
+
+ public Display()
+ {
+ handle = XOpenDisplay(IntPtr.Zero);
+ if (handle == IntPtr.Zero)
+ throw new NotSupportedException("[XLib] Failed to open display.");
+
+ screen = XDefaultScreen(handle);
+ lastEvent = Marshal.AllocHGlobal(96);
+ }
+
+ /*public IntPtr NextEvent {
+ get {
+ NativeMethods.XNextEvent(handle, lastEvent);
+ return lastEvent;
+ }
+ }*/
+
+ #region IDisposable Support
+ private bool disposedValue = false; // To detect redundant calls
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!disposedValue)
+ {
+ if (disposing)
+ {
+ // TODO: dispose managed state (managed objects).
+ }
+
+ //Marshal.FreeHGlobal (lastEvent);
+ NativeMethods.XCloseDisplay (handle);
+
+ disposedValue = true;
+ }
+ }
+
+ // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources.
+ ~Display() {
+ // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
+ Dispose(false);
+ }
+
+ // This code added to correctly implement the disposable pattern.
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+ #endregion
+
+
+ }
+}
--- /dev/null
+using System;
+using System.Runtime.InteropServices;
+
+namespace XLib
+{
+
+ public enum EventType {
+ KeyPress = 2,
+ KeyRelease,
+ ButtonPress,
+ ButtonRelease,
+ MotionNotify,
+ EnterNotify,
+ LeaveNotify,
+ FocusIn,
+ FocusOut,
+ KeymapNotify,
+ Expose,
+ GraphicsExpose,
+ NoExpose,
+ VisibilityNotify,
+ CreateNotify,
+ DestroyNotify,
+ UnmapNotify,
+ MapNotify,
+ MapRequest,
+ ReparentNotify,
+ ConfigureNotify,
+ ConfigureRequest,
+ GravityNotify,
+ ResizeRequest,
+ CirculateNotify,
+ CirculateRequest,
+ PropertyNotify,
+ SelectionClear,
+ SelectionRequest,
+ SelectionNotify,
+ ColormapNotify,
+ ClientMessage,
+ MappingNotify,
+ GenericEvent,
+ LASTEvent = 36 /* must be bigger than any event # */
+ }
+ public class Window
+ {
+ IntPtr handle;
+ Display disp;
+
+ public Window (Display display, UInt32 width = 800, UInt32 height = 600, Int32 x = 0, Int32 y = 0) {
+ disp = display;
+ handle = NativeMethods.XCreateSimpleWindow (disp.handle, NativeMethods.XDefaultRootWindow(disp.handle), x, y, width, height,
+ 0, IntPtr.Zero, IntPtr.Zero);
+ if (handle == IntPtr.Zero)
+ throw new NotSupportedException("[XLib] Failed to create window.");
+
+ NativeMethods.XSelectInput (disp.handle, handle, EventMask.ExposureMask | EventMask.KeyPressMask);
+
+ NativeMethods.XMapWindow (disp.handle, handle);
+ }
+
+ }
+}
--- /dev/null
+// 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;
+using System.Drawing;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using System.Threading;
+
+/// X11 Version
+namespace Crow.XLIB {
+ //
+ // 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)]
+ public struct XAnyEvent {
+ public XEventName type;
+ public IntPtr serial;
+ public bool send_event;
+ public IntPtr display;
+ public IntPtr window;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public struct XVisibilityEvent {
+ public XEventName type;
+ public IntPtr serial;
+ public bool send_event;
+ public IntPtr display;
+ public IntPtr window;
+ public int state;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public 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)]
+ public struct XDestroyWindowEvent {
+ public XEventName type;
+ public IntPtr serial;
+ public bool send_event;
+ public IntPtr display;
+ public IntPtr xevent;
+ public IntPtr window;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public 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)]
+ public 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)]
+ public struct XMapRequestEvent {
+ public XEventName type;
+ public IntPtr serial;
+ public bool send_event;
+ public IntPtr display;
+ public IntPtr parent;
+ public IntPtr window;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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)]
+ public 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.Explicit)]
+ public 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;
+
+ //[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.ButtonPress:
+ case XEventName.ButtonRelease:
+ return ToString (ButtonEvent);
+ case XEventName.CirculateNotify:
+ case XEventName.CirculateRequest:
+ return ToString (CirculateEvent);
+ case XEventName.ClientMessage:
+ return ToString (ClientMessageEvent);
+ case XEventName.ColormapNotify:
+ return ToString (ColormapEvent);
+ case XEventName.ConfigureNotify:
+ return ToString (ConfigureEvent);
+ case XEventName.ConfigureRequest:
+ return ToString (ConfigureRequestEvent);
+ case XEventName.CreateNotify:
+ return ToString (CreateWindowEvent);
+ case XEventName.DestroyNotify:
+ return ToString (DestroyWindowEvent);
+ case XEventName.Expose:
+ return ToString (ExposeEvent);
+ case XEventName.FocusIn:
+ case XEventName.FocusOut:
+ return ToString (FocusChangeEvent);
+ case XEventName.GraphicsExpose:
+ return ToString (GraphicsExposeEvent);
+ case XEventName.GravityNotify:
+ return ToString (GravityEvent);
+ case XEventName.KeymapNotify:
+ return ToString (KeymapEvent);
+ case XEventName.MapNotify:
+ return ToString (MapEvent);
+ case XEventName.MappingNotify:
+ return ToString (MappingEvent);
+ case XEventName.MapRequest:
+ return ToString (MapRequestEvent);
+ case XEventName.MotionNotify:
+ return ToString (MotionEvent);
+ case XEventName.NoExpose:
+ return ToString (NoExposeEvent);
+ case XEventName.PropertyNotify:
+ return ToString (PropertyEvent);
+ case XEventName.ReparentNotify:
+ return ToString (ReparentEvent);
+ case XEventName.ResizeRequest:
+ return ToString (ResizeRequestEvent);
+ case XEventName.SelectionClear:
+ return ToString (SelectionClearEvent);
+ case XEventName.SelectionNotify:
+ return ToString (SelectionEvent);
+ case XEventName.SelectionRequest:
+ return ToString (SelectionRequestEvent);
+ case XEventName.UnmapNotify:
+ return ToString (UnmapEvent);
+ case XEventName.VisibilityNotify:
+ return ToString (VisibilityEvent);
+ case XEventName.EnterNotify:
+ case XEventName.LeaveNotify:
+ return ToString (CrossingEvent);
+ 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)]
+ public 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)]
+ public 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)]
+ public struct XTextProperty {
+ public string value;
+ public IntPtr encoding;
+ public int format;
+ public IntPtr nitems;
+ }
+
+ public enum XWindowClass {
+ InputOutput = 1,
+ InputOnly = 2
+ }
+
+ public 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,
+
+ LASTEvent
+ }
+
+ [Flags]
+ public 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
+ }
+
+ public enum SendEventValues {
+ PointerWindow = 0,
+ InputFocus = 1
+ }
+
+ public enum CreateWindowArgs {
+ CopyFromParent = 0,
+ ParentRelative = 1,
+ InputOutput = 1,
+ InputOnly = 2
+ }
+
+ public enum Gravity {
+ ForgetGravity = 0,
+ NorthWestGravity= 1,
+ NorthGravity = 2,
+ NorthEastGravity= 3,
+ WestGravity = 4,
+ CenterGravity = 5,
+ EastGravity = 6,
+ SouthWestGravity= 7,
+ SouthGravity = 8,
+ SouthEastGravity= 9,
+ StaticGravity = 10
+ }
+
+ public 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,
+ }
+
+ [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
+ }
+
+ public enum GrabMode {
+ GrabModeSync = 0,
+ GrabModeAsync = 1
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public 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)]
+ public struct XColor {
+ public IntPtr pixel;
+ public ushort red;
+ public ushort green;
+ public ushort blue;
+ public byte flags;
+ public byte pad;
+ }
+
+ public enum Atom {
+ 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)]
+ public 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]
+ public enum ChangeWindowFlags {
+ CWX = 1<<0,
+ CWY = 1<<1,
+ CWWidth = 1<<2,
+ CWHeight = 1<<3,
+ CWBorderWidth = 1<<4,
+ CWSibling = 1<<5,
+ CWStackMode = 1<<6
+ }
+
+ public enum StackMode {
+ Above = 0,
+ Below = 1,
+ TopIf = 2,
+ BottomIf = 3,
+ Opposite = 4
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public 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]
+ public enum ColorFlags {
+ DoRed = 1<<0,
+ DoGreen = 1<<1,
+ DoBlue = 1<<2
+ }
+
+ public enum NotifyMode {
+ NotifyNormal = 0,
+ NotifyGrab = 1,
+ NotifyUngrab = 2
+ }
+
+ public enum NotifyDetail {
+ NotifyAncestor = 0,
+ NotifyVirtual = 1,
+ NotifyInferior = 2,
+ NotifyNonlinear = 3,
+ NotifyNonlinearVirtual = 4,
+ NotifyPointer = 5,
+ NotifyPointerRoot = 6,
+ NotifyDetailNone = 7
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public struct MotifWmHints {
+ public IntPtr flags;
+ public IntPtr functions;
+ public IntPtr decorations;
+ public IntPtr input_mode;
+ public IntPtr status;
+
+ public override string ToString ()
+ {
+ return string.Format("MotifWmHints <flags={0}, functions={1}, decorations={2}, input_mode={3}, status={4}", (MotifFlags) flags.ToInt32 (), (MotifFunctions) functions.ToInt32 (), (MotifDecorations) decorations.ToInt32 (), (MotifInputMode) input_mode.ToInt32 (), status.ToInt32 ());
+ }
+ }
+
+ [Flags]
+ public enum MotifFlags {
+ Functions = 1,
+ Decorations = 2,
+ InputMode = 4,
+ Status = 8
+ }
+
+ [Flags]
+ public enum MotifFunctions {
+ All = 0x01,
+ Resize = 0x02,
+ Move = 0x04,
+ Minimize = 0x08,
+ Maximize = 0x10,
+ Close = 0x20
+ }
+
+ [Flags]
+ public enum MotifDecorations {
+ All = 0x01,
+ Border = 0x02,
+ ResizeH = 0x04,
+ Title = 0x08,
+ Menu = 0x10,
+ Minimize = 0x20,
+ Maximize = 0x40,
+
+ }
+
+ [Flags]
+ public enum MotifInputMode {
+ Modeless = 0,
+ ApplicationModal = 1,
+ SystemModal = 2,
+ FullApplicationModal = 3
+ }
+
+ [Flags]
+ public 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
+ }
+
+ [Flags]
+ public enum MouseKeyMasks {
+ Button1Mask = (1 << 8),
+ Button2Mask = (1 << 9),
+ Button3Mask = (1 << 10),
+ Button4Mask = (1 << 11),
+ Button5Mask = (1 << 12),
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ public struct XModifierKeymap {
+ public int max_keypermod;
+ public IntPtr modifiermap;
+ }
+
+ public enum PropertyMode {
+ Replace = 0,
+ Prepend = 1,
+ Append = 2
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ public 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)]
+ public struct AutoRepeats {
+ [FieldOffset (0)]
+ public byte first;
+
+ [FieldOffset (31)]
+ public byte last;
+ }
+ }
+
+ [Flags]
+ public 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
+ }
+
+ public enum GCJoinStyle {
+ JoinMiter = 0,
+ JoinRound = 1,
+ JoinBevel = 2
+ }
+
+ public enum GCLineStyle {
+ LineSolid = 0,
+ LineOnOffDash = 1,
+ LineDoubleDash = 2
+ }
+
+ public enum GCCapStyle {
+ CapNotLast = 0,
+ CapButt = 1,
+ CapRound = 2,
+ CapProjecting = 3
+ }
+
+ public enum GCFillStyle {
+ FillSolid = 0,
+ FillTiled = 1,
+ FillStippled = 2,
+ FillOpaqueStppled = 3
+ }
+
+ public enum GCFillRule {
+ EvenOddRule = 0,
+ WindingRule = 1
+ }
+
+ public enum GCArcMode {
+ ArcChord = 0,
+ ArcPieSlice = 1
+ }
+
+ public enum GCSubwindowMode {
+ ClipByChildren = 0,
+ IncludeInferiors = 1
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ public 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;
+ }
+
+ public 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 */
+ }
+
+ public enum NetWindowManagerState {
+ Remove = 0,
+ Add = 1,
+ Toggle = 2
+ }
+
+ public enum RevertTo {
+ None = 0,
+ PointerRoot = 1,
+ Parent = 2
+ }
+
+ public enum MapState {
+ IsUnmapped = 0,
+ IsUnviewable = 1,
+ IsViewable = 2
+ }
+
+ public 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
+ }
+
+ public enum SystrayRequest {
+ SYSTEM_TRAY_REQUEST_DOCK = 0,
+ SYSTEM_TRAY_BEGIN_MESSAGE = 1,
+ SYSTEM_TRAY_CANCEL_MESSAGE = 2
+ }
+
+ public enum NetWmStateRequest {
+ _NET_WM_STATE_REMOVE = 0,
+ _NET_WM_STATE_ADD = 1,
+ _NET_WM_STATE_TOGGLE = 2
+ }
+
+ public enum NetWmMoveResize {
+ _NET_WM_MOVERESIZE_SIZE_TOPLEFT = 0,
+ _NET_WM_MOVERESIZE_SIZE_TOP = 1,
+ _NET_WM_MOVERESIZE_SIZE_TOPRIGHT = 2,
+ _NET_WM_MOVERESIZE_SIZE_RIGHT = 3,
+ _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT = 4,
+ _NET_WM_MOVERESIZE_SIZE_BOTTOM = 5,
+ _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT = 6,
+ _NET_WM_MOVERESIZE_SIZE_LEFT = 7,
+ _NET_WM_MOVERESIZE_MOVE = 8,
+ _NET_WM_MOVERESIZE_SIZE_KEYBOARD = 9,
+ _NET_WM_MOVERESIZE_MOVE_KEYBOARD = 10,
+ _NET_WM_MOVERESIZE_CANCEL = 11
+ }
+
+ [Flags]
+ public 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)]
+ public 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]
+ public 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)
+ }
+
+ public enum XInitialState {
+ DontCareState = 0,
+ NormalState = 1,
+ ZoomState = 2,
+ IconicState = 3,
+ InactiveState = 4
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ public 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)]
+ public 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;
+ }
+
+ public struct CaretStruct {
+ public Timer Timer; // Blink interval
+ public IntPtr Hwnd; // Window owning the caret
+ public IntPtr Window; // Actual X11 handle of the window
+ public int X; // X position of the caret
+ public int Y; // Y position of the caret
+ public int Width; // Width of the caret; if no image used
+ public int Height; // Height of the caret, if no image used
+ public bool Visible; // Is caret visible?
+ public bool On; // Caret blink display state: On/Off
+ public IntPtr gc; // Graphics context
+ public bool Paused; // Don't update right now
+ }
+
+ public struct HoverStruct {
+ public Timer Timer; // for hovering
+ public IntPtr Window; // Last window we entered; used to generate WM_MOUSEHOVER (handle is X11 handle)
+ public int X; // Last MouseMove X coordinate; used to generate WM_MOUSEHOVER
+ public int Y; // Last MouseMove Y coordinate; used to generate WM_MOUSEHOVER
+ public Size Size; // Size of the rectangle the mouse has to stay in to generate hover
+ public int Interval; // in milliseconds, how long to hold before hover is generated
+ public IntPtr Atom; // X Atom
+ }
+
+ /*public struct ClickStruct {
+ public IntPtr Hwnd; //
+ public Msg Message; //
+ public IntPtr wParam; //
+ public IntPtr lParam; //
+ public long Time; // Last time we received a mouse click
+ public bool Pending; // True if we haven't sent the last mouse click
+ }*/
+
+ public struct GrabStruct {
+ public bool Confined; // Is the current grab (if any) confined to grab_area?
+ public IntPtr Hwnd; // The window that is grabbed
+ public Rectangle Area; // The area the current grab is confined to
+ }
+
+ public delegate int XErrorHandler(IntPtr DisplayHandle, ref XErrorEvent error_event);
+
+ public 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]
+ public enum XIMProperties {
+ XIMPreeditArea = 0x0001,
+ XIMPreeditCallbacks = 0x0002,
+ XIMPreeditPosition = 0x0004,
+ XIMPreeditNothing = 0x0008,
+ XIMPreeditNone = 0x0010,
+ XIMStatusArea = 0x0100,
+ XIMStatusCallbacks = 0x0200,
+ XIMStatusNothing = 0x0400,
+ XIMStatusNone = 0x0800,
+ }
+
+ [Flags]
+ public enum WindowType {
+ Client = 1,
+ Whole = 2,
+ Both = 3
+ }
+
+ public 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
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ public struct XcursorImage
+ {
+ private int version;
+ public int size; /* nominal size for matching */
+ public int width; /* actual width */
+ public int height; /* actual height */
+ public int xhot; /* hot spot x (must be inside image) */
+ public int yhot; /* hot spot y (must be inside image) */
+ public int delay; /* hot spot y (must be inside image) */
+ public IntPtr pixels; /* pointer to pixels */
+
+ public override string ToString ()
+ {
+ return string.Format ("XCursorImage (version: {0}, size: {1}, width: {2}, height: {3}, xhot: {4}, yhot: {5}, delay: {6}, pixels: {7}",
+ version, size, width, height, xhot, yhot, delay, pixels);
+ }
+ } ;
+
+ [StructLayout (LayoutKind.Sequential)]
+ public struct XcursorImages
+ {
+ public int nimage; /* number of images */
+ public IntPtr images; /* array of XcursorImage pointers */
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ public struct XIMStyles
+ {
+ public ushort count_styles;
+ public IntPtr supported_styles;
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ [Serializable]
+ public class XPoint
+ {
+ public short X;
+ public short Y;
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ [Serializable]
+ public class XIMCallback
+ {
+ public IntPtr client_data;
+ public XIMProc callback;
+ [NonSerialized]
+ GCHandle gch;
+
+ public XIMCallback (IntPtr clientData, XIMProc proc)
+ {
+ this.client_data = clientData;
+ this.gch = GCHandle.Alloc (proc);
+ this.callback = proc;
+ }
+
+ ~XIMCallback ()
+ {
+ gch.Free ();
+ }
+ }
+
+ public enum XIMFeedback
+ {
+ Reverse = 1,
+ Underline = 2,
+ Highlight = 4,
+ Primary = 32,
+ Secondary = 64,
+ Tertiary = 128,
+ }
+
+ public struct XIMFeedbackStruct
+ {
+ public byte FeedbackMask; // one or more of XIMFeedback enum
+ }
+
+ public struct XIMText
+ {
+ public ushort Length;
+ public IntPtr Feedback; // to XIMFeedbackStruct
+ public bool EncodingIsWChar;
+ public IntPtr String; // it could be either char* or wchar_t*
+ }
+
+ public struct XIMPreeditDrawCallbackStruct
+ {
+ public int Caret;
+ public int ChangeFirst;
+ public int ChangeLength;
+ public IntPtr Text; // to XIMText
+ }
+
+ public enum XIMCaretDirection
+ {
+ XIMForwardChar,
+ XIMBackwardChar,
+ XIMForwardWord,
+ XIMBackwardWord,
+ XIMCaretUp,
+ XIMCaretDown,
+ XIMNextLine,
+ XIMPreviousLine,
+ XIMLineStart,
+ XIMLineEnd,
+ XIMAbsolutePosition,
+ XIMDontChange
+ }
+
+ public enum XIMCaretStyle
+ {
+ IsInvisible,
+ IsPrimary,
+ IsSecondary
+ }
+
+ public struct XIMPreeditCaretCallbackStruct
+ {
+ public int Position;
+ public XIMCaretDirection Direction;
+ public XIMCaretStyle Style;
+ }
+
+ // only PreeditStartCallback requires return value though.
+ public delegate int XIMProc (IntPtr xim, IntPtr clientData, IntPtr callData);
+
+ public static class XNames
+ {
+ public const string XNVaNestedList = "XNVaNestedList";
+ public const string XNQueryInputStyle = "queryInputStyle";
+ public const string XNClientWindow = "clientWindow";
+ public const string XNInputStyle = "inputStyle";
+ public const string XNFocusWindow = "focusWindow";
+
+ // XIMPreeditCallbacks delegate names.
+ public const string XNPreeditStartCallback = "preeditStartCallback";
+ public const string XNPreeditDoneCallback = "preeditDoneCallback";
+ public const string XNPreeditDrawCallback = "preeditDrawCallback";
+ public const string XNPreeditCaretCallback = "preeditCaretCallback";
+ public const string XNPreeditStateNotifyCallback = "preeditStateNotifyCallback";
+ public const string XNPreeditAttributes = "preeditAttributes";
+ // XIMStatusCallbacks delegate names.
+ public const string XNStatusStartCallback = "statusStartCallback";
+ public const string XNStatusDoneCallback = "statusDoneCallback";
+ public const string XNStatusDrawCallback = "statusDrawCallback";
+ public const string XNStatusAttributes = "statusAttributes";
+
+ public const string XNArea = "area";
+ public const string XNAreaNeeded = "areaNeeded";
+ public const string XNSpotLocation = "spotLocation";
+ public const string XNFontSet = "fontSet";
+ }
+
+ [StructLayout (LayoutKind.Sequential)]
+ public struct XineramaScreenInfo
+ {
+ public int screen_number;
+ public short x_org;
+ public short y_org;
+ public short width;
+ public short height;
+ }
+}
--- /dev/null
+//
+// XLibBackend.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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.
+using System;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using System.Text;
+
+
+
+namespace Crow.XCB
+{
+ using xcb_window_t = System.UInt32;
+ using xcb_pixmap_t = System.UInt32;
+ using xcb_cursor_t = System.UInt32;
+ using xcb_font_t = System.UInt32;
+ using xcb_colormap_t = System.UInt32;
+ using xcb_atom_t = System.UInt32;
+ using xcb_drawable_t = System.UInt32;
+ using xcb_visualid_t = System.UInt32;
+ using xcb_keysym_t = System.UInt32;
+ using xcb_keycode_t = System.Byte;
+ using xcb_timestamp_t = System.UInt32;
+
+ using xcb_void_cookie_t = System.UInt32;
+
+ using xkb_keycode_t = System.UInt32;
+
+ public class XCBBackend : IBackend
+ {
+ const byte XCB_COPY_FROM_PARENT = 0;
+
+
+ enum xcb_window_class_t : ushort {
+ COPY_FROM_PARENT = 0,
+ INPUT_OUTPUT = 1,
+ INPUT_ONLY = 2
+ }
+
+ enum xcb_button_t : byte {
+ Left = 1,
+ Middle,
+ Right,
+ WheelUp,
+ WheelDown,
+ But6,
+ But7,
+ But8,
+ But9,
+ But10,
+ }
+
+ [Flags]
+ enum xcb_event_mask_t : uint {
+ NO_EVENT = 0,
+ KEY_PRESS = 1,
+ KEY_RELEASE = 2,
+ BUTTON_PRESS = 4,
+ BUTTON_RELEASE = 8,
+ ENTER_WINDOW = 16,
+ LEAVE_WINDOW = 32,
+ POINTER_MOTION = 64,
+ POINTER_MOTION_HINT = 128,
+ BUTTON_1_MOTION = 256,
+ BUTTON_2_MOTION = 512,
+ BUTTON_3_MOTION = 1024,
+ BUTTON_4_MOTION = 2048,
+ BUTTON_5_MOTION = 4096,
+ BUTTON_MOTION = 8192,
+ KEYMAP_STATE = 16384,
+ EXPOSURE = 32768,
+ VISIBILITY_CHANGE = 65536,
+ STRUCTURE_NOTIFY = 131072,
+ RESIZE_REDIRECT = 262144,
+ SUBSTRUCTURE_NOTIFY = 524288,
+ SUBSTRUCTURE_REDIRECT = 1048576,
+ FOCUS_CHANGE = 2097152,
+ PROPERTY_CHANGE = 4194304,
+ COLOR_MAP_CHANGE = 8388608,
+ OWNER_GRAB_BUTTON = 16777216
+ }
+
+ enum xcb_event_type : byte {
+ KEY_PRESS = 2,
+ KEY_RELEASE,
+ BUTTON_PRESS,
+ BUTTON_RELEASE,
+ MOTION_NOTIFY,
+ ENTER_NOTIFY,
+ LEAVE_NOTIFY,
+ FOCUS_IN,
+ FOCUS_OUT,
+ KEYMAP_NOTIFY,
+ EXPOSE,
+ GRAPHICS_EXPOSURE,
+ NO_EXPOSURE,
+ VISIBILITY_NOTIFY,
+ CREATE_NOTIFY,
+ DESTROY_NOTIFY,
+ UNMAP_NOTIFY,
+ MAP_NOTIFY,
+ MAP_REQUEST,
+ REPARENT_NOTIFY,
+ CONFIGURE_NOTIFY,
+ CONFIGURE_REQUEST,
+ GRAVITY_NOTIFY,
+ RESIZE_REQUEST,
+ CIRCULATE_NOTIFY,
+ CIRCULATE_REQUEST,
+ PROPERTY_NOTIFY,
+ SELECTION_CLEAR,
+ SELECTION_REQUEST,
+ SELECTION_NOTIFY,
+ COLORMAP_NOTIFY,
+ CLIENT_MESSAGE,
+ MAPPING_NOTIFY,
+ GE_GENERIC,
+ }
+ [Flags]
+ enum xcb_cw_t : uint {
+ BACK_PIXMAP = 1,
+ BACK_PIXEL = 2,
+ BORDER_PIXMAP = 4,
+ BORDER_PIXEL = 8,
+ BIT_GRAVITY = 16,
+ WIN_GRAVITY = 32,
+ BACKING_STORE = 64,
+ BACKING_PLANES = 128,
+ BACKING_PIXEL = 256,
+ OVERRIDE_REDIRECT = 512,
+ SAVE_UNDER = 1024,
+ EVENT_MASK = 2048,
+ DONT_PROPAGATE = 4096,
+ COLORMAP = 8192,
+ CURSOR = 16384
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_generic_event_t{
+ public xcb_event_type response_type; /**< Type of the response */
+ public byte pad0; /**< Padding */
+ public UInt16 sequence; /**< Sequence number */
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
+ UInt32[] pad;
+ public UInt32 full_sequence; /**< full sequence */
+ }
+
+ [StructLayout(LayoutKind.Explicit, Size = 32)]
+ struct xcb_event_t{
+ [FieldOffsetAttribute(0)]
+ public xcb_event_type response_type;
+
+ [FieldOffsetAttribute(1)]
+ public byte detail;
+ [FieldOffsetAttribute(1)]
+ public xcb_keycode_t keycode;
+ [FieldOffsetAttribute(1)]
+ public xcb_button_t button;
+
+ [FieldOffsetAttribute(2)]
+ public UInt16 sequence;
+ [FieldOffsetAttribute(4)]
+ public xcb_timestamp_t time;
+ [FieldOffsetAttribute(8)]
+ public xcb_window_t root;
+ [FieldOffsetAttribute(12)]
+ public xcb_window_t evt;
+ [FieldOffsetAttribute(16)]
+ public xcb_window_t child;
+ [FieldOffsetAttribute(20)]
+ public UInt16 root_x;
+ [FieldOffsetAttribute(22)]
+ public UInt16 root_y;
+ [FieldOffsetAttribute(24)]
+ public UInt16 event_x;
+ [FieldOffsetAttribute(26)]
+ public UInt16 event_y;
+ [FieldOffsetAttribute(28)]
+ public UInt16 state;
+ [FieldOffsetAttribute(30)]
+ public byte same_screen;
+
+ [FieldOffsetAttribute(31)]
+ public byte same_screen_focus;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_key_press_event_t {
+ public xcb_event_type response_type;
+ public xcb_keycode_t detail;
+ public UInt16 sequence;
+ public xcb_timestamp_t time;
+ public xcb_window_t root;
+ public xcb_window_t evt;
+ public xcb_window_t child;
+ public UInt16 root_x;
+ public UInt16 root_y;
+ public UInt16 event_x;
+ public UInt16 event_y;
+ public UInt16 state;
+ public byte same_screen;
+ byte pad0;
+ }
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_button_press_event_t {
+ public xcb_event_type response_type;
+ public xcb_button_t detail;
+ public UInt16 sequence;
+ public xcb_timestamp_t time;
+ public xcb_window_t root;
+ public xcb_window_t evt;
+ public xcb_window_t child;
+ public UInt16 root_x;
+ public UInt16 root_y;
+ public UInt16 event_x;
+ public UInt16 event_y;
+ public UInt16 state;
+ public byte same_screen;
+ byte pad0;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_motion_notify_event_t {
+ public xcb_event_type response_type;
+ public byte detail;
+ public UInt16 sequence;
+ public xcb_timestamp_t time;
+ public xcb_window_t root;
+ public xcb_window_t evt;
+ public xcb_window_t child;
+ public UInt16 root_x;
+ public UInt16 root_y;
+ public UInt16 event_x;
+ public UInt16 event_y;
+ public UInt16 state;
+ public byte same_screen;
+ byte pad0;
+ }
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_iterator_t {
+ public IntPtr data;
+ public int rem;
+ public int index;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_screen_t {
+ public xcb_window_t root;
+ public xcb_colormap_t default_colormap;
+ public UInt32 white_pixel;
+ public UInt32 black_pixel;
+ public UInt32 current_input_masks;
+ public UInt16 width_in_pixels;
+ public UInt16 height_in_pixels;
+ public UInt16 width_in_millimeters;
+ public UInt16 height_in_millimeters;
+ public UInt16 min_installed_maps;
+ public UInt16 max_installed_maps;
+ public xcb_visualid_t root_visual;
+ public byte backing_stores;
+ public byte save_unders;
+ public byte root_depth;
+ public byte allowed_depths_len;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_visualtype_t {
+ public xcb_visualid_t visual_id;
+ public byte _class;
+ public byte bits_per_rgb_value;
+ public UInt16 colormap_entries;
+ public UInt32 red_mask;
+ public UInt32 green_mask;
+ public UInt32 blue_mask;
+ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
+ byte[] pad;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ struct xcb_generic_reply_t{
+ public byte response_type; /**< Type of the response */
+ byte pad0; /**< Padding */
+ public UInt16 sequence; /**< Sequence number */
+ public UInt32 length; /**< Length of the response */
+ }
+
+ enum xkb_keysym : uint {
+ NoSymbol = 0x000000,
+ VoidSymbol = 0xffffff,
+ BackSpace = 0xff08,
+ Tab = 0xff09,
+ Linefeed = 0xff0a,
+ Clear = 0xff0b,
+ Return = 0xff0d,
+ Pause = 0xff13,
+ Scroll_Lock = 0xff14,
+ Sys_Req = 0xff15,
+ Escape = 0xff1b,
+ Delete = 0xffff,
+ Multi_key = 0xff20,
+ Codeinput = 0xff37,
+ SingleCandidate = 0xff3c,
+ MultipleCandidate = 0xff3d,
+ PreviousCandidate = 0xff3e,
+ Kanji = 0xff21,
+ Muhenkan = 0xff22,
+ Henkan_Mode = 0xff23,
+ Henkan = 0xff23,
+ Romaji = 0xff24,
+ Hiragana = 0xff25,
+ Katakana = 0xff26,
+ Hiragana_Katakana = 0xff27,
+ Zenkaku = 0xff28,
+ Hankaku = 0xff29,
+ Zenkaku_Hankaku = 0xff2a,
+ Touroku = 0xff2b,
+ Massyo = 0xff2c,
+ Kana_Lock = 0xff2d,
+ Kana_Shift = 0xff2e,
+ Eisu_Shift = 0xff2f,
+ Eisu_toggle = 0xff30,
+ Kanji_Bangou = 0xff37,
+ Zen_Koho = 0xff3d,
+ Mae_Koho = 0xff3e,
+ Home = 0xff50,
+ Left = 0xff51,
+ Up = 0xff52,
+ Right = 0xff53,
+ Down = 0xff54,
+ Prior = 0xff55,
+ Page_Up = 0xff55,
+ Next = 0xff56,
+ Page_Down = 0xff56,
+ End = 0xff57,
+ Begin = 0xff58,
+ Select = 0xff60,
+ Print = 0xff61,
+ Execute = 0xff62,
+ Insert = 0xff63,
+ Undo = 0xff65,
+ Redo = 0xff66,
+ Menu = 0xff67,
+ Find = 0xff68,
+ Cancel = 0xff69,
+ Help = 0xff6a,
+ Break = 0xff6b,
+ Mode_switch = 0xff7e,
+ script_switch = 0xff7e,
+ Num_Lock = 0xff7f,
+ KP_Space = 0xff80,
+ KP_Tab = 0xff89,
+ KP_Enter = 0xff8d,
+ KP_F1 = 0xff91,
+ KP_F2 = 0xff92,
+ KP_F3 = 0xff93,
+ KP_F4 = 0xff94,
+ KP_Home = 0xff95,
+ KP_Left = 0xff96,
+ KP_Up = 0xff97,
+ KP_Right = 0xff98,
+ KP_Down = 0xff99,
+ KP_Prior = 0xff9a,
+ KP_Page_Up = 0xff9a,
+ KP_Next = 0xff9b,
+ KP_Page_Down = 0xff9b,
+ KP_End = 0xff9c,
+ KP_Begin = 0xff9d,
+ KP_Insert = 0xff9e,
+ KP_Delete = 0xff9f,
+ KP_Equal = 0xffbd,
+ KP_Multiply = 0xffaa,
+ KP_Add = 0xffab,
+ KP_Separator = 0xffac,
+ KP_Subtract = 0xffad,
+ KP_Decimal = 0xffae,
+ KP_Divide = 0xffaf,
+ KP_0 = 0xffb0,
+ KP_1 = 0xffb1,
+ KP_2 = 0xffb2,
+ KP_3 = 0xffb3,
+ KP_4 = 0xffb4,
+ KP_5 = 0xffb5,
+ KP_6 = 0xffb6,
+ KP_7 = 0xffb7,
+ KP_8 = 0xffb8,
+ KP_9 = 0xffb9,
+ F1 = 0xffbe,
+ F2 = 0xffbf,
+ F3 = 0xffc0,
+ F4 = 0xffc1,
+ F5 = 0xffc2,
+ F6 = 0xffc3,
+ F7 = 0xffc4,
+ F8 = 0xffc5,
+ F9 = 0xffc6,
+ F10 = 0xffc7,
+ F11 = 0xffc8,
+ L1 = 0xffc8,
+ F12 = 0xffc9,
+ L2 = 0xffc9,
+ F13 = 0xffca,
+ L3 = 0xffca,
+ F14 = 0xffcb,
+ L4 = 0xffcb,
+ F15 = 0xffcc,
+ L5 = 0xffcc,
+ F16 = 0xffcd,
+ L6 = 0xffcd,
+ F17 = 0xffce,
+ L7 = 0xffce,
+ F18 = 0xffcf,
+ L8 = 0xffcf,
+ F19 = 0xffd0,
+ L9 = 0xffd0,
+ F20 = 0xffd1,
+ L10 = 0xffd1,
+ F21 = 0xffd2,
+ R1 = 0xffd2,
+ F22 = 0xffd3,
+ R2 = 0xffd3,
+ F23 = 0xffd4,
+ R3 = 0xffd4,
+ F24 = 0xffd5,
+ R4 = 0xffd5,
+ F25 = 0xffd6,
+ R5 = 0xffd6,
+ F26 = 0xffd7,
+ R6 = 0xffd7,
+ F27 = 0xffd8,
+ R7 = 0xffd8,
+ F28 = 0xffd9,
+ R8 = 0xffd9,
+ F29 = 0xffda,
+ R9 = 0xffda,
+ F30 = 0xffdb,
+ R10 = 0xffdb,
+ F31 = 0xffdc,
+ R11 = 0xffdc,
+ F32 = 0xffdd,
+ R12 = 0xffdd,
+ F33 = 0xffde,
+ R13 = 0xffde,
+ F34 = 0xffdf,
+ R14 = 0xffdf,
+ F35 = 0xffe0,
+ R15 = 0xffe0,
+ Shift_L = 0xffe1,
+ Shift_R = 0xffe2,
+ Control_L = 0xffe3,
+ Control_R = 0xffe4,
+ Caps_Lock = 0xffe5,
+ Shift_Lock = 0xffe6,
+ Meta_L = 0xffe7,
+ Meta_R = 0xffe8,
+ Alt_L = 0xffe9,
+ Alt_R = 0xffea,
+ Super_L = 0xffeb,
+ Super_R = 0xffec,
+ Hyper_L = 0xffed,
+ Hyper_R = 0xffee,
+ ISO_Lock = 0xfe01,
+ ISO_Level2_Latch = 0xfe02,
+ ISO_Level3_Shift = 0xfe03,
+ ISO_Level3_Latch = 0xfe04,
+ ISO_Level3_Lock = 0xfe05,
+ ISO_Level5_Shift = 0xfe11,
+ ISO_Level5_Latch = 0xfe12,
+ ISO_Level5_Lock = 0xfe13,
+ ISO_Group_Shift = 0xff7e,
+ ISO_Group_Latch = 0xfe06,
+ ISO_Group_Lock = 0xfe07,
+ ISO_Next_Group = 0xfe08,
+ ISO_Next_Group_Lock = 0xfe09,
+ ISO_Prev_Group = 0xfe0a,
+ ISO_Prev_Group_Lock = 0xfe0b,
+ ISO_First_Group = 0xfe0c,
+ ISO_First_Group_Lock = 0xfe0d,
+ ISO_Last_Group = 0xfe0e,
+ ISO_Last_Group_Lock = 0xfe0f,
+ ISO_Left_Tab = 0xfe20,
+ ISO_Move_Line_Up = 0xfe21,
+ ISO_Move_Line_Down = 0xfe22,
+ ISO_Partial_Line_Up = 0xfe23,
+ ISO_Partial_Line_Down = 0xfe24,
+ ISO_Partial_Space_Left = 0xfe25,
+ ISO_Partial_Space_Right = 0xfe26,
+ ISO_Set_Margin_Left = 0xfe27,
+ ISO_Set_Margin_Right = 0xfe28,
+ ISO_Release_Margin_Left = 0xfe29,
+ ISO_Release_Margin_Right = 0xfe2a,
+ ISO_Release_Both_Margins = 0xfe2b,
+ ISO_Fast_Cursor_Left = 0xfe2c,
+ ISO_Fast_Cursor_Right = 0xfe2d,
+ ISO_Fast_Cursor_Up = 0xfe2e,
+ ISO_Fast_Cursor_Down = 0xfe2f,
+ ISO_Continuous_Underline = 0xfe30,
+ ISO_Discontinuous_Underline = 0xfe31,
+ ISO_Emphasize = 0xfe32,
+ ISO_Center_Object = 0xfe33,
+ ISO_Enter = 0xfe34,
+ dead_grave = 0xfe50,
+ dead_acute = 0xfe51,
+ dead_circumflex = 0xfe52,
+ dead_tilde = 0xfe53,
+ dead_perispomeni = 0xfe53,
+ dead_macron = 0xfe54,
+ dead_breve = 0xfe55,
+ dead_abovedot = 0xfe56,
+ dead_diaeresis = 0xfe57,
+ dead_abovering = 0xfe58,
+ dead_doubleacute = 0xfe59,
+ dead_caron = 0xfe5a,
+ dead_cedilla = 0xfe5b,
+ dead_ogonek = 0xfe5c,
+ dead_iota = 0xfe5d,
+ dead_voiced_sound = 0xfe5e,
+ dead_semivoiced_sound = 0xfe5f,
+ dead_belowdot = 0xfe60,
+ dead_hook = 0xfe61,
+ dead_horn = 0xfe62,
+ dead_stroke = 0xfe63,
+ dead_abovecomma = 0xfe64,
+ dead_psili = 0xfe64,
+ dead_abovereversedcomma = 0xfe65,
+ dead_dasia = 0xfe65,
+ dead_doublegrave = 0xfe66,
+ dead_belowring = 0xfe67,
+ dead_belowmacron = 0xfe68,
+ dead_belowcircumflex = 0xfe69,
+ dead_belowtilde = 0xfe6a,
+ dead_belowbreve = 0xfe6b,
+ dead_belowdiaeresis = 0xfe6c,
+ dead_invertedbreve = 0xfe6d,
+ dead_belowcomma = 0xfe6e,
+ dead_currency = 0xfe6f,
+ dead_lowline = 0xfe90,
+ dead_aboveverticalline = 0xfe91,
+ dead_belowverticalline = 0xfe92,
+ dead_longsolidusoverlay = 0xfe93,
+ dead_a = 0xfe80,
+ dead_A = 0xfe81,
+ dead_e = 0xfe82,
+ dead_E = 0xfe83,
+ dead_i = 0xfe84,
+ dead_I = 0xfe85,
+ dead_o = 0xfe86,
+ dead_O = 0xfe87,
+ dead_u = 0xfe88,
+ dead_U = 0xfe89,
+ dead_small_schwa = 0xfe8a,
+ dead_capital_schwa = 0xfe8b,
+ dead_greek = 0xfe8c,
+ First_Virtual_Screen = 0xfed0,
+ Prev_Virtual_Screen = 0xfed1,
+ Next_Virtual_Screen = 0xfed2,
+ Last_Virtual_Screen = 0xfed4,
+ Terminate_Server = 0xfed5,
+ AccessX_Enable = 0xfe70,
+ AccessX_Feedback_Enable = 0xfe71,
+ RepeatKeys_Enable = 0xfe72,
+ SlowKeys_Enable = 0xfe73,
+ BounceKeys_Enable = 0xfe74,
+ StickyKeys_Enable = 0xfe75,
+ MouseKeys_Enable = 0xfe76,
+ MouseKeys_Accel_Enable = 0xfe77,
+ Overlay1_Enable = 0xfe78,
+ Overlay2_Enable = 0xfe79,
+ AudibleBell_Enable = 0xfe7a,
+ Pointer_Left = 0xfee0,
+ Pointer_Right = 0xfee1,
+ Pointer_Up = 0xfee2,
+ Pointer_Down = 0xfee3,
+ Pointer_UpLeft = 0xfee4,
+ Pointer_UpRight = 0xfee5,
+ Pointer_DownLeft = 0xfee6,
+ Pointer_DownRight = 0xfee7,
+ Pointer_Button_Dflt = 0xfee8,
+ Pointer_Button1 = 0xfee9,
+ Pointer_Button2 = 0xfeea,
+ Pointer_Button3 = 0xfeeb,
+ Pointer_Button4 = 0xfeec,
+ Pointer_Button5 = 0xfeed,
+ Pointer_DblClick_Dflt = 0xfeee,
+ Pointer_DblClick1 = 0xfeef,
+ Pointer_DblClick2 = 0xfef0,
+ Pointer_DblClick3 = 0xfef1,
+ Pointer_DblClick4 = 0xfef2,
+ Pointer_DblClick5 = 0xfef3,
+ Pointer_Drag_Dflt = 0xfef4,
+ Pointer_Drag1 = 0xfef5,
+ Pointer_Drag2 = 0xfef6,
+ Pointer_Drag3 = 0xfef7,
+ Pointer_Drag4 = 0xfef8,
+ Pointer_Drag5 = 0xfefd,
+ Pointer_EnableKeys = 0xfef9,
+ Pointer_Accelerate = 0xfefa,
+ Pointer_DfltBtnNext = 0xfefb,
+ Pointer_DfltBtnPrev = 0xfefc,
+ ch = 0xfea0,
+ Ch = 0xfea1,
+ CH = 0xfea2,
+ c_h = 0xfea3,
+ C_h = 0xfea4,
+ C_H = 0xfea5,
+ key_3270_Duplicate = 0xfd01,
+ key_3270_FieldMark = 0xfd02,
+ key_3270_Right2 = 0xfd03,
+ key_3270_Left2 = 0xfd04,
+ key_3270_BackTab = 0xfd05,
+ key_3270_EraseEOF = 0xfd06,
+ key_3270_EraseInput = 0xfd07,
+ key_3270_Reset = 0xfd08,
+ key_3270_Quit = 0xfd09,
+ key_3270_PA1 = 0xfd0a,
+ key_3270_PA2 = 0xfd0b,
+ key_3270_PA3 = 0xfd0c,
+ key_3270_Test = 0xfd0d,
+ key_3270_Attn = 0xfd0e,
+ key_3270_CursorBlink = 0xfd0f,
+ key_3270_AltCursor = 0xfd10,
+ key_3270_KeyClick = 0xfd11,
+ key_3270_Jump = 0xfd12,
+ key_3270_Ident = 0xfd13,
+ key_3270_Rule = 0xfd14,
+ key_3270_Copy = 0xfd15,
+ key_3270_Play = 0xfd16,
+ key_3270_Setup = 0xfd17,
+ key_3270_Record = 0xfd18,
+ key_3270_ChangeScreen = 0xfd19,
+ key_3270_DeleteWord = 0xfd1a,
+ key_3270_ExSelect = 0xfd1b,
+ key_3270_CursorSelect = 0xfd1c,
+ key_3270_PrintScreen = 0xfd1d,
+ key_3270_Enter = 0xfd1e,
+ space = 0x0020,
+ exclam = 0x0021,
+ quotedbl = 0x0022,
+ numbersign = 0x0023,
+ dollar = 0x0024,
+ percent = 0x0025,
+ ampersand = 0x0026,
+ apostrophe = 0x0027,
+ quoteright = 0x0027,
+ parenleft = 0x0028,
+ parenright = 0x0029,
+ asterisk = 0x002a,
+ plus = 0x002b,
+ comma = 0x002c,
+ minus = 0x002d,
+ period = 0x002e,
+ slash = 0x002f,
+ key_0 = 0x0030,
+ key_1 = 0x0031,
+ key_2 = 0x0032,
+ key_3 = 0x0033,
+ key_4 = 0x0034,
+ key_5 = 0x0035,
+ key_6 = 0x0036,
+ key_7 = 0x0037,
+ key_8 = 0x0038,
+ key_9 = 0x0039,
+ colon = 0x003a,
+ semicolon = 0x003b,
+ less = 0x003c,
+ equal = 0x003d,
+ greater = 0x003e,
+ question = 0x003f,
+ at = 0x0040,
+ A = 0x0041,
+ B = 0x0042,
+ C = 0x0043,
+ D = 0x0044,
+ E = 0x0045,
+ F = 0x0046,
+ G = 0x0047,
+ H = 0x0048,
+ I = 0x0049,
+ J = 0x004a,
+ K = 0x004b,
+ L = 0x004c,
+ M = 0x004d,
+ N = 0x004e,
+ O = 0x004f,
+ P = 0x0050,
+ Q = 0x0051,
+ R = 0x0052,
+ S = 0x0053,
+ T = 0x0054,
+ U = 0x0055,
+ V = 0x0056,
+ W = 0x0057,
+ X = 0x0058,
+ Y = 0x0059,
+ Z = 0x005a,
+ bracketleft = 0x005b,
+ backslash = 0x005c,
+ bracketright = 0x005d,
+ asciicircum = 0x005e,
+ underscore = 0x005f,
+ grave = 0x0060,
+ quoteleft = 0x0060,
+ a = 0x0061,
+ b = 0x0062,
+ c = 0x0063,
+ d = 0x0064,
+ e = 0x0065,
+ f = 0x0066,
+ g = 0x0067,
+ h = 0x0068,
+ i = 0x0069,
+ j = 0x006a,
+ k = 0x006b,
+ l = 0x006c,
+ m = 0x006d,
+ n = 0x006e,
+ o = 0x006f,
+ p = 0x0070,
+ q = 0x0071,
+ r = 0x0072,
+ s = 0x0073,
+ t = 0x0074,
+ u = 0x0075,
+ v = 0x0076,
+ w = 0x0077,
+ x = 0x0078,
+ y = 0x0079,
+ z = 0x007a,
+ braceleft = 0x007b,
+ bar = 0x007c,
+ braceright = 0x007d,
+ asciitilde = 0x007e,
+ nobreakspace = 0x00a0,
+ exclamdown = 0x00a1,
+ cent = 0x00a2,
+ sterling = 0x00a3,
+ currency = 0x00a4,
+ yen = 0x00a5,
+ brokenbar = 0x00a6,
+ section = 0x00a7,
+ diaeresis = 0x00a8,
+ copyright = 0x00a9,
+ ordfeminine = 0x00aa,
+ guillemotleft = 0x00ab,
+ notsign = 0x00ac,
+ hyphen = 0x00ad,
+ registered = 0x00ae,
+ macron = 0x00af,
+ degree = 0x00b0,
+ plusminus = 0x00b1,
+ twosuperior = 0x00b2,
+ threesuperior = 0x00b3,
+ acute = 0x00b4,
+ mu = 0x00b5,
+ paragraph = 0x00b6,
+ periodcentered = 0x00b7,
+ cedilla = 0x00b8,
+ onesuperior = 0x00b9,
+ masculine = 0x00ba,
+ guillemotright = 0x00bb,
+ onequarter = 0x00bc,
+ onehalf = 0x00bd,
+ threequarters = 0x00be,
+ questiondown = 0x00bf,
+ Agrave = 0x00c0,
+ Aacute = 0x00c1,
+ Acircumflex = 0x00c2,
+ Atilde = 0x00c3,
+ Adiaeresis = 0x00c4,
+ Aring = 0x00c5,
+ AE = 0x00c6,
+ Ccedilla = 0x00c7,
+ Egrave = 0x00c8,
+ Eacute = 0x00c9,
+ Ecircumflex = 0x00ca,
+ Ediaeresis = 0x00cb,
+ Igrave = 0x00cc,
+ Iacute = 0x00cd,
+ Icircumflex = 0x00ce,
+ Idiaeresis = 0x00cf,
+ ETH = 0x00d0,
+ Eth = 0x00d0,
+ Ntilde = 0x00d1,
+ Ograve = 0x00d2,
+ Oacute = 0x00d3,
+ Ocircumflex = 0x00d4,
+ Otilde = 0x00d5,
+ Odiaeresis = 0x00d6,
+ multiply = 0x00d7,
+ Oslash = 0x00d8,
+ Ooblique = 0x00d8,
+ Ugrave = 0x00d9,
+ Uacute = 0x00da,
+ Ucircumflex = 0x00db,
+ Udiaeresis = 0x00dc,
+ Yacute = 0x00dd,
+ THORN = 0x00de,
+ Thorn = 0x00de,
+ ssharp = 0x00df,
+ agrave = 0x00e0,
+ aacute = 0x00e1,
+ acircumflex = 0x00e2,
+ atilde = 0x00e3,
+ adiaeresis = 0x00e4,
+ aring = 0x00e5,
+ ae = 0x00e6,
+ ccedilla = 0x00e7,
+ egrave = 0x00e8,
+ eacute = 0x00e9,
+ ecircumflex = 0x00ea,
+ ediaeresis = 0x00eb,
+ igrave = 0x00ec,
+ iacute = 0x00ed,
+ icircumflex = 0x00ee,
+ idiaeresis = 0x00ef,
+ eth = 0x00f0,
+ ntilde = 0x00f1,
+ ograve = 0x00f2,
+ oacute = 0x00f3,
+ ocircumflex = 0x00f4,
+ otilde = 0x00f5,
+ odiaeresis = 0x00f6,
+ division = 0x00f7,
+ oslash = 0x00f8,
+ ooblique = 0x00f8,
+ ugrave = 0x00f9,
+ uacute = 0x00fa,
+ ucircumflex = 0x00fb,
+ udiaeresis = 0x00fc,
+ yacute = 0x00fd,
+ thorn = 0x00fe,
+ ydiaeresis = 0x00ff,
+ Aogonek = 0x01a1,
+ breve = 0x01a2,
+ Lstroke = 0x01a3,
+ Lcaron = 0x01a5,
+ Sacute = 0x01a6,
+ Scaron = 0x01a9,
+ Scedilla = 0x01aa,
+ Tcaron = 0x01ab,
+ Zacute = 0x01ac,
+ Zcaron = 0x01ae,
+ Zabovedot = 0x01af,
+ aogonek = 0x01b1,
+ ogonek = 0x01b2,
+ lstroke = 0x01b3,
+ lcaron = 0x01b5,
+ sacute = 0x01b6,
+ caron = 0x01b7,
+ scaron = 0x01b9,
+ scedilla = 0x01ba,
+ tcaron = 0x01bb,
+ zacute = 0x01bc,
+ doubleacute = 0x01bd,
+ zcaron = 0x01be,
+ zabovedot = 0x01bf,
+ Racute = 0x01c0,
+ Abreve = 0x01c3,
+ Lacute = 0x01c5,
+ Cacute = 0x01c6,
+ Ccaron = 0x01c8,
+ Eogonek = 0x01ca,
+ Ecaron = 0x01cc,
+ Dcaron = 0x01cf,
+ Dstroke = 0x01d0,
+ Nacute = 0x01d1,
+ Ncaron = 0x01d2,
+ Odoubleacute = 0x01d5,
+ Rcaron = 0x01d8,
+ Uring = 0x01d9,
+ Udoubleacute = 0x01db,
+ Tcedilla = 0x01de,
+ racute = 0x01e0,
+ abreve = 0x01e3,
+ lacute = 0x01e5,
+ cacute = 0x01e6,
+ ccaron = 0x01e8,
+ eogonek = 0x01ea,
+ ecaron = 0x01ec,
+ dcaron = 0x01ef,
+ dstroke = 0x01f0,
+ nacute = 0x01f1,
+ ncaron = 0x01f2,
+ odoubleacute = 0x01f5,
+ rcaron = 0x01f8,
+ uring = 0x01f9,
+ udoubleacute = 0x01fb,
+ tcedilla = 0x01fe,
+ abovedot = 0x01ff,
+ Hstroke = 0x02a1,
+ Hcircumflex = 0x02a6,
+ Iabovedot = 0x02a9,
+ Gbreve = 0x02ab,
+ Jcircumflex = 0x02ac,
+ hstroke = 0x02b1,
+ hcircumflex = 0x02b6,
+ idotless = 0x02b9,
+ gbreve = 0x02bb,
+ jcircumflex = 0x02bc,
+ Cabovedot = 0x02c5,
+ Ccircumflex = 0x02c6,
+ Gabovedot = 0x02d5,
+ Gcircumflex = 0x02d8,
+ Ubreve = 0x02dd,
+ Scircumflex = 0x02de,
+ cabovedot = 0x02e5,
+ ccircumflex = 0x02e6,
+ gabovedot = 0x02f5,
+ gcircumflex = 0x02f8,
+ ubreve = 0x02fd,
+ scircumflex = 0x02fe,
+ kra = 0x03a2,
+ kappa = 0x03a2,
+ Rcedilla = 0x03a3,
+ Itilde = 0x03a5,
+ Lcedilla = 0x03a6,
+ Emacron = 0x03aa,
+ Gcedilla = 0x03ab,
+ Tslash = 0x03ac,
+ rcedilla = 0x03b3,
+ itilde = 0x03b5,
+ lcedilla = 0x03b6,
+ emacron = 0x03ba,
+ gcedilla = 0x03bb,
+ tslash = 0x03bc,
+ ENG = 0x03bd,
+ eng = 0x03bf,
+ Amacron = 0x03c0,
+ Iogonek = 0x03c7,
+ Eabovedot = 0x03cc,
+ Imacron = 0x03cf,
+ Ncedilla = 0x03d1,
+ Omacron = 0x03d2,
+ Kcedilla = 0x03d3,
+ Uogonek = 0x03d9,
+ Utilde = 0x03dd,
+ Umacron = 0x03de,
+ amacron = 0x03e0,
+ iogonek = 0x03e7,
+ eabovedot = 0x03ec,
+ imacron = 0x03ef,
+ ncedilla = 0x03f1,
+ omacron = 0x03f2,
+ kcedilla = 0x03f3,
+ uogonek = 0x03f9,
+ utilde = 0x03fd,
+ umacron = 0x03fe,
+ Wcircumflex = 0x1000174,
+ wcircumflex = 0x1000175,
+ Ycircumflex = 0x1000176,
+ ycircumflex = 0x1000177,
+ Babovedot = 0x1001e02,
+ babovedot = 0x1001e03,
+ Dabovedot = 0x1001e0a,
+ dabovedot = 0x1001e0b,
+ Fabovedot = 0x1001e1e,
+ fabovedot = 0x1001e1f,
+ Mabovedot = 0x1001e40,
+ mabovedot = 0x1001e41,
+ Pabovedot = 0x1001e56,
+ pabovedot = 0x1001e57,
+ Sabovedot = 0x1001e60,
+ sabovedot = 0x1001e61,
+ Tabovedot = 0x1001e6a,
+ tabovedot = 0x1001e6b,
+ Wgrave = 0x1001e80,
+ wgrave = 0x1001e81,
+ Wacute = 0x1001e82,
+ wacute = 0x1001e83,
+ Wdiaeresis = 0x1001e84,
+ wdiaeresis = 0x1001e85,
+ Ygrave = 0x1001ef2,
+ ygrave = 0x1001ef3,
+ OE = 0x13bc,
+ oe = 0x13bd,
+ Ydiaeresis = 0x13be,
+ overline = 0x047e,
+ kana_fullstop = 0x04a1,
+ kana_openingbracket = 0x04a2,
+ kana_closingbracket = 0x04a3,
+ kana_comma = 0x04a4,
+ kana_conjunctive = 0x04a5,
+ kana_middledot = 0x04a5,
+ kana_WO = 0x04a6,
+ kana_a = 0x04a7,
+ kana_i = 0x04a8,
+ kana_u = 0x04a9,
+ kana_e = 0x04aa,
+ kana_o = 0x04ab,
+ kana_ya = 0x04ac,
+ kana_yu = 0x04ad,
+ kana_yo = 0x04ae,
+ kana_tsu = 0x04af,
+ kana_tu = 0x04af,
+ prolongedsound = 0x04b0,
+ kana_A = 0x04b1,
+ kana_I = 0x04b2,
+ kana_U = 0x04b3,
+ kana_E = 0x04b4,
+ kana_O = 0x04b5,
+ kana_KA = 0x04b6,
+ kana_KI = 0x04b7,
+ kana_KU = 0x04b8,
+ kana_KE = 0x04b9,
+ kana_KO = 0x04ba,
+ kana_SA = 0x04bb,
+ kana_SHI = 0x04bc,
+ kana_SU = 0x04bd,
+ kana_SE = 0x04be,
+ kana_SO = 0x04bf,
+ kana_TA = 0x04c0,
+ kana_CHI = 0x04c1,
+ kana_TI = 0x04c1,
+ kana_TSU = 0x04c2,
+ kana_TU = 0x04c2,
+ kana_TE = 0x04c3,
+ kana_TO = 0x04c4,
+ kana_NA = 0x04c5,
+ kana_NI = 0x04c6,
+ kana_NU = 0x04c7,
+ kana_NE = 0x04c8,
+ kana_NO = 0x04c9,
+ kana_HA = 0x04ca,
+ kana_HI = 0x04cb,
+ kana_FU = 0x04cc,
+ kana_HU = 0x04cc,
+ kana_HE = 0x04cd,
+ kana_HO = 0x04ce,
+ kana_MA = 0x04cf,
+ kana_MI = 0x04d0,
+ kana_MU = 0x04d1,
+ kana_ME = 0x04d2,
+ kana_MO = 0x04d3,
+ kana_YA = 0x04d4,
+ kana_YU = 0x04d5,
+ kana_YO = 0x04d6,
+ kana_RA = 0x04d7,
+ kana_RI = 0x04d8,
+ kana_RU = 0x04d9,
+ kana_RE = 0x04da,
+ kana_RO = 0x04db,
+ kana_WA = 0x04dc,
+ kana_N = 0x04dd,
+ voicedsound = 0x04de,
+ semivoicedsound = 0x04df,
+ kana_switch = 0xff7e,
+ Farsi_0 = 0x10006f0,
+ Farsi_1 = 0x10006f1,
+ Farsi_2 = 0x10006f2,
+ Farsi_3 = 0x10006f3,
+ Farsi_4 = 0x10006f4,
+ Farsi_5 = 0x10006f5,
+ Farsi_6 = 0x10006f6,
+ Farsi_7 = 0x10006f7,
+ Farsi_8 = 0x10006f8,
+ Farsi_9 = 0x10006f9,
+ Arabic_percent = 0x100066a,
+ Arabic_superscript_alef = 0x1000670,
+ Arabic_tteh = 0x1000679,
+ Arabic_peh = 0x100067e,
+ Arabic_tcheh = 0x1000686,
+ Arabic_ddal = 0x1000688,
+ Arabic_rreh = 0x1000691,
+ Arabic_comma = 0x05ac,
+ Arabic_fullstop = 0x10006d4,
+ Arabic_0 = 0x1000660,
+ Arabic_1 = 0x1000661,
+ Arabic_2 = 0x1000662,
+ Arabic_3 = 0x1000663,
+ Arabic_4 = 0x1000664,
+ Arabic_5 = 0x1000665,
+ Arabic_6 = 0x1000666,
+ Arabic_7 = 0x1000667,
+ Arabic_8 = 0x1000668,
+ Arabic_9 = 0x1000669,
+ Arabic_semicolon = 0x05bb,
+ Arabic_question_mark = 0x05bf,
+ Arabic_hamza = 0x05c1,
+ Arabic_maddaonalef = 0x05c2,
+ Arabic_hamzaonalef = 0x05c3,
+ Arabic_hamzaonwaw = 0x05c4,
+ Arabic_hamzaunderalef = 0x05c5,
+ Arabic_hamzaonyeh = 0x05c6,
+ Arabic_alef = 0x05c7,
+ Arabic_beh = 0x05c8,
+ Arabic_tehmarbuta = 0x05c9,
+ Arabic_teh = 0x05ca,
+ Arabic_theh = 0x05cb,
+ Arabic_jeem = 0x05cc,
+ Arabic_hah = 0x05cd,
+ Arabic_khah = 0x05ce,
+ Arabic_dal = 0x05cf,
+ Arabic_thal = 0x05d0,
+ Arabic_ra = 0x05d1,
+ Arabic_zain = 0x05d2,
+ Arabic_seen = 0x05d3,
+ Arabic_sheen = 0x05d4,
+ Arabic_sad = 0x05d5,
+ Arabic_dad = 0x05d6,
+ Arabic_tah = 0x05d7,
+ Arabic_zah = 0x05d8,
+ Arabic_ain = 0x05d9,
+ Arabic_ghain = 0x05da,
+ Arabic_tatweel = 0x05e0,
+ Arabic_feh = 0x05e1,
+ Arabic_qaf = 0x05e2,
+ Arabic_kaf = 0x05e3,
+ Arabic_lam = 0x05e4,
+ Arabic_meem = 0x05e5,
+ Arabic_noon = 0x05e6,
+ Arabic_ha = 0x05e7,
+ Arabic_heh = 0x05e7,
+ Arabic_waw = 0x05e8,
+ Arabic_alefmaksura = 0x05e9,
+ Arabic_yeh = 0x05ea,
+ Arabic_fathatan = 0x05eb,
+ Arabic_dammatan = 0x05ec,
+ Arabic_kasratan = 0x05ed,
+ Arabic_fatha = 0x05ee,
+ Arabic_damma = 0x05ef,
+ Arabic_kasra = 0x05f0,
+ Arabic_shadda = 0x05f1,
+ Arabic_sukun = 0x05f2,
+ Arabic_madda_above = 0x1000653,
+ Arabic_hamza_above = 0x1000654,
+ Arabic_hamza_below = 0x1000655,
+ Arabic_jeh = 0x1000698,
+ Arabic_veh = 0x10006a4,
+ Arabic_keheh = 0x10006a9,
+ Arabic_gaf = 0x10006af,
+ Arabic_noon_ghunna = 0x10006ba,
+ Arabic_heh_doachashmee = 0x10006be,
+ Farsi_yeh = 0x10006cc,
+ Arabic_farsi_yeh = 0x10006cc,
+ Arabic_yeh_baree = 0x10006d2,
+ Arabic_heh_goal = 0x10006c1,
+ Arabic_switch = 0xff7e,
+ Cyrillic_GHE_bar = 0x1000492,
+ Cyrillic_ghe_bar = 0x1000493,
+ Cyrillic_ZHE_descender = 0x1000496,
+ Cyrillic_zhe_descender = 0x1000497,
+ Cyrillic_KA_descender = 0x100049a,
+ Cyrillic_ka_descender = 0x100049b,
+ Cyrillic_KA_vertstroke = 0x100049c,
+ Cyrillic_ka_vertstroke = 0x100049d,
+ Cyrillic_EN_descender = 0x10004a2,
+ Cyrillic_en_descender = 0x10004a3,
+ Cyrillic_U_straight = 0x10004ae,
+ Cyrillic_u_straight = 0x10004af,
+ Cyrillic_U_straight_bar = 0x10004b0,
+ Cyrillic_u_straight_bar = 0x10004b1,
+ Cyrillic_HA_descender = 0x10004b2,
+ Cyrillic_ha_descender = 0x10004b3,
+ Cyrillic_CHE_descender = 0x10004b6,
+ Cyrillic_che_descender = 0x10004b7,
+ Cyrillic_CHE_vertstroke = 0x10004b8,
+ Cyrillic_che_vertstroke = 0x10004b9,
+ Cyrillic_SHHA = 0x10004ba,
+ Cyrillic_shha = 0x10004bb,
+ Cyrillic_SCHWA = 0x10004d8,
+ Cyrillic_schwa = 0x10004d9,
+ Cyrillic_I_macron = 0x10004e2,
+ Cyrillic_i_macron = 0x10004e3,
+ Cyrillic_O_bar = 0x10004e8,
+ Cyrillic_o_bar = 0x10004e9,
+ Cyrillic_U_macron = 0x10004ee,
+ Cyrillic_u_macron = 0x10004ef,
+ Serbian_dje = 0x06a1,
+ Macedonia_gje = 0x06a2,
+ Cyrillic_io = 0x06a3,
+ Ukrainian_ie = 0x06a4,
+ Ukranian_je = 0x06a4,
+ Macedonia_dse = 0x06a5,
+ Ukrainian_i = 0x06a6,
+ Ukranian_i = 0x06a6,
+ Ukrainian_yi = 0x06a7,
+ Ukranian_yi = 0x06a7,
+ Cyrillic_je = 0x06a8,
+ Serbian_je = 0x06a8,
+ Cyrillic_lje = 0x06a9,
+ Serbian_lje = 0x06a9,
+ Cyrillic_nje = 0x06aa,
+ Serbian_nje = 0x06aa,
+ Serbian_tshe = 0x06ab,
+ Macedonia_kje = 0x06ac,
+ Ukrainian_ghe_with_upturn = 0x06ad,
+ Byelorussian_shortu = 0x06ae,
+ Cyrillic_dzhe = 0x06af,
+ Serbian_dze = 0x06af,
+ numerosign = 0x06b0,
+ Serbian_DJE = 0x06b1,
+ Macedonia_GJE = 0x06b2,
+ Cyrillic_IO = 0x06b3,
+ Ukrainian_IE = 0x06b4,
+ Ukranian_JE = 0x06b4,
+ Macedonia_DSE = 0x06b5,
+ Ukrainian_I = 0x06b6,
+ Ukranian_I = 0x06b6,
+ Ukrainian_YI = 0x06b7,
+ Ukranian_YI = 0x06b7,
+ Cyrillic_JE = 0x06b8,
+ Serbian_JE = 0x06b8,
+ Cyrillic_LJE = 0x06b9,
+ Serbian_LJE = 0x06b9,
+ Cyrillic_NJE = 0x06ba,
+ Serbian_NJE = 0x06ba,
+ Serbian_TSHE = 0x06bb,
+ Macedonia_KJE = 0x06bc,
+ Ukrainian_GHE_WITH_UPTURN = 0x06bd,
+ Byelorussian_SHORTU = 0x06be,
+ Cyrillic_DZHE = 0x06bf,
+ Serbian_DZE = 0x06bf,
+ Cyrillic_yu = 0x06c0,
+ Cyrillic_a = 0x06c1,
+ Cyrillic_be = 0x06c2,
+ Cyrillic_tse = 0x06c3,
+ Cyrillic_de = 0x06c4,
+ Cyrillic_ie = 0x06c5,
+ Cyrillic_ef = 0x06c6,
+ Cyrillic_ghe = 0x06c7,
+ Cyrillic_ha = 0x06c8,
+ Cyrillic_i = 0x06c9,
+ Cyrillic_shorti = 0x06ca,
+ Cyrillic_ka = 0x06cb,
+ Cyrillic_el = 0x06cc,
+ Cyrillic_em = 0x06cd,
+ Cyrillic_en = 0x06ce,
+ Cyrillic_o = 0x06cf,
+ Cyrillic_pe = 0x06d0,
+ Cyrillic_ya = 0x06d1,
+ Cyrillic_er = 0x06d2,
+ Cyrillic_es = 0x06d3,
+ Cyrillic_te = 0x06d4,
+ Cyrillic_u = 0x06d5,
+ Cyrillic_zhe = 0x06d6,
+ Cyrillic_ve = 0x06d7,
+ Cyrillic_softsign = 0x06d8,
+ Cyrillic_yeru = 0x06d9,
+ Cyrillic_ze = 0x06da,
+ Cyrillic_sha = 0x06db,
+ Cyrillic_e = 0x06dc,
+ Cyrillic_shcha = 0x06dd,
+ Cyrillic_che = 0x06de,
+ Cyrillic_hardsign = 0x06df,
+ Cyrillic_YU = 0x06e0,
+ Cyrillic_A = 0x06e1,
+ Cyrillic_BE = 0x06e2,
+ Cyrillic_TSE = 0x06e3,
+ Cyrillic_DE = 0x06e4,
+ Cyrillic_IE = 0x06e5,
+ Cyrillic_EF = 0x06e6,
+ Cyrillic_GHE = 0x06e7,
+ Cyrillic_HA = 0x06e8,
+ Cyrillic_I = 0x06e9,
+ Cyrillic_SHORTI = 0x06ea,
+ Cyrillic_KA = 0x06eb,
+ Cyrillic_EL = 0x06ec,
+ Cyrillic_EM = 0x06ed,
+ Cyrillic_EN = 0x06ee,
+ Cyrillic_O = 0x06ef,
+ Cyrillic_PE = 0x06f0,
+ Cyrillic_YA = 0x06f1,
+ Cyrillic_ER = 0x06f2,
+ Cyrillic_ES = 0x06f3,
+ Cyrillic_TE = 0x06f4,
+ Cyrillic_U = 0x06f5,
+ Cyrillic_ZHE = 0x06f6,
+ Cyrillic_VE = 0x06f7,
+ Cyrillic_SOFTSIGN = 0x06f8,
+ Cyrillic_YERU = 0x06f9,
+ Cyrillic_ZE = 0x06fa,
+ Cyrillic_SHA = 0x06fb,
+ Cyrillic_E = 0x06fc,
+ Cyrillic_SHCHA = 0x06fd,
+ Cyrillic_CHE = 0x06fe,
+ Cyrillic_HARDSIGN = 0x06ff,
+ Greek_ALPHAaccent = 0x07a1,
+ Greek_EPSILONaccent = 0x07a2,
+ Greek_ETAaccent = 0x07a3,
+ Greek_IOTAaccent = 0x07a4,
+ Greek_IOTAdieresis = 0x07a5,
+ Greek_IOTAdiaeresis = 0x07a5,
+ Greek_OMICRONaccent = 0x07a7,
+ Greek_UPSILONaccent = 0x07a8,
+ Greek_UPSILONdieresis = 0x07a9,
+ Greek_OMEGAaccent = 0x07ab,
+ Greek_accentdieresis = 0x07ae,
+ Greek_horizbar = 0x07af,
+ Greek_alphaaccent = 0x07b1,
+ Greek_epsilonaccent = 0x07b2,
+ Greek_etaaccent = 0x07b3,
+ Greek_iotaaccent = 0x07b4,
+ Greek_iotadieresis = 0x07b5,
+ Greek_iotaaccentdieresis = 0x07b6,
+ Greek_omicronaccent = 0x07b7,
+ Greek_upsilonaccent = 0x07b8,
+ Greek_upsilondieresis = 0x07b9,
+ Greek_upsilonaccentdieresis = 0x07ba,
+ Greek_omegaaccent = 0x07bb,
+ Greek_ALPHA = 0x07c1,
+ Greek_BETA = 0x07c2,
+ Greek_GAMMA = 0x07c3,
+ Greek_DELTA = 0x07c4,
+ Greek_EPSILON = 0x07c5,
+ Greek_ZETA = 0x07c6,
+ Greek_ETA = 0x07c7,
+ Greek_THETA = 0x07c8,
+ Greek_IOTA = 0x07c9,
+ Greek_KAPPA = 0x07ca,
+ Greek_LAMDA = 0x07cb,
+ Greek_LAMBDA = 0x07cb,
+ Greek_MU = 0x07cc,
+ Greek_NU = 0x07cd,
+ Greek_XI = 0x07ce,
+ Greek_OMICRON = 0x07cf,
+ Greek_PI = 0x07d0,
+ Greek_RHO = 0x07d1,
+ Greek_SIGMA = 0x07d2,
+ Greek_TAU = 0x07d4,
+ Greek_UPSILON = 0x07d5,
+ Greek_PHI = 0x07d6,
+ Greek_CHI = 0x07d7,
+ Greek_PSI = 0x07d8,
+ Greek_OMEGA = 0x07d9,
+ Greek_alpha = 0x07e1,
+ Greek_beta = 0x07e2,
+ Greek_gamma = 0x07e3,
+ Greek_delta = 0x07e4,
+ Greek_epsilon = 0x07e5,
+ Greek_zeta = 0x07e6,
+ Greek_eta = 0x07e7,
+ Greek_theta = 0x07e8,
+ Greek_iota = 0x07e9,
+ Greek_kappa = 0x07ea,
+ Greek_lamda = 0x07eb,
+ Greek_lambda = 0x07eb,
+ Greek_mu = 0x07ec,
+ Greek_nu = 0x07ed,
+ Greek_xi = 0x07ee,
+ Greek_omicron = 0x07ef,
+ Greek_pi = 0x07f0,
+ Greek_rho = 0x07f1,
+ Greek_sigma = 0x07f2,
+ Greek_finalsmallsigma = 0x07f3,
+ Greek_tau = 0x07f4,
+ Greek_upsilon = 0x07f5,
+ Greek_phi = 0x07f6,
+ Greek_chi = 0x07f7,
+ Greek_psi = 0x07f8,
+ Greek_omega = 0x07f9,
+ Greek_switch = 0xff7e,
+ leftradical = 0x08a1,
+ topleftradical = 0x08a2,
+ horizconnector = 0x08a3,
+ topintegral = 0x08a4,
+ botintegral = 0x08a5,
+ vertconnector = 0x08a6,
+ topleftsqbracket = 0x08a7,
+ botleftsqbracket = 0x08a8,
+ toprightsqbracket = 0x08a9,
+ botrightsqbracket = 0x08aa,
+ topleftparens = 0x08ab,
+ botleftparens = 0x08ac,
+ toprightparens = 0x08ad,
+ botrightparens = 0x08ae,
+ leftmiddlecurlybrace = 0x08af,
+ rightmiddlecurlybrace = 0x08b0,
+ topleftsummation = 0x08b1,
+ botleftsummation = 0x08b2,
+ topvertsummationconnector = 0x08b3,
+ botvertsummationconnector = 0x08b4,
+ toprightsummation = 0x08b5,
+ botrightsummation = 0x08b6,
+ rightmiddlesummation = 0x08b7,
+ lessthanequal = 0x08bc,
+ notequal = 0x08bd,
+ greaterthanequal = 0x08be,
+ integral = 0x08bf,
+ therefore = 0x08c0,
+ variation = 0x08c1,
+ infinity = 0x08c2,
+ nabla = 0x08c5,
+ approximate = 0x08c8,
+ similarequal = 0x08c9,
+ ifonlyif = 0x08cd,
+ implies = 0x08ce,
+ identical = 0x08cf,
+ radical = 0x08d6,
+ includedin = 0x08da,
+ includes = 0x08db,
+ intersection = 0x08dc,
+ union = 0x08dd,
+ logicaland = 0x08de,
+ logicalor = 0x08df,
+ partialderivative = 0x08ef,
+ function = 0x08f6,
+ leftarrow = 0x08fb,
+ uparrow = 0x08fc,
+ rightarrow = 0x08fd,
+ downarrow = 0x08fe,
+ blank = 0x09df,
+ soliddiamond = 0x09e0,
+ checkerboard = 0x09e1,
+ ht = 0x09e2,
+ ff = 0x09e3,
+ cr = 0x09e4,
+ lf = 0x09e5,
+ nl = 0x09e8,
+ vt = 0x09e9,
+ lowrightcorner = 0x09ea,
+ uprightcorner = 0x09eb,
+ upleftcorner = 0x09ec,
+ lowleftcorner = 0x09ed,
+ crossinglines = 0x09ee,
+ horizlinescan1 = 0x09ef,
+ horizlinescan3 = 0x09f0,
+ horizlinescan5 = 0x09f1,
+ horizlinescan7 = 0x09f2,
+ horizlinescan9 = 0x09f3,
+ leftt = 0x09f4,
+ rightt = 0x09f5,
+ bott = 0x09f6,
+ topt = 0x09f7,
+ vertbar = 0x09f8,
+ emspace = 0x0aa1,
+ enspace = 0x0aa2,
+ em3space = 0x0aa3,
+ em4space = 0x0aa4,
+ digitspace = 0x0aa5,
+ punctspace = 0x0aa6,
+ thinspace = 0x0aa7,
+ hairspace = 0x0aa8,
+ emdash = 0x0aa9,
+ endash = 0x0aaa,
+ signifblank = 0x0aac,
+ ellipsis = 0x0aae,
+ doubbaselinedot = 0x0aaf,
+ onethird = 0x0ab0,
+ twothirds = 0x0ab1,
+ onefifth = 0x0ab2,
+ twofifths = 0x0ab3,
+ threefifths = 0x0ab4,
+ fourfifths = 0x0ab5,
+ onesixth = 0x0ab6,
+ fivesixths = 0x0ab7,
+ careof = 0x0ab8,
+ figdash = 0x0abb,
+ leftanglebracket = 0x0abc,
+ decimalpoint = 0x0abd,
+ rightanglebracket = 0x0abe,
+ marker = 0x0abf,
+ oneeighth = 0x0ac3,
+ threeeighths = 0x0ac4,
+ fiveeighths = 0x0ac5,
+ seveneighths = 0x0ac6,
+ trademark = 0x0ac9,
+ signaturemark = 0x0aca,
+ trademarkincircle = 0x0acb,
+ leftopentriangle = 0x0acc,
+ rightopentriangle = 0x0acd,
+ emopencircle = 0x0ace,
+ emopenrectangle = 0x0acf,
+ leftsinglequotemark = 0x0ad0,
+ rightsinglequotemark = 0x0ad1,
+ leftdoublequotemark = 0x0ad2,
+ rightdoublequotemark = 0x0ad3,
+ prescription = 0x0ad4,
+ permille = 0x0ad5,
+ minutes = 0x0ad6,
+ seconds = 0x0ad7,
+ latincross = 0x0ad9,
+ hexagram = 0x0ada,
+ filledrectbullet = 0x0adb,
+ filledlefttribullet = 0x0adc,
+ filledrighttribullet = 0x0add,
+ emfilledcircle = 0x0ade,
+ emfilledrect = 0x0adf,
+ enopencircbullet = 0x0ae0,
+ enopensquarebullet = 0x0ae1,
+ openrectbullet = 0x0ae2,
+ opentribulletup = 0x0ae3,
+ opentribulletdown = 0x0ae4,
+ openstar = 0x0ae5,
+ enfilledcircbullet = 0x0ae6,
+ enfilledsqbullet = 0x0ae7,
+ filledtribulletup = 0x0ae8,
+ filledtribulletdown = 0x0ae9,
+ leftpointer = 0x0aea,
+ rightpointer = 0x0aeb,
+ club = 0x0aec,
+ diamond = 0x0aed,
+ heart = 0x0aee,
+ maltesecross = 0x0af0,
+ dagger = 0x0af1,
+ doubledagger = 0x0af2,
+ checkmark = 0x0af3,
+ ballotcross = 0x0af4,
+ musicalsharp = 0x0af5,
+ musicalflat = 0x0af6,
+ malesymbol = 0x0af7,
+ femalesymbol = 0x0af8,
+ telephone = 0x0af9,
+ telephonerecorder = 0x0afa,
+ phonographcopyright = 0x0afb,
+ caret = 0x0afc,
+ singlelowquotemark = 0x0afd,
+ doublelowquotemark = 0x0afe,
+ cursor = 0x0aff,
+ leftcaret = 0x0ba3,
+ rightcaret = 0x0ba6,
+ downcaret = 0x0ba8,
+ upcaret = 0x0ba9,
+ overbar = 0x0bc0,
+ downtack = 0x0bc2,
+ upshoe = 0x0bc3,
+ downstile = 0x0bc4,
+ underbar = 0x0bc6,
+ jot = 0x0bca,
+ quad = 0x0bcc,
+ uptack = 0x0bce,
+ circle = 0x0bcf,
+ upstile = 0x0bd3,
+ downshoe = 0x0bd6,
+ rightshoe = 0x0bd8,
+ leftshoe = 0x0bda,
+ lefttack = 0x0bdc,
+ righttack = 0x0bfc,
+ hebrew_doublelowline = 0x0cdf,
+ hebrew_aleph = 0x0ce0,
+ hebrew_bet = 0x0ce1,
+ hebrew_beth = 0x0ce1,
+ hebrew_gimel = 0x0ce2,
+ hebrew_gimmel = 0x0ce2,
+ hebrew_dalet = 0x0ce3,
+ hebrew_daleth = 0x0ce3,
+ hebrew_he = 0x0ce4,
+ hebrew_waw = 0x0ce5,
+ hebrew_zain = 0x0ce6,
+ hebrew_zayin = 0x0ce6,
+ hebrew_chet = 0x0ce7,
+ hebrew_het = 0x0ce7,
+ hebrew_tet = 0x0ce8,
+ hebrew_teth = 0x0ce8,
+ hebrew_yod = 0x0ce9,
+ hebrew_finalkaph = 0x0cea,
+ hebrew_kaph = 0x0ceb,
+ hebrew_lamed = 0x0cec,
+ hebrew_finalmem = 0x0ced,
+ hebrew_mem = 0x0cee,
+ hebrew_finalnun = 0x0cef,
+ hebrew_nun = 0x0cf0,
+ hebrew_samech = 0x0cf1,
+ hebrew_samekh = 0x0cf1,
+ hebrew_ayin = 0x0cf2,
+ hebrew_finalpe = 0x0cf3,
+ hebrew_pe = 0x0cf4,
+ hebrew_finalzade = 0x0cf5,
+ hebrew_finalzadi = 0x0cf5,
+ hebrew_zade = 0x0cf6,
+ hebrew_zadi = 0x0cf6,
+ hebrew_qoph = 0x0cf7,
+ hebrew_kuf = 0x0cf7,
+ hebrew_resh = 0x0cf8,
+ hebrew_shin = 0x0cf9,
+ hebrew_taw = 0x0cfa,
+ hebrew_taf = 0x0cfa,
+ Hebrew_switch = 0xff7e,
+ Thai_kokai = 0x0da1,
+ Thai_khokhai = 0x0da2,
+ Thai_khokhuat = 0x0da3,
+ Thai_khokhwai = 0x0da4,
+ Thai_khokhon = 0x0da5,
+ Thai_khorakhang = 0x0da6,
+ Thai_ngongu = 0x0da7,
+ Thai_chochan = 0x0da8,
+ Thai_choching = 0x0da9,
+ Thai_chochang = 0x0daa,
+ Thai_soso = 0x0dab,
+ Thai_chochoe = 0x0dac,
+ Thai_yoying = 0x0dad,
+ Thai_dochada = 0x0dae,
+ Thai_topatak = 0x0daf,
+ Thai_thothan = 0x0db0,
+ Thai_thonangmontho = 0x0db1,
+ Thai_thophuthao = 0x0db2,
+ Thai_nonen = 0x0db3,
+ Thai_dodek = 0x0db4,
+ Thai_totao = 0x0db5,
+ Thai_thothung = 0x0db6,
+ Thai_thothahan = 0x0db7,
+ Thai_thothong = 0x0db8,
+ Thai_nonu = 0x0db9,
+ Thai_bobaimai = 0x0dba,
+ Thai_popla = 0x0dbb,
+ Thai_phophung = 0x0dbc,
+ Thai_fofa = 0x0dbd,
+ Thai_phophan = 0x0dbe,
+ Thai_fofan = 0x0dbf,
+ Thai_phosamphao = 0x0dc0,
+ Thai_moma = 0x0dc1,
+ Thai_yoyak = 0x0dc2,
+ Thai_rorua = 0x0dc3,
+ Thai_ru = 0x0dc4,
+ Thai_loling = 0x0dc5,
+ Thai_lu = 0x0dc6,
+ Thai_wowaen = 0x0dc7,
+ Thai_sosala = 0x0dc8,
+ Thai_sorusi = 0x0dc9,
+ Thai_sosua = 0x0dca,
+ Thai_hohip = 0x0dcb,
+ Thai_lochula = 0x0dcc,
+ Thai_oang = 0x0dcd,
+ Thai_honokhuk = 0x0dce,
+ Thai_paiyannoi = 0x0dcf,
+ Thai_saraa = 0x0dd0,
+ Thai_maihanakat = 0x0dd1,
+ Thai_saraaa = 0x0dd2,
+ Thai_saraam = 0x0dd3,
+ Thai_sarai = 0x0dd4,
+ Thai_saraii = 0x0dd5,
+ Thai_saraue = 0x0dd6,
+ Thai_sarauee = 0x0dd7,
+ Thai_sarau = 0x0dd8,
+ Thai_sarauu = 0x0dd9,
+ Thai_phinthu = 0x0dda,
+ Thai_maihanakat_maitho = 0x0dde,
+ Thai_baht = 0x0ddf,
+ Thai_sarae = 0x0de0,
+ Thai_saraae = 0x0de1,
+ Thai_sarao = 0x0de2,
+ Thai_saraaimaimuan = 0x0de3,
+ Thai_saraaimaimalai = 0x0de4,
+ Thai_lakkhangyao = 0x0de5,
+ Thai_maiyamok = 0x0de6,
+ Thai_maitaikhu = 0x0de7,
+ Thai_maiek = 0x0de8,
+ Thai_maitho = 0x0de9,
+ Thai_maitri = 0x0dea,
+ Thai_maichattawa = 0x0deb,
+ Thai_thanthakhat = 0x0dec,
+ Thai_nikhahit = 0x0ded,
+ Thai_leksun = 0x0df0,
+ Thai_leknung = 0x0df1,
+ Thai_leksong = 0x0df2,
+ Thai_leksam = 0x0df3,
+ Thai_leksi = 0x0df4,
+ Thai_lekha = 0x0df5,
+ Thai_lekhok = 0x0df6,
+ Thai_lekchet = 0x0df7,
+ Thai_lekpaet = 0x0df8,
+ Thai_lekkao = 0x0df9,
+ Hangul = 0xff31,
+ Hangul_Start = 0xff32,
+ Hangul_End = 0xff33,
+ Hangul_Hanja = 0xff34,
+ Hangul_Jamo = 0xff35,
+ Hangul_Romaja = 0xff36,
+ Hangul_Codeinput = 0xff37,
+ Hangul_Jeonja = 0xff38,
+ Hangul_Banja = 0xff39,
+ Hangul_PreHanja = 0xff3a,
+ Hangul_PostHanja = 0xff3b,
+ Hangul_SingleCandidate = 0xff3c,
+ Hangul_MultipleCandidate = 0xff3d,
+ Hangul_PreviousCandidate = 0xff3e,
+ Hangul_Special = 0xff3f,
+ Hangul_switch = 0xff7e,
+ Hangul_Kiyeog = 0x0ea1,
+ Hangul_SsangKiyeog = 0x0ea2,
+ Hangul_KiyeogSios = 0x0ea3,
+ Hangul_Nieun = 0x0ea4,
+ Hangul_NieunJieuj = 0x0ea5,
+ Hangul_NieunHieuh = 0x0ea6,
+ Hangul_Dikeud = 0x0ea7,
+ Hangul_SsangDikeud = 0x0ea8,
+ Hangul_Rieul = 0x0ea9,
+ Hangul_RieulKiyeog = 0x0eaa,
+ Hangul_RieulMieum = 0x0eab,
+ Hangul_RieulPieub = 0x0eac,
+ Hangul_RieulSios = 0x0ead,
+ Hangul_RieulTieut = 0x0eae,
+ Hangul_RieulPhieuf = 0x0eaf,
+ Hangul_RieulHieuh = 0x0eb0,
+ Hangul_Mieum = 0x0eb1,
+ Hangul_Pieub = 0x0eb2,
+ Hangul_SsangPieub = 0x0eb3,
+ Hangul_PieubSios = 0x0eb4,
+ Hangul_Sios = 0x0eb5,
+ Hangul_SsangSios = 0x0eb6,
+ Hangul_Ieung = 0x0eb7,
+ Hangul_Jieuj = 0x0eb8,
+ Hangul_SsangJieuj = 0x0eb9,
+ Hangul_Cieuc = 0x0eba,
+ Hangul_Khieuq = 0x0ebb,
+ Hangul_Tieut = 0x0ebc,
+ Hangul_Phieuf = 0x0ebd,
+ Hangul_Hieuh = 0x0ebe,
+ Hangul_A = 0x0ebf,
+ Hangul_AE = 0x0ec0,
+ Hangul_YA = 0x0ec1,
+ Hangul_YAE = 0x0ec2,
+ Hangul_EO = 0x0ec3,
+ Hangul_E = 0x0ec4,
+ Hangul_YEO = 0x0ec5,
+ Hangul_YE = 0x0ec6,
+ Hangul_O = 0x0ec7,
+ Hangul_WA = 0x0ec8,
+ Hangul_WAE = 0x0ec9,
+ Hangul_OE = 0x0eca,
+ Hangul_YO = 0x0ecb,
+ Hangul_U = 0x0ecc,
+ Hangul_WEO = 0x0ecd,
+ Hangul_WE = 0x0ece,
+ Hangul_WI = 0x0ecf,
+ Hangul_YU = 0x0ed0,
+ Hangul_EU = 0x0ed1,
+ Hangul_YI = 0x0ed2,
+ Hangul_I = 0x0ed3,
+ Hangul_J_Kiyeog = 0x0ed4,
+ Hangul_J_SsangKiyeog = 0x0ed5,
+ Hangul_J_KiyeogSios = 0x0ed6,
+ Hangul_J_Nieun = 0x0ed7,
+ Hangul_J_NieunJieuj = 0x0ed8,
+ Hangul_J_NieunHieuh = 0x0ed9,
+ Hangul_J_Dikeud = 0x0eda,
+ Hangul_J_Rieul = 0x0edb,
+ Hangul_J_RieulKiyeog = 0x0edc,
+ Hangul_J_RieulMieum = 0x0edd,
+ Hangul_J_RieulPieub = 0x0ede,
+ Hangul_J_RieulSios = 0x0edf,
+ Hangul_J_RieulTieut = 0x0ee0,
+ Hangul_J_RieulPhieuf = 0x0ee1,
+ Hangul_J_RieulHieuh = 0x0ee2,
+ Hangul_J_Mieum = 0x0ee3,
+ Hangul_J_Pieub = 0x0ee4,
+ Hangul_J_PieubSios = 0x0ee5,
+ Hangul_J_Sios = 0x0ee6,
+ Hangul_J_SsangSios = 0x0ee7,
+ Hangul_J_Ieung = 0x0ee8,
+ Hangul_J_Jieuj = 0x0ee9,
+ Hangul_J_Cieuc = 0x0eea,
+ Hangul_J_Khieuq = 0x0eeb,
+ Hangul_J_Tieut = 0x0eec,
+ Hangul_J_Phieuf = 0x0eed,
+ Hangul_J_Hieuh = 0x0eee,
+ Hangul_RieulYeorinHieuh = 0x0eef,
+ Hangul_SunkyeongeumMieum = 0x0ef0,
+ Hangul_SunkyeongeumPieub = 0x0ef1,
+ Hangul_PanSios = 0x0ef2,
+ Hangul_KkogjiDalrinIeung = 0x0ef3,
+ Hangul_SunkyeongeumPhieuf = 0x0ef4,
+ Hangul_YeorinHieuh = 0x0ef5,
+ Hangul_AraeA = 0x0ef6,
+ Hangul_AraeAE = 0x0ef7,
+ Hangul_J_PanSios = 0x0ef8,
+ Hangul_J_KkogjiDalrinIeung = 0x0ef9,
+ Hangul_J_YeorinHieuh = 0x0efa,
+ Korean_Won = 0x0eff,
+ Armenian_ligature_ew = 0x1000587,
+ Armenian_full_stop = 0x1000589,
+ Armenian_verjaket = 0x1000589,
+ Armenian_separation_mark = 0x100055d,
+ Armenian_but = 0x100055d,
+ Armenian_hyphen = 0x100058a,
+ Armenian_yentamna = 0x100058a,
+ Armenian_exclam = 0x100055c,
+ Armenian_amanak = 0x100055c,
+ Armenian_accent = 0x100055b,
+ Armenian_shesht = 0x100055b,
+ Armenian_question = 0x100055e,
+ Armenian_paruyk = 0x100055e,
+ Armenian_AYB = 0x1000531,
+ Armenian_ayb = 0x1000561,
+ Armenian_BEN = 0x1000532,
+ Armenian_ben = 0x1000562,
+ Armenian_GIM = 0x1000533,
+ Armenian_gim = 0x1000563,
+ Armenian_DA = 0x1000534,
+ Armenian_da = 0x1000564,
+ Armenian_YECH = 0x1000535,
+ Armenian_yech = 0x1000565,
+ Armenian_ZA = 0x1000536,
+ Armenian_za = 0x1000566,
+ Armenian_E = 0x1000537,
+ Armenian_e = 0x1000567,
+ Armenian_AT = 0x1000538,
+ Armenian_at = 0x1000568,
+ Armenian_TO = 0x1000539,
+ Armenian_to = 0x1000569,
+ Armenian_ZHE = 0x100053a,
+ Armenian_zhe = 0x100056a,
+ Armenian_INI = 0x100053b,
+ Armenian_ini = 0x100056b,
+ Armenian_LYUN = 0x100053c,
+ Armenian_lyun = 0x100056c,
+ Armenian_KHE = 0x100053d,
+ Armenian_khe = 0x100056d,
+ Armenian_TSA = 0x100053e,
+ Armenian_tsa = 0x100056e,
+ Armenian_KEN = 0x100053f,
+ Armenian_ken = 0x100056f,
+ Armenian_HO = 0x1000540,
+ Armenian_ho = 0x1000570,
+ Armenian_DZA = 0x1000541,
+ Armenian_dza = 0x1000571,
+ Armenian_GHAT = 0x1000542,
+ Armenian_ghat = 0x1000572,
+ Armenian_TCHE = 0x1000543,
+ Armenian_tche = 0x1000573,
+ Armenian_MEN = 0x1000544,
+ Armenian_men = 0x1000574,
+ Armenian_HI = 0x1000545,
+ Armenian_hi = 0x1000575,
+ Armenian_NU = 0x1000546,
+ Armenian_nu = 0x1000576,
+ Armenian_SHA = 0x1000547,
+ Armenian_sha = 0x1000577,
+ Armenian_VO = 0x1000548,
+ Armenian_vo = 0x1000578,
+ Armenian_CHA = 0x1000549,
+ Armenian_cha = 0x1000579,
+ Armenian_PE = 0x100054a,
+ Armenian_pe = 0x100057a,
+ Armenian_JE = 0x100054b,
+ Armenian_je = 0x100057b,
+ Armenian_RA = 0x100054c,
+ Armenian_ra = 0x100057c,
+ Armenian_SE = 0x100054d,
+ Armenian_se = 0x100057d,
+ Armenian_VEV = 0x100054e,
+ Armenian_vev = 0x100057e,
+ Armenian_TYUN = 0x100054f,
+ Armenian_tyun = 0x100057f,
+ Armenian_RE = 0x1000550,
+ Armenian_re = 0x1000580,
+ Armenian_TSO = 0x1000551,
+ Armenian_tso = 0x1000581,
+ Armenian_VYUN = 0x1000552,
+ Armenian_vyun = 0x1000582,
+ Armenian_PYUR = 0x1000553,
+ Armenian_pyur = 0x1000583,
+ Armenian_KE = 0x1000554,
+ Armenian_ke = 0x1000584,
+ Armenian_O = 0x1000555,
+ Armenian_o = 0x1000585,
+ Armenian_FE = 0x1000556,
+ Armenian_fe = 0x1000586,
+ Armenian_apostrophe = 0x100055a,
+ Georgian_an = 0x10010d0,
+ Georgian_ban = 0x10010d1,
+ Georgian_gan = 0x10010d2,
+ Georgian_don = 0x10010d3,
+ Georgian_en = 0x10010d4,
+ Georgian_vin = 0x10010d5,
+ Georgian_zen = 0x10010d6,
+ Georgian_tan = 0x10010d7,
+ Georgian_in = 0x10010d8,
+ Georgian_kan = 0x10010d9,
+ Georgian_las = 0x10010da,
+ Georgian_man = 0x10010db,
+ Georgian_nar = 0x10010dc,
+ Georgian_on = 0x10010dd,
+ Georgian_par = 0x10010de,
+ Georgian_zhar = 0x10010df,
+ Georgian_rae = 0x10010e0,
+ Georgian_san = 0x10010e1,
+ Georgian_tar = 0x10010e2,
+ Georgian_un = 0x10010e3,
+ Georgian_phar = 0x10010e4,
+ Georgian_khar = 0x10010e5,
+ Georgian_ghan = 0x10010e6,
+ Georgian_qar = 0x10010e7,
+ Georgian_shin = 0x10010e8,
+ Georgian_chin = 0x10010e9,
+ Georgian_can = 0x10010ea,
+ Georgian_jil = 0x10010eb,
+ Georgian_cil = 0x10010ec,
+ Georgian_char = 0x10010ed,
+ Georgian_xan = 0x10010ee,
+ Georgian_jhan = 0x10010ef,
+ Georgian_hae = 0x10010f0,
+ Georgian_he = 0x10010f1,
+ Georgian_hie = 0x10010f2,
+ Georgian_we = 0x10010f3,
+ Georgian_har = 0x10010f4,
+ Georgian_hoe = 0x10010f5,
+ Georgian_fi = 0x10010f6,
+ Xabovedot = 0x1001e8a,
+ Ibreve = 0x100012c,
+ Zstroke = 0x10001b5,
+ Gcaron = 0x10001e6,
+ Ocaron = 0x10001d1,
+ Obarred = 0x100019f,
+ xabovedot = 0x1001e8b,
+ ibreve = 0x100012d,
+ zstroke = 0x10001b6,
+ gcaron = 0x10001e7,
+ ocaron = 0x10001d2,
+ obarred = 0x1000275,
+ SCHWA = 0x100018f,
+ schwa = 0x1000259,
+ EZH = 0x10001b7,
+ ezh = 0x1000292,
+ Lbelowdot = 0x1001e36,
+ lbelowdot = 0x1001e37,
+ Abelowdot = 0x1001ea0,
+ abelowdot = 0x1001ea1,
+ Ahook = 0x1001ea2,
+ ahook = 0x1001ea3,
+ Acircumflexacute = 0x1001ea4,
+ acircumflexacute = 0x1001ea5,
+ Acircumflexgrave = 0x1001ea6,
+ acircumflexgrave = 0x1001ea7,
+ Acircumflexhook = 0x1001ea8,
+ acircumflexhook = 0x1001ea9,
+ Acircumflextilde = 0x1001eaa,
+ acircumflextilde = 0x1001eab,
+ Acircumflexbelowdot = 0x1001eac,
+ acircumflexbelowdot = 0x1001ead,
+ Abreveacute = 0x1001eae,
+ abreveacute = 0x1001eaf,
+ Abrevegrave = 0x1001eb0,
+ abrevegrave = 0x1001eb1,
+ Abrevehook = 0x1001eb2,
+ abrevehook = 0x1001eb3,
+ Abrevetilde = 0x1001eb4,
+ abrevetilde = 0x1001eb5,
+ Abrevebelowdot = 0x1001eb6,
+ abrevebelowdot = 0x1001eb7,
+ Ebelowdot = 0x1001eb8,
+ ebelowdot = 0x1001eb9,
+ Ehook = 0x1001eba,
+ ehook = 0x1001ebb,
+ Etilde = 0x1001ebc,
+ etilde = 0x1001ebd,
+ Ecircumflexacute = 0x1001ebe,
+ ecircumflexacute = 0x1001ebf,
+ Ecircumflexgrave = 0x1001ec0,
+ ecircumflexgrave = 0x1001ec1,
+ Ecircumflexhook = 0x1001ec2,
+ ecircumflexhook = 0x1001ec3,
+ Ecircumflextilde = 0x1001ec4,
+ ecircumflextilde = 0x1001ec5,
+ Ecircumflexbelowdot = 0x1001ec6,
+ ecircumflexbelowdot = 0x1001ec7,
+ Ihook = 0x1001ec8,
+ ihook = 0x1001ec9,
+ Ibelowdot = 0x1001eca,
+ ibelowdot = 0x1001ecb,
+ Obelowdot = 0x1001ecc,
+ obelowdot = 0x1001ecd,
+ Ohook = 0x1001ece,
+ ohook = 0x1001ecf,
+ Ocircumflexacute = 0x1001ed0,
+ ocircumflexacute = 0x1001ed1,
+ Ocircumflexgrave = 0x1001ed2,
+ ocircumflexgrave = 0x1001ed3,
+ Ocircumflexhook = 0x1001ed4,
+ ocircumflexhook = 0x1001ed5,
+ Ocircumflextilde = 0x1001ed6,
+ ocircumflextilde = 0x1001ed7,
+ Ocircumflexbelowdot = 0x1001ed8,
+ ocircumflexbelowdot = 0x1001ed9,
+ Ohornacute = 0x1001eda,
+ ohornacute = 0x1001edb,
+ Ohorngrave = 0x1001edc,
+ ohorngrave = 0x1001edd,
+ Ohornhook = 0x1001ede,
+ ohornhook = 0x1001edf,
+ Ohorntilde = 0x1001ee0,
+ ohorntilde = 0x1001ee1,
+ Ohornbelowdot = 0x1001ee2,
+ ohornbelowdot = 0x1001ee3,
+ Ubelowdot = 0x1001ee4,
+ ubelowdot = 0x1001ee5,
+ Uhook = 0x1001ee6,
+ uhook = 0x1001ee7,
+ Uhornacute = 0x1001ee8,
+ uhornacute = 0x1001ee9,
+ Uhorngrave = 0x1001eea,
+ uhorngrave = 0x1001eeb,
+ Uhornhook = 0x1001eec,
+ uhornhook = 0x1001eed,
+ Uhorntilde = 0x1001eee,
+ uhorntilde = 0x1001eef,
+ Uhornbelowdot = 0x1001ef0,
+ uhornbelowdot = 0x1001ef1,
+ Ybelowdot = 0x1001ef4,
+ ybelowdot = 0x1001ef5,
+ Yhook = 0x1001ef6,
+ yhook = 0x1001ef7,
+ Ytilde = 0x1001ef8,
+ ytilde = 0x1001ef9,
+ Ohorn = 0x10001a0,
+ ohorn = 0x10001a1,
+ Uhorn = 0x10001af,
+ uhorn = 0x10001b0,
+ EcuSign = 0x10020a0,
+ ColonSign = 0x10020a1,
+ CruzeiroSign = 0x10020a2,
+ FFrancSign = 0x10020a3,
+ LiraSign = 0x10020a4,
+ MillSign = 0x10020a5,
+ NairaSign = 0x10020a6,
+ PesetaSign = 0x10020a7,
+ RupeeSign = 0x10020a8,
+ WonSign = 0x10020a9,
+ NewSheqelSign = 0x10020aa,
+ DongSign = 0x10020ab,
+ EuroSign = 0x20ac,
+ zerosuperior = 0x1002070,
+ foursuperior = 0x1002074,
+ fivesuperior = 0x1002075,
+ sixsuperior = 0x1002076,
+ sevensuperior = 0x1002077,
+ eightsuperior = 0x1002078,
+ ninesuperior = 0x1002079,
+ zerosubscript = 0x1002080,
+ onesubscript = 0x1002081,
+ twosubscript = 0x1002082,
+ threesubscript = 0x1002083,
+ foursubscript = 0x1002084,
+ fivesubscript = 0x1002085,
+ sixsubscript = 0x1002086,
+ sevensubscript = 0x1002087,
+ eightsubscript = 0x1002088,
+ ninesubscript = 0x1002089,
+ partdifferential = 0x1002202,
+ emptyset = 0x1002205,
+ elementof = 0x1002208,
+ notelementof = 0x1002209,
+ containsas = 0x100220B,
+ squareroot = 0x100221A,
+ cuberoot = 0x100221B,
+ fourthroot = 0x100221C,
+ dintegral = 0x100222C,
+ tintegral = 0x100222D,
+ because = 0x1002235,
+ approxeq = 0x1002248,
+ notapproxeq = 0x1002247,
+ notidentical = 0x1002262,
+ stricteq = 0x1002263,
+ braille_dot_1 = 0xfff1,
+ braille_dot_2 = 0xfff2,
+ braille_dot_3 = 0xfff3,
+ braille_dot_4 = 0xfff4,
+ braille_dot_5 = 0xfff5,
+ braille_dot_6 = 0xfff6,
+ braille_dot_7 = 0xfff7,
+ braille_dot_8 = 0xfff8,
+ braille_dot_9 = 0xfff9,
+ braille_dot_10 = 0xfffa,
+ braille_blank = 0x1002800,
+ braille_dots_1 = 0x1002801,
+ braille_dots_2 = 0x1002802,
+ braille_dots_12 = 0x1002803,
+ braille_dots_3 = 0x1002804,
+ braille_dots_13 = 0x1002805,
+ braille_dots_23 = 0x1002806,
+ braille_dots_123 = 0x1002807,
+ braille_dots_4 = 0x1002808,
+ braille_dots_14 = 0x1002809,
+ braille_dots_24 = 0x100280a,
+ braille_dots_124 = 0x100280b,
+ braille_dots_34 = 0x100280c,
+ braille_dots_134 = 0x100280d,
+ braille_dots_234 = 0x100280e,
+ braille_dots_1234 = 0x100280f,
+ braille_dots_5 = 0x1002810,
+ braille_dots_15 = 0x1002811,
+ braille_dots_25 = 0x1002812,
+ braille_dots_125 = 0x1002813,
+ braille_dots_35 = 0x1002814,
+ braille_dots_135 = 0x1002815,
+ braille_dots_235 = 0x1002816,
+ braille_dots_1235 = 0x1002817,
+ braille_dots_45 = 0x1002818,
+ braille_dots_145 = 0x1002819,
+ braille_dots_245 = 0x100281a,
+ braille_dots_1245 = 0x100281b,
+ braille_dots_345 = 0x100281c,
+ braille_dots_1345 = 0x100281d,
+ braille_dots_2345 = 0x100281e,
+ braille_dots_12345 = 0x100281f,
+ braille_dots_6 = 0x1002820,
+ braille_dots_16 = 0x1002821,
+ braille_dots_26 = 0x1002822,
+ braille_dots_126 = 0x1002823,
+ braille_dots_36 = 0x1002824,
+ braille_dots_136 = 0x1002825,
+ braille_dots_236 = 0x1002826,
+ braille_dots_1236 = 0x1002827,
+ braille_dots_46 = 0x1002828,
+ braille_dots_146 = 0x1002829,
+ braille_dots_246 = 0x100282a,
+ braille_dots_1246 = 0x100282b,
+ braille_dots_346 = 0x100282c,
+ braille_dots_1346 = 0x100282d,
+ braille_dots_2346 = 0x100282e,
+ braille_dots_12346 = 0x100282f,
+ braille_dots_56 = 0x1002830,
+ braille_dots_156 = 0x1002831,
+ braille_dots_256 = 0x1002832,
+ braille_dots_1256 = 0x1002833,
+ braille_dots_356 = 0x1002834,
+ braille_dots_1356 = 0x1002835,
+ braille_dots_2356 = 0x1002836,
+ braille_dots_12356 = 0x1002837,
+ braille_dots_456 = 0x1002838,
+ braille_dots_1456 = 0x1002839,
+ braille_dots_2456 = 0x100283a,
+ braille_dots_12456 = 0x100283b,
+ braille_dots_3456 = 0x100283c,
+ braille_dots_13456 = 0x100283d,
+ braille_dots_23456 = 0x100283e,
+ braille_dots_123456 = 0x100283f,
+ braille_dots_7 = 0x1002840,
+ braille_dots_17 = 0x1002841,
+ braille_dots_27 = 0x1002842,
+ braille_dots_127 = 0x1002843,
+ braille_dots_37 = 0x1002844,
+ braille_dots_137 = 0x1002845,
+ braille_dots_237 = 0x1002846,
+ braille_dots_1237 = 0x1002847,
+ braille_dots_47 = 0x1002848,
+ braille_dots_147 = 0x1002849,
+ braille_dots_247 = 0x100284a,
+ braille_dots_1247 = 0x100284b,
+ braille_dots_347 = 0x100284c,
+ braille_dots_1347 = 0x100284d,
+ braille_dots_2347 = 0x100284e,
+ braille_dots_12347 = 0x100284f,
+ braille_dots_57 = 0x1002850,
+ braille_dots_157 = 0x1002851,
+ braille_dots_257 = 0x1002852,
+ braille_dots_1257 = 0x1002853,
+ braille_dots_357 = 0x1002854,
+ braille_dots_1357 = 0x1002855,
+ braille_dots_2357 = 0x1002856,
+ braille_dots_12357 = 0x1002857,
+ braille_dots_457 = 0x1002858,
+ braille_dots_1457 = 0x1002859,
+ braille_dots_2457 = 0x100285a,
+ braille_dots_12457 = 0x100285b,
+ braille_dots_3457 = 0x100285c,
+ braille_dots_13457 = 0x100285d,
+ braille_dots_23457 = 0x100285e,
+ braille_dots_123457 = 0x100285f,
+ braille_dots_67 = 0x1002860,
+ braille_dots_167 = 0x1002861,
+ braille_dots_267 = 0x1002862,
+ braille_dots_1267 = 0x1002863,
+ braille_dots_367 = 0x1002864,
+ braille_dots_1367 = 0x1002865,
+ braille_dots_2367 = 0x1002866,
+ braille_dots_12367 = 0x1002867,
+ braille_dots_467 = 0x1002868,
+ braille_dots_1467 = 0x1002869,
+ braille_dots_2467 = 0x100286a,
+ braille_dots_12467 = 0x100286b,
+ braille_dots_3467 = 0x100286c,
+ braille_dots_13467 = 0x100286d,
+ braille_dots_23467 = 0x100286e,
+ braille_dots_123467 = 0x100286f,
+ braille_dots_567 = 0x1002870,
+ braille_dots_1567 = 0x1002871,
+ braille_dots_2567 = 0x1002872,
+ braille_dots_12567 = 0x1002873,
+ braille_dots_3567 = 0x1002874,
+ braille_dots_13567 = 0x1002875,
+ braille_dots_23567 = 0x1002876,
+ braille_dots_123567 = 0x1002877,
+ braille_dots_4567 = 0x1002878,
+ braille_dots_14567 = 0x1002879,
+ braille_dots_24567 = 0x100287a,
+ braille_dots_124567 = 0x100287b,
+ braille_dots_34567 = 0x100287c,
+ braille_dots_134567 = 0x100287d,
+ braille_dots_234567 = 0x100287e,
+ braille_dots_1234567 = 0x100287f,
+ braille_dots_8 = 0x1002880,
+ braille_dots_18 = 0x1002881,
+ braille_dots_28 = 0x1002882,
+ braille_dots_128 = 0x1002883,
+ braille_dots_38 = 0x1002884,
+ braille_dots_138 = 0x1002885,
+ braille_dots_238 = 0x1002886,
+ braille_dots_1238 = 0x1002887,
+ braille_dots_48 = 0x1002888,
+ braille_dots_148 = 0x1002889,
+ braille_dots_248 = 0x100288a,
+ braille_dots_1248 = 0x100288b,
+ braille_dots_348 = 0x100288c,
+ braille_dots_1348 = 0x100288d,
+ braille_dots_2348 = 0x100288e,
+ braille_dots_12348 = 0x100288f,
+ braille_dots_58 = 0x1002890,
+ braille_dots_158 = 0x1002891,
+ braille_dots_258 = 0x1002892,
+ braille_dots_1258 = 0x1002893,
+ braille_dots_358 = 0x1002894,
+ braille_dots_1358 = 0x1002895,
+ braille_dots_2358 = 0x1002896,
+ braille_dots_12358 = 0x1002897,
+ braille_dots_458 = 0x1002898,
+ braille_dots_1458 = 0x1002899,
+ braille_dots_2458 = 0x100289a,
+ braille_dots_12458 = 0x100289b,
+ braille_dots_3458 = 0x100289c,
+ braille_dots_13458 = 0x100289d,
+ braille_dots_23458 = 0x100289e,
+ braille_dots_123458 = 0x100289f,
+ braille_dots_68 = 0x10028a0,
+ braille_dots_168 = 0x10028a1,
+ braille_dots_268 = 0x10028a2,
+ braille_dots_1268 = 0x10028a3,
+ braille_dots_368 = 0x10028a4,
+ braille_dots_1368 = 0x10028a5,
+ braille_dots_2368 = 0x10028a6,
+ braille_dots_12368 = 0x10028a7,
+ braille_dots_468 = 0x10028a8,
+ braille_dots_1468 = 0x10028a9,
+ braille_dots_2468 = 0x10028aa,
+ braille_dots_12468 = 0x10028ab,
+ braille_dots_3468 = 0x10028ac,
+ braille_dots_13468 = 0x10028ad,
+ braille_dots_23468 = 0x10028ae,
+ braille_dots_123468 = 0x10028af,
+ braille_dots_568 = 0x10028b0,
+ braille_dots_1568 = 0x10028b1,
+ braille_dots_2568 = 0x10028b2,
+ braille_dots_12568 = 0x10028b3,
+ braille_dots_3568 = 0x10028b4,
+ braille_dots_13568 = 0x10028b5,
+ braille_dots_23568 = 0x10028b6,
+ braille_dots_123568 = 0x10028b7,
+ braille_dots_4568 = 0x10028b8,
+ braille_dots_14568 = 0x10028b9,
+ braille_dots_24568 = 0x10028ba,
+ braille_dots_124568 = 0x10028bb,
+ braille_dots_34568 = 0x10028bc,
+ braille_dots_134568 = 0x10028bd,
+ braille_dots_234568 = 0x10028be,
+ braille_dots_1234568 = 0x10028bf,
+ braille_dots_78 = 0x10028c0,
+ braille_dots_178 = 0x10028c1,
+ braille_dots_278 = 0x10028c2,
+ braille_dots_1278 = 0x10028c3,
+ braille_dots_378 = 0x10028c4,
+ braille_dots_1378 = 0x10028c5,
+ braille_dots_2378 = 0x10028c6,
+ braille_dots_12378 = 0x10028c7,
+ braille_dots_478 = 0x10028c8,
+ braille_dots_1478 = 0x10028c9,
+ braille_dots_2478 = 0x10028ca,
+ braille_dots_12478 = 0x10028cb,
+ braille_dots_3478 = 0x10028cc,
+ braille_dots_13478 = 0x10028cd,
+ braille_dots_23478 = 0x10028ce,
+ braille_dots_123478 = 0x10028cf,
+ braille_dots_578 = 0x10028d0,
+ braille_dots_1578 = 0x10028d1,
+ braille_dots_2578 = 0x10028d2,
+ braille_dots_12578 = 0x10028d3,
+ braille_dots_3578 = 0x10028d4,
+ braille_dots_13578 = 0x10028d5,
+ braille_dots_23578 = 0x10028d6,
+ braille_dots_123578 = 0x10028d7,
+ braille_dots_4578 = 0x10028d8,
+ braille_dots_14578 = 0x10028d9,
+ braille_dots_24578 = 0x10028da,
+ braille_dots_124578 = 0x10028db,
+ braille_dots_34578 = 0x10028dc,
+ braille_dots_134578 = 0x10028dd,
+ braille_dots_234578 = 0x10028de,
+ braille_dots_1234578 = 0x10028df,
+ braille_dots_678 = 0x10028e0,
+ braille_dots_1678 = 0x10028e1,
+ braille_dots_2678 = 0x10028e2,
+ braille_dots_12678 = 0x10028e3,
+ braille_dots_3678 = 0x10028e4,
+ braille_dots_13678 = 0x10028e5,
+ braille_dots_23678 = 0x10028e6,
+ braille_dots_123678 = 0x10028e7,
+ braille_dots_4678 = 0x10028e8,
+ braille_dots_14678 = 0x10028e9,
+ braille_dots_24678 = 0x10028ea,
+ braille_dots_124678 = 0x10028eb,
+ braille_dots_34678 = 0x10028ec,
+ braille_dots_134678 = 0x10028ed,
+ braille_dots_234678 = 0x10028ee,
+ braille_dots_1234678 = 0x10028ef,
+ braille_dots_5678 = 0x10028f0,
+ braille_dots_15678 = 0x10028f1,
+ braille_dots_25678 = 0x10028f2,
+ braille_dots_125678 = 0x10028f3,
+ braille_dots_35678 = 0x10028f4,
+ braille_dots_135678 = 0x10028f5,
+ braille_dots_235678 = 0x10028f6,
+ braille_dots_1235678 = 0x10028f7,
+ braille_dots_45678 = 0x10028f8,
+ braille_dots_145678 = 0x10028f9,
+ braille_dots_245678 = 0x10028fa,
+ braille_dots_1245678 = 0x10028fb,
+ braille_dots_345678 = 0x10028fc,
+ braille_dots_1345678 = 0x10028fd,
+ braille_dots_2345678 = 0x10028fe,
+ braille_dots_12345678 = 0x10028ff,
+ Sinh_ng = 0x1000d82,
+ Sinh_h2 = 0x1000d83,
+ Sinh_a = 0x1000d85,
+ Sinh_aa = 0x1000d86,
+ Sinh_ae = 0x1000d87,
+ Sinh_aee = 0x1000d88,
+ Sinh_i = 0x1000d89,
+ Sinh_ii = 0x1000d8a,
+ Sinh_u = 0x1000d8b,
+ Sinh_uu = 0x1000d8c,
+ Sinh_ri = 0x1000d8d,
+ Sinh_rii = 0x1000d8e,
+ Sinh_lu = 0x1000d8f,
+ Sinh_luu = 0x1000d90,
+ Sinh_e = 0x1000d91,
+ Sinh_ee = 0x1000d92,
+ Sinh_ai = 0x1000d93,
+ Sinh_o = 0x1000d94,
+ Sinh_oo = 0x1000d95,
+ Sinh_au = 0x1000d96,
+ Sinh_ka = 0x1000d9a,
+ Sinh_kha = 0x1000d9b,
+ Sinh_ga = 0x1000d9c,
+ Sinh_gha = 0x1000d9d,
+ Sinh_ng2 = 0x1000d9e,
+ Sinh_nga = 0x1000d9f,
+ Sinh_ca = 0x1000da0,
+ Sinh_cha = 0x1000da1,
+ Sinh_ja = 0x1000da2,
+ Sinh_jha = 0x1000da3,
+ Sinh_nya = 0x1000da4,
+ Sinh_jnya = 0x1000da5,
+ Sinh_nja = 0x1000da6,
+ Sinh_tta = 0x1000da7,
+ Sinh_ttha = 0x1000da8,
+ Sinh_dda = 0x1000da9,
+ Sinh_ddha = 0x1000daa,
+ Sinh_nna = 0x1000dab,
+ Sinh_ndda = 0x1000dac,
+ Sinh_tha = 0x1000dad,
+ Sinh_thha = 0x1000dae,
+ Sinh_dha = 0x1000daf,
+ Sinh_dhha = 0x1000db0,
+ Sinh_na = 0x1000db1,
+ Sinh_ndha = 0x1000db3,
+ Sinh_pa = 0x1000db4,
+ Sinh_pha = 0x1000db5,
+ Sinh_ba = 0x1000db6,
+ Sinh_bha = 0x1000db7,
+ Sinh_ma = 0x1000db8,
+ Sinh_mba = 0x1000db9,
+ Sinh_ya = 0x1000dba,
+ Sinh_ra = 0x1000dbb,
+ Sinh_la = 0x1000dbd,
+ Sinh_va = 0x1000dc0,
+ Sinh_sha = 0x1000dc1,
+ Sinh_ssha = 0x1000dc2,
+ Sinh_sa = 0x1000dc3,
+ Sinh_ha = 0x1000dc4,
+ Sinh_lla = 0x1000dc5,
+ Sinh_fa = 0x1000dc6,
+ Sinh_al = 0x1000dca,
+ Sinh_aa2 = 0x1000dcf,
+ Sinh_ae2 = 0x1000dd0,
+ Sinh_aee2 = 0x1000dd1,
+ Sinh_i2 = 0x1000dd2,
+ Sinh_ii2 = 0x1000dd3,
+ Sinh_u2 = 0x1000dd4,
+ Sinh_uu2 = 0x1000dd6,
+ Sinh_ru2 = 0x1000dd8,
+ Sinh_e2 = 0x1000dd9,
+ Sinh_ee2 = 0x1000dda,
+ Sinh_ai2 = 0x1000ddb,
+ Sinh_o2 = 0x1000ddc,
+ Sinh_oo2 = 0x1000ddd,
+ Sinh_au2 = 0x1000dde,
+ Sinh_lu2 = 0x1000ddf,
+ Sinh_ruu2 = 0x1000df2,
+ Sinh_luu2 = 0x1000df3,
+ Sinh_kunddaliya = 0x1000df4,
+ XF86ModeLock = 0x1008FF01,
+ XF86MonBrightnessUp = 0x1008FF02,
+ XF86MonBrightnessDown = 0x1008FF03,
+ XF86KbdLightOnOff = 0x1008FF04,
+ XF86KbdBrightnessUp = 0x1008FF05,
+ XF86KbdBrightnessDown = 0x1008FF06,
+ XF86Standby = 0x1008FF10,
+ XF86AudioLowerVolume = 0x1008FF11,
+ XF86AudioMute = 0x1008FF12,
+ XF86AudioRaiseVolume = 0x1008FF13,
+ XF86AudioPlay = 0x1008FF14,
+ XF86AudioStop = 0x1008FF15,
+ XF86AudioPrev = 0x1008FF16,
+ XF86AudioNext = 0x1008FF17,
+ XF86HomePage = 0x1008FF18,
+ XF86Mail = 0x1008FF19,
+ XF86Start = 0x1008FF1A,
+ XF86Search = 0x1008FF1B,
+ XF86AudioRecord = 0x1008FF1C,
+ XF86Calculator = 0x1008FF1D,
+ XF86Memo = 0x1008FF1E,
+ XF86ToDoList = 0x1008FF1F,
+ XF86Calendar = 0x1008FF20,
+ XF86PowerDown = 0x1008FF21,
+ XF86ContrastAdjust = 0x1008FF22,
+ XF86RockerUp = 0x1008FF23,
+ XF86RockerDown = 0x1008FF24,
+ XF86RockerEnter = 0x1008FF25,
+ XF86Back = 0x1008FF26,
+ XF86Forward = 0x1008FF27,
+ XF86Stop = 0x1008FF28,
+ XF86Refresh = 0x1008FF29,
+ XF86PowerOff = 0x1008FF2A,
+ XF86WakeUp = 0x1008FF2B,
+ XF86Eject = 0x1008FF2C,
+ XF86ScreenSaver = 0x1008FF2D,
+ XF86WWW = 0x1008FF2E,
+ XF86Sleep = 0x1008FF2F,
+ XF86Favorites = 0x1008FF30,
+ XF86AudioPause = 0x1008FF31,
+ XF86AudioMedia = 0x1008FF32,
+ XF86MyComputer = 0x1008FF33,
+ XF86VendorHome = 0x1008FF34,
+ XF86LightBulb = 0x1008FF35,
+ XF86Shop = 0x1008FF36,
+ XF86History = 0x1008FF37,
+ XF86OpenURL = 0x1008FF38,
+ XF86AddFavorite = 0x1008FF39,
+ XF86HotLinks = 0x1008FF3A,
+ XF86BrightnessAdjust = 0x1008FF3B,
+ XF86Finance = 0x1008FF3C,
+ XF86Community = 0x1008FF3D,
+ XF86AudioRewind = 0x1008FF3E,
+ XF86BackForward = 0x1008FF3F,
+ XF86Launch0 = 0x1008FF40,
+ XF86Launch1 = 0x1008FF41,
+ XF86Launch2 = 0x1008FF42,
+ XF86Launch3 = 0x1008FF43,
+ XF86Launch4 = 0x1008FF44,
+ XF86Launch5 = 0x1008FF45,
+ XF86Launch6 = 0x1008FF46,
+ XF86Launch7 = 0x1008FF47,
+ XF86Launch8 = 0x1008FF48,
+ XF86Launch9 = 0x1008FF49,
+ XF86LaunchA = 0x1008FF4A,
+ XF86LaunchB = 0x1008FF4B,
+ XF86LaunchC = 0x1008FF4C,
+ XF86LaunchD = 0x1008FF4D,
+ XF86LaunchE = 0x1008FF4E,
+ XF86LaunchF = 0x1008FF4F,
+ XF86ApplicationLeft = 0x1008FF50,
+ XF86ApplicationRight = 0x1008FF51,
+ XF86Book = 0x1008FF52,
+ XF86CD = 0x1008FF53,
+ XF86Calculater = 0x1008FF54,
+ XF86Clear = 0x1008FF55,
+ XF86Close = 0x1008FF56,
+ XF86Copy = 0x1008FF57,
+ XF86Cut = 0x1008FF58,
+ XF86Display = 0x1008FF59,
+ XF86DOS = 0x1008FF5A,
+ XF86Documents = 0x1008FF5B,
+ XF86Excel = 0x1008FF5C,
+ XF86Explorer = 0x1008FF5D,
+ XF86Game = 0x1008FF5E,
+ XF86Go = 0x1008FF5F,
+ XF86iTouch = 0x1008FF60,
+ XF86LogOff = 0x1008FF61,
+ XF86Market = 0x1008FF62,
+ XF86Meeting = 0x1008FF63,
+ XF86MenuKB = 0x1008FF65,
+ XF86MenuPB = 0x1008FF66,
+ XF86MySites = 0x1008FF67,
+ XF86New = 0x1008FF68,
+ XF86News = 0x1008FF69,
+ XF86OfficeHome = 0x1008FF6A,
+ XF86Open = 0x1008FF6B,
+ XF86Option = 0x1008FF6C,
+ XF86Paste = 0x1008FF6D,
+ XF86Phone = 0x1008FF6E,
+ XF86Q = 0x1008FF70,
+ XF86Reply = 0x1008FF72,
+ XF86Reload = 0x1008FF73,
+ XF86RotateWindows = 0x1008FF74,
+ XF86RotationPB = 0x1008FF75,
+ XF86RotationKB = 0x1008FF76,
+ XF86Save = 0x1008FF77,
+ XF86ScrollUp = 0x1008FF78,
+ XF86ScrollDown = 0x1008FF79,
+ XF86ScrollClick = 0x1008FF7A,
+ XF86Send = 0x1008FF7B,
+ XF86Spell = 0x1008FF7C,
+ XF86SplitScreen = 0x1008FF7D,
+ XF86Support = 0x1008FF7E,
+ XF86TaskPane = 0x1008FF7F,
+ XF86Terminal = 0x1008FF80,
+ XF86Tools = 0x1008FF81,
+ XF86Travel = 0x1008FF82,
+ XF86UserPB = 0x1008FF84,
+ XF86User1KB = 0x1008FF85,
+ XF86User2KB = 0x1008FF86,
+ XF86Video = 0x1008FF87,
+ XF86WheelButton = 0x1008FF88,
+ XF86Word = 0x1008FF89,
+ XF86Xfer = 0x1008FF8A,
+ XF86ZoomIn = 0x1008FF8B,
+ XF86ZoomOut = 0x1008FF8C,
+ XF86Away = 0x1008FF8D,
+ XF86Messenger = 0x1008FF8E,
+ XF86WebCam = 0x1008FF8F,
+ XF86MailForward = 0x1008FF90,
+ XF86Pictures = 0x1008FF91,
+ XF86Music = 0x1008FF92,
+ XF86Battery = 0x1008FF93,
+ XF86Bluetooth = 0x1008FF94,
+ XF86WLAN = 0x1008FF95,
+ XF86UWB = 0x1008FF96,
+ XF86AudioForward = 0x1008FF97,
+ XF86AudioRepeat = 0x1008FF98,
+ XF86AudioRandomPlay = 0x1008FF99,
+ XF86Subtitle = 0x1008FF9A,
+ XF86AudioCycleTrack = 0x1008FF9B,
+ XF86CycleAngle = 0x1008FF9C,
+ XF86FrameBack = 0x1008FF9D,
+ XF86FrameForward = 0x1008FF9E,
+ XF86Time = 0x1008FF9F,
+ XF86Select = 0x1008FFA0,
+ XF86View = 0x1008FFA1,
+ XF86TopMenu = 0x1008FFA2,
+ XF86Red = 0x1008FFA3,
+ XF86Green = 0x1008FFA4,
+ XF86Yellow = 0x1008FFA5,
+ XF86Blue = 0x1008FFA6,
+ XF86Suspend = 0x1008FFA7,
+ XF86Hibernate = 0x1008FFA8,
+ XF86TouchpadToggle = 0x1008FFA9,
+ XF86TouchpadOn = 0x1008FFB0,
+ XF86TouchpadOff = 0x1008FFB1,
+ XF86AudioMicMute = 0x1008FFB2,
+ XF86Keyboard = 0x1008FFB3,
+ XF86WWAN = 0x1008FFB4,
+ XF86RFKill = 0x1008FFB5,
+ XF86AudioPreset = 0x1008FFB6,
+ XF86Switch_VT_1 = 0x1008FE01,
+ XF86Switch_VT_2 = 0x1008FE02,
+ XF86Switch_VT_3 = 0x1008FE03,
+ XF86Switch_VT_4 = 0x1008FE04,
+ XF86Switch_VT_5 = 0x1008FE05,
+ XF86Switch_VT_6 = 0x1008FE06,
+ XF86Switch_VT_7 = 0x1008FE07,
+ XF86Switch_VT_8 = 0x1008FE08,
+ XF86Switch_VT_9 = 0x1008FE09,
+ XF86Switch_VT_10 = 0x1008FE0A,
+ XF86Switch_VT_11 = 0x1008FE0B,
+ XF86Switch_VT_12 = 0x1008FE0C,
+ XF86Ungrab = 0x1008FE20,
+ XF86ClearGrab = 0x1008FE21,
+ XF86Next_VMode = 0x1008FE22,
+ XF86Prev_VMode = 0x1008FE23,
+ XF86LogWindowTree = 0x1008FE24,
+ XF86LogGrabInfo = 0x1008FE25,
+ SunFA_Grave = 0x1005FF00,
+ SunFA_Circum = 0x1005FF01,
+ SunFA_Tilde = 0x1005FF02,
+ SunFA_Acute = 0x1005FF03,
+ SunFA_Diaeresis = 0x1005FF04,
+ SunFA_Cedilla = 0x1005FF05,
+ SunF36 = 0x1005FF10,
+ SunF37 = 0x1005FF11,
+ SunSys_Req = 0x1005FF60,
+ SunPrint_Screen = 0x0000FF61,
+ SunCompose = 0x0000FF20,
+ SunAltGraph = 0x0000FF7E,
+ SunPageUp = 0x0000FF55,
+ SunPageDown = 0x0000FF56,
+ SunUndo = 0x0000FF65,
+ SunAgain = 0x0000FF66,
+ SunFind = 0x0000FF68,
+ SunStop = 0x0000FF69,
+ SunProps = 0x1005FF70,
+ SunFront = 0x1005FF71,
+ SunCopy = 0x1005FF72,
+ SunOpen = 0x1005FF73,
+ SunPaste = 0x1005FF74,
+ SunCut = 0x1005FF75,
+ SunPowerSwitch = 0x1005FF76,
+ SunAudioLowerVolume = 0x1005FF77,
+ SunAudioMute = 0x1005FF78,
+ SunAudioRaiseVolume = 0x1005FF79,
+ SunVideoDegauss = 0x1005FF7A,
+ SunVideoLowerBrightness = 0x1005FF7B,
+ SunVideoRaiseBrightness = 0x1005FF7C,
+ SunPowerSwitchShift = 0x1005FF7D,
+ Dring_accent = 0x1000FEB0,
+ Dcircumflex_accent = 0x1000FE5E,
+ Dcedilla_accent = 0x1000FE2C,
+ Dacute_accent = 0x1000FE27,
+ Dgrave_accent = 0x1000FE60,
+ Dtilde = 0x1000FE7E,
+ Ddiaeresis = 0x1000FE22,
+ DRemove = 0x1000FF00,
+ hpClearLine = 0x1000FF6F,
+ hpInsertLine = 0x1000FF70,
+ hpDeleteLine = 0x1000FF71,
+ hpInsertChar = 0x1000FF72,
+ hpDeleteChar = 0x1000FF73,
+ hpBackTab = 0x1000FF74,
+ hpKP_BackTab = 0x1000FF75,
+ hpModelock1 = 0x1000FF48,
+ hpModelock2 = 0x1000FF49,
+ hpReset = 0x1000FF6C,
+ hpSystem = 0x1000FF6D,
+ hpUser = 0x1000FF6E,
+ hpmute_acute = 0x100000A8,
+ hpmute_grave = 0x100000A9,
+ hpmute_asciicircum = 0x100000AA,
+ hpmute_diaeresis = 0x100000AB,
+ hpmute_asciitilde = 0x100000AC,
+ hplira = 0x100000AF,
+ hpguilder = 0x100000BE,
+ hpYdiaeresis = 0x100000EE,
+ hpIO = 0x100000EE,
+ hplongminus = 0x100000F6,
+ hpblock = 0x100000FC,
+ osfCopy = 0x1004FF02,
+ osfCut = 0x1004FF03,
+ osfPaste = 0x1004FF04,
+ osfBackTab = 0x1004FF07,
+ osfBackSpace = 0x1004FF08,
+ osfClear = 0x1004FF0B,
+ osfEscape = 0x1004FF1B,
+ osfAddMode = 0x1004FF31,
+ osfPrimaryPaste = 0x1004FF32,
+ osfQuickPaste = 0x1004FF33,
+ osfPageLeft = 0x1004FF40,
+ osfPageUp = 0x1004FF41,
+ osfPageDown = 0x1004FF42,
+ osfPageRight = 0x1004FF43,
+ osfActivate = 0x1004FF44,
+ osfMenuBar = 0x1004FF45,
+ osfLeft = 0x1004FF51,
+ osfUp = 0x1004FF52,
+ osfRight = 0x1004FF53,
+ osfDown = 0x1004FF54,
+ osfEndLine = 0x1004FF57,
+ osfBeginLine = 0x1004FF58,
+ osfEndData = 0x1004FF59,
+ osfBeginData = 0x1004FF5A,
+ osfPrevMenu = 0x1004FF5B,
+ osfNextMenu = 0x1004FF5C,
+ osfPrevField = 0x1004FF5D,
+ osfNextField = 0x1004FF5E,
+ osfSelect = 0x1004FF60,
+ osfInsert = 0x1004FF63,
+ osfUndo = 0x1004FF65,
+ osfMenu = 0x1004FF67,
+ osfCancel = 0x1004FF69,
+ osfHelp = 0x1004FF6A,
+ osfSelectAll = 0x1004FF71,
+ osfDeselectAll = 0x1004FF72,
+ osfReselect = 0x1004FF73,
+ osfExtend = 0x1004FF74,
+ osfRestore = 0x1004FF78,
+ osfDelete = 0x1004FFFF,
+ Reset = 0x1000FF6C,
+ System = 0x1000FF6D,
+ User = 0x1000FF6E,
+ ClearLine = 0x1000FF6F,
+ InsertLine = 0x1000FF70,
+ DeleteLine = 0x1000FF71,
+ InsertChar = 0x1000FF72,
+ DeleteChar = 0x1000FF73,
+ BackTab = 0x1000FF74,
+ KP_BackTab = 0x1000FF75,
+ Ext16bit_L = 0x1000FF76,
+ Ext16bit_R = 0x1000FF77,
+ mute_acute = 0x100000a8,
+ mute_grave = 0x100000a9,
+ mute_asciicircum = 0x100000aa,
+ mute_diaeresis = 0x100000ab,
+ mute_asciitilde = 0x100000ac,
+ lira = 0x100000af,
+ guilder = 0x100000be,
+ IO = 0x100000ee,
+ longminus = 0x100000f6,
+ block = 0x100000fc,
+
+ }
+
+ enum xkb_key_direction : byte {
+ KEY_UP, /**< The key was released. */
+ KEY_DOWN /**< The key was pressed. */
+ }
+
+ [Flags]
+ enum xkb_state_component : ushort {
+ XKB_STATE_MODS_DEPRESSED = (1 << 0),
+ XKB_STATE_MODS_LATCHED = (1 << 1),
+ XKB_STATE_MODS_LOCKED = (1 << 2),
+ XKB_STATE_MODS_EFFECTIVE = (1 << 3),
+ XKB_STATE_LAYOUT_DEPRESSED = (1 << 4),
+ XKB_STATE_LAYOUT_LATCHED = (1 << 5),
+ XKB_STATE_LAYOUT_LOCKED = (1 << 6),
+ XKB_STATE_LAYOUT_EFFECTIVE = (1 << 7),
+ XKB_STATE_LEDS = (1 << 8)
+ }
+
+ #region pinvoke
+
+ [DllImportAttribute("xkbcommon")]
+ static extern IntPtr xkb_context_new (int flags);
+ [DllImportAttribute("xkbcommon")]
+ static extern xkb_keysym xkb_state_key_get_one_sym (IntPtr state, xkb_keycode_t keycode);
+ [DllImportAttribute("xkbcommon")]
+ static extern UInt32 xkb_state_key_get_utf32 (IntPtr state, xkb_keycode_t key);
+
+ [DllImportAttribute("xkbcommon")]
+ static extern xkb_state_component xkb_state_update_key(IntPtr state, xkb_keycode_t key, xkb_key_direction direction);
+
+ [DllImportAttribute("xkbcommon-x11.so.0")]
+ static extern int xkb_x11_setup_xkb_extension (IntPtr connection,
+ UInt16 major_xkb_version, UInt16 minor_xkb_version,
+ byte xkb_x11_setup_xkb_extension_flags,
+ out UInt16 major_xkb_version_out,
+ out UInt16 minor_xkb_version_out,
+ out byte base_event_out,
+ out byte base_error_out);
+ [DllImportAttribute("xkbcommon-x11.so.0")]
+ static extern int xkb_x11_get_core_keyboard_device_id(IntPtr connection);
+ [DllImportAttribute("xkbcommon-x11.so.0")]
+ static extern IntPtr xkb_x11_keymap_new_from_device (IntPtr context, IntPtr connection,
+ int device_id, byte flags);
+ [DllImportAttribute("xkbcommon-x11.so.0")]
+ static extern IntPtr xkb_x11_state_new_from_device (IntPtr xkbKeymap, IntPtr connection, int device_id);
+
+ [DllImportAttribute("xcb")]
+ static extern IntPtr xcb_connect(string displayName, IntPtr screenNum);
+ [DllImportAttribute("xcb")]
+ static extern IntPtr xcb_get_setup(IntPtr connection);
+ [DllImportAttribute("xcb")]
+ static extern IntPtr xcb_flush(IntPtr connection);
+ [DllImportAttribute("xcb")]
+ static extern UInt32 xcb_generate_id(IntPtr connection);
+
+ [DllImportAttribute("xcb")]
+ static extern xcb_iterator_t xcb_setup_roots_iterator(IntPtr setup);
+ [DllImportAttribute("xcb")]
+ static extern xcb_iterator_t xcb_screen_allowed_depths_iterator(IntPtr scr);
+ [DllImportAttribute("xcb")]
+ static extern xcb_iterator_t xcb_depth_visuals_iterator(IntPtr depth);
+
+ [DllImportAttribute("xcb")]
+ static extern void xcb_screen_next(ref xcb_iterator_t scr_iterator);
+ [DllImportAttribute("xcb")]
+ static extern void xcb_depth_next(ref xcb_iterator_t depth_iterator);
+ [DllImportAttribute("xcb")]
+ static extern void xcb_visualtype_next(ref xcb_iterator_t depth_visual_iterator);
+
+ [DllImportAttribute("xcb")]
+ static extern xcb_void_cookie_t xcb_create_window(IntPtr connection, byte depth, xcb_window_t win, UInt32 parent,
+ Int16 x, Int16 y, UInt16 width, UInt16 height, UInt16 border,
+ xcb_window_class_t _class, xcb_visualid_t visual, xcb_cw_t mask, IntPtr valueList);
+ [DllImportAttribute("xcb")]
+ static extern xcb_void_cookie_t xcb_map_window(IntPtr conn, xcb_window_t window);
+ [DllImportAttribute("xcb")]
+ static extern void xcb_disconnect(IntPtr connection);
+
+ [DllImportAttribute("xcb")]
+ static extern IntPtr xcb_poll_for_event(IntPtr connection);
+
+
+ #endregion
+
+ Interface iFace;
+
+ IntPtr conn, xkbCtx, xkbKeymap, xkbState;
+
+ #region IBackend implementation
+ public void Init (Interface _iFace)
+ {
+ iFace = _iFace;
+
+ conn = xcb_connect (null, IntPtr.Zero);
+
+
+ ushort xkb_maj, xkb_min;
+ byte base_evt, base_err;
+
+ xkbCtx = xkb_context_new (0);
+ xkb_x11_setup_xkb_extension (conn, 1, 0, 0, out xkb_maj, out xkb_min, out base_evt, out base_err);
+ int kb = xkb_x11_get_core_keyboard_device_id (conn);
+ xkbKeymap = xkb_x11_keymap_new_from_device (xkbCtx, conn, kb, 0);
+ xkbState = xkb_x11_state_new_from_device (xkbKeymap, conn, kb);
+
+
+ xcb_iterator_t scr_it = xcb_setup_roots_iterator (xcb_get_setup (conn));
+ IntPtr screen = scr_it.data;
+
+ xcb_screen_t scr = (xcb_screen_t)Marshal.PtrToStructure (screen, typeof(xcb_screen_t));
+
+ xcb_window_t win = xcb_generate_id (conn);
+
+ xcb_cw_t mask = xcb_cw_t.BACK_PIXEL | xcb_cw_t.EVENT_MASK;
+ uint[] values = {
+ scr.black_pixel,
+ (uint)(
+ xcb_event_mask_t.EXPOSURE |
+ xcb_event_mask_t.POINTER_MOTION |
+ xcb_event_mask_t.BUTTON_PRESS |
+ xcb_event_mask_t.BUTTON_RELEASE |
+ xcb_event_mask_t.KEY_PRESS |
+ xcb_event_mask_t.KEY_RELEASE
+ )
+ };
+
+ IntPtr intPtr = IntPtr.Zero;
+
+ unsafe
+ {
+ fixed(uint* pValues = values)
+ intPtr = new IntPtr((void *) pValues);
+ xcb_create_window (conn, XCB_COPY_FROM_PARENT, win, scr.root, 0,0,(ushort)iFace.ClientRectangle.Width, (ushort)iFace.ClientRectangle.Height,0,
+ xcb_window_class_t.INPUT_OUTPUT, scr.root_visual, mask, intPtr);
+ }
+
+
+ xcb_map_window (conn, win);
+
+ xcb_flush (conn);
+
+
+ IntPtr visual = findVisual (scr_it, scr.root_visual);
+
+
+ iFace.surf = new Cairo.XcbSurface (conn, win, visual, iFace.ClientRectangle.Width, iFace.ClientRectangle.Height);
+ }
+
+ public void CleanUp ()
+ {
+ xcb_disconnect (conn);
+ }
+ public void Flush () {
+ xcb_flush (conn);
+ }
+ public void ProcessEvents ()
+ {
+ IntPtr evtPtr = xcb_poll_for_event (conn);
+ if (evtPtr == IntPtr.Zero)
+ return;
+ xcb_event_t evt = (xcb_event_t)Marshal.PtrToStructure (evtPtr, typeof(xcb_event_t));
+
+ switch (evt.response_type) {
+ case xcb_event_type.EXPOSE:
+ break;
+ case xcb_event_type.MOTION_NOTIFY:
+ iFace.ProcessMouseMove (evt.event_x, evt.event_y);
+ break;
+ case xcb_event_type.BUTTON_PRESS:
+ if (evt.button == xcb_button_t.WheelUp)
+ iFace.ProcessMouseWheelChanged (Interface.WheelIncrement);
+ else if(evt.button == xcb_button_t.WheelDown)
+ iFace.ProcessMouseWheelChanged (-Interface.WheelIncrement);
+ else
+ iFace.ProcessMouseButtonDown (evt.detail - 1);
+ break;
+ case xcb_event_type.BUTTON_RELEASE:
+ if (evt.button == xcb_button_t.WheelUp || evt.button == xcb_button_t.WheelDown)
+ break;
+ iFace.ProcessMouseButtonUp (evt.detail - 1);
+ break;
+ case xcb_event_type.KEY_PRESS:
+ xkb_keysym ks = xkb_state_key_get_one_sym (xkbState, evt.keycode);
+ iFace.ProcessKeyUp ((int)ks);
+
+ uint utf32 = xkb_state_key_get_utf32 (xkbState, evt.keycode);
+
+ if (utf32 > 0)
+ iFace.ProcessKeyPress (char.ConvertFromUtf32 ((int)utf32) [0]);
+
+ xkb_state_update_key (xkbState, evt.keycode, xkb_key_direction.KEY_DOWN);
+
+ break;
+ case xcb_event_type.KEY_RELEASE:
+ xkb_keysym ksr = xkb_state_key_get_one_sym (xkbState, evt.keycode);
+ iFace.ProcessKeyUp ((int)ksr);
+
+ xkb_state_update_key (xkbState, evt.keycode, xkb_key_direction.KEY_UP);
+ break;
+ default:
+ Console.WriteLine ("unknown event");
+ break;
+ }
+ }
+
+ #endregion
+
+ static IntPtr findVisual (xcb_iterator_t scr_it, xcb_visualid_t visualId){
+ for (; scr_it.rem > 0; xcb_screen_next (ref scr_it)) {
+ xcb_iterator_t depth_it = xcb_screen_allowed_depths_iterator (scr_it.data);
+ for (; depth_it.rem > 0; xcb_depth_next (ref depth_it)) {
+ xcb_iterator_t visual_it = xcb_depth_visuals_iterator (depth_it.data);
+ for (; visual_it.rem > 0; xcb_visualtype_next (ref visual_it)) {
+ xcb_visualtype_t visual = (xcb_visualtype_t)Marshal.PtrToStructure (visual_it.data, typeof(xcb_visualtype_t));
+ if (visualId == visual.visual_id)
+ return visual_it.data;
+ }
+ }
+ }
+ return IntPtr.Zero;
+ }
+
+ }
+}
+
--- /dev/null
+/* autogenerated */
+using System;
+
+namespace XLib
+{
+ [Flags]
+ public enum KeySym
+ {
+ XK_VoidSymbol = 0xffffff,
+ XK_BackSpace = 0xff08,
+ XK_Tab = 0xff09,
+ XK_Linefeed = 0xff0a,
+ XK_Clear = 0xff0b,
+ XK_Return = 0xff0d,
+ XK_Pause = 0xff13,
+ XK_Scroll_Lock = 0xff14,
+ XK_Sys_Req = 0xff15,
+ XK_Escape = 0xff1b,
+ XK_Delete = 0xffff,
+ XK_Multi_key = 0xff20,
+ XK_Codeinput = 0xff37,
+ XK_SingleCandidate = 0xff3c,
+ XK_MultipleCandidate = 0xff3d,
+ XK_PreviousCandidate = 0xff3e,
+ XK_Kanji = 0xff21,
+ XK_Muhenkan = 0xff22,
+ XK_Henkan_Mode = 0xff23,
+ XK_Henkan = 0xff23,
+ XK_Romaji = 0xff24,
+ XK_Hiragana = 0xff25,
+ XK_Katakana = 0xff26,
+ XK_Hiragana_Katakana = 0xff27,
+ XK_Zenkaku = 0xff28,
+ XK_Hankaku = 0xff29,
+ XK_Zenkaku_Hankaku = 0xff2a,
+ XK_Touroku = 0xff2b,
+ XK_Massyo = 0xff2c,
+ XK_Kana_Lock = 0xff2d,
+ XK_Kana_Shift = 0xff2e,
+ XK_Eisu_Shift = 0xff2f,
+ XK_Eisu_toggle = 0xff30,
+ XK_Kanji_Bangou = 0xff37,
+ XK_Zen_Koho = 0xff3d,
+ XK_Mae_Koho = 0xff3e,
+ XK_Home = 0xff50,
+ XK_Left = 0xff51,
+ XK_Up = 0xff52,
+ XK_Right = 0xff53,
+ XK_Down = 0xff54,
+ XK_Prior = 0xff55,
+ XK_Page_Up = 0xff55,
+ XK_Next = 0xff56,
+ XK_Page_Down = 0xff56,
+ XK_End = 0xff57,
+ XK_Begin = 0xff58,
+ XK_Select = 0xff60,
+ XK_Print = 0xff61,
+ XK_Execute = 0xff62,
+ XK_Insert = 0xff63,
+ XK_Undo = 0xff65,
+ XK_Redo = 0xff66,
+ XK_Menu = 0xff67,
+ XK_Find = 0xff68,
+ XK_Cancel = 0xff69,
+ XK_Help = 0xff6a,
+ XK_Break = 0xff6b,
+ XK_Mode_switch = 0xff7e,
+ XK_script_switch = 0xff7e,
+ XK_Num_Lock = 0xff7f,
+ XK_KP_Space = 0xff80,
+ XK_KP_Tab = 0xff89,
+ XK_KP_Enter = 0xff8d,
+ XK_KP_F1 = 0xff91,
+ XK_KP_F2 = 0xff92,
+ XK_KP_F3 = 0xff93,
+ XK_KP_F4 = 0xff94,
+ XK_KP_Home = 0xff95,
+ XK_KP_Left = 0xff96,
+ XK_KP_Up = 0xff97,
+ XK_KP_Right = 0xff98,
+ XK_KP_Down = 0xff99,
+ XK_KP_Prior = 0xff9a,
+ XK_KP_Page_Up = 0xff9a,
+ XK_KP_Next = 0xff9b,
+ XK_KP_Page_Down = 0xff9b,
+ XK_KP_End = 0xff9c,
+ XK_KP_Begin = 0xff9d,
+ XK_KP_Insert = 0xff9e,
+ XK_KP_Delete = 0xff9f,
+ XK_KP_Equal = 0xffbd,
+ XK_KP_Multiply = 0xffaa,
+ XK_KP_Add = 0xffab,
+ XK_KP_Separator = 0xffac,
+ XK_KP_Subtract = 0xffad,
+ XK_KP_Decimal = 0xffae,
+ XK_KP_Divide = 0xffaf,
+ XK_KP_0 = 0xffb0,
+ XK_KP_1 = 0xffb1,
+ XK_KP_2 = 0xffb2,
+ XK_KP_3 = 0xffb3,
+ XK_KP_4 = 0xffb4,
+ XK_KP_5 = 0xffb5,
+ XK_KP_6 = 0xffb6,
+ XK_KP_7 = 0xffb7,
+ XK_KP_8 = 0xffb8,
+ XK_KP_9 = 0xffb9,
+ XK_F1 = 0xffbe,
+ XK_F2 = 0xffbf,
+ XK_F3 = 0xffc0,
+ XK_F4 = 0xffc1,
+ XK_F5 = 0xffc2,
+ XK_F6 = 0xffc3,
+ XK_F7 = 0xffc4,
+ XK_F8 = 0xffc5,
+ XK_F9 = 0xffc6,
+ XK_F10 = 0xffc7,
+ XK_F11 = 0xffc8,
+ XK_L1 = 0xffc8,
+ XK_F12 = 0xffc9,
+ XK_L2 = 0xffc9,
+ XK_F13 = 0xffca,
+ XK_L3 = 0xffca,
+ XK_F14 = 0xffcb,
+ XK_L4 = 0xffcb,
+ XK_F15 = 0xffcc,
+ XK_L5 = 0xffcc,
+ XK_F16 = 0xffcd,
+ XK_L6 = 0xffcd,
+ XK_F17 = 0xffce,
+ XK_L7 = 0xffce,
+ XK_F18 = 0xffcf,
+ XK_L8 = 0xffcf,
+ XK_F19 = 0xffd0,
+ XK_L9 = 0xffd0,
+ XK_F20 = 0xffd1,
+ XK_L10 = 0xffd1,
+ XK_F21 = 0xffd2,
+ XK_R1 = 0xffd2,
+ XK_F22 = 0xffd3,
+ XK_R2 = 0xffd3,
+ XK_F23 = 0xffd4,
+ XK_R3 = 0xffd4,
+ XK_F24 = 0xffd5,
+ XK_R4 = 0xffd5,
+ XK_F25 = 0xffd6,
+ XK_R5 = 0xffd6,
+ XK_F26 = 0xffd7,
+ XK_R6 = 0xffd7,
+ XK_F27 = 0xffd8,
+ XK_R7 = 0xffd8,
+ XK_F28 = 0xffd9,
+ XK_R8 = 0xffd9,
+ XK_F29 = 0xffda,
+ XK_R9 = 0xffda,
+ XK_F30 = 0xffdb,
+ XK_R10 = 0xffdb,
+ XK_F31 = 0xffdc,
+ XK_R11 = 0xffdc,
+ XK_F32 = 0xffdd,
+ XK_R12 = 0xffdd,
+ XK_F33 = 0xffde,
+ XK_R13 = 0xffde,
+ XK_F34 = 0xffdf,
+ XK_R14 = 0xffdf,
+ XK_F35 = 0xffe0,
+ XK_R15 = 0xffe0,
+ 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,
+ XK_ISO_Lock = 0xfe01,
+ XK_ISO_Level2_Latch = 0xfe02,
+ XK_ISO_Level3_Shift = 0xfe03,
+ XK_ISO_Level3_Latch = 0xfe04,
+ XK_ISO_Level3_Lock = 0xfe05,
+ XK_ISO_Level5_Shift = 0xfe11,
+ XK_ISO_Level5_Latch = 0xfe12,
+ XK_ISO_Level5_Lock = 0xfe13,
+ XK_ISO_Group_Shift = 0xff7e,
+ XK_ISO_Group_Latch = 0xfe06,
+ XK_ISO_Group_Lock = 0xfe07,
+ XK_ISO_Next_Group = 0xfe08,
+ XK_ISO_Next_Group_Lock = 0xfe09,
+ XK_ISO_Prev_Group = 0xfe0a,
+ XK_ISO_Prev_Group_Lock = 0xfe0b,
+ XK_ISO_First_Group = 0xfe0c,
+ XK_ISO_First_Group_Lock = 0xfe0d,
+ XK_ISO_Last_Group = 0xfe0e,
+ XK_ISO_Last_Group_Lock = 0xfe0f,
+ XK_ISO_Left_Tab = 0xfe20,
+ XK_ISO_Move_Line_Up = 0xfe21,
+ XK_ISO_Move_Line_Down = 0xfe22,
+ XK_ISO_Partial_Line_Up = 0xfe23,
+ XK_ISO_Partial_Line_Down = 0xfe24,
+ XK_ISO_Partial_Space_Left = 0xfe25,
+ XK_ISO_Partial_Space_Right = 0xfe26,
+ XK_ISO_Set_Margin_Left = 0xfe27,
+ XK_ISO_Set_Margin_Right = 0xfe28,
+ XK_ISO_Release_Margin_Left = 0xfe29,
+ XK_ISO_Release_Margin_Right = 0xfe2a,
+ XK_ISO_Release_Both_Margins = 0xfe2b,
+ XK_ISO_Fast_Cursor_Left = 0xfe2c,
+ XK_ISO_Fast_Cursor_Right = 0xfe2d,
+ XK_ISO_Fast_Cursor_Up = 0xfe2e,
+ XK_ISO_Fast_Cursor_Down = 0xfe2f,
+ XK_ISO_Continuous_Underline = 0xfe30,
+ XK_ISO_Discontinuous_Underline = 0xfe31,
+ XK_ISO_Emphasize = 0xfe32,
+ XK_ISO_Center_Object = 0xfe33,
+ XK_ISO_Enter = 0xfe34,
+ XK_dead_grave = 0xfe50,
+ XK_dead_acute = 0xfe51,
+ XK_dead_circumflex = 0xfe52,
+ XK_dead_tilde = 0xfe53,
+ XK_dead_perispomeni = 0xfe53,
+ XK_dead_macron = 0xfe54,
+ XK_dead_breve = 0xfe55,
+ XK_dead_abovedot = 0xfe56,
+ XK_dead_diaeresis = 0xfe57,
+ XK_dead_abovering = 0xfe58,
+ XK_dead_doubleacute = 0xfe59,
+ XK_dead_caron = 0xfe5a,
+ XK_dead_cedilla = 0xfe5b,
+ XK_dead_ogonek = 0xfe5c,
+ XK_dead_iota = 0xfe5d,
+ XK_dead_voiced_sound = 0xfe5e,
+ XK_dead_semivoiced_sound = 0xfe5f,
+ XK_dead_belowdot = 0xfe60,
+ XK_dead_hook = 0xfe61,
+ XK_dead_horn = 0xfe62,
+ XK_dead_stroke = 0xfe63,
+ XK_dead_abovecomma = 0xfe64,
+ XK_dead_psili = 0xfe64,
+ XK_dead_abovereversedcomma = 0xfe65,
+ XK_dead_dasia = 0xfe65,
+ XK_dead_doublegrave = 0xfe66,
+ XK_dead_belowring = 0xfe67,
+ XK_dead_belowmacron = 0xfe68,
+ XK_dead_belowcircumflex = 0xfe69,
+ XK_dead_belowtilde = 0xfe6a,
+ XK_dead_belowbreve = 0xfe6b,
+ XK_dead_belowdiaeresis = 0xfe6c,
+ XK_dead_invertedbreve = 0xfe6d,
+ XK_dead_belowcomma = 0xfe6e,
+ XK_dead_currency = 0xfe6f,
+ XK_dead_lowline = 0xfe90,
+ XK_dead_aboveverticalline = 0xfe91,
+ XK_dead_belowverticalline = 0xfe92,
+ XK_dead_longsolidusoverlay = 0xfe93,
+ XK_dead_a = 0xfe80,
+ XK_dead_A = 0xfe81,
+ XK_dead_e = 0xfe82,
+ XK_dead_E = 0xfe83,
+ XK_dead_i = 0xfe84,
+ XK_dead_I = 0xfe85,
+ XK_dead_o = 0xfe86,
+ XK_dead_O = 0xfe87,
+ XK_dead_u = 0xfe88,
+ XK_dead_U = 0xfe89,
+ XK_dead_small_schwa = 0xfe8a,
+ XK_dead_capital_schwa = 0xfe8b,
+ XK_dead_greek = 0xfe8c,
+ XK_First_Virtual_Screen = 0xfed0,
+ XK_Prev_Virtual_Screen = 0xfed1,
+ XK_Next_Virtual_Screen = 0xfed2,
+ XK_Last_Virtual_Screen = 0xfed4,
+ XK_Terminate_Server = 0xfed5,
+ XK_AccessX_Enable = 0xfe70,
+ XK_AccessX_Feedback_Enable = 0xfe71,
+ XK_RepeatKeys_Enable = 0xfe72,
+ XK_SlowKeys_Enable = 0xfe73,
+ XK_BounceKeys_Enable = 0xfe74,
+ XK_StickyKeys_Enable = 0xfe75,
+ XK_MouseKeys_Enable = 0xfe76,
+ XK_MouseKeys_Accel_Enable = 0xfe77,
+ XK_Overlay1_Enable = 0xfe78,
+ XK_Overlay2_Enable = 0xfe79,
+ XK_AudibleBell_Enable = 0xfe7a,
+ XK_Pointer_Left = 0xfee0,
+ XK_Pointer_Right = 0xfee1,
+ XK_Pointer_Up = 0xfee2,
+ XK_Pointer_Down = 0xfee3,
+ XK_Pointer_UpLeft = 0xfee4,
+ XK_Pointer_UpRight = 0xfee5,
+ XK_Pointer_DownLeft = 0xfee6,
+ XK_Pointer_DownRight = 0xfee7,
+ XK_Pointer_Button_Dflt = 0xfee8,
+ XK_Pointer_Button1 = 0xfee9,
+ XK_Pointer_Button2 = 0xfeea,
+ XK_Pointer_Button3 = 0xfeeb,
+ XK_Pointer_Button4 = 0xfeec,
+ XK_Pointer_Button5 = 0xfeed,
+ XK_Pointer_DblClick_Dflt = 0xfeee,
+ XK_Pointer_DblClick1 = 0xfeef,
+ XK_Pointer_DblClick2 = 0xfef0,
+ XK_Pointer_DblClick3 = 0xfef1,
+ XK_Pointer_DblClick4 = 0xfef2,
+ XK_Pointer_DblClick5 = 0xfef3,
+ XK_Pointer_Drag_Dflt = 0xfef4,
+ XK_Pointer_Drag1 = 0xfef5,
+ XK_Pointer_Drag2 = 0xfef6,
+ XK_Pointer_Drag3 = 0xfef7,
+ XK_Pointer_Drag4 = 0xfef8,
+ XK_Pointer_Drag5 = 0xfefd,
+ XK_Pointer_EnableKeys = 0xfef9,
+ XK_Pointer_Accelerate = 0xfefa,
+ XK_Pointer_DfltBtnNext = 0xfefb,
+ XK_Pointer_DfltBtnPrev = 0xfefc,
+ XK_ch = 0xfea0,
+ XK_Ch = 0xfea1,
+ XK_CH = 0xfea2,
+ XK_c_h = 0xfea3,
+ XK_C_h = 0xfea4,
+ XK_C_H = 0xfea5,
+ XK_3270_Duplicate = 0xfd01,
+ XK_3270_FieldMark = 0xfd02,
+ XK_3270_Right2 = 0xfd03,
+ XK_3270_Left2 = 0xfd04,
+ XK_3270_BackTab = 0xfd05,
+ XK_3270_EraseEOF = 0xfd06,
+ XK_3270_EraseInput = 0xfd07,
+ XK_3270_Reset = 0xfd08,
+ XK_3270_Quit = 0xfd09,
+ XK_3270_PA1 = 0xfd0a,
+ XK_3270_PA2 = 0xfd0b,
+ XK_3270_PA3 = 0xfd0c,
+ XK_3270_Test = 0xfd0d,
+ XK_3270_Attn = 0xfd0e,
+ XK_3270_CursorBlink = 0xfd0f,
+ XK_3270_AltCursor = 0xfd10,
+ XK_3270_KeyClick = 0xfd11,
+ XK_3270_Jump = 0xfd12,
+ XK_3270_Ident = 0xfd13,
+ XK_3270_Rule = 0xfd14,
+ XK_3270_Copy = 0xfd15,
+ XK_3270_Play = 0xfd16,
+ XK_3270_Setup = 0xfd17,
+ XK_3270_Record = 0xfd18,
+ XK_3270_ChangeScreen = 0xfd19,
+ XK_3270_DeleteWord = 0xfd1a,
+ XK_3270_ExSelect = 0xfd1b,
+ XK_3270_CursorSelect = 0xfd1c,
+ XK_3270_PrintScreen = 0xfd1d,
+ XK_3270_Enter = 0xfd1e,
+ XK_space = 0x0020,
+ XK_exclam = 0x0021,
+ XK_quotedbl = 0x0022,
+ XK_numbersign = 0x0023,
+ XK_dollar = 0x0024,
+ XK_percent = 0x0025,
+ XK_ampersand = 0x0026,
+ XK_apostrophe = 0x0027,
+ XK_quoteright = 0x0027,
+ XK_parenleft = 0x0028,
+ XK_parenright = 0x0029,
+ XK_asterisk = 0x002a,
+ XK_plus = 0x002b,
+ XK_comma = 0x002c,
+ XK_minus = 0x002d,
+ XK_period = 0x002e,
+ XK_slash = 0x002f,
+ XK_0 = 0x0030,
+ XK_1 = 0x0031,
+ XK_2 = 0x0032,
+ XK_3 = 0x0033,
+ XK_4 = 0x0034,
+ XK_5 = 0x0035,
+ XK_6 = 0x0036,
+ XK_7 = 0x0037,
+ XK_8 = 0x0038,
+ XK_9 = 0x0039,
+ XK_colon = 0x003a,
+ XK_semicolon = 0x003b,
+ XK_less = 0x003c,
+ XK_equal = 0x003d,
+ XK_greater = 0x003e,
+ XK_question = 0x003f,
+ XK_at = 0x0040,
+ XK_A = 0x0041,
+ XK_B = 0x0042,
+ XK_C = 0x0043,
+ XK_D = 0x0044,
+ XK_E = 0x0045,
+ XK_F = 0x0046,
+ XK_G = 0x0047,
+ XK_H = 0x0048,
+ XK_I = 0x0049,
+ XK_J = 0x004a,
+ XK_K = 0x004b,
+ XK_L = 0x004c,
+ XK_M = 0x004d,
+ XK_N = 0x004e,
+ XK_O = 0x004f,
+ XK_P = 0x0050,
+ XK_Q = 0x0051,
+ XK_R = 0x0052,
+ XK_S = 0x0053,
+ XK_T = 0x0054,
+ XK_U = 0x0055,
+ XK_V = 0x0056,
+ XK_W = 0x0057,
+ XK_X = 0x0058,
+ XK_Y = 0x0059,
+ XK_Z = 0x005a,
+ XK_bracketleft = 0x005b,
+ XK_backslash = 0x005c,
+ XK_bracketright = 0x005d,
+ XK_asciicircum = 0x005e,
+ XK_underscore = 0x005f,
+ XK_grave = 0x0060,
+ XK_quoteleft = 0x0060,
+ XK_a = 0x0061,
+ XK_b = 0x0062,
+ XK_c = 0x0063,
+ XK_d = 0x0064,
+ XK_e = 0x0065,
+ XK_f = 0x0066,
+ XK_g = 0x0067,
+ XK_h = 0x0068,
+ XK_i = 0x0069,
+ XK_j = 0x006a,
+ XK_k = 0x006b,
+ XK_l = 0x006c,
+ XK_m = 0x006d,
+ XK_n = 0x006e,
+ XK_o = 0x006f,
+ XK_p = 0x0070,
+ XK_q = 0x0071,
+ XK_r = 0x0072,
+ XK_s = 0x0073,
+ XK_t = 0x0074,
+ XK_u = 0x0075,
+ XK_v = 0x0076,
+ XK_w = 0x0077,
+ XK_x = 0x0078,
+ XK_y = 0x0079,
+ XK_z = 0x007a,
+ XK_braceleft = 0x007b,
+ XK_bar = 0x007c,
+ XK_braceright = 0x007d,
+ XK_asciitilde = 0x007e,
+ XK_nobreakspace = 0x00a0,
+ XK_exclamdown = 0x00a1,
+ XK_cent = 0x00a2,
+ XK_sterling = 0x00a3,
+ XK_currency = 0x00a4,
+ XK_yen = 0x00a5,
+ XK_brokenbar = 0x00a6,
+ XK_section = 0x00a7,
+ XK_diaeresis = 0x00a8,
+ XK_copyright = 0x00a9,
+ XK_ordfeminine = 0x00aa,
+ XK_guillemotleft = 0x00ab,
+ XK_notsign = 0x00ac,
+ XK_hyphen = 0x00ad,
+ XK_registered = 0x00ae,
+ XK_macron = 0x00af,
+ XK_degree = 0x00b0,
+ XK_plusminus = 0x00b1,
+ XK_twosuperior = 0x00b2,
+ XK_threesuperior = 0x00b3,
+ XK_acute = 0x00b4,
+ XK_mu = 0x00b5,
+ XK_paragraph = 0x00b6,
+ XK_periodcentered = 0x00b7,
+ XK_cedilla = 0x00b8,
+ XK_onesuperior = 0x00b9,
+ XK_masculine = 0x00ba,
+ XK_guillemotright = 0x00bb,
+ XK_onequarter = 0x00bc,
+ XK_onehalf = 0x00bd,
+ XK_threequarters = 0x00be,
+ XK_questiondown = 0x00bf,
+ XK_Agrave = 0x00c0,
+ XK_Aacute = 0x00c1,
+ XK_Acircumflex = 0x00c2,
+ XK_Atilde = 0x00c3,
+ XK_Adiaeresis = 0x00c4,
+ XK_Aring = 0x00c5,
+ XK_AE = 0x00c6,
+ XK_Ccedilla = 0x00c7,
+ XK_Egrave = 0x00c8,
+ XK_Eacute = 0x00c9,
+ XK_Ecircumflex = 0x00ca,
+ XK_Ediaeresis = 0x00cb,
+ XK_Igrave = 0x00cc,
+ XK_Iacute = 0x00cd,
+ XK_Icircumflex = 0x00ce,
+ XK_Idiaeresis = 0x00cf,
+ XK_ETH = 0x00d0,
+ XK_Eth = 0x00d0,
+ XK_Ntilde = 0x00d1,
+ XK_Ograve = 0x00d2,
+ XK_Oacute = 0x00d3,
+ XK_Ocircumflex = 0x00d4,
+ XK_Otilde = 0x00d5,
+ XK_Odiaeresis = 0x00d6,
+ XK_multiply = 0x00d7,
+ XK_Oslash = 0x00d8,
+ XK_Ooblique = 0x00d8,
+ XK_Ugrave = 0x00d9,
+ XK_Uacute = 0x00da,
+ XK_Ucircumflex = 0x00db,
+ XK_Udiaeresis = 0x00dc,
+ XK_Yacute = 0x00dd,
+ XK_THORN = 0x00de,
+ XK_Thorn = 0x00de,
+ XK_ssharp = 0x00df,
+ XK_agrave = 0x00e0,
+ XK_aacute = 0x00e1,
+ XK_acircumflex = 0x00e2,
+ XK_atilde = 0x00e3,
+ XK_adiaeresis = 0x00e4,
+ XK_aring = 0x00e5,
+ XK_ae = 0x00e6,
+ XK_ccedilla = 0x00e7,
+ XK_egrave = 0x00e8,
+ XK_eacute = 0x00e9,
+ XK_ecircumflex = 0x00ea,
+ XK_ediaeresis = 0x00eb,
+ XK_igrave = 0x00ec,
+ XK_iacute = 0x00ed,
+ XK_icircumflex = 0x00ee,
+ XK_idiaeresis = 0x00ef,
+ XK_eth = 0x00f0,
+ XK_ntilde = 0x00f1,
+ XK_ograve = 0x00f2,
+ XK_oacute = 0x00f3,
+ XK_ocircumflex = 0x00f4,
+ XK_otilde = 0x00f5,
+ XK_odiaeresis = 0x00f6,
+ XK_division = 0x00f7,
+ XK_oslash = 0x00f8,
+ XK_ooblique = 0x00f8,
+ XK_ugrave = 0x00f9,
+ XK_uacute = 0x00fa,
+ XK_ucircumflex = 0x00fb,
+ XK_udiaeresis = 0x00fc,
+ XK_yacute = 0x00fd,
+ XK_thorn = 0x00fe,
+ XK_ydiaeresis = 0x00ff,
+ XK_Aogonek = 0x01a1,
+ XK_breve = 0x01a2,
+ XK_Lstroke = 0x01a3,
+ XK_Lcaron = 0x01a5,
+ XK_Sacute = 0x01a6,
+ XK_Scaron = 0x01a9,
+ XK_Scedilla = 0x01aa,
+ XK_Tcaron = 0x01ab,
+ XK_Zacute = 0x01ac,
+ XK_Zcaron = 0x01ae,
+ XK_Zabovedot = 0x01af,
+ XK_aogonek = 0x01b1,
+ XK_ogonek = 0x01b2,
+ XK_lstroke = 0x01b3,
+ XK_lcaron = 0x01b5,
+ XK_sacute = 0x01b6,
+ XK_caron = 0x01b7,
+ XK_scaron = 0x01b9,
+ XK_scedilla = 0x01ba,
+ XK_tcaron = 0x01bb,
+ XK_zacute = 0x01bc,
+ XK_doubleacute = 0x01bd,
+ XK_zcaron = 0x01be,
+ XK_zabovedot = 0x01bf,
+ XK_Racute = 0x01c0,
+ XK_Abreve = 0x01c3,
+ XK_Lacute = 0x01c5,
+ XK_Cacute = 0x01c6,
+ XK_Ccaron = 0x01c8,
+ XK_Eogonek = 0x01ca,
+ XK_Ecaron = 0x01cc,
+ XK_Dcaron = 0x01cf,
+ XK_Dstroke = 0x01d0,
+ XK_Nacute = 0x01d1,
+ XK_Ncaron = 0x01d2,
+ XK_Odoubleacute = 0x01d5,
+ XK_Rcaron = 0x01d8,
+ XK_Uring = 0x01d9,
+ XK_Udoubleacute = 0x01db,
+ XK_Tcedilla = 0x01de,
+ XK_racute = 0x01e0,
+ XK_abreve = 0x01e3,
+ XK_lacute = 0x01e5,
+ XK_cacute = 0x01e6,
+ XK_ccaron = 0x01e8,
+ XK_eogonek = 0x01ea,
+ XK_ecaron = 0x01ec,
+ XK_dcaron = 0x01ef,
+ XK_dstroke = 0x01f0,
+ XK_nacute = 0x01f1,
+ XK_ncaron = 0x01f2,
+ XK_odoubleacute = 0x01f5,
+ XK_rcaron = 0x01f8,
+ XK_uring = 0x01f9,
+ XK_udoubleacute = 0x01fb,
+ XK_tcedilla = 0x01fe,
+ XK_abovedot = 0x01ff,
+ XK_Hstroke = 0x02a1,
+ XK_Hcircumflex = 0x02a6,
+ XK_Iabovedot = 0x02a9,
+ XK_Gbreve = 0x02ab,
+ XK_Jcircumflex = 0x02ac,
+ XK_hstroke = 0x02b1,
+ XK_hcircumflex = 0x02b6,
+ XK_idotless = 0x02b9,
+ XK_gbreve = 0x02bb,
+ XK_jcircumflex = 0x02bc,
+ XK_Cabovedot = 0x02c5,
+ XK_Ccircumflex = 0x02c6,
+ XK_Gabovedot = 0x02d5,
+ XK_Gcircumflex = 0x02d8,
+ XK_Ubreve = 0x02dd,
+ XK_Scircumflex = 0x02de,
+ XK_cabovedot = 0x02e5,
+ XK_ccircumflex = 0x02e6,
+ XK_gabovedot = 0x02f5,
+ XK_gcircumflex = 0x02f8,
+ XK_ubreve = 0x02fd,
+ XK_scircumflex = 0x02fe,
+ XK_kra = 0x03a2,
+ XK_kappa = 0x03a2,
+ XK_Rcedilla = 0x03a3,
+ XK_Itilde = 0x03a5,
+ XK_Lcedilla = 0x03a6,
+ XK_Emacron = 0x03aa,
+ XK_Gcedilla = 0x03ab,
+ XK_Tslash = 0x03ac,
+ XK_rcedilla = 0x03b3,
+ XK_itilde = 0x03b5,
+ XK_lcedilla = 0x03b6,
+ XK_emacron = 0x03ba,
+ XK_gcedilla = 0x03bb,
+ XK_tslash = 0x03bc,
+ XK_ENG = 0x03bd,
+ XK_eng = 0x03bf,
+ XK_Amacron = 0x03c0,
+ XK_Iogonek = 0x03c7,
+ XK_Eabovedot = 0x03cc,
+ XK_Imacron = 0x03cf,
+ XK_Ncedilla = 0x03d1,
+ XK_Omacron = 0x03d2,
+ XK_Kcedilla = 0x03d3,
+ XK_Uogonek = 0x03d9,
+ XK_Utilde = 0x03dd,
+ XK_Umacron = 0x03de,
+ XK_amacron = 0x03e0,
+ XK_iogonek = 0x03e7,
+ XK_eabovedot = 0x03ec,
+ XK_imacron = 0x03ef,
+ XK_ncedilla = 0x03f1,
+ XK_omacron = 0x03f2,
+ XK_kcedilla = 0x03f3,
+ XK_uogonek = 0x03f9,
+ XK_utilde = 0x03fd,
+ XK_umacron = 0x03fe,
+ XK_Wcircumflex = 0x1000174,
+ XK_wcircumflex = 0x1000175,
+ XK_Ycircumflex = 0x1000176,
+ XK_ycircumflex = 0x1000177,
+ XK_Babovedot = 0x1001e02,
+ XK_babovedot = 0x1001e03,
+ XK_Dabovedot = 0x1001e0a,
+ XK_dabovedot = 0x1001e0b,
+ XK_Fabovedot = 0x1001e1e,
+ XK_fabovedot = 0x1001e1f,
+ XK_Mabovedot = 0x1001e40,
+ XK_mabovedot = 0x1001e41,
+ XK_Pabovedot = 0x1001e56,
+ XK_pabovedot = 0x1001e57,
+ XK_Sabovedot = 0x1001e60,
+ XK_sabovedot = 0x1001e61,
+ XK_Tabovedot = 0x1001e6a,
+ XK_tabovedot = 0x1001e6b,
+ XK_Wgrave = 0x1001e80,
+ XK_wgrave = 0x1001e81,
+ XK_Wacute = 0x1001e82,
+ XK_wacute = 0x1001e83,
+ XK_Wdiaeresis = 0x1001e84,
+ XK_wdiaeresis = 0x1001e85,
+ XK_Ygrave = 0x1001ef2,
+ XK_ygrave = 0x1001ef3,
+ XK_OE = 0x13bc,
+ XK_oe = 0x13bd,
+ XK_Ydiaeresis = 0x13be,
+ XK_overline = 0x047e,
+ XK_kana_fullstop = 0x04a1,
+ XK_kana_openingbracket = 0x04a2,
+ XK_kana_closingbracket = 0x04a3,
+ XK_kana_comma = 0x04a4,
+ XK_kana_conjunctive = 0x04a5,
+ XK_kana_middledot = 0x04a5,
+ XK_kana_WO = 0x04a6,
+ XK_kana_a = 0x04a7,
+ XK_kana_i = 0x04a8,
+ XK_kana_u = 0x04a9,
+ XK_kana_e = 0x04aa,
+ XK_kana_o = 0x04ab,
+ XK_kana_ya = 0x04ac,
+ XK_kana_yu = 0x04ad,
+ XK_kana_yo = 0x04ae,
+ XK_kana_tsu = 0x04af,
+ XK_kana_tu = 0x04af,
+ XK_prolongedsound = 0x04b0,
+ XK_kana_A = 0x04b1,
+ XK_kana_I = 0x04b2,
+ XK_kana_U = 0x04b3,
+ XK_kana_E = 0x04b4,
+ XK_kana_O = 0x04b5,
+ XK_kana_KA = 0x04b6,
+ XK_kana_KI = 0x04b7,
+ XK_kana_KU = 0x04b8,
+ XK_kana_KE = 0x04b9,
+ XK_kana_KO = 0x04ba,
+ XK_kana_SA = 0x04bb,
+ XK_kana_SHI = 0x04bc,
+ XK_kana_SU = 0x04bd,
+ XK_kana_SE = 0x04be,
+ XK_kana_SO = 0x04bf,
+ XK_kana_TA = 0x04c0,
+ XK_kana_CHI = 0x04c1,
+ XK_kana_TI = 0x04c1,
+ XK_kana_TSU = 0x04c2,
+ XK_kana_TU = 0x04c2,
+ XK_kana_TE = 0x04c3,
+ XK_kana_TO = 0x04c4,
+ XK_kana_NA = 0x04c5,
+ XK_kana_NI = 0x04c6,
+ XK_kana_NU = 0x04c7,
+ XK_kana_NE = 0x04c8,
+ XK_kana_NO = 0x04c9,
+ XK_kana_HA = 0x04ca,
+ XK_kana_HI = 0x04cb,
+ XK_kana_FU = 0x04cc,
+ XK_kana_HU = 0x04cc,
+ XK_kana_HE = 0x04cd,
+ XK_kana_HO = 0x04ce,
+ XK_kana_MA = 0x04cf,
+ XK_kana_MI = 0x04d0,
+ XK_kana_MU = 0x04d1,
+ XK_kana_ME = 0x04d2,
+ XK_kana_MO = 0x04d3,
+ XK_kana_YA = 0x04d4,
+ XK_kana_YU = 0x04d5,
+ XK_kana_YO = 0x04d6,
+ XK_kana_RA = 0x04d7,
+ XK_kana_RI = 0x04d8,
+ XK_kana_RU = 0x04d9,
+ XK_kana_RE = 0x04da,
+ XK_kana_RO = 0x04db,
+ XK_kana_WA = 0x04dc,
+ XK_kana_N = 0x04dd,
+ XK_voicedsound = 0x04de,
+ XK_semivoicedsound = 0x04df,
+ XK_kana_switch = 0xff7e,
+ XK_Farsi_0 = 0x10006f0,
+ XK_Farsi_1 = 0x10006f1,
+ XK_Farsi_2 = 0x10006f2,
+ XK_Farsi_3 = 0x10006f3,
+ XK_Farsi_4 = 0x10006f4,
+ XK_Farsi_5 = 0x10006f5,
+ XK_Farsi_6 = 0x10006f6,
+ XK_Farsi_7 = 0x10006f7,
+ XK_Farsi_8 = 0x10006f8,
+ XK_Farsi_9 = 0x10006f9,
+ XK_Arabic_percent = 0x100066a,
+ XK_Arabic_superscript_alef = 0x1000670,
+ XK_Arabic_tteh = 0x1000679,
+ XK_Arabic_peh = 0x100067e,
+ XK_Arabic_tcheh = 0x1000686,
+ XK_Arabic_ddal = 0x1000688,
+ XK_Arabic_rreh = 0x1000691,
+ XK_Arabic_comma = 0x05ac,
+ XK_Arabic_fullstop = 0x10006d4,
+ XK_Arabic_0 = 0x1000660,
+ XK_Arabic_1 = 0x1000661,
+ XK_Arabic_2 = 0x1000662,
+ XK_Arabic_3 = 0x1000663,
+ XK_Arabic_4 = 0x1000664,
+ XK_Arabic_5 = 0x1000665,
+ XK_Arabic_6 = 0x1000666,
+ XK_Arabic_7 = 0x1000667,
+ XK_Arabic_8 = 0x1000668,
+ XK_Arabic_9 = 0x1000669,
+ XK_Arabic_semicolon = 0x05bb,
+ XK_Arabic_question_mark = 0x05bf,
+ XK_Arabic_hamza = 0x05c1,
+ XK_Arabic_maddaonalef = 0x05c2,
+ XK_Arabic_hamzaonalef = 0x05c3,
+ XK_Arabic_hamzaonwaw = 0x05c4,
+ XK_Arabic_hamzaunderalef = 0x05c5,
+ XK_Arabic_hamzaonyeh = 0x05c6,
+ XK_Arabic_alef = 0x05c7,
+ XK_Arabic_beh = 0x05c8,
+ XK_Arabic_tehmarbuta = 0x05c9,
+ XK_Arabic_teh = 0x05ca,
+ XK_Arabic_theh = 0x05cb,
+ XK_Arabic_jeem = 0x05cc,
+ XK_Arabic_hah = 0x05cd,
+ XK_Arabic_khah = 0x05ce,
+ XK_Arabic_dal = 0x05cf,
+ XK_Arabic_thal = 0x05d0,
+ XK_Arabic_ra = 0x05d1,
+ XK_Arabic_zain = 0x05d2,
+ XK_Arabic_seen = 0x05d3,
+ XK_Arabic_sheen = 0x05d4,
+ XK_Arabic_sad = 0x05d5,
+ XK_Arabic_dad = 0x05d6,
+ XK_Arabic_tah = 0x05d7,
+ XK_Arabic_zah = 0x05d8,
+ XK_Arabic_ain = 0x05d9,
+ XK_Arabic_ghain = 0x05da,
+ XK_Arabic_tatweel = 0x05e0,
+ XK_Arabic_feh = 0x05e1,
+ XK_Arabic_qaf = 0x05e2,
+ XK_Arabic_kaf = 0x05e3,
+ XK_Arabic_lam = 0x05e4,
+ XK_Arabic_meem = 0x05e5,
+ XK_Arabic_noon = 0x05e6,
+ XK_Arabic_ha = 0x05e7,
+ XK_Arabic_heh = 0x05e7,
+ XK_Arabic_waw = 0x05e8,
+ XK_Arabic_alefmaksura = 0x05e9,
+ XK_Arabic_yeh = 0x05ea,
+ XK_Arabic_fathatan = 0x05eb,
+ XK_Arabic_dammatan = 0x05ec,
+ XK_Arabic_kasratan = 0x05ed,
+ XK_Arabic_fatha = 0x05ee,
+ XK_Arabic_damma = 0x05ef,
+ XK_Arabic_kasra = 0x05f0,
+ XK_Arabic_shadda = 0x05f1,
+ XK_Arabic_sukun = 0x05f2,
+ XK_Arabic_madda_above = 0x1000653,
+ XK_Arabic_hamza_above = 0x1000654,
+ XK_Arabic_hamza_below = 0x1000655,
+ XK_Arabic_jeh = 0x1000698,
+ XK_Arabic_veh = 0x10006a4,
+ XK_Arabic_keheh = 0x10006a9,
+ XK_Arabic_gaf = 0x10006af,
+ XK_Arabic_noon_ghunna = 0x10006ba,
+ XK_Arabic_heh_doachashmee = 0x10006be,
+ XK_Farsi_yeh = 0x10006cc,
+ XK_Arabic_farsi_yeh = 0x10006cc,
+ XK_Arabic_yeh_baree = 0x10006d2,
+ XK_Arabic_heh_goal = 0x10006c1,
+ XK_Arabic_switch = 0xff7e,
+ XK_Cyrillic_GHE_bar = 0x1000492,
+ XK_Cyrillic_ghe_bar = 0x1000493,
+ XK_Cyrillic_ZHE_descender = 0x1000496,
+ XK_Cyrillic_zhe_descender = 0x1000497,
+ XK_Cyrillic_KA_descender = 0x100049a,
+ XK_Cyrillic_ka_descender = 0x100049b,
+ XK_Cyrillic_KA_vertstroke = 0x100049c,
+ XK_Cyrillic_ka_vertstroke = 0x100049d,
+ XK_Cyrillic_EN_descender = 0x10004a2,
+ XK_Cyrillic_en_descender = 0x10004a3,
+ XK_Cyrillic_U_straight = 0x10004ae,
+ XK_Cyrillic_u_straight = 0x10004af,
+ XK_Cyrillic_U_straight_bar = 0x10004b0,
+ XK_Cyrillic_u_straight_bar = 0x10004b1,
+ XK_Cyrillic_HA_descender = 0x10004b2,
+ XK_Cyrillic_ha_descender = 0x10004b3,
+ XK_Cyrillic_CHE_descender = 0x10004b6,
+ XK_Cyrillic_che_descender = 0x10004b7,
+ XK_Cyrillic_CHE_vertstroke = 0x10004b8,
+ XK_Cyrillic_che_vertstroke = 0x10004b9,
+ XK_Cyrillic_SHHA = 0x10004ba,
+ XK_Cyrillic_shha = 0x10004bb,
+ XK_Cyrillic_SCHWA = 0x10004d8,
+ XK_Cyrillic_schwa = 0x10004d9,
+ XK_Cyrillic_I_macron = 0x10004e2,
+ XK_Cyrillic_i_macron = 0x10004e3,
+ XK_Cyrillic_O_bar = 0x10004e8,
+ XK_Cyrillic_o_bar = 0x10004e9,
+ XK_Cyrillic_U_macron = 0x10004ee,
+ XK_Cyrillic_u_macron = 0x10004ef,
+ XK_Serbian_dje = 0x06a1,
+ XK_Macedonia_gje = 0x06a2,
+ XK_Cyrillic_io = 0x06a3,
+ XK_Ukrainian_ie = 0x06a4,
+ XK_Ukranian_je = 0x06a4,
+ XK_Macedonia_dse = 0x06a5,
+ XK_Ukrainian_i = 0x06a6,
+ XK_Ukranian_i = 0x06a6,
+ XK_Ukrainian_yi = 0x06a7,
+ XK_Ukranian_yi = 0x06a7,
+ XK_Cyrillic_je = 0x06a8,
+ XK_Serbian_je = 0x06a8,
+ XK_Cyrillic_lje = 0x06a9,
+ XK_Serbian_lje = 0x06a9,
+ XK_Cyrillic_nje = 0x06aa,
+ XK_Serbian_nje = 0x06aa,
+ XK_Serbian_tshe = 0x06ab,
+ XK_Macedonia_kje = 0x06ac,
+ XK_Ukrainian_ghe_with_upturn = 0x06ad,
+ XK_Byelorussian_shortu = 0x06ae,
+ XK_Cyrillic_dzhe = 0x06af,
+ XK_Serbian_dze = 0x06af,
+ XK_numerosign = 0x06b0,
+ XK_Serbian_DJE = 0x06b1,
+ XK_Macedonia_GJE = 0x06b2,
+ XK_Cyrillic_IO = 0x06b3,
+ XK_Ukrainian_IE = 0x06b4,
+ XK_Ukranian_JE = 0x06b4,
+ XK_Macedonia_DSE = 0x06b5,
+ XK_Ukrainian_I = 0x06b6,
+ XK_Ukranian_I = 0x06b6,
+ XK_Ukrainian_YI = 0x06b7,
+ XK_Ukranian_YI = 0x06b7,
+ XK_Cyrillic_JE = 0x06b8,
+ XK_Serbian_JE = 0x06b8,
+ XK_Cyrillic_LJE = 0x06b9,
+ XK_Serbian_LJE = 0x06b9,
+ XK_Cyrillic_NJE = 0x06ba,
+ XK_Serbian_NJE = 0x06ba,
+ XK_Serbian_TSHE = 0x06bb,
+ XK_Macedonia_KJE = 0x06bc,
+ XK_Ukrainian_GHE_WITH_UPTURN = 0x06bd,
+ XK_Byelorussian_SHORTU = 0x06be,
+ XK_Cyrillic_DZHE = 0x06bf,
+ XK_Serbian_DZE = 0x06bf,
+ XK_Cyrillic_yu = 0x06c0,
+ XK_Cyrillic_a = 0x06c1,
+ XK_Cyrillic_be = 0x06c2,
+ XK_Cyrillic_tse = 0x06c3,
+ XK_Cyrillic_de = 0x06c4,
+ XK_Cyrillic_ie = 0x06c5,
+ XK_Cyrillic_ef = 0x06c6,
+ XK_Cyrillic_ghe = 0x06c7,
+ XK_Cyrillic_ha = 0x06c8,
+ XK_Cyrillic_i = 0x06c9,
+ XK_Cyrillic_shorti = 0x06ca,
+ XK_Cyrillic_ka = 0x06cb,
+ XK_Cyrillic_el = 0x06cc,
+ XK_Cyrillic_em = 0x06cd,
+ XK_Cyrillic_en = 0x06ce,
+ XK_Cyrillic_o = 0x06cf,
+ XK_Cyrillic_pe = 0x06d0,
+ XK_Cyrillic_ya = 0x06d1,
+ XK_Cyrillic_er = 0x06d2,
+ XK_Cyrillic_es = 0x06d3,
+ XK_Cyrillic_te = 0x06d4,
+ XK_Cyrillic_u = 0x06d5,
+ XK_Cyrillic_zhe = 0x06d6,
+ XK_Cyrillic_ve = 0x06d7,
+ XK_Cyrillic_softsign = 0x06d8,
+ XK_Cyrillic_yeru = 0x06d9,
+ XK_Cyrillic_ze = 0x06da,
+ XK_Cyrillic_sha = 0x06db,
+ XK_Cyrillic_e = 0x06dc,
+ XK_Cyrillic_shcha = 0x06dd,
+ XK_Cyrillic_che = 0x06de,
+ XK_Cyrillic_hardsign = 0x06df,
+ XK_Cyrillic_YU = 0x06e0,
+ XK_Cyrillic_A = 0x06e1,
+ XK_Cyrillic_BE = 0x06e2,
+ XK_Cyrillic_TSE = 0x06e3,
+ XK_Cyrillic_DE = 0x06e4,
+ XK_Cyrillic_IE = 0x06e5,
+ XK_Cyrillic_EF = 0x06e6,
+ XK_Cyrillic_GHE = 0x06e7,
+ XK_Cyrillic_HA = 0x06e8,
+ XK_Cyrillic_I = 0x06e9,
+ XK_Cyrillic_SHORTI = 0x06ea,
+ XK_Cyrillic_KA = 0x06eb,
+ XK_Cyrillic_EL = 0x06ec,
+ XK_Cyrillic_EM = 0x06ed,
+ XK_Cyrillic_EN = 0x06ee,
+ XK_Cyrillic_O = 0x06ef,
+ XK_Cyrillic_PE = 0x06f0,
+ XK_Cyrillic_YA = 0x06f1,
+ XK_Cyrillic_ER = 0x06f2,
+ XK_Cyrillic_ES = 0x06f3,
+ XK_Cyrillic_TE = 0x06f4,
+ XK_Cyrillic_U = 0x06f5,
+ XK_Cyrillic_ZHE = 0x06f6,
+ XK_Cyrillic_VE = 0x06f7,
+ XK_Cyrillic_SOFTSIGN = 0x06f8,
+ XK_Cyrillic_YERU = 0x06f9,
+ XK_Cyrillic_ZE = 0x06fa,
+ XK_Cyrillic_SHA = 0x06fb,
+ XK_Cyrillic_E = 0x06fc,
+ XK_Cyrillic_SHCHA = 0x06fd,
+ XK_Cyrillic_CHE = 0x06fe,
+ XK_Cyrillic_HARDSIGN = 0x06ff,
+ XK_Greek_ALPHAaccent = 0x07a1,
+ XK_Greek_EPSILONaccent = 0x07a2,
+ XK_Greek_ETAaccent = 0x07a3,
+ XK_Greek_IOTAaccent = 0x07a4,
+ XK_Greek_IOTAdieresis = 0x07a5,
+ XK_Greek_IOTAdiaeresis = 0x07a5,
+ XK_Greek_OMICRONaccent = 0x07a7,
+ XK_Greek_UPSILONaccent = 0x07a8,
+ XK_Greek_UPSILONdieresis = 0x07a9,
+ XK_Greek_OMEGAaccent = 0x07ab,
+ XK_Greek_accentdieresis = 0x07ae,
+ XK_Greek_horizbar = 0x07af,
+ XK_Greek_alphaaccent = 0x07b1,
+ XK_Greek_epsilonaccent = 0x07b2,
+ XK_Greek_etaaccent = 0x07b3,
+ XK_Greek_iotaaccent = 0x07b4,
+ XK_Greek_iotadieresis = 0x07b5,
+ XK_Greek_iotaaccentdieresis = 0x07b6,
+ XK_Greek_omicronaccent = 0x07b7,
+ XK_Greek_upsilonaccent = 0x07b8,
+ XK_Greek_upsilondieresis = 0x07b9,
+ XK_Greek_upsilonaccentdieresis = 0x07ba,
+ XK_Greek_omegaaccent = 0x07bb,
+ XK_Greek_ALPHA = 0x07c1,
+ XK_Greek_BETA = 0x07c2,
+ XK_Greek_GAMMA = 0x07c3,
+ XK_Greek_DELTA = 0x07c4,
+ XK_Greek_EPSILON = 0x07c5,
+ XK_Greek_ZETA = 0x07c6,
+ XK_Greek_ETA = 0x07c7,
+ XK_Greek_THETA = 0x07c8,
+ XK_Greek_IOTA = 0x07c9,
+ XK_Greek_KAPPA = 0x07ca,
+ XK_Greek_LAMDA = 0x07cb,
+ XK_Greek_LAMBDA = 0x07cb,
+ XK_Greek_MU = 0x07cc,
+ XK_Greek_NU = 0x07cd,
+ XK_Greek_XI = 0x07ce,
+ XK_Greek_OMICRON = 0x07cf,
+ XK_Greek_PI = 0x07d0,
+ XK_Greek_RHO = 0x07d1,
+ XK_Greek_SIGMA = 0x07d2,
+ XK_Greek_TAU = 0x07d4,
+ XK_Greek_UPSILON = 0x07d5,
+ XK_Greek_PHI = 0x07d6,
+ XK_Greek_CHI = 0x07d7,
+ XK_Greek_PSI = 0x07d8,
+ XK_Greek_OMEGA = 0x07d9,
+ XK_Greek_alpha = 0x07e1,
+ XK_Greek_beta = 0x07e2,
+ XK_Greek_gamma = 0x07e3,
+ XK_Greek_delta = 0x07e4,
+ XK_Greek_epsilon = 0x07e5,
+ XK_Greek_zeta = 0x07e6,
+ XK_Greek_eta = 0x07e7,
+ XK_Greek_theta = 0x07e8,
+ XK_Greek_iota = 0x07e9,
+ XK_Greek_kappa = 0x07ea,
+ XK_Greek_lamda = 0x07eb,
+ XK_Greek_lambda = 0x07eb,
+ XK_Greek_mu = 0x07ec,
+ XK_Greek_nu = 0x07ed,
+ XK_Greek_xi = 0x07ee,
+ XK_Greek_omicron = 0x07ef,
+ XK_Greek_pi = 0x07f0,
+ XK_Greek_rho = 0x07f1,
+ XK_Greek_sigma = 0x07f2,
+ XK_Greek_finalsmallsigma = 0x07f3,
+ XK_Greek_tau = 0x07f4,
+ XK_Greek_upsilon = 0x07f5,
+ XK_Greek_phi = 0x07f6,
+ XK_Greek_chi = 0x07f7,
+ XK_Greek_psi = 0x07f8,
+ XK_Greek_omega = 0x07f9,
+ XK_Greek_switch = 0xff7e,
+ XK_leftradical = 0x08a1,
+ XK_topleftradical = 0x08a2,
+ XK_horizconnector = 0x08a3,
+ XK_topintegral = 0x08a4,
+ XK_botintegral = 0x08a5,
+ XK_vertconnector = 0x08a6,
+ XK_topleftsqbracket = 0x08a7,
+ XK_botleftsqbracket = 0x08a8,
+ XK_toprightsqbracket = 0x08a9,
+ XK_botrightsqbracket = 0x08aa,
+ XK_topleftparens = 0x08ab,
+ XK_botleftparens = 0x08ac,
+ XK_toprightparens = 0x08ad,
+ XK_botrightparens = 0x08ae,
+ XK_leftmiddlecurlybrace = 0x08af,
+ XK_rightmiddlecurlybrace = 0x08b0,
+ XK_topleftsummation = 0x08b1,
+ XK_botleftsummation = 0x08b2,
+ XK_topvertsummationconnector = 0x08b3,
+ XK_botvertsummationconnector = 0x08b4,
+ XK_toprightsummation = 0x08b5,
+ XK_botrightsummation = 0x08b6,
+ XK_rightmiddlesummation = 0x08b7,
+ XK_lessthanequal = 0x08bc,
+ XK_notequal = 0x08bd,
+ XK_greaterthanequal = 0x08be,
+ XK_integral = 0x08bf,
+ XK_therefore = 0x08c0,
+ XK_variation = 0x08c1,
+ XK_infinity = 0x08c2,
+ XK_nabla = 0x08c5,
+ XK_approximate = 0x08c8,
+ XK_similarequal = 0x08c9,
+ XK_ifonlyif = 0x08cd,
+ XK_implies = 0x08ce,
+ XK_identical = 0x08cf,
+ XK_radical = 0x08d6,
+ XK_includedin = 0x08da,
+ XK_includes = 0x08db,
+ XK_intersection = 0x08dc,
+ XK_union = 0x08dd,
+ XK_logicaland = 0x08de,
+ XK_logicalor = 0x08df,
+ XK_partialderivative = 0x08ef,
+ XK_function = 0x08f6,
+ XK_leftarrow = 0x08fb,
+ XK_uparrow = 0x08fc,
+ XK_rightarrow = 0x08fd,
+ XK_downarrow = 0x08fe,
+ XK_blank = 0x09df,
+ XK_soliddiamond = 0x09e0,
+ XK_checkerboard = 0x09e1,
+ XK_ht = 0x09e2,
+ XK_ff = 0x09e3,
+ XK_cr = 0x09e4,
+ XK_lf = 0x09e5,
+ XK_nl = 0x09e8,
+ XK_vt = 0x09e9,
+ XK_lowrightcorner = 0x09ea,
+ XK_uprightcorner = 0x09eb,
+ XK_upleftcorner = 0x09ec,
+ XK_lowleftcorner = 0x09ed,
+ XK_crossinglines = 0x09ee,
+ XK_horizlinescan1 = 0x09ef,
+ XK_horizlinescan3 = 0x09f0,
+ XK_horizlinescan5 = 0x09f1,
+ XK_horizlinescan7 = 0x09f2,
+ XK_horizlinescan9 = 0x09f3,
+ XK_leftt = 0x09f4,
+ XK_rightt = 0x09f5,
+ XK_bott = 0x09f6,
+ XK_topt = 0x09f7,
+ XK_vertbar = 0x09f8,
+ XK_emspace = 0x0aa1,
+ XK_enspace = 0x0aa2,
+ XK_em3space = 0x0aa3,
+ XK_em4space = 0x0aa4,
+ XK_digitspace = 0x0aa5,
+ XK_punctspace = 0x0aa6,
+ XK_thinspace = 0x0aa7,
+ XK_hairspace = 0x0aa8,
+ XK_emdash = 0x0aa9,
+ XK_endash = 0x0aaa,
+ XK_signifblank = 0x0aac,
+ XK_ellipsis = 0x0aae,
+ XK_doubbaselinedot = 0x0aaf,
+ XK_onethird = 0x0ab0,
+ XK_twothirds = 0x0ab1,
+ XK_onefifth = 0x0ab2,
+ XK_twofifths = 0x0ab3,
+ XK_threefifths = 0x0ab4,
+ XK_fourfifths = 0x0ab5,
+ XK_onesixth = 0x0ab6,
+ XK_fivesixths = 0x0ab7,
+ XK_careof = 0x0ab8,
+ XK_figdash = 0x0abb,
+ XK_leftanglebracket = 0x0abc,
+ XK_decimalpoint = 0x0abd,
+ XK_rightanglebracket = 0x0abe,
+ XK_marker = 0x0abf,
+ XK_oneeighth = 0x0ac3,
+ XK_threeeighths = 0x0ac4,
+ XK_fiveeighths = 0x0ac5,
+ XK_seveneighths = 0x0ac6,
+ XK_trademark = 0x0ac9,
+ XK_signaturemark = 0x0aca,
+ XK_trademarkincircle = 0x0acb,
+ XK_leftopentriangle = 0x0acc,
+ XK_rightopentriangle = 0x0acd,
+ XK_emopencircle = 0x0ace,
+ XK_emopenrectangle = 0x0acf,
+ XK_leftsinglequotemark = 0x0ad0,
+ XK_rightsinglequotemark = 0x0ad1,
+ XK_leftdoublequotemark = 0x0ad2,
+ XK_rightdoublequotemark = 0x0ad3,
+ XK_prescription = 0x0ad4,
+ XK_permille = 0x0ad5,
+ XK_minutes = 0x0ad6,
+ XK_seconds = 0x0ad7,
+ XK_latincross = 0x0ad9,
+ XK_hexagram = 0x0ada,
+ XK_filledrectbullet = 0x0adb,
+ XK_filledlefttribullet = 0x0adc,
+ XK_filledrighttribullet = 0x0add,
+ XK_emfilledcircle = 0x0ade,
+ XK_emfilledrect = 0x0adf,
+ XK_enopencircbullet = 0x0ae0,
+ XK_enopensquarebullet = 0x0ae1,
+ XK_openrectbullet = 0x0ae2,
+ XK_opentribulletup = 0x0ae3,
+ XK_opentribulletdown = 0x0ae4,
+ XK_openstar = 0x0ae5,
+ XK_enfilledcircbullet = 0x0ae6,
+ XK_enfilledsqbullet = 0x0ae7,
+ XK_filledtribulletup = 0x0ae8,
+ XK_filledtribulletdown = 0x0ae9,
+ XK_leftpointer = 0x0aea,
+ XK_rightpointer = 0x0aeb,
+ XK_club = 0x0aec,
+ XK_diamond = 0x0aed,
+ XK_heart = 0x0aee,
+ XK_maltesecross = 0x0af0,
+ XK_dagger = 0x0af1,
+ XK_doubledagger = 0x0af2,
+ XK_checkmark = 0x0af3,
+ XK_ballotcross = 0x0af4,
+ XK_musicalsharp = 0x0af5,
+ XK_musicalflat = 0x0af6,
+ XK_malesymbol = 0x0af7,
+ XK_femalesymbol = 0x0af8,
+ XK_telephone = 0x0af9,
+ XK_telephonerecorder = 0x0afa,
+ XK_phonographcopyright = 0x0afb,
+ XK_caret = 0x0afc,
+ XK_singlelowquotemark = 0x0afd,
+ XK_doublelowquotemark = 0x0afe,
+ XK_cursor = 0x0aff,
+ XK_leftcaret = 0x0ba3,
+ XK_rightcaret = 0x0ba6,
+ XK_downcaret = 0x0ba8,
+ XK_upcaret = 0x0ba9,
+ XK_overbar = 0x0bc0,
+ XK_downtack = 0x0bc2,
+ XK_upshoe = 0x0bc3,
+ XK_downstile = 0x0bc4,
+ XK_underbar = 0x0bc6,
+ XK_jot = 0x0bca,
+ XK_quad = 0x0bcc,
+ XK_uptack = 0x0bce,
+ XK_circle = 0x0bcf,
+ XK_upstile = 0x0bd3,
+ XK_downshoe = 0x0bd6,
+ XK_rightshoe = 0x0bd8,
+ XK_leftshoe = 0x0bda,
+ XK_lefttack = 0x0bdc,
+ XK_righttack = 0x0bfc,
+ XK_hebrew_doublelowline = 0x0cdf,
+ XK_hebrew_aleph = 0x0ce0,
+ XK_hebrew_bet = 0x0ce1,
+ XK_hebrew_beth = 0x0ce1,
+ XK_hebrew_gimel = 0x0ce2,
+ XK_hebrew_gimmel = 0x0ce2,
+ XK_hebrew_dalet = 0x0ce3,
+ XK_hebrew_daleth = 0x0ce3,
+ XK_hebrew_he = 0x0ce4,
+ XK_hebrew_waw = 0x0ce5,
+ XK_hebrew_zain = 0x0ce6,
+ XK_hebrew_zayin = 0x0ce6,
+ XK_hebrew_chet = 0x0ce7,
+ XK_hebrew_het = 0x0ce7,
+ XK_hebrew_tet = 0x0ce8,
+ XK_hebrew_teth = 0x0ce8,
+ XK_hebrew_yod = 0x0ce9,
+ XK_hebrew_finalkaph = 0x0cea,
+ XK_hebrew_kaph = 0x0ceb,
+ XK_hebrew_lamed = 0x0cec,
+ XK_hebrew_finalmem = 0x0ced,
+ XK_hebrew_mem = 0x0cee,
+ XK_hebrew_finalnun = 0x0cef,
+ XK_hebrew_nun = 0x0cf0,
+ XK_hebrew_samech = 0x0cf1,
+ XK_hebrew_samekh = 0x0cf1,
+ XK_hebrew_ayin = 0x0cf2,
+ XK_hebrew_finalpe = 0x0cf3,
+ XK_hebrew_pe = 0x0cf4,
+ XK_hebrew_finalzade = 0x0cf5,
+ XK_hebrew_finalzadi = 0x0cf5,
+ XK_hebrew_zade = 0x0cf6,
+ XK_hebrew_zadi = 0x0cf6,
+ XK_hebrew_qoph = 0x0cf7,
+ XK_hebrew_kuf = 0x0cf7,
+ XK_hebrew_resh = 0x0cf8,
+ XK_hebrew_shin = 0x0cf9,
+ XK_hebrew_taw = 0x0cfa,
+ XK_hebrew_taf = 0x0cfa,
+ XK_Hebrew_switch = 0xff7e,
+ XK_Thai_kokai = 0x0da1,
+ XK_Thai_khokhai = 0x0da2,
+ XK_Thai_khokhuat = 0x0da3,
+ XK_Thai_khokhwai = 0x0da4,
+ XK_Thai_khokhon = 0x0da5,
+ XK_Thai_khorakhang = 0x0da6,
+ XK_Thai_ngongu = 0x0da7,
+ XK_Thai_chochan = 0x0da8,
+ XK_Thai_choching = 0x0da9,
+ XK_Thai_chochang = 0x0daa,
+ XK_Thai_soso = 0x0dab,
+ XK_Thai_chochoe = 0x0dac,
+ XK_Thai_yoying = 0x0dad,
+ XK_Thai_dochada = 0x0dae,
+ XK_Thai_topatak = 0x0daf,
+ XK_Thai_thothan = 0x0db0,
+ XK_Thai_thonangmontho = 0x0db1,
+ XK_Thai_thophuthao = 0x0db2,
+ XK_Thai_nonen = 0x0db3,
+ XK_Thai_dodek = 0x0db4,
+ XK_Thai_totao = 0x0db5,
+ XK_Thai_thothung = 0x0db6,
+ XK_Thai_thothahan = 0x0db7,
+ XK_Thai_thothong = 0x0db8,
+ XK_Thai_nonu = 0x0db9,
+ XK_Thai_bobaimai = 0x0dba,
+ XK_Thai_popla = 0x0dbb,
+ XK_Thai_phophung = 0x0dbc,
+ XK_Thai_fofa = 0x0dbd,
+ XK_Thai_phophan = 0x0dbe,
+ XK_Thai_fofan = 0x0dbf,
+ XK_Thai_phosamphao = 0x0dc0,
+ XK_Thai_moma = 0x0dc1,
+ XK_Thai_yoyak = 0x0dc2,
+ XK_Thai_rorua = 0x0dc3,
+ XK_Thai_ru = 0x0dc4,
+ XK_Thai_loling = 0x0dc5,
+ XK_Thai_lu = 0x0dc6,
+ XK_Thai_wowaen = 0x0dc7,
+ XK_Thai_sosala = 0x0dc8,
+ XK_Thai_sorusi = 0x0dc9,
+ XK_Thai_sosua = 0x0dca,
+ XK_Thai_hohip = 0x0dcb,
+ XK_Thai_lochula = 0x0dcc,
+ XK_Thai_oang = 0x0dcd,
+ XK_Thai_honokhuk = 0x0dce,
+ XK_Thai_paiyannoi = 0x0dcf,
+ XK_Thai_saraa = 0x0dd0,
+ XK_Thai_maihanakat = 0x0dd1,
+ XK_Thai_saraaa = 0x0dd2,
+ XK_Thai_saraam = 0x0dd3,
+ XK_Thai_sarai = 0x0dd4,
+ XK_Thai_saraii = 0x0dd5,
+ XK_Thai_saraue = 0x0dd6,
+ XK_Thai_sarauee = 0x0dd7,
+ XK_Thai_sarau = 0x0dd8,
+ XK_Thai_sarauu = 0x0dd9,
+ XK_Thai_phinthu = 0x0dda,
+ XK_Thai_maihanakat_maitho = 0x0dde,
+ XK_Thai_baht = 0x0ddf,
+ XK_Thai_sarae = 0x0de0,
+ XK_Thai_saraae = 0x0de1,
+ XK_Thai_sarao = 0x0de2,
+ XK_Thai_saraaimaimuan = 0x0de3,
+ XK_Thai_saraaimaimalai = 0x0de4,
+ XK_Thai_lakkhangyao = 0x0de5,
+ XK_Thai_maiyamok = 0x0de6,
+ XK_Thai_maitaikhu = 0x0de7,
+ XK_Thai_maiek = 0x0de8,
+ XK_Thai_maitho = 0x0de9,
+ XK_Thai_maitri = 0x0dea,
+ XK_Thai_maichattawa = 0x0deb,
+ XK_Thai_thanthakhat = 0x0dec,
+ XK_Thai_nikhahit = 0x0ded,
+ XK_Thai_leksun = 0x0df0,
+ XK_Thai_leknung = 0x0df1,
+ XK_Thai_leksong = 0x0df2,
+ XK_Thai_leksam = 0x0df3,
+ XK_Thai_leksi = 0x0df4,
+ XK_Thai_lekha = 0x0df5,
+ XK_Thai_lekhok = 0x0df6,
+ XK_Thai_lekchet = 0x0df7,
+ XK_Thai_lekpaet = 0x0df8,
+ XK_Thai_lekkao = 0x0df9,
+ XK_Hangul = 0xff31,
+ XK_Hangul_Start = 0xff32,
+ XK_Hangul_End = 0xff33,
+ XK_Hangul_Hanja = 0xff34,
+ XK_Hangul_Jamo = 0xff35,
+ XK_Hangul_Romaja = 0xff36,
+ XK_Hangul_Codeinput = 0xff37,
+ XK_Hangul_Jeonja = 0xff38,
+ XK_Hangul_Banja = 0xff39,
+ XK_Hangul_PreHanja = 0xff3a,
+ XK_Hangul_PostHanja = 0xff3b,
+ XK_Hangul_SingleCandidate = 0xff3c,
+ XK_Hangul_MultipleCandidate = 0xff3d,
+ XK_Hangul_PreviousCandidate = 0xff3e,
+ XK_Hangul_Special = 0xff3f,
+ XK_Hangul_switch = 0xff7e,
+ XK_Hangul_Kiyeog = 0x0ea1,
+ XK_Hangul_SsangKiyeog = 0x0ea2,
+ XK_Hangul_KiyeogSios = 0x0ea3,
+ XK_Hangul_Nieun = 0x0ea4,
+ XK_Hangul_NieunJieuj = 0x0ea5,
+ XK_Hangul_NieunHieuh = 0x0ea6,
+ XK_Hangul_Dikeud = 0x0ea7,
+ XK_Hangul_SsangDikeud = 0x0ea8,
+ XK_Hangul_Rieul = 0x0ea9,
+ XK_Hangul_RieulKiyeog = 0x0eaa,
+ XK_Hangul_RieulMieum = 0x0eab,
+ XK_Hangul_RieulPieub = 0x0eac,
+ XK_Hangul_RieulSios = 0x0ead,
+ XK_Hangul_RieulTieut = 0x0eae,
+ XK_Hangul_RieulPhieuf = 0x0eaf,
+ XK_Hangul_RieulHieuh = 0x0eb0,
+ XK_Hangul_Mieum = 0x0eb1,
+ XK_Hangul_Pieub = 0x0eb2,
+ XK_Hangul_SsangPieub = 0x0eb3,
+ XK_Hangul_PieubSios = 0x0eb4,
+ XK_Hangul_Sios = 0x0eb5,
+ XK_Hangul_SsangSios = 0x0eb6,
+ XK_Hangul_Ieung = 0x0eb7,
+ XK_Hangul_Jieuj = 0x0eb8,
+ XK_Hangul_SsangJieuj = 0x0eb9,
+ XK_Hangul_Cieuc = 0x0eba,
+ XK_Hangul_Khieuq = 0x0ebb,
+ XK_Hangul_Tieut = 0x0ebc,
+ XK_Hangul_Phieuf = 0x0ebd,
+ XK_Hangul_Hieuh = 0x0ebe,
+ XK_Hangul_A = 0x0ebf,
+ XK_Hangul_AE = 0x0ec0,
+ XK_Hangul_YA = 0x0ec1,
+ XK_Hangul_YAE = 0x0ec2,
+ XK_Hangul_EO = 0x0ec3,
+ XK_Hangul_E = 0x0ec4,
+ XK_Hangul_YEO = 0x0ec5,
+ XK_Hangul_YE = 0x0ec6,
+ XK_Hangul_O = 0x0ec7,
+ XK_Hangul_WA = 0x0ec8,
+ XK_Hangul_WAE = 0x0ec9,
+ XK_Hangul_OE = 0x0eca,
+ XK_Hangul_YO = 0x0ecb,
+ XK_Hangul_U = 0x0ecc,
+ XK_Hangul_WEO = 0x0ecd,
+ XK_Hangul_WE = 0x0ece,
+ XK_Hangul_WI = 0x0ecf,
+ XK_Hangul_YU = 0x0ed0,
+ XK_Hangul_EU = 0x0ed1,
+ XK_Hangul_YI = 0x0ed2,
+ XK_Hangul_I = 0x0ed3,
+ XK_Hangul_J_Kiyeog = 0x0ed4,
+ XK_Hangul_J_SsangKiyeog = 0x0ed5,
+ XK_Hangul_J_KiyeogSios = 0x0ed6,
+ XK_Hangul_J_Nieun = 0x0ed7,
+ XK_Hangul_J_NieunJieuj = 0x0ed8,
+ XK_Hangul_J_NieunHieuh = 0x0ed9,
+ XK_Hangul_J_Dikeud = 0x0eda,
+ XK_Hangul_J_Rieul = 0x0edb,
+ XK_Hangul_J_RieulKiyeog = 0x0edc,
+ XK_Hangul_J_RieulMieum = 0x0edd,
+ XK_Hangul_J_RieulPieub = 0x0ede,
+ XK_Hangul_J_RieulSios = 0x0edf,
+ XK_Hangul_J_RieulTieut = 0x0ee0,
+ XK_Hangul_J_RieulPhieuf = 0x0ee1,
+ XK_Hangul_J_RieulHieuh = 0x0ee2,
+ XK_Hangul_J_Mieum = 0x0ee3,
+ XK_Hangul_J_Pieub = 0x0ee4,
+ XK_Hangul_J_PieubSios = 0x0ee5,
+ XK_Hangul_J_Sios = 0x0ee6,
+ XK_Hangul_J_SsangSios = 0x0ee7,
+ XK_Hangul_J_Ieung = 0x0ee8,
+ XK_Hangul_J_Jieuj = 0x0ee9,
+ XK_Hangul_J_Cieuc = 0x0eea,
+ XK_Hangul_J_Khieuq = 0x0eeb,
+ XK_Hangul_J_Tieut = 0x0eec,
+ XK_Hangul_J_Phieuf = 0x0eed,
+ XK_Hangul_J_Hieuh = 0x0eee,
+ XK_Hangul_RieulYeorinHieuh = 0x0eef,
+ XK_Hangul_SunkyeongeumMieum = 0x0ef0,
+ XK_Hangul_SunkyeongeumPieub = 0x0ef1,
+ XK_Hangul_PanSios = 0x0ef2,
+ XK_Hangul_KkogjiDalrinIeung = 0x0ef3,
+ XK_Hangul_SunkyeongeumPhieuf = 0x0ef4,
+ XK_Hangul_YeorinHieuh = 0x0ef5,
+ XK_Hangul_AraeA = 0x0ef6,
+ XK_Hangul_AraeAE = 0x0ef7,
+ XK_Hangul_J_PanSios = 0x0ef8,
+ XK_Hangul_J_KkogjiDalrinIeung = 0x0ef9,
+ XK_Hangul_J_YeorinHieuh = 0x0efa,
+ XK_Korean_Won = 0x0eff,
+ XK_Armenian_ligature_ew = 0x1000587,
+ XK_Armenian_full_stop = 0x1000589,
+ XK_Armenian_verjaket = 0x1000589,
+ XK_Armenian_separation_mark = 0x100055d,
+ XK_Armenian_but = 0x100055d,
+ XK_Armenian_hyphen = 0x100058a,
+ XK_Armenian_yentamna = 0x100058a,
+ XK_Armenian_exclam = 0x100055c,
+ XK_Armenian_amanak = 0x100055c,
+ XK_Armenian_accent = 0x100055b,
+ XK_Armenian_shesht = 0x100055b,
+ XK_Armenian_question = 0x100055e,
+ XK_Armenian_paruyk = 0x100055e,
+ XK_Armenian_AYB = 0x1000531,
+ XK_Armenian_ayb = 0x1000561,
+ XK_Armenian_BEN = 0x1000532,
+ XK_Armenian_ben = 0x1000562,
+ XK_Armenian_GIM = 0x1000533,
+ XK_Armenian_gim = 0x1000563,
+ XK_Armenian_DA = 0x1000534,
+ XK_Armenian_da = 0x1000564,
+ XK_Armenian_YECH = 0x1000535,
+ XK_Armenian_yech = 0x1000565,
+ XK_Armenian_ZA = 0x1000536,
+ XK_Armenian_za = 0x1000566,
+ XK_Armenian_E = 0x1000537,
+ XK_Armenian_e = 0x1000567,
+ XK_Armenian_AT = 0x1000538,
+ XK_Armenian_at = 0x1000568,
+ XK_Armenian_TO = 0x1000539,
+ XK_Armenian_to = 0x1000569,
+ XK_Armenian_ZHE = 0x100053a,
+ XK_Armenian_zhe = 0x100056a,
+ XK_Armenian_INI = 0x100053b,
+ XK_Armenian_ini = 0x100056b,
+ XK_Armenian_LYUN = 0x100053c,
+ XK_Armenian_lyun = 0x100056c,
+ XK_Armenian_KHE = 0x100053d,
+ XK_Armenian_khe = 0x100056d,
+ XK_Armenian_TSA = 0x100053e,
+ XK_Armenian_tsa = 0x100056e,
+ XK_Armenian_KEN = 0x100053f,
+ XK_Armenian_ken = 0x100056f,
+ XK_Armenian_HO = 0x1000540,
+ XK_Armenian_ho = 0x1000570,
+ XK_Armenian_DZA = 0x1000541,
+ XK_Armenian_dza = 0x1000571,
+ XK_Armenian_GHAT = 0x1000542,
+ XK_Armenian_ghat = 0x1000572,
+ XK_Armenian_TCHE = 0x1000543,
+ XK_Armenian_tche = 0x1000573,
+ XK_Armenian_MEN = 0x1000544,
+ XK_Armenian_men = 0x1000574,
+ XK_Armenian_HI = 0x1000545,
+ XK_Armenian_hi = 0x1000575,
+ XK_Armenian_NU = 0x1000546,
+ XK_Armenian_nu = 0x1000576,
+ XK_Armenian_SHA = 0x1000547,
+ XK_Armenian_sha = 0x1000577,
+ XK_Armenian_VO = 0x1000548,
+ XK_Armenian_vo = 0x1000578,
+ XK_Armenian_CHA = 0x1000549,
+ XK_Armenian_cha = 0x1000579,
+ XK_Armenian_PE = 0x100054a,
+ XK_Armenian_pe = 0x100057a,
+ XK_Armenian_JE = 0x100054b,
+ XK_Armenian_je = 0x100057b,
+ XK_Armenian_RA = 0x100054c,
+ XK_Armenian_ra = 0x100057c,
+ XK_Armenian_SE = 0x100054d,
+ XK_Armenian_se = 0x100057d,
+ XK_Armenian_VEV = 0x100054e,
+ XK_Armenian_vev = 0x100057e,
+ XK_Armenian_TYUN = 0x100054f,
+ XK_Armenian_tyun = 0x100057f,
+ XK_Armenian_RE = 0x1000550,
+ XK_Armenian_re = 0x1000580,
+ XK_Armenian_TSO = 0x1000551,
+ XK_Armenian_tso = 0x1000581,
+ XK_Armenian_VYUN = 0x1000552,
+ XK_Armenian_vyun = 0x1000582,
+ XK_Armenian_PYUR = 0x1000553,
+ XK_Armenian_pyur = 0x1000583,
+ XK_Armenian_KE = 0x1000554,
+ XK_Armenian_ke = 0x1000584,
+ XK_Armenian_O = 0x1000555,
+ XK_Armenian_o = 0x1000585,
+ XK_Armenian_FE = 0x1000556,
+ XK_Armenian_fe = 0x1000586,
+ XK_Armenian_apostrophe = 0x100055a,
+ XK_Georgian_an = 0x10010d0,
+ XK_Georgian_ban = 0x10010d1,
+ XK_Georgian_gan = 0x10010d2,
+ XK_Georgian_don = 0x10010d3,
+ XK_Georgian_en = 0x10010d4,
+ XK_Georgian_vin = 0x10010d5,
+ XK_Georgian_zen = 0x10010d6,
+ XK_Georgian_tan = 0x10010d7,
+ XK_Georgian_in = 0x10010d8,
+ XK_Georgian_kan = 0x10010d9,
+ XK_Georgian_las = 0x10010da,
+ XK_Georgian_man = 0x10010db,
+ XK_Georgian_nar = 0x10010dc,
+ XK_Georgian_on = 0x10010dd,
+ XK_Georgian_par = 0x10010de,
+ XK_Georgian_zhar = 0x10010df,
+ XK_Georgian_rae = 0x10010e0,
+ XK_Georgian_san = 0x10010e1,
+ XK_Georgian_tar = 0x10010e2,
+ XK_Georgian_un = 0x10010e3,
+ XK_Georgian_phar = 0x10010e4,
+ XK_Georgian_khar = 0x10010e5,
+ XK_Georgian_ghan = 0x10010e6,
+ XK_Georgian_qar = 0x10010e7,
+ XK_Georgian_shin = 0x10010e8,
+ XK_Georgian_chin = 0x10010e9,
+ XK_Georgian_can = 0x10010ea,
+ XK_Georgian_jil = 0x10010eb,
+ XK_Georgian_cil = 0x10010ec,
+ XK_Georgian_char = 0x10010ed,
+ XK_Georgian_xan = 0x10010ee,
+ XK_Georgian_jhan = 0x10010ef,
+ XK_Georgian_hae = 0x10010f0,
+ XK_Georgian_he = 0x10010f1,
+ XK_Georgian_hie = 0x10010f2,
+ XK_Georgian_we = 0x10010f3,
+ XK_Georgian_har = 0x10010f4,
+ XK_Georgian_hoe = 0x10010f5,
+ XK_Georgian_fi = 0x10010f6,
+ XK_Xabovedot = 0x1001e8a,
+ XK_Ibreve = 0x100012c,
+ XK_Zstroke = 0x10001b5,
+ XK_Gcaron = 0x10001e6,
+ XK_Ocaron = 0x10001d1,
+ XK_Obarred = 0x100019f,
+ XK_xabovedot = 0x1001e8b,
+ XK_ibreve = 0x100012d,
+ XK_zstroke = 0x10001b6,
+ XK_gcaron = 0x10001e7,
+ XK_ocaron = 0x10001d2,
+ XK_obarred = 0x1000275,
+ XK_SCHWA = 0x100018f,
+ XK_schwa = 0x1000259,
+ XK_EZH = 0x10001b7,
+ XK_ezh = 0x1000292,
+ XK_Lbelowdot = 0x1001e36,
+ XK_lbelowdot = 0x1001e37,
+ XK_Abelowdot = 0x1001ea0,
+ XK_abelowdot = 0x1001ea1,
+ XK_Ahook = 0x1001ea2,
+ XK_ahook = 0x1001ea3,
+ XK_Acircumflexacute = 0x1001ea4,
+ XK_acircumflexacute = 0x1001ea5,
+ XK_Acircumflexgrave = 0x1001ea6,
+ XK_acircumflexgrave = 0x1001ea7,
+ XK_Acircumflexhook = 0x1001ea8,
+ XK_acircumflexhook = 0x1001ea9,
+ XK_Acircumflextilde = 0x1001eaa,
+ XK_acircumflextilde = 0x1001eab,
+ XK_Acircumflexbelowdot = 0x1001eac,
+ XK_acircumflexbelowdot = 0x1001ead,
+ XK_Abreveacute = 0x1001eae,
+ XK_abreveacute = 0x1001eaf,
+ XK_Abrevegrave = 0x1001eb0,
+ XK_abrevegrave = 0x1001eb1,
+ XK_Abrevehook = 0x1001eb2,
+ XK_abrevehook = 0x1001eb3,
+ XK_Abrevetilde = 0x1001eb4,
+ XK_abrevetilde = 0x1001eb5,
+ XK_Abrevebelowdot = 0x1001eb6,
+ XK_abrevebelowdot = 0x1001eb7,
+ XK_Ebelowdot = 0x1001eb8,
+ XK_ebelowdot = 0x1001eb9,
+ XK_Ehook = 0x1001eba,
+ XK_ehook = 0x1001ebb,
+ XK_Etilde = 0x1001ebc,
+ XK_etilde = 0x1001ebd,
+ XK_Ecircumflexacute = 0x1001ebe,
+ XK_ecircumflexacute = 0x1001ebf,
+ XK_Ecircumflexgrave = 0x1001ec0,
+ XK_ecircumflexgrave = 0x1001ec1,
+ XK_Ecircumflexhook = 0x1001ec2,
+ XK_ecircumflexhook = 0x1001ec3,
+ XK_Ecircumflextilde = 0x1001ec4,
+ XK_ecircumflextilde = 0x1001ec5,
+ XK_Ecircumflexbelowdot = 0x1001ec6,
+ XK_ecircumflexbelowdot = 0x1001ec7,
+ XK_Ihook = 0x1001ec8,
+ XK_ihook = 0x1001ec9,
+ XK_Ibelowdot = 0x1001eca,
+ XK_ibelowdot = 0x1001ecb,
+ XK_Obelowdot = 0x1001ecc,
+ XK_obelowdot = 0x1001ecd,
+ XK_Ohook = 0x1001ece,
+ XK_ohook = 0x1001ecf,
+ XK_Ocircumflexacute = 0x1001ed0,
+ XK_ocircumflexacute = 0x1001ed1,
+ XK_Ocircumflexgrave = 0x1001ed2,
+ XK_ocircumflexgrave = 0x1001ed3,
+ XK_Ocircumflexhook = 0x1001ed4,
+ XK_ocircumflexhook = 0x1001ed5,
+ XK_Ocircumflextilde = 0x1001ed6,
+ XK_ocircumflextilde = 0x1001ed7,
+ XK_Ocircumflexbelowdot = 0x1001ed8,
+ XK_ocircumflexbelowdot = 0x1001ed9,
+ XK_Ohornacute = 0x1001eda,
+ XK_ohornacute = 0x1001edb,
+ XK_Ohorngrave = 0x1001edc,
+ XK_ohorngrave = 0x1001edd,
+ XK_Ohornhook = 0x1001ede,
+ XK_ohornhook = 0x1001edf,
+ XK_Ohorntilde = 0x1001ee0,
+ XK_ohorntilde = 0x1001ee1,
+ XK_Ohornbelowdot = 0x1001ee2,
+ XK_ohornbelowdot = 0x1001ee3,
+ XK_Ubelowdot = 0x1001ee4,
+ XK_ubelowdot = 0x1001ee5,
+ XK_Uhook = 0x1001ee6,
+ XK_uhook = 0x1001ee7,
+ XK_Uhornacute = 0x1001ee8,
+ XK_uhornacute = 0x1001ee9,
+ XK_Uhorngrave = 0x1001eea,
+ XK_uhorngrave = 0x1001eeb,
+ XK_Uhornhook = 0x1001eec,
+ XK_uhornhook = 0x1001eed,
+ XK_Uhorntilde = 0x1001eee,
+ XK_uhorntilde = 0x1001eef,
+ XK_Uhornbelowdot = 0x1001ef0,
+ XK_uhornbelowdot = 0x1001ef1,
+ XK_Ybelowdot = 0x1001ef4,
+ XK_ybelowdot = 0x1001ef5,
+ XK_Yhook = 0x1001ef6,
+ XK_yhook = 0x1001ef7,
+ XK_Ytilde = 0x1001ef8,
+ XK_ytilde = 0x1001ef9,
+ XK_Ohorn = 0x10001a0,
+ XK_ohorn = 0x10001a1,
+ XK_Uhorn = 0x10001af,
+ XK_uhorn = 0x10001b0,
+ XK_EcuSign = 0x10020a0,
+ XK_ColonSign = 0x10020a1,
+ XK_CruzeiroSign = 0x10020a2,
+ XK_FFrancSign = 0x10020a3,
+ XK_LiraSign = 0x10020a4,
+ XK_MillSign = 0x10020a5,
+ XK_NairaSign = 0x10020a6,
+ XK_PesetaSign = 0x10020a7,
+ XK_RupeeSign = 0x10020a8,
+ XK_WonSign = 0x10020a9,
+ XK_NewSheqelSign = 0x10020aa,
+ XK_DongSign = 0x10020ab,
+ XK_EuroSign = 0x20ac,
+ XK_zerosuperior = 0x1002070,
+ XK_foursuperior = 0x1002074,
+ XK_fivesuperior = 0x1002075,
+ XK_sixsuperior = 0x1002076,
+ XK_sevensuperior = 0x1002077,
+ XK_eightsuperior = 0x1002078,
+ XK_ninesuperior = 0x1002079,
+ XK_zerosubscript = 0x1002080,
+ XK_onesubscript = 0x1002081,
+ XK_twosubscript = 0x1002082,
+ XK_threesubscript = 0x1002083,
+ XK_foursubscript = 0x1002084,
+ XK_fivesubscript = 0x1002085,
+ XK_sixsubscript = 0x1002086,
+ XK_sevensubscript = 0x1002087,
+ XK_eightsubscript = 0x1002088,
+ XK_ninesubscript = 0x1002089,
+ XK_partdifferential = 0x1002202,
+ XK_emptyset = 0x1002205,
+ XK_elementof = 0x1002208,
+ XK_notelementof = 0x1002209,
+ XK_containsas = 0x100220B,
+ XK_squareroot = 0x100221A,
+ XK_cuberoot = 0x100221B,
+ XK_fourthroot = 0x100221C,
+ XK_dintegral = 0x100222C,
+ XK_tintegral = 0x100222D,
+ XK_because = 0x1002235,
+ XK_approxeq = 0x1002248,
+ XK_notapproxeq = 0x1002247,
+ XK_notidentical = 0x1002262,
+ XK_stricteq = 0x1002263,
+ XK_braille_dot_1 = 0xfff1,
+ XK_braille_dot_2 = 0xfff2,
+ XK_braille_dot_3 = 0xfff3,
+ XK_braille_dot_4 = 0xfff4,
+ XK_braille_dot_5 = 0xfff5,
+ XK_braille_dot_6 = 0xfff6,
+ XK_braille_dot_7 = 0xfff7,
+ XK_braille_dot_8 = 0xfff8,
+ XK_braille_dot_9 = 0xfff9,
+ XK_braille_dot_10 = 0xfffa,
+ XK_braille_blank = 0x1002800,
+ XK_braille_dots_1 = 0x1002801,
+ XK_braille_dots_2 = 0x1002802,
+ XK_braille_dots_12 = 0x1002803,
+ XK_braille_dots_3 = 0x1002804,
+ XK_braille_dots_13 = 0x1002805,
+ XK_braille_dots_23 = 0x1002806,
+ XK_braille_dots_123 = 0x1002807,
+ XK_braille_dots_4 = 0x1002808,
+ XK_braille_dots_14 = 0x1002809,
+ XK_braille_dots_24 = 0x100280a,
+ XK_braille_dots_124 = 0x100280b,
+ XK_braille_dots_34 = 0x100280c,
+ XK_braille_dots_134 = 0x100280d,
+ XK_braille_dots_234 = 0x100280e,
+ XK_braille_dots_1234 = 0x100280f,
+ XK_braille_dots_5 = 0x1002810,
+ XK_braille_dots_15 = 0x1002811,
+ XK_braille_dots_25 = 0x1002812,
+ XK_braille_dots_125 = 0x1002813,
+ XK_braille_dots_35 = 0x1002814,
+ XK_braille_dots_135 = 0x1002815,
+ XK_braille_dots_235 = 0x1002816,
+ XK_braille_dots_1235 = 0x1002817,
+ XK_braille_dots_45 = 0x1002818,
+ XK_braille_dots_145 = 0x1002819,
+ XK_braille_dots_245 = 0x100281a,
+ XK_braille_dots_1245 = 0x100281b,
+ XK_braille_dots_345 = 0x100281c,
+ XK_braille_dots_1345 = 0x100281d,
+ XK_braille_dots_2345 = 0x100281e,
+ XK_braille_dots_12345 = 0x100281f,
+ XK_braille_dots_6 = 0x1002820,
+ XK_braille_dots_16 = 0x1002821,
+ XK_braille_dots_26 = 0x1002822,
+ XK_braille_dots_126 = 0x1002823,
+ XK_braille_dots_36 = 0x1002824,
+ XK_braille_dots_136 = 0x1002825,
+ XK_braille_dots_236 = 0x1002826,
+ XK_braille_dots_1236 = 0x1002827,
+ XK_braille_dots_46 = 0x1002828,
+ XK_braille_dots_146 = 0x1002829,
+ XK_braille_dots_246 = 0x100282a,
+ XK_braille_dots_1246 = 0x100282b,
+ XK_braille_dots_346 = 0x100282c,
+ XK_braille_dots_1346 = 0x100282d,
+ XK_braille_dots_2346 = 0x100282e,
+ XK_braille_dots_12346 = 0x100282f,
+ XK_braille_dots_56 = 0x1002830,
+ XK_braille_dots_156 = 0x1002831,
+ XK_braille_dots_256 = 0x1002832,
+ XK_braille_dots_1256 = 0x1002833,
+ XK_braille_dots_356 = 0x1002834,
+ XK_braille_dots_1356 = 0x1002835,
+ XK_braille_dots_2356 = 0x1002836,
+ XK_braille_dots_12356 = 0x1002837,
+ XK_braille_dots_456 = 0x1002838,
+ XK_braille_dots_1456 = 0x1002839,
+ XK_braille_dots_2456 = 0x100283a,
+ XK_braille_dots_12456 = 0x100283b,
+ XK_braille_dots_3456 = 0x100283c,
+ XK_braille_dots_13456 = 0x100283d,
+ XK_braille_dots_23456 = 0x100283e,
+ XK_braille_dots_123456 = 0x100283f,
+ XK_braille_dots_7 = 0x1002840,
+ XK_braille_dots_17 = 0x1002841,
+ XK_braille_dots_27 = 0x1002842,
+ XK_braille_dots_127 = 0x1002843,
+ XK_braille_dots_37 = 0x1002844,
+ XK_braille_dots_137 = 0x1002845,
+ XK_braille_dots_237 = 0x1002846,
+ XK_braille_dots_1237 = 0x1002847,
+ XK_braille_dots_47 = 0x1002848,
+ XK_braille_dots_147 = 0x1002849,
+ XK_braille_dots_247 = 0x100284a,
+ XK_braille_dots_1247 = 0x100284b,
+ XK_braille_dots_347 = 0x100284c,
+ XK_braille_dots_1347 = 0x100284d,
+ XK_braille_dots_2347 = 0x100284e,
+ XK_braille_dots_12347 = 0x100284f,
+ XK_braille_dots_57 = 0x1002850,
+ XK_braille_dots_157 = 0x1002851,
+ XK_braille_dots_257 = 0x1002852,
+ XK_braille_dots_1257 = 0x1002853,
+ XK_braille_dots_357 = 0x1002854,
+ XK_braille_dots_1357 = 0x1002855,
+ XK_braille_dots_2357 = 0x1002856,
+ XK_braille_dots_12357 = 0x1002857,
+ XK_braille_dots_457 = 0x1002858,
+ XK_braille_dots_1457 = 0x1002859,
+ XK_braille_dots_2457 = 0x100285a,
+ XK_braille_dots_12457 = 0x100285b,
+ XK_braille_dots_3457 = 0x100285c,
+ XK_braille_dots_13457 = 0x100285d,
+ XK_braille_dots_23457 = 0x100285e,
+ XK_braille_dots_123457 = 0x100285f,
+ XK_braille_dots_67 = 0x1002860,
+ XK_braille_dots_167 = 0x1002861,
+ XK_braille_dots_267 = 0x1002862,
+ XK_braille_dots_1267 = 0x1002863,
+ XK_braille_dots_367 = 0x1002864,
+ XK_braille_dots_1367 = 0x1002865,
+ XK_braille_dots_2367 = 0x1002866,
+ XK_braille_dots_12367 = 0x1002867,
+ XK_braille_dots_467 = 0x1002868,
+ XK_braille_dots_1467 = 0x1002869,
+ XK_braille_dots_2467 = 0x100286a,
+ XK_braille_dots_12467 = 0x100286b,
+ XK_braille_dots_3467 = 0x100286c,
+ XK_braille_dots_13467 = 0x100286d,
+ XK_braille_dots_23467 = 0x100286e,
+ XK_braille_dots_123467 = 0x100286f,
+ XK_braille_dots_567 = 0x1002870,
+ XK_braille_dots_1567 = 0x1002871,
+ XK_braille_dots_2567 = 0x1002872,
+ XK_braille_dots_12567 = 0x1002873,
+ XK_braille_dots_3567 = 0x1002874,
+ XK_braille_dots_13567 = 0x1002875,
+ XK_braille_dots_23567 = 0x1002876,
+ XK_braille_dots_123567 = 0x1002877,
+ XK_braille_dots_4567 = 0x1002878,
+ XK_braille_dots_14567 = 0x1002879,
+ XK_braille_dots_24567 = 0x100287a,
+ XK_braille_dots_124567 = 0x100287b,
+ XK_braille_dots_34567 = 0x100287c,
+ XK_braille_dots_134567 = 0x100287d,
+ XK_braille_dots_234567 = 0x100287e,
+ XK_braille_dots_1234567 = 0x100287f,
+ XK_braille_dots_8 = 0x1002880,
+ XK_braille_dots_18 = 0x1002881,
+ XK_braille_dots_28 = 0x1002882,
+ XK_braille_dots_128 = 0x1002883,
+ XK_braille_dots_38 = 0x1002884,
+ XK_braille_dots_138 = 0x1002885,
+ XK_braille_dots_238 = 0x1002886,
+ XK_braille_dots_1238 = 0x1002887,
+ XK_braille_dots_48 = 0x1002888,
+ XK_braille_dots_148 = 0x1002889,
+ XK_braille_dots_248 = 0x100288a,
+ XK_braille_dots_1248 = 0x100288b,
+ XK_braille_dots_348 = 0x100288c,
+ XK_braille_dots_1348 = 0x100288d,
+ XK_braille_dots_2348 = 0x100288e,
+ XK_braille_dots_12348 = 0x100288f,
+ XK_braille_dots_58 = 0x1002890,
+ XK_braille_dots_158 = 0x1002891,
+ XK_braille_dots_258 = 0x1002892,
+ XK_braille_dots_1258 = 0x1002893,
+ XK_braille_dots_358 = 0x1002894,
+ XK_braille_dots_1358 = 0x1002895,
+ XK_braille_dots_2358 = 0x1002896,
+ XK_braille_dots_12358 = 0x1002897,
+ XK_braille_dots_458 = 0x1002898,
+ XK_braille_dots_1458 = 0x1002899,
+ XK_braille_dots_2458 = 0x100289a,
+ XK_braille_dots_12458 = 0x100289b,
+ XK_braille_dots_3458 = 0x100289c,
+ XK_braille_dots_13458 = 0x100289d,
+ XK_braille_dots_23458 = 0x100289e,
+ XK_braille_dots_123458 = 0x100289f,
+ XK_braille_dots_68 = 0x10028a0,
+ XK_braille_dots_168 = 0x10028a1,
+ XK_braille_dots_268 = 0x10028a2,
+ XK_braille_dots_1268 = 0x10028a3,
+ XK_braille_dots_368 = 0x10028a4,
+ XK_braille_dots_1368 = 0x10028a5,
+ XK_braille_dots_2368 = 0x10028a6,
+ XK_braille_dots_12368 = 0x10028a7,
+ XK_braille_dots_468 = 0x10028a8,
+ XK_braille_dots_1468 = 0x10028a9,
+ XK_braille_dots_2468 = 0x10028aa,
+ XK_braille_dots_12468 = 0x10028ab,
+ XK_braille_dots_3468 = 0x10028ac,
+ XK_braille_dots_13468 = 0x10028ad,
+ XK_braille_dots_23468 = 0x10028ae,
+ XK_braille_dots_123468 = 0x10028af,
+ XK_braille_dots_568 = 0x10028b0,
+ XK_braille_dots_1568 = 0x10028b1,
+ XK_braille_dots_2568 = 0x10028b2,
+ XK_braille_dots_12568 = 0x10028b3,
+ XK_braille_dots_3568 = 0x10028b4,
+ XK_braille_dots_13568 = 0x10028b5,
+ XK_braille_dots_23568 = 0x10028b6,
+ XK_braille_dots_123568 = 0x10028b7,
+ XK_braille_dots_4568 = 0x10028b8,
+ XK_braille_dots_14568 = 0x10028b9,
+ XK_braille_dots_24568 = 0x10028ba,
+ XK_braille_dots_124568 = 0x10028bb,
+ XK_braille_dots_34568 = 0x10028bc,
+ XK_braille_dots_134568 = 0x10028bd,
+ XK_braille_dots_234568 = 0x10028be,
+ XK_braille_dots_1234568 = 0x10028bf,
+ XK_braille_dots_78 = 0x10028c0,
+ XK_braille_dots_178 = 0x10028c1,
+ XK_braille_dots_278 = 0x10028c2,
+ XK_braille_dots_1278 = 0x10028c3,
+ XK_braille_dots_378 = 0x10028c4,
+ XK_braille_dots_1378 = 0x10028c5,
+ XK_braille_dots_2378 = 0x10028c6,
+ XK_braille_dots_12378 = 0x10028c7,
+ XK_braille_dots_478 = 0x10028c8,
+ XK_braille_dots_1478 = 0x10028c9,
+ XK_braille_dots_2478 = 0x10028ca,
+ XK_braille_dots_12478 = 0x10028cb,
+ XK_braille_dots_3478 = 0x10028cc,
+ XK_braille_dots_13478 = 0x10028cd,
+ XK_braille_dots_23478 = 0x10028ce,
+ XK_braille_dots_123478 = 0x10028cf,
+ XK_braille_dots_578 = 0x10028d0,
+ XK_braille_dots_1578 = 0x10028d1,
+ XK_braille_dots_2578 = 0x10028d2,
+ XK_braille_dots_12578 = 0x10028d3,
+ XK_braille_dots_3578 = 0x10028d4,
+ XK_braille_dots_13578 = 0x10028d5,
+ XK_braille_dots_23578 = 0x10028d6,
+ XK_braille_dots_123578 = 0x10028d7,
+ XK_braille_dots_4578 = 0x10028d8,
+ XK_braille_dots_14578 = 0x10028d9,
+ XK_braille_dots_24578 = 0x10028da,
+ XK_braille_dots_124578 = 0x10028db,
+ XK_braille_dots_34578 = 0x10028dc,
+ XK_braille_dots_134578 = 0x10028dd,
+ XK_braille_dots_234578 = 0x10028de,
+ XK_braille_dots_1234578 = 0x10028df,
+ XK_braille_dots_678 = 0x10028e0,
+ XK_braille_dots_1678 = 0x10028e1,
+ XK_braille_dots_2678 = 0x10028e2,
+ XK_braille_dots_12678 = 0x10028e3,
+ XK_braille_dots_3678 = 0x10028e4,
+ XK_braille_dots_13678 = 0x10028e5,
+ XK_braille_dots_23678 = 0x10028e6,
+ XK_braille_dots_123678 = 0x10028e7,
+ XK_braille_dots_4678 = 0x10028e8,
+ XK_braille_dots_14678 = 0x10028e9,
+ XK_braille_dots_24678 = 0x10028ea,
+ XK_braille_dots_124678 = 0x10028eb,
+ XK_braille_dots_34678 = 0x10028ec,
+ XK_braille_dots_134678 = 0x10028ed,
+ XK_braille_dots_234678 = 0x10028ee,
+ XK_braille_dots_1234678 = 0x10028ef,
+ XK_braille_dots_5678 = 0x10028f0,
+ XK_braille_dots_15678 = 0x10028f1,
+ XK_braille_dots_25678 = 0x10028f2,
+ XK_braille_dots_125678 = 0x10028f3,
+ XK_braille_dots_35678 = 0x10028f4,
+ XK_braille_dots_135678 = 0x10028f5,
+ XK_braille_dots_235678 = 0x10028f6,
+ XK_braille_dots_1235678 = 0x10028f7,
+ XK_braille_dots_45678 = 0x10028f8,
+ XK_braille_dots_145678 = 0x10028f9,
+ XK_braille_dots_245678 = 0x10028fa,
+ XK_braille_dots_1245678 = 0x10028fb,
+ XK_braille_dots_345678 = 0x10028fc,
+ XK_braille_dots_1345678 = 0x10028fd,
+ XK_braille_dots_2345678 = 0x10028fe,
+ XK_braille_dots_12345678 = 0x10028ff,
+ XK_Sinh_ng = 0x1000d82,
+ XK_Sinh_h2 = 0x1000d83,
+ XK_Sinh_a = 0x1000d85,
+ XK_Sinh_aa = 0x1000d86,
+ XK_Sinh_ae = 0x1000d87,
+ XK_Sinh_aee = 0x1000d88,
+ XK_Sinh_i = 0x1000d89,
+ XK_Sinh_ii = 0x1000d8a,
+ XK_Sinh_u = 0x1000d8b,
+ XK_Sinh_uu = 0x1000d8c,
+ XK_Sinh_ri = 0x1000d8d,
+ XK_Sinh_rii = 0x1000d8e,
+ XK_Sinh_lu = 0x1000d8f,
+ XK_Sinh_luu = 0x1000d90,
+ XK_Sinh_e = 0x1000d91,
+ XK_Sinh_ee = 0x1000d92,
+ XK_Sinh_ai = 0x1000d93,
+ XK_Sinh_o = 0x1000d94,
+ XK_Sinh_oo = 0x1000d95,
+ XK_Sinh_au = 0x1000d96,
+ XK_Sinh_ka = 0x1000d9a,
+ XK_Sinh_kha = 0x1000d9b,
+ XK_Sinh_ga = 0x1000d9c,
+ XK_Sinh_gha = 0x1000d9d,
+ XK_Sinh_ng2 = 0x1000d9e,
+ XK_Sinh_nga = 0x1000d9f,
+ XK_Sinh_ca = 0x1000da0,
+ XK_Sinh_cha = 0x1000da1,
+ XK_Sinh_ja = 0x1000da2,
+ XK_Sinh_jha = 0x1000da3,
+ XK_Sinh_nya = 0x1000da4,
+ XK_Sinh_jnya = 0x1000da5,
+ XK_Sinh_nja = 0x1000da6,
+ XK_Sinh_tta = 0x1000da7,
+ XK_Sinh_ttha = 0x1000da8,
+ XK_Sinh_dda = 0x1000da9,
+ XK_Sinh_ddha = 0x1000daa,
+ XK_Sinh_nna = 0x1000dab,
+ XK_Sinh_ndda = 0x1000dac,
+ XK_Sinh_tha = 0x1000dad,
+ XK_Sinh_thha = 0x1000dae,
+ XK_Sinh_dha = 0x1000daf,
+ XK_Sinh_dhha = 0x1000db0,
+ XK_Sinh_na = 0x1000db1,
+ XK_Sinh_ndha = 0x1000db3,
+ XK_Sinh_pa = 0x1000db4,
+ XK_Sinh_pha = 0x1000db5,
+ XK_Sinh_ba = 0x1000db6,
+ XK_Sinh_bha = 0x1000db7,
+ XK_Sinh_ma = 0x1000db8,
+ XK_Sinh_mba = 0x1000db9,
+ XK_Sinh_ya = 0x1000dba,
+ XK_Sinh_ra = 0x1000dbb,
+ XK_Sinh_la = 0x1000dbd,
+ XK_Sinh_va = 0x1000dc0,
+ XK_Sinh_sha = 0x1000dc1,
+ XK_Sinh_ssha = 0x1000dc2,
+ XK_Sinh_sa = 0x1000dc3,
+ XK_Sinh_ha = 0x1000dc4,
+ XK_Sinh_lla = 0x1000dc5,
+ XK_Sinh_fa = 0x1000dc6,
+ XK_Sinh_al = 0x1000dca,
+ XK_Sinh_aa2 = 0x1000dcf,
+ XK_Sinh_ae2 = 0x1000dd0,
+ XK_Sinh_aee2 = 0x1000dd1,
+ XK_Sinh_i2 = 0x1000dd2,
+ XK_Sinh_ii2 = 0x1000dd3,
+ XK_Sinh_u2 = 0x1000dd4,
+ XK_Sinh_uu2 = 0x1000dd6,
+ XK_Sinh_ru2 = 0x1000dd8,
+ XK_Sinh_e2 = 0x1000dd9,
+ XK_Sinh_ee2 = 0x1000dda,
+ XK_Sinh_ai2 = 0x1000ddb,
+ XK_Sinh_o2 = 0x1000ddc,
+ XK_Sinh_oo2 = 0x1000ddd,
+ XK_Sinh_au2 = 0x1000dde,
+ XK_Sinh_lu2 = 0x1000ddf,
+ XK_Sinh_ruu2 = 0x1000df2,
+ XK_Sinh_luu2 = 0x1000df3,
+ XK_Sinh_kunddaliya = 0x1000df4,
+ }
+}
--- /dev/null
+//
+// XLibBackend.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// 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.
+using System;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+
+namespace Crow.XLIB
+{
+ public class XLibBackend : IBackend
+ {
+ #region pinvoke
+ [DllImportAttribute("X11")]
+ static extern int XInitThreads();
+ [DllImportAttribute("X11")]
+ static extern IntPtr XOpenDisplay(IntPtr displayName);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XCloseDisplay(IntPtr disp);
+ [DllImportAttribute("X11")]
+ static extern Int32 XDefaultScreen(IntPtr disp);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XDefaultRootWindow(IntPtr disp);
+ [DllImportAttribute("X11")]
+ static extern UInt32 XDefaultDepth (IntPtr disp, Int32 screen);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XDefaultVisual(IntPtr disp, Int32 screen);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XCreateSimpleWindow(IntPtr disp, IntPtr rootWindow, Int32 x, Int32 y, UInt32 width, UInt32 height,
+ UInt32 borderWidth, IntPtr border, IntPtr background);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XCreatePixmap(IntPtr disp, IntPtr rootWindow, UInt32 width, UInt32 height, UInt32 depth);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XFreePixmap(IntPtr disp, IntPtr pixmap);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XFree(IntPtr data);
+ [DllImportAttribute("X11")]
+ static extern Int32 XSelectInput(IntPtr disp, IntPtr win, EventMask eventMask);
+ [DllImportAttribute("X11")]
+ static extern Int32 XMapWindow(IntPtr disp, IntPtr win);
+ [DllImportAttribute("X11")]
+ static extern int XPending (IntPtr disp);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XNextEvent(IntPtr disp, ref XEvent xevent);
+ [DllImportAttribute("X11")]
+ static extern Int32 XSync(IntPtr disp, int discard);
+ [DllImportAttribute("X11")]
+ static extern int XConnectionNumber(IntPtr disp);
+ [DllImportAttribute("X11")]
+ static extern IntPtr XSetErrorHandler(XErrorHandler error_handler);
+
+ [DllImport ("libX11")]
+ static extern void XDisplayKeycodes (IntPtr disp, out int min, out int max);
+ [DllImport ("libX11")]
+ static extern IntPtr XGetKeyboardMapping (IntPtr disp, byte first_keycode, int keycode_count,
+ out int keysyms_per_keycode_return);
+ [DllImport ("libX11")]
+ unsafe static extern byte* XGetModifierMapping (IntPtr disp);
+ [DllImport ("libX11")]
+ static extern uint XKeycodeToKeysym (IntPtr display, int keycode, int index);
+ #endregion
+
+ IntPtr xDisp, xwinHnd, xDefaultRootWin, xDefaultVisual;
+ UInt32 xDefaultDepth;
+ Int32 xScreen;
+ XErrorHandler errorHnd;
+
+ Interface iFace;
+
+ #region IBackend implementation
+
+ public void Init (Interface _iFace)
+ {
+ iFace = _iFace;
+ XInitThreads ();
+ xDisp = XOpenDisplay(IntPtr.Zero);
+ if (xDisp == IntPtr.Zero)
+ throw new NotSupportedException("[XLib] Failed to open display.");
+
+ xScreen = XDefaultScreen(xDisp);
+
+ xDefaultRootWin = XDefaultRootWindow (xDisp);
+ xDefaultVisual = XDefaultVisual (xDisp, xScreen);
+ xDefaultDepth = XDefaultDepth (xDisp, xScreen);
+
+ xwinHnd = XCreateSimpleWindow (xDisp, xDefaultRootWin,
+ 0, 0, (uint)iFace.ClientRectangle.Width, (uint)iFace.ClientRectangle.Height, 0, IntPtr.Zero, IntPtr.Zero);
+ if (xwinHnd == IntPtr.Zero)
+ throw new NotSupportedException("[XLib] Failed to create window.");
+
+ XSelectInput (xDisp, xwinHnd, EventMask.ExposureMask |
+ EventMask.KeyPressMask | EventMask.KeyReleaseMask |
+ EventMask.PointerMotionMask | EventMask.ButtonPressMask | EventMask.ButtonReleaseMask);
+
+ XMapWindow (xDisp, xwinHnd);
+
+ iFace.surf = new Cairo.XlibSurface (xDisp, xwinHnd, xDefaultVisual, iFace.ClientRectangle.Width, iFace.ClientRectangle.Height);
+
+ errorHnd = new XErrorHandler (HandleError);
+ XSetErrorHandler (errorHnd);
+
+ int min_keycode, max_keycode, keysyms_per_keycode;
+
+ XDisplayKeycodes (xDisp, out min_keycode, out max_keycode);
+ IntPtr ksp = XGetKeyboardMapping (xDisp, (byte) min_keycode,
+ max_keycode + 1 - min_keycode, out keysyms_per_keycode);
+ XFree (ksp);
+
+ unsafe {
+ byte* modmap_unmanaged = XGetModifierMapping (xDisp);
+ int nummodmap = 0;
+ int* ptr = (int*)modmap_unmanaged;
+ nummodmap = ptr [0];
+
+ for (int i = 0; i< nummodmap; i++) {
+ Console.WriteLine(modmap_unmanaged[i+4]);
+ }
+ XFree ((IntPtr)modmap_unmanaged);
+ }
+ }
+
+ public void CleanUp ()
+ {
+ XCloseDisplay (xDisp);
+ }
+ public void Flush () {
+ XSync (xDisp, 0);
+ }
+ public void ProcessEvents ()
+ {
+ if (XPending (xDisp) > 0) {
+ XEvent xevent = new XEvent ();
+ XNextEvent (xDisp, ref xevent);
+
+ switch (xevent.type) {
+ case XEventName.Expose:
+ iFace.ProcessResize (new Rectangle (0, 0, xevent.ExposeEvent.width, xevent.ExposeEvent.height));
+ break;
+ case XEventName.KeyPress:
+ iFace.ProcessKeyDown (xevent.KeyEvent.keycode);
+
+ /*int min_keycode, max_keycode, keysyms_per_keycode;
+ XLib.NativeMethods.XDisplayKeycodes (xDisp, out min_keycode, out max_keycode);
+
+ IntPtr ksp = XLib.NativeMethods.XGetKeyboardMapping (xDisp, (byte)min_keycode,
+ max_keycode + 1 - min_keycode, out keysyms_per_keycode);
+ XLib.NativeMethods.XFree (ksp);*/
+
+ uint keySym;
+ keySym = XKeycodeToKeysym (xDisp, xevent.KeyEvent.keycode, 0);
+ char c = (char)keySym;
+
+ Debug.WriteLine ("keycode:{0}; keysym:{1}; char:{2}", xevent.KeyEvent.keycode, keySym, c);
+ break;
+ case XEventName.KeyRelease:
+ iFace.ProcessKeyUp (xevent.KeyEvent.keycode);
+ //Debug.WriteLine ("keypress: {0}", xevent.KeyEvent.keycode);
+ break;
+ case XEventName.MotionNotify:
+ //Debug.WriteLine ("motion: ({0},{1})", xevent.MotionEvent.x, xevent.MotionEvent.y);
+ iFace.ProcessMouseMove (xevent.MotionEvent.x, xevent.MotionEvent.y);
+ break;
+ case XEventName.ButtonPress:
+ //Debug.WriteLine ("button press: {0}", xevent.ButtonEvent.button);
+ if (xevent.ButtonEvent.button == 4)
+ iFace.ProcessMouseWheelChanged (Interface.WheelIncrement);
+ else if(xevent.ButtonEvent.button == 5)
+ iFace.ProcessMouseWheelChanged (-Interface.WheelIncrement);
+ else
+ iFace.ProcessMouseButtonDown (xevent.ButtonEvent.button - 1);
+ break;
+ case XEventName.ButtonRelease:
+ //Debug.WriteLine ("button release: {0}", xevent.ButtonEvent.button);
+ iFace.ProcessMouseButtonUp (xevent.ButtonEvent.button - 1);
+ break;
+
+ }
+ }
+ }
+
+ #endregion
+
+ int HandleError (IntPtr display, ref XErrorEvent error_event)
+ {
+ /*if (ErrorExceptions)
+ throw new X11Exception (error_event.display, error_event.resourceid,
+ error_event.serial, error_event.error_code,
+ error_event.request_code, error_event.minor_code);
+ else
+ Console.WriteLine ("X11 Error encountered: {0}{1}\n",
+ X11Exception.GetMessage(error_event.display, error_event.resourceid,
+ error_event.serial, error_event.error_code,
+ error_event.request_code, error_event.minor_code),
+ WhereString());*/
+ Debug.WriteLine ("XERROR {0}", error_event.error_code);
+ return 0;
+ }
+ }
+}
+
if (type.HasFlag (DbgEvtType.GraphicObject)) {
}
-
+ return null;
}
}
public static class DebugLog