]> O.S.I.I.S - jp/crow.git/commitdiff
xcb backend
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 21 Nov 2018 17:48:52 +0000 (18:48 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 21 Nov 2018 17:48:52 +0000 (18:48 +0100)
20 files changed:
Crow.csproj
Tests/BasicTests.cs
Tests/Tests.csproj
Tests/keysyms.cs
Tests/testCairoXLib.cs
src/GraphicObjects/PrivateContainer.cs
src/IBackend.cs [new file with mode: 0644]
src/Interface.cs
src/XLib/Display.cs [deleted file]
src/XLib/NativeMethods.cs [deleted file]
src/XLib/Window.cs [deleted file]
src/XLib/X11Structs.cs [deleted file]
src/XLib/XKeySym.cs [deleted file]
src/backends/Display.cs [new file with mode: 0644]
src/backends/Window.cs [new file with mode: 0644]
src/backends/X11Structs.cs [new file with mode: 0644]
src/backends/XCBBackend.cs [new file with mode: 0644]
src/backends/XKeySym.cs [new file with mode: 0644]
src/backends/XLibBackend.cs [new file with mode: 0644]
src/debug/DebugLogger.cs

index 76650bd19dc7a0697e096b2b1afc65a678554655..25ca07a24fdb4d70af2f5305fd62a0f75042f437 100644 (file)
     <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" />
index c13dd53dff39106d8d36bd4c905ed567fdb064bd..02b6742d177ff24773d539f4573dcbf75269d543 100644 (file)
@@ -16,9 +16,9 @@ namespace tests
 
                                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;
 
index 7366607f8716e9d1cb25be867da28d0486358439..973930e779185aa268ae58d4d5f5ac575ac9cd0f 100644 (file)
     <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>
index 430954feb493594fef416c9db0b82b96092dc1fd..e33add92dba56b2d4cf5d9ee9bfd2794155f22a2 100644 (file)
@@ -33,16 +33,18 @@ namespace Tests
                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) {
@@ -59,13 +61,17 @@ namespace Tests
                                                        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 ("}");
index 7d62a2888f7cef146a182aaa83cb23a135b7c890..cb18d6541715afa538e64c763eae9eefcf5fc88d 100644 (file)
@@ -12,7 +12,7 @@ namespace testsCairoXLib
                static internal IntPtr xHandle, xwinHnd;
                static internal Int32 xScreen;
                static IntPtr xLastEvent;
-               static XLib.XErrorHandler errorHnd;
+               static XErrorHandler errorHnd;
 
                static Pollfd[] pollfds;
 
index d1b687ced0ace5ae06dfa3146b0b0cb5c026e028..41918bc80b38e5adf2fd74e106d25149da40ca04 100644 (file)
@@ -55,7 +55,7 @@ namespace Crow
                }
                #endif
                protected GraphicObject child;
-               #if DEBUG_LAYOUTING
+               #if DEBUG_LOG
                internal GraphicObject getTemplateRoot {
                        get { return child; }
                }
diff --git a/src/IBackend.cs b/src/IBackend.cs
new file mode 100644 (file)
index 0000000..2555d56
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// 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();
+       }
+}
+
index ba8a523e274d2c18f6b49425fe18e682ed1b4983..c83da3c92810d3382f2fefaa37f2534dd15b9a7d 100644 (file)
@@ -77,10 +77,7 @@ namespace Crow
                }
                #endregion
 
-               internal IntPtr xDisp, xwinHnd, xDefaultRootWin, xDefaultVisual;
-               internal UInt32 xDefaultDepth;
-               internal Int32 xScreen;
-               XLib.XErrorHandler errorHnd;
+               internal IBackend backend;
 
                #region CTOR
                static Interface(){
@@ -118,78 +115,25 @@ namespace Crow
 
                        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 ();
                        }
                }
 
@@ -205,8 +149,8 @@ namespace Crow
                                        // TODO: dispose managed state (managed objects).
                                }
 
-                               //Marshal.FreeHGlobal (lastEvent);
-                               XLib.NativeMethods.XCloseDisplay (xDisp);
+                               backend.CleanUp ();
+
 
                                disposedValue = true;
                        }
@@ -244,60 +188,6 @@ namespace Crow
                        #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
@@ -886,7 +776,7 @@ namespace Crow
                                        //}
                                        //surf.WriteToPng (@"/mnt/data/test.png");
 
-                                       //XLib.NativeMethods.XSync (xHandle, 0);
+                                       backend?.Flush ();
                                }
                        }
                        #if MEASURE_TIME
@@ -1216,7 +1106,7 @@ namespace Crow
                /// <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;
 
@@ -1238,7 +1128,7 @@ namespace Crow
                /// <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);
diff --git a/src/XLib/Display.cs b/src/XLib/Display.cs
deleted file mode 100644 (file)
index 7e973b8..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-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
-
-
-    }
-}
diff --git a/src/XLib/NativeMethods.cs b/src/XLib/NativeMethods.cs
deleted file mode 100644 (file)
index c5257be..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-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
-
-
-       }
-}
diff --git a/src/XLib/Window.cs b/src/XLib/Window.cs
deleted file mode 100644 (file)
index f74a5fd..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-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);
-               }
-
-    }
-}
diff --git a/src/XLib/X11Structs.cs b/src/XLib/X11Structs.cs
deleted file mode 100644 (file)
index 8cf70ab..0000000
+++ /dev/null
@@ -1,1822 +0,0 @@
-// 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;
-       }
-}
diff --git a/src/XLib/XKeySym.cs b/src/XLib/XKeySym.cs
deleted file mode 100644 (file)
index f874f4d..0000000
+++ /dev/null
@@ -1,2109 +0,0 @@
-/* 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,
-       }
-}
diff --git a/src/backends/Display.cs b/src/backends/Display.cs
new file mode 100644 (file)
index 0000000..05832ab
--- /dev/null
@@ -0,0 +1,64 @@
+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
+
+
+    }
+}
diff --git a/src/backends/Window.cs b/src/backends/Window.cs
new file mode 100644 (file)
index 0000000..f74a5fd
--- /dev/null
@@ -0,0 +1,62 @@
+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);
+               }
+
+    }
+}
diff --git a/src/backends/X11Structs.cs b/src/backends/X11Structs.cs
new file mode 100644 (file)
index 0000000..c954068
--- /dev/null
@@ -0,0 +1,1822 @@
+// 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;
+       }
+}
diff --git a/src/backends/XCBBackend.cs b/src/backends/XCBBackend.cs
new file mode 100644 (file)
index 0000000..9523d7f
--- /dev/null
@@ -0,0 +1,2943 @@
+//
+// 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;
+               }
+
+       }
+}
+
diff --git a/src/backends/XKeySym.cs b/src/backends/XKeySym.cs
new file mode 100644 (file)
index 0000000..f874f4d
--- /dev/null
@@ -0,0 +1,2109 @@
+/* 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,
+       }
+}
diff --git a/src/backends/XLibBackend.cs b/src/backends/XLibBackend.cs
new file mode 100644 (file)
index 0000000..11f44eb
--- /dev/null
@@ -0,0 +1,221 @@
+//
+// 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;
+               }
+       }
+}
+
index 4bfba106d82badccbfb7e5d19caddefec48b8228..0599a6a1df1f974e96a33a96441ee4183eed0a19 100644 (file)
@@ -99,7 +99,7 @@ namespace Crow
 
                        if (type.HasFlag (DbgEvtType.GraphicObject)) {
                        }
-
+                       return null;
                }
        }
        public static class DebugLog