]> O.S.I.I.S - jp/crow.git/commitdiff
debug log viewer, X backends
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sat, 24 Nov 2018 09:48:34 +0000 (10:48 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sat, 24 Nov 2018 09:48:34 +0000 (10:48 +0100)
34 files changed:
Crow.csproj
Crow.sln
Tests/BasicTests.cs
Tests/Showcase.cs
Tests/Tests.csproj
Tests/test.style
Tests/ui/dbgLog.crow [new file with mode: 0755]
src/GraphicObjects/GraphicObject.cs
src/GraphicObjects/Scroller.cs
src/GraphicObjects/ScrollingObject.cs
src/GraphicObjects/TextBox.cs
src/IBackend.cs [deleted file]
src/Input/Key.cs
src/Input/KeyEventArgs.cs [new file with mode: 0644]
src/Input/KeyModifiers.cs [deleted file]
src/Input/KeyboardKeyEventArgs.cs [deleted file]
src/Input/KeyboardState.cs [deleted file]
src/Interface.cs
src/LayoutingQueueItem.cs
src/Mono.Cairo/Operator.cs
src/backends/IBackend.cs [new file with mode: 0644]
src/backends/IKeyboard.cs [new file with mode: 0644]
src/backends/X11Structs.cs [deleted file]
src/backends/XCBBackend.cs [deleted file]
src/backends/XKeySym.cs [deleted file]
src/backends/XLibBackend.cs [deleted file]
src/backends/xcb/XCBBackend.cs [new file with mode: 0644]
src/backends/xcb/XCBKeyboard.cs [new file with mode: 0644]
src/backends/xlib/X11Keyboard.cs [new file with mode: 0644]
src/backends/xlib/X11Structs.cs [new file with mode: 0644]
src/backends/xlib/XKeySym.cs [new file with mode: 0644]
src/backends/xlib/XLibBackend.cs [new file with mode: 0644]
src/debug/DbgLogViewer.cs [new file with mode: 0644]
src/debug/DebugLogger.cs

index 25ca07a24fdb4d70af2f5305fd62a0f75042f437..fdb6d7c1ec4d96a80c26c553981111804f6beb1e 100644 (file)
     <Compile Include="src\GraphicObjects\TreeView.cs" />
     <Compile Include="src\GraphicObjects\TabView.cs" />
     <Compile Include="src\GraphicObjects\TabItem.cs" />
-    <Compile Include="src\Input\KeyboardKeyEventArgs.cs" />
     <Compile Include="src\Input\Buttons.cs" />
     <Compile Include="src\Input\ButtonState.cs" />
     <Compile Include="src\Input\Key.cs" />
-    <Compile Include="src\Input\KeyboardState.cs" />
-    <Compile Include="src\Input\KeyModifiers.cs" />
     <Compile Include="src\Input\MouseButton.cs" />
     <Compile Include="src\Input\MouseEventArgs.cs" />
     <Compile Include="src\Input\MouseScroll.cs" />
     <Compile Include="src\IMLAttributes.cs" />
     <Compile Include="src\GraphicObjects\DockStack.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" />
+    <Compile Include="src\backends\xlib\X11Structs.cs" />
+    <Compile Include="src\backends\xlib\XKeySym.cs" />
+    <Compile Include="src\backends\xcb\XCBBackend.cs" />
+    <Compile Include="src\backends\IBackend.cs" />
+    <Compile Include="src\backends\IKeyboard.cs" />
+    <Compile Include="src\backends\xcb\XCBKeyboard.cs" />
+    <Compile Include="src\Input\KeyEventArgs.cs" />
+    <Compile Include="src\backends\xlib\X11Keyboard.cs" />
+    <Compile Include="src\backends\xlib\XLibBackend.cs" />
+    <Compile Include="src\debug\DbgLogViewer.cs" />
   </ItemGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Folder Include="Icons\" />
     <Folder Include="src\debug\" />
     <Folder Include="src\backends\" />
+    <Folder Include="src\backends\xlib\" />
+    <Folder Include="src\backends\xcb\" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Images\Icons\updown.svg" />
index dc694b6b8f838a325aa791327d9bc651fe8a5e48..64088c26bd22d2c419b8688d7a611c046a0aee49 100644 (file)
--- a/Crow.sln
+++ b/Crow.sln
@@ -18,7 +18,6 @@ Global
                {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.Build.0 = Release|Any CPU
                {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
                {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
                {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Release|Any CPU.Build.0 = Release|Any CPU
                {C2980F9B-4798-4C05-99E2-E174810F7C7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
index 02b6742d177ff24773d539f4573dcbf75269d543..732edbc3bd2b09b63b6657a5d5e33257f32fa623 100644 (file)
@@ -7,27 +7,30 @@ namespace tests
 {
        class MainClass
        {
+               static Interface app;
+
                public static void Main(string[] args)
                {
-                       using (Interface app = new Interface ()) {
+                       using (app = new Interface ()) {
                                //                              XWindow win = new XWindow (app);
                                //                              win.Show ();
                                //app.LoadIMLFragment (@"<SimpleGauge Level='40' Margin='5' Background='Jet' Foreground='Grey' Width='30' Height='50%'/>");
 
-                               app.KeyboardKeyDown += App_KeyboardKeyDown;
+                               app.Keyboard.KeyDown += 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/Divers/colorPicker.crow").DataSource = app;
                                //app.AddWidget ("Interfaces/Divers/perfMeasures.crow").DataSource = app;
+                               app.AddWidget ("#Tests.ui.dbgLog.crow").DataSource = app;
 
                                while (true) {
-                                       /*#if MEASURE_TIME
+                                       #if MEASURE_TIME
                                        foreach (PerformanceMeasure m in app.PerfMeasures)
                                                m.NotifyChanges ();     
-                                       #endif*/
-                                       //Thread.Sleep(10);
+                                       #endif
+                                       Thread.Sleep(10);
                                }
                        }
                        /*using (Display disp = new Display())
@@ -48,14 +51,16 @@ namespace tests
             }*/
                }
 
-               static void App_KeyboardKeyDown (object sender, KeyboardKeyEventArgs e)
+               static void App_KeyboardKeyDown (object sender, KeyEventArgs e)
                {
                        Console.WriteLine((byte)e.Key);
+                       //#if DEBUG_LOG
                        switch (e.Key) {
-                       case Key.Keypad1:
-                               DebugLog.save (sender as Interface);
+                       case Key.F2:                            
+                               DebugLog.save (app);
                                break;
                        }
+                       //#endif
                }
        }
 }
index 38bc175cf3e6b585ccb4de9bd276ebd913bdefda..17c0bfc09699b11594618bd4904845d856a96dac 100644 (file)
@@ -43,7 +43,7 @@ namespace Tests
                static void Main ()
                {
                        using (Showcase app = new Showcase ()) {
-                               app.KeyboardKeyDown += App_KeyboardKeyDown;
+                               app.Keyboard.KeyDown += App_KeyboardKeyDown;
 
                                GraphicObject g = app.AddWidget ("#Tests.ui.showcase.crow");
                                g.DataSource = app;
@@ -59,13 +59,15 @@ namespace Tests
                        }
                }
 
-               static void App_KeyboardKeyDown (object sender, KeyboardKeyEventArgs e)
+               static void App_KeyboardKeyDown (object sender, KeyEventArgs e)
                {
+                       #if DEBUG_LOG
                        switch (e.Key) {
-                       case Key.Keypad1:
+                       case Key.F2:
                                DebugLog.save (sender as Interface);
                                break;
                        }
+                       #endif
                }
 
                public Showcase ()
index 973930e779185aa268ae58d4d5f5ac575ac9cd0f..0aef448b586cc2458feb7a98f97978e5c0f7aadd 100644 (file)
     <EmbeddedResource Include="Interfaces\TabItem.template">
       <LogicalName>Crow.TabItem.template</LogicalName>
     </EmbeddedResource>
+    <EmbeddedResource Include="ui\dbgLog.crow" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Crow.csproj">
index 926910f6441fc879c955a40b89be77b49001cbba..434f80423de9a1d2d894a32078b7a73f8a26b346 100644 (file)
@@ -32,3 +32,9 @@ labPerfVal{
        Font = "droid, 8";
        Width = "50%";
 }
+DbgLogViewer{
+       Background = "WhiteSmoke";
+       Font = "mono, 8";
+       Foreground = "Jet";
+       Focusable = "true";
+}
diff --git a/Tests/ui/dbgLog.crow b/Tests/ui/dbgLog.crow
new file mode 100755 (executable)
index 0000000..09cc2eb
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<VerticalStack>
+       <HorizontalStack Height="Fit">
+               <Label Text="Scale X:"/>
+               <Label Text="{../../view.XScale}"/>
+               <Label Text="Scroll X:"/>
+               <Label Text="{../../view.ScrollX}"/>
+       </HorizontalStack>
+       <HorizontalStack>
+               <DbgLogViewer Name="view" LogFile="debug.log" MouseWheelSpeed="10"/>
+               <ScrollBar Name="scrollbar1" Orientation="Vertical"
+                       Value="{²../view.ScrollY}"     Maximum="{../view.MaxScrollY}" 
+                       CursorSize="{../view.ChildHeightRatio}"
+                       LargeIncrement="{../view.PageHeight}" SmallIncrement="30"
+                       Width="14" />
+       </HorizontalStack>
+       <ScrollBar Style="HScrollBar" Name="scrollbarX" Orientation="Horizontal"
+                       Value="{²../view.ScrollX}" Maximum="{../view.MaxScrollX}" 
+                       CursorSize="{../view.ChildWidthRatio}" 
+                       LargeIncrement="{../view.PageWidth}" SmallIncrement="30"
+                       Height="14" />
+</VerticalStack>
index c7fbcb187c9afc609a8b58a49b7636f033cbdc8e..a55682b11f412375e7b2e58d9329dee81db062dd 100644 (file)
@@ -423,9 +423,9 @@ namespace Crow
                /// <summary>Occurs when mouse leave this object</summary>
                public event EventHandler<MouseMoveEventArgs> MouseLeave;
                /// <summary>Occurs when key is pressed when this object is active</summary>
-               public event EventHandler<KeyboardKeyEventArgs> KeyDown;
+               public event EventHandler<KeyEventArgs> KeyDown;
                /// <summary>Occurs when key is released when this object is active</summary>
-               public event EventHandler<KeyboardKeyEventArgs> KeyUp;
+               public event EventHandler<KeyEventArgs> KeyUp;
                /// <summary>Occurs when translated key event occurs in the host when this object is active</summary>
                public event EventHandler<KeyPressEventArgs> KeyPress;
                /// <summary>Occurs when this object received focus</summary>
@@ -505,7 +505,7 @@ namespace Crow
                                this.RegisterForRedraw ();
                        }
                }
-               #if DEBUG
+               #if DEBUG_LOG
                [XmlIgnore]public string TreePath {
                        get { return this.GetType().Name + GraphicObjects.IndexOf(this).ToString ();    }
                }
@@ -518,7 +518,7 @@ namespace Crow
                [DesignCategory ("Divers")][DefaultValue(null)]
                public virtual string Name {
                        get {
-                               #if DEBUG
+                               #if DEBUG_LOG
                                return string.IsNullOrEmpty(name) ? this.GetType().Name + GraphicObjects.IndexOf(this).ToString () : name;
                                #else
                                return name;
@@ -1027,9 +1027,9 @@ namespace Crow
                /// <summary> Loads the default values from XML attributes default </summary>
                public void loadDefaultValues()
                {
-//                     #if DEBUG_LOAD
-//                     Debug.WriteLine ("LoadDefValues for " + this.ToString ());
-//                     #endif
+                       #if DEBUG_LOG
+                       DbgEvent dbgEvt = DebugLog.AddEvent(DbgEvtType.GOInitialization, this);
+                       #endif
 
                        Type thisType = this.GetType ();
 
@@ -1193,12 +1193,14 @@ namespace Crow
                        } catch (Exception ex) {
                                throw new Exception ("Error applying style <" + styleKey + ">:", ex);
                        }
+
+                       #if DEBUG_LOG
+                       dbgEvt.end = DebugLog.chrono.ElapsedTicks;
+                       #endif
+
                        onInitialized (this, null);
                }
                protected virtual void onInitialized (object sender, EventArgs e){
-                       #if DEBUG_LOG
-                       DebugLog.AddEvent(DbgEvtType.GOInitialized, this);
-                       #endif
                        Initialized.Raise(sender, e);
                }
                bool getDefaultEvent(EventInfo ei, List<Style> styling,
@@ -1375,7 +1377,7 @@ namespace Crow
                [MethodImpl(MethodImplOptions.AggressiveInlining)]
                public void RegisterForRedraw ()
                {
-                       IsDirty = true;
+                       //IsDirty = true;
                        if (RegisteredLayoutings == LayoutingType.None)
                                IFace.EnqueueForRepaint (this);
                }
@@ -1673,8 +1675,8 @@ namespace Crow
                                                RecreateCache ();
 
                                        UpdateCache (ctx);
-                                       if (!isEnabled)
-                                               paintDisabled (ctx, Slot + Parent.ClientRectangle.Position);
+                                       if (!isEnabled)                                         
+                                               paintDisabled (ctx, Slot + Parent.ClientRectangle.Position);                                    
                                } else {
                                        Rectangle rb = Slot + Parent.ClientRectangle.Position;
                                        ctx.Save ();
@@ -1700,10 +1702,10 @@ namespace Crow
                #endregion
 
         #region Keyboard handling
-               public virtual void onKeyDown(object sender, KeyboardKeyEventArgs e){
+               public virtual void onKeyDown(object sender, KeyEventArgs e){
                        KeyDown.Raise (this, e);
                }
-               public virtual void onKeyUp(object sender, KeyboardKeyEventArgs e){
+               public virtual void onKeyUp(object sender, KeyEventArgs e){
                        KeyUp.Raise (this, e);
                }
                public virtual void onKeyPress(object sender, KeyPressEventArgs e){
index 30dd14800c2d4a05e15d2ae4760c5bba90611c3e..4f2707254535b359aeb5b6b169521983703eecfe 100644 (file)
@@ -222,13 +222,13 @@ namespace Crow
                public override void onMouseWheel (object sender, MouseWheelEventArgs e)
                {
                        base.onMouseWheel (sender, e);
-                       if (IFace.Keyboard.IsKeyDown (Key.ShiftLeft))
+                       if (IFace.IsKeyDown (Key.Shift_L))
                                ScrollX += e.Delta * ScrollSpeed;
                        else
                                ScrollY -= e.Delta * ScrollSpeed;
                }
                /// <summary> Process scrolling with arrow keys, home and end keys. </summary>
-               public override void onKeyDown (object sender, KeyboardKeyEventArgs e)
+               public override void onKeyDown (object sender, KeyEventArgs e)
                {
                        base.onKeyDown (sender, e);
 
index de4b21132df992f567ab7c1a3001718f8618921e..43343c597a4133666baf66ce6ee33a0152ed49eb 100644 (file)
@@ -149,13 +149,13 @@ namespace Crow
                public override void onMouseWheel (object sender, MouseWheelEventArgs e)
                {
                        base.onMouseWheel (sender, e);
-                       if (IFace.Keyboard.IsKeyDown (Key.ShiftLeft))
+                       if (IFace.Keyboard.Shift)
                                ScrollX += e.Delta * MouseWheelSpeed;
                        else
                                ScrollY -= e.Delta * MouseWheelSpeed;
                }
                /// <summary> Process scrolling with arrow keys, home and end keys. </summary>
-               public override void onKeyDown (object sender, KeyboardKeyEventArgs e)
+               public override void onKeyDown (object sender, KeyEventArgs e)
                {
                        base.onKeyDown (sender, e);
 
index e29ff9bf44c81157fa800e2a05a0ba9a0fcddd23..7d14f8009a2188fb166bc7312804593b5cba7913 100644 (file)
@@ -66,15 +66,15 @@ namespace Crow
                #endregion
                        
         #region Keyboard handling
-               public override void onKeyDown (object sender, KeyboardKeyEventArgs e)
+               public override void onKeyDown (object sender, KeyEventArgs e)
                {
                        base.onKeyDown (sender, e);
-
+                       /*
                        Key key = e.Key;
 
                        switch (key)
                        {
-                       case Key.Back:
+                       case Key.BackSpace:
                                if (CurrentPosition == 0)
                                        return;
                                this.DeleteChar();
@@ -89,8 +89,8 @@ namespace Crow
                                        IFace.Clipboard = this.SelectedText;
                                this.DeleteChar ();
                                break;
-                       case Key.Enter:
-                       case Key.KeypadEnter:
+                       case Key.ISO_Enter:
+                       case Key.KP_Enter:
                                if (!selectionIsEmpty)
                                        this.DeleteChar ();
                                if (Multiline)
@@ -211,6 +211,7 @@ namespace Crow
                        default:
                                break;
                        }
+                       */
                        RegisterForGraphicUpdate();
                }
                public override void onKeyPress (object sender, KeyPressEventArgs e)
diff --git a/src/IBackend.cs b/src/IBackend.cs
deleted file mode 100644 (file)
index 2555d56..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// 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 71f9d85a2e8ee89ca7320654e2a2965a96a83035..ee2cfb6a8fd0601c8e2171011014e6a7fdfb7057 100644 (file)
@@ -32,349 +32,2411 @@ namespace Crow
     /// </summary>
     public enum Key : int
     {
-       /// <summary>A key outside the known keys.</summary>
-       Unknown = 0,
-
-       // Modifiers
-       /// <summary>The left shift key.</summary>
-       ShiftLeft,
-       /// <summary>The left shift key (equivalent to ShiftLeft).</summary>
-       LShift = ShiftLeft,
-       /// <summary>The right shift key.</summary>
-       ShiftRight,
-       /// <summary>The right shift key (equivalent to ShiftRight).</summary>
-       RShift = ShiftRight,
-       /// <summary>The left control key.</summary>
-       ControlLeft,
-       /// <summary>The left control key (equivalent to ControlLeft).</summary>
-       LControl = ControlLeft,
-       /// <summary>The right control key.</summary>
-       ControlRight,
-       /// <summary>The right control key (equivalent to ControlRight).</summary>
-       RControl = ControlRight,
-       /// <summary>The left alt key.</summary>
-       AltLeft,
-       /// <summary>The left alt key (equivalent to AltLeft.</summary>
-       LAlt = AltLeft,
-       /// <summary>The right alt key.</summary>
-       AltRight,
-       /// <summary>The right alt key (equivalent to AltRight).</summary>
-       RAlt = AltRight,
-       /// <summary>The left win key.</summary>
-       WinLeft,
-       /// <summary>The left win key (equivalent to WinLeft).</summary>
-       LWin = WinLeft,
-       /// <summary>The right win key.</summary>
-       WinRight,
-       /// <summary>The right win key (equivalent to WinRight).</summary>
-       RWin = WinRight,
-       /// <summary>The menu key.</summary>
-       Menu,
-
-       // Function keys (hopefully enough for most keyboards - mine has 26)
-       // <keysymdef.h> on X11 reports up to 35 function keys.
-       /// <summary>The F1 key.</summary>
-       F1,
-       /// <summary>The F2 key.</summary>
-       F2,
-       /// <summary>The F3 key.</summary>
-       F3,
-       /// <summary>The F4 key.</summary>
-       F4,
-       /// <summary>The F5 key.</summary>
-       F5,
-       /// <summary>The F6 key.</summary>
-       F6,
-       /// <summary>The F7 key.</summary>
-       F7,
-       /// <summary>The F8 key.</summary>
-       F8,
-       /// <summary>The F9 key.</summary>
-       F9,
-       /// <summary>The F10 key.</summary>
-       F10,
-       /// <summary>The F11 key.</summary>
-       F11,
-       /// <summary>The F12 key.</summary>
-       F12,
-       /// <summary>The F13 key.</summary>
-       F13,
-       /// <summary>The F14 key.</summary>
-       F14,
-       /// <summary>The F15 key.</summary>
-       F15,
-       /// <summary>The F16 key.</summary>
-       F16,
-       /// <summary>The F17 key.</summary>
-       F17,
-       /// <summary>The F18 key.</summary>
-       F18,
-       /// <summary>The F19 key.</summary>
-       F19,
-       /// <summary>The F20 key.</summary>
-       F20,
-       /// <summary>The F21 key.</summary>
-       F21,
-       /// <summary>The F22 key.</summary>
-       F22,
-       /// <summary>The F23 key.</summary>
-       F23,
-       /// <summary>The F24 key.</summary>
-       F24,
-       /// <summary>The F25 key.</summary>
-       F25,
-       /// <summary>The F26 key.</summary>
-       F26,
-       /// <summary>The F27 key.</summary>
-       F27,
-       /// <summary>The F28 key.</summary>
-       F28,
-       /// <summary>The F29 key.</summary>
-       F29,
-       /// <summary>The F30 key.</summary>
-       F30,
-       /// <summary>The F31 key.</summary>
-       F31,
-       /// <summary>The F32 key.</summary>
-       F32,
-       /// <summary>The F33 key.</summary>
-       F33,
-       /// <summary>The F34 key.</summary>
-       F34,
-       /// <summary>The F35 key.</summary>
-       F35,
-
-       // Direction arrows
-       /// <summary>The up arrow key.</summary>
-       Up,
-       /// <summary>The down arrow key.</summary>
-       Down,
-       /// <summary>The left arrow key.</summary>
-       Left,
-       /// <summary>The right arrow key.</summary>
-       Right,
-
-       /// <summary>The enter key.</summary>
-       Enter,
-       /// <summary>The escape key.</summary>
-       Escape,
-       /// <summary>The space key.</summary>
-       Space,
-       /// <summary>The tab key.</summary>
-       Tab,
-       /// <summary>The backspace key.</summary>
-       BackSpace,
-       /// <summary>The backspace key (equivalent to BackSpace).</summary>
-       Back = BackSpace,
-       /// <summary>The insert key.</summary>
-       Insert,
-       /// <summary>The delete key.</summary>
-       Delete,
-       /// <summary>The page up key.</summary>
-       PageUp,
-       /// <summary>The page down key.</summary>
-       PageDown,
-       /// <summary>The home key.</summary>
-       Home,
-       /// <summary>The end key.</summary>
-       End,
-       /// <summary>The caps lock key.</summary>
-       CapsLock,
-       /// <summary>The scroll lock key.</summary>
-       ScrollLock,
-       /// <summary>The print screen key.</summary>
-       PrintScreen,
-       /// <summary>The pause key.</summary>
-       Pause,
-       /// <summary>The num lock key.</summary>
-       NumLock,
-
-       // Special keys
-       /// <summary>The clear key (Keypad5 with NumLock disabled, on typical keyboards).</summary>
-       Clear,
-       /// <summary>The sleep key.</summary>
-       Sleep,
-       /*LogOff,
-       Help,
-       Undo,
-       Redo,
-       New,
-       Open,
-       Close,
-       Reply,
-       Forward,
-       Send,
-       Spell,
-       Save,
-       Calculator,
-
-       // Folders and applications
-       Documents,
-       Pictures,
-       Music,
-       MediaPlayer,
-       Mail,
-       Browser,
-       Messenger,
-
-       // Multimedia keys
-       Mute,
-       PlayPause,
-       Stop,
-       VolumeUp,
-       VolumeDown,
-       TrackPrevious,
-       TrackNext,*/
-
-       // Keypad keys
-       /// <summary>The keypad 0 key.</summary>
-       Keypad0,
-       /// <summary>The keypad 1 key.</summary>
-       Keypad1,
-       /// <summary>The keypad 2 key.</summary>
-       Keypad2,
-       /// <summary>The keypad 3 key.</summary>
-       Keypad3,
-       /// <summary>The keypad 4 key.</summary>
-       Keypad4,
-       /// <summary>The keypad 5 key.</summary>
-       Keypad5,
-       /// <summary>The keypad 6 key.</summary>
-       Keypad6,
-       /// <summary>The keypad 7 key.</summary>
-       Keypad7,
-       /// <summary>The keypad 8 key.</summary>
-       Keypad8,
-       /// <summary>The keypad 9 key.</summary>
-       Keypad9,
-       /// <summary>The keypad divide key.</summary>
-       KeypadDivide,
-       /// <summary>The keypad multiply key.</summary>
-       KeypadMultiply,
-       /// <summary>The keypad subtract key.</summary>
-       KeypadSubtract,
-       /// <summary>The keypad minus key (equivalent to KeypadSubtract).</summary>
-       KeypadMinus = KeypadSubtract,
-       /// <summary>The keypad add key.</summary>
-       KeypadAdd,
-       /// <summary>The keypad plus key (equivalent to KeypadAdd).</summary>
-       KeypadPlus = KeypadAdd,
-       /// <summary>The keypad decimal key.</summary>
-       KeypadDecimal,
-       /// <summary>The keypad period key (equivalent to KeypadDecimal).</summary>
-       KeypadPeriod = KeypadDecimal,
-       /// <summary>The keypad enter key.</summary>
-       KeypadEnter,
-
-       // Letters
-       /// <summary>The A key.</summary>
-       A,
-       /// <summary>The B key.</summary>
-       B,
-       /// <summary>The C key.</summary>
-       C,
-       /// <summary>The D key.</summary>
-       D,
-       /// <summary>The E key.</summary>
-       E,
-       /// <summary>The F key.</summary>
-       F,
-       /// <summary>The G key.</summary>
-       G,
-       /// <summary>The H key.</summary>
-       H,
-       /// <summary>The I key.</summary>
-       I,
-       /// <summary>The J key.</summary>
-       J,
-       /// <summary>The K key.</summary>
-       K,
-       /// <summary>The L key.</summary>
-       L,
-       /// <summary>The M key.</summary>
-       M,
-       /// <summary>The N key.</summary>
-       N,
-       /// <summary>The O key.</summary>
-       O,
-       /// <summary>The P key.</summary>
-       P,
-       /// <summary>The Q key.</summary>
-       Q,
-       /// <summary>The R key.</summary>
-       R,
-       /// <summary>The S key.</summary>
-       S,
-       /// <summary>The T key.</summary>
-       T,
-       /// <summary>The U key.</summary>
-       U,
-       /// <summary>The V key.</summary>
-       V,
-       /// <summary>The W key.</summary>
-       W,
-       /// <summary>The X key.</summary>
-       X,
-       /// <summary>The Y key.</summary>
-       Y,
-       /// <summary>The Z key.</summary>
-       Z,
-
-       // Numbers
-       /// <summary>The number 0 key.</summary>
-       Number0,
-       /// <summary>The number 1 key.</summary>
-       Number1,
-       /// <summary>The number 2 key.</summary>
-       Number2,
-       /// <summary>The number 3 key.</summary>
-       Number3,
-       /// <summary>The number 4 key.</summary>
-       Number4,
-       /// <summary>The number 5 key.</summary>
-       Number5,
-       /// <summary>The number 6 key.</summary>
-       Number6,
-       /// <summary>The number 7 key.</summary>
-       Number7,
-       /// <summary>The number 8 key.</summary>
-       Number8,
-       /// <summary>The number 9 key.</summary>
-       Number9,
-
-       // Symbols
-       /// <summary>The tilde key.</summary>
-       Tilde,
-       /// <summary>The grave key (equivaent to Tilde).</summary>
-       Grave = Tilde,
-       /// <summary>The minus key.</summary>
-       Minus,
-       //Equal,
-       /// <summary>The plus key.</summary>
-       Plus,
-       /// <summary>The left bracket key.</summary>
-       BracketLeft,
-       /// <summary>The left bracket key (equivalent to BracketLeft).</summary>
-       LBracket = BracketLeft,
-       /// <summary>The right bracket key.</summary>
-       BracketRight,
-       /// <summary>The right bracket key (equivalent to BracketRight).</summary>
-       RBracket = BracketRight,
-       /// <summary>The semicolon key.</summary>
-       Semicolon,
-       /// <summary>The quote key.</summary>
-       Quote,
-       /// <summary>The comma key.</summary>
-       Comma,
-       /// <summary>The period key.</summary>
-       Period,
-       /// <summary>The slash key.</summary>
-       Slash,
-       /// <summary>The backslash key.</summary>
-       BackSlash,
-       /// <summary>The secondary backslash key.</summary>
-       NonUSBackSlash,
-       /// <summary>Indicates the last available keyboard key.</summary>
-       LastKey
+               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,
     }
 }
\ No newline at end of file
diff --git a/src/Input/KeyEventArgs.cs b/src/Input/KeyEventArgs.cs
new file mode 100644 (file)
index 0000000..510e68a
--- /dev/null
@@ -0,0 +1,64 @@
+#region License
+//
+// The Open Toolkit Library License
+//
+// Copyright (c) 2006 - 2009 the Open Toolkit library.
+//
+// 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.
+//
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Crow
+{
+    public class KeyEventArgs : EventArgs
+    {
+               int keyCode;
+               Key key;
+               bool repeat;    
+
+               public KeyEventArgs(Key _key, bool _repeat)
+               {
+                       key = _key;
+                       repeat = _repeat;
+               }
+               public KeyEventArgs(KeyEventArgs args)
+               {
+                   Key = args.Key;
+               }
+               public Key Key
+               {
+                   get { return key; }
+                   internal set { key = value; }
+               }
+               public uint ScanCode
+               {
+                   get { return (uint)Key; }
+               }
+               public bool IsRepeat
+               {
+                   get { return repeat; }
+                   internal set { repeat = value; }
+               }
+    }
+}
diff --git a/src/Input/KeyModifiers.cs b/src/Input/KeyModifiers.cs
deleted file mode 100644 (file)
index 885365c..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#region License
-//
-// HatPosition.cs
-//
-// Author:
-//       Stefanos A. <stapostol@gmail.com>
-//
-// Copyright (c) 2006-2014 Stefanos Apostolopoulos
-//
-// 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.
-//
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Crow
-{
-    /// <summary>
-    /// Enumerates modifier keys.
-    /// </summary>
-    [Flags]
-    public enum KeyModifiers : byte
-    {
-       None = 0,
-       /// <summary>
-       /// The alt key modifier (option on Mac).
-       /// </summary>
-       Alt = 1 << 0,
-
-       /// <summary>
-       /// The control key modifier.
-       /// </summary>
-       Control = 1 << 1,
-
-       /// <summary>
-       /// The shift key modifier.
-       /// </summary>
-       Shift = 1 << 2,
-
-       /// <summary>
-       /// The shift key modifier.
-       /// </summary>
-       AltGr = 1 << 3
-    }
-}
diff --git a/src/Input/KeyboardKeyEventArgs.cs b/src/Input/KeyboardKeyEventArgs.cs
deleted file mode 100644 (file)
index f9307ff..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-#region License
-//
-// The Open Toolkit Library License
-//
-// Copyright (c) 2006 - 2009 the Open Toolkit library.
-//
-// 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.
-//
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Crow
-{
-    /// <summary>
-    /// Defines the event data for <see cref="KeyboardDevice"/> events.
-    /// </summary>
-    /// <remarks>
-    /// <para>
-    /// Do not cache instances of this type outside their event handler.
-    /// If necessary, you can clone a KeyboardEventArgs instance using the
-    /// <see cref="KeyboardKeyEventArgs(KeyboardKeyEventArgs)"/> constructor.
-    /// </para>
-    /// </remarks>
-    public class KeyboardKeyEventArgs : EventArgs
-    {
-       #region Fields
-
-       Key key;
-       bool repeat;
-       KeyboardState state;
-
-       #endregion
-
-       #region Constructors
-
-       /// <summary>
-       /// Constructs a new KeyboardEventArgs instance.
-       /// </summary>
-               public KeyboardKeyEventArgs(Key _key, bool _repeat, KeyboardState _state)
-               {
-                       key = _key;
-                       repeat = _repeat;
-                       state = _state;
-               }
-
-       /// <summary>
-       /// Constructs a new KeyboardEventArgs instance.
-       /// </summary>
-       /// <param name="args">An existing KeyboardEventArgs instance to clone.</param>
-       public KeyboardKeyEventArgs(KeyboardKeyEventArgs args)
-       {
-           Key = args.Key;
-       }
-
-       #endregion
-
-       #region Public Members
-
-       /// <summary>
-       /// Gets the <see cref="Key"/> that generated this event.
-       /// </summary>
-       public Key Key
-       {
-           get { return key; }
-           internal set { key = value; }
-       }
-
-       /// <summary>
-       /// Gets the scancode which generated this event.
-       /// </summary>
-       public uint ScanCode
-       {
-           get { return (uint)Key; }
-       }
-
-       /// <summary>
-       /// Gets a value indicating whether <see cref="OpenTK.Input.KeyModifiers.Alt"/> is pressed.
-       /// </summary>
-       /// <value><c>true</c> if pressed; otherwise, <c>false</c>.</value>
-       public bool Alt
-       {
-           get { return state[Key.AltLeft] || state[Key.AltRight]; }
-       }
-
-       /// <summary>
-       /// Gets a value indicating whether <see cref="OpenTK.Input.KeyModifiers.Control"/> is pressed.
-       /// </summary>
-       /// <value><c>true</c> if pressed; otherwise, <c>false</c>.</value>
-       public bool Control
-       {
-           get { return state[Key.ControlLeft] || state[Key.ControlRight]; }
-       }
-
-       /// <summary>
-       /// Gets a value indicating whether <see cref="OpenTK.Input.KeyModifiers.Shift"/> is pressed.
-       /// </summary>
-       /// <value><c>true</c> if pressed; otherwise, <c>false</c>.</value>
-       public bool Shift
-       {
-           get { return state[Key.ShiftLeft] || state[Key.ShiftRight]; }
-       }
-
-       /// <summary>
-       /// Gets a bitwise combination representing the <see cref="OpenTK.Input.KeyModifiers"/>
-       /// that are currently pressed.
-       /// </summary>
-       /// <value>The modifiers.</value>
-       public KeyModifiers Modifiers
-       {
-           get
-           {
-               KeyModifiers mods = 0;
-               mods |= Alt ? KeyModifiers.Alt : 0;
-               mods |= Control ? KeyModifiers.Control : 0;
-               mods |= Shift ? KeyModifiers.Shift : 0;
-               return mods;
-           }
-       }
-
-       /// <summary>
-       /// Gets the current <see cref="OpenTK.Input.KeyboardState"/>.
-       /// </summary>
-       /// <value>The keyboard.</value>
-       public KeyboardState Keyboard
-       {
-           get { return state; }
-           internal set { state = value; }
-       }
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether
-       /// this key event is a repeat.
-       /// </summary>
-       /// <value>
-       /// true, if this event was caused by the user holding down
-       /// a key; false, if this was caused by the user pressing a
-       /// key for the first time.
-       /// </value>
-       public bool IsRepeat
-       {
-           get { return repeat; }
-           internal set { repeat = value; }
-       }
-
-       #endregion
-    }
-}
diff --git a/src/Input/KeyboardState.cs b/src/Input/KeyboardState.cs
deleted file mode 100644 (file)
index e3784bc..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
- #region License
- //
- // The Open Toolkit Library License
- //
- // Copyright (c) 2006 - 2009 the Open Toolkit library.
- //
- // 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.
- //
- #endregion
-
-using System;
-using System.Collections.Specialized;
-using System.Text;
-
-namespace Crow
-{
-    /// <summary>
-    /// Encapsulates the state of a Keyboard device.
-    /// </summary>
-    public struct KeyboardState : IEquatable<KeyboardState>
-    {
-       #region Fields
-
-       // Allocate enough ints to store all keyboard keys
-       const int IntSize = sizeof(int);
-       const int NumInts = ((int)Key.LastKey + IntSize - 1) / IntSize;
-       // The following line triggers bogus CS0214 in gmcs 2.0.1, sigh...
-       unsafe fixed int Keys[NumInts];
-       bool is_connected;
-
-       #endregion
-
-       #region Public Members
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether the specified
-       /// <see cref="OpenTK.Input.Key"/> is pressed.
-       /// </summary>
-       /// <param name="key">The <see cref="OpenTK.Input.Key"/> to check.</param>
-       /// <returns>True if key is pressed; false otherwise.</returns>
-       public bool this[Key key]
-       {
-           get { return IsKeyDown(key); }
-           internal set { SetKeyState(key, value); }
-       }
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether the specified
-       /// <see cref="OpenTK.Input.Key"/> is pressed.
-       /// </summary>
-       /// <param name="code">The scancode to check.</param>
-       /// <returns>True if code is pressed; false otherwise.</returns>
-       public bool this[short code]
-       {
-           get { return IsKeyDown((Key)code); }
-       }
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether this key is down.
-       /// </summary>
-       /// <param name="key">The <see cref="OpenTK.Input.Key"/> to check.</param>
-       public bool IsKeyDown(Key key)
-       {
-           return ReadBit((int)key);
-       }
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether this scan code is down.
-       /// </summary>
-       /// <param name="code">The scan code to check.</param>
-       public bool IsKeyDown(short code)
-       {
-           return code >= 0 && code < (short)Key.LastKey && ReadBit(code);
-       }
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether this key is up.
-       /// </summary>
-       /// <param name="key">The <see cref="OpenTK.Input.Key"/> to check.</param>
-       public bool IsKeyUp(Key key)
-       {
-           return !ReadBit((int)key);
-       }
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether this scan code is down.
-       /// </summary>
-       /// <param name="code">The scan code to check.</param>
-       public bool IsKeyUp(short code)
-       {
-           return !IsKeyDown(code);
-       }
-
-       /// <summary>
-       /// Gets a <see cref="System.Boolean"/> indicating whether this keyboard
-       /// is connected.
-       /// </summary>
-       public bool IsConnected
-       {
-           get { return is_connected; }
-           internal set { is_connected = value; }
-       }
-
-#if false
-       // Disabled until the correct cross-platform API can be determined.
-       public bool IsLedOn(KeyboardLeds led)
-       {
-           return false;
-       }
-
-       public bool IsLedOff(KeyboardLeds led)
-       {
-           return false;
-       }
-#endif
-
-       /// <summary>
-       /// Checks whether two <see cref="KeyboardState" /> instances are equal.
-       /// </summary>
-       /// <param name="left">
-       /// A <see cref="KeyboardState"/> instance.
-       /// </param>
-       /// <param name="right">
-       /// A <see cref="KeyboardState"/> instance.
-       /// </param>
-       /// <returns>
-       /// True if both left is equal to right; false otherwise.
-       /// </returns>
-       public static bool operator ==(KeyboardState left, KeyboardState right)
-       {
-           return left.Equals(right);
-       }
-
-       /// <summary>
-       /// Checks whether two <see cref="KeyboardState" /> instances are not equal.
-       /// </summary>
-       /// <param name="left">
-       /// A <see cref="KeyboardState"/> instance.
-       /// </param>
-       /// <param name="right">
-       /// A <see cref="KeyboardState"/> instance.
-       /// </param>
-       /// <returns>
-       /// True if both left is not equal to right; false otherwise.
-       /// </returns>
-       public static bool operator !=(KeyboardState left, KeyboardState right)
-       {
-           return !left.Equals(right);
-       }
-
-       /// <summary>
-       /// Compares to an object instance for equality.
-       /// </summary>
-       /// <param name="obj">
-       /// The <see cref="System.Object"/> to compare to.
-       /// </param>
-       /// <returns>
-       /// True if this instance is equal to obj; false otherwise.
-       /// </returns>
-       public override bool Equals(object obj)
-       {
-           if (obj is KeyboardState)
-           {
-               return this == (KeyboardState)obj;
-           }
-           else
-           {
-               return false;
-           }
-       }
-
-       /// <summary>
-       /// Generates a hashcode for the current instance.
-       /// </summary>
-       /// <returns>
-       /// A <see cref="System.Int32"/> represting the hashcode for this instance.
-       /// </returns>
-       public override int GetHashCode()
-       {
-           unsafe
-           {
-               fixed (int* k = Keys)
-               {
-                   int hashcode = 0;
-                   for (int i = 0; i < NumInts; i++)
-                       hashcode ^= (k + i)->GetHashCode();
-                   return hashcode;
-               }
-           }
-       }
-
-       #endregion
-
-       #region Internal Members
-
-       public void SetKeyState(Key key, bool down)
-       {
-           if (down)
-           {
-               EnableBit((int)key);
-           }
-           else
-           {
-               DisableBit((int)key);
-           }
-       }
-
-       internal bool ReadBit(int offset)
-       {
-           ValidateOffset(offset);
-
-           int int_offset = offset / 32;
-           int bit_offset = offset % 32;
-           unsafe
-           {
-               fixed (int* k = Keys) { return (*(k + int_offset) & (1 << bit_offset)) != 0u; }
-           }
-       }
-
-       internal void EnableBit(int offset)
-       {
-           //ValidateOffset(offset);
-
-           int int_offset = offset / 32;
-           int bit_offset = offset % 32;
-           unsafe
-           {
-               fixed (int* k = Keys) { *(k + int_offset) |= 1 << bit_offset; }
-           }
-       }
-
-       internal void DisableBit(int offset)
-       {
-           ValidateOffset(offset);
-
-           int int_offset = offset / 32;
-           int bit_offset = offset % 32;
-           unsafe
-           {
-               fixed (int* k = Keys) { *(k + int_offset) &= ~(1 << bit_offset); }
-           }
-       }
-
-       internal void MergeBits(KeyboardState other)
-       {
-           unsafe
-           {
-               int* k2 = other.Keys;
-               fixed (int* k1 = Keys)
-               {
-                   for (int i = 0; i < NumInts; i++)
-                       *(k1 + i) |= *(k2 + i);
-               }
-           }
-           IsConnected |= other.IsConnected;
-       }
-
-       internal void SetIsConnected(bool value)
-       {
-           IsConnected = value;
-       }
-
-       #endregion
-
-       #region Private Members
-
-       static void ValidateOffset(int offset)
-       {
-           if (offset < 0 || offset >= NumInts * IntSize)
-               throw new ArgumentOutOfRangeException();
-       }
-
-       #endregion
-
-       #region IEquatable<KeyboardState> Members
-
-       /// <summary>
-       /// Compares two KeyboardState instances.
-       /// </summary>
-       /// <param name="other">The instance to compare two.</param>
-       /// <returns>True, if both instances are equal; false otherwise.</returns>
-       public bool Equals(KeyboardState other)
-       {
-           bool equal = true;
-           unsafe
-           {
-               int* k2 = other.Keys;
-               fixed (int* k1 = Keys)
-               {
-                   for (int i = 0; equal && i < NumInts; i++)
-                       equal &= *(k1 + i) == *(k2 + i);
-               }
-           }
-           return equal;
-       }
-
-       #endregion
-    }
-}
index c83da3c92810d3382f2fefaa37f2534dd15b9a7d..743bbb0f5142937ad74565139f4e0e660cd7e46d 100644 (file)
@@ -121,13 +121,48 @@ namespace Crow
 
                protected virtual void InitBackend () {
                        backend = new Crow.XCB.XCBBackend ();
+                       //backend = new Crow.XLib.XLibBackend ();
                        backend.Init (this);
 
+                       Keyboard.KeyDown += Keyboard_KeyDown;
+                       Keyboard.KeyUp += Keyboard_KeyUp;
+                       Keyboard.KeyPress += Keyboard_KeyPress;
+
                        Thread t = new Thread (interfaceThread);
                        t.IsBackground = true;
                        t.Start ();
                }
 
+               void Keyboard_KeyPress (object sender, KeyPressEventArgs e)
+               {
+                       if (_focusedWidget != null)
+                               _focusedWidget.onKeyPress (this, e);
+               }
+
+               void Keyboard_KeyUp (object sender, KeyEventArgs e)
+               {
+                       if (_focusedWidget != null)
+                               _focusedWidget.onKeyUp (this, e);
+//                     if (keyboardRepeatThread != null) {
+//                             keyboardRepeatOn = false;
+//                             keyboardRepeatThread.Abort();
+//                             keyboardRepeatThread.Join ();
+//                     }
+               }
+               void Keyboard_KeyDown (object sender, KeyEventArgs e)
+               {
+                       //Keyboard.SetKeyState((Crow.Key)Key,true);
+                       lastKeyDownEvt = e;
+                       lastKeyDownEvt.IsRepeat = true;
+
+                       if (_focusedWidget != null)
+                               _focusedWidget.onKeyDown (this, e);
+
+                       //                      keyboardRepeatThread = new Thread (keyboardRepeatThreadFunc);
+                       //                      keyboardRepeatThread.IsBackground = true;
+                       //                      keyboardRepeatThread.Start ();
+               }
+
                void interfaceThread()
                {                       
                        while (true) {
@@ -255,8 +290,8 @@ namespace Crow
                public event EventHandler<MouseButtonEventArgs> MouseButtonDown;
                public event EventHandler<MouseButtonEventArgs> MouseClick;
                public event EventHandler<MouseMoveEventArgs> MouseMove;
-               public event EventHandler<KeyboardKeyEventArgs> KeyboardKeyDown;
-               public event EventHandler<KeyboardKeyEventArgs> KeyboardKeyUp;
+               /*public event EventHandler<KeyEventArgs> KeyboardKeyDown;
+               public event EventHandler<KeyEventArgs> KeyboardKeyUp;*/
                #endregion
 
                /// <summary>Main Cairo surface</summary>
@@ -648,16 +683,11 @@ namespace Crow
                        updateMeasure.StartCycle();
                        #endif
 
-                       processLayouting ();
+                       /*#if DEBUG_LOG
+                       DebugLog.AddEvent (DbgEvtType.IFaceUpdate);
+                       #endif*/
 
-                       #if DEBUG_LAYOUTING
-                       if (curLQIsTries.Count > 0){
-                               LQIsTries.Add(curLQIsTries);
-                               curLQIsTries = new LQIList();
-                               LQIs.Add(curLQIs);
-                               curLQIs = new LQIList();
-                       }
-                       #endif
+                       processLayouting ();
 
                        clippingRegistration ();
 
@@ -676,24 +706,25 @@ namespace Crow
                        #if MEASURE_TIME
                        layoutingMeasure.StartCycle();
                        #endif
-
                        if (Monitor.TryEnter (LayoutMutex)) {
+                               #if DEBUG_LOG
+                               if (LayoutingQueue.Count > 0)
+                                       DebugLog.AddEvent (DbgEvtType.IFaceStartLayouting);
+                               #endif
                                DiscardQueue = new Queue<LayoutingQueueItem> ();
                                //Debug.WriteLine ("======= Layouting queue start =======");
                                LayoutingQueueItem lqi;
                                while (LayoutingQueue.Count > 0) {
                                        lqi = LayoutingQueue.Dequeue ();
-                                       #if DEBUG_LAYOUTING
-                                       currentLQI = lqi;
-                                       curLQIsTries.Add(currentLQI);
-                                       #endif
                                        lqi.ProcessLayouting ();
                                }
                                LayoutingQueue = DiscardQueue;
                                Monitor.Exit (LayoutMutex);
                                DiscardQueue = null;
                        }
-
+                       /*#if DEBUG_LOG
+                       DebugLog.AddEvent (DbgEvtType.IFaceStartLayouting);
+                       #endif*/
                        #if MEASURE_TIME
                        layoutingMeasure.StopCycle();
                        #endif
@@ -705,6 +736,10 @@ namespace Crow
                        #if MEASURE_TIME
                        clippingMeasure.StartCycle();
                        #endif
+                       #if DEBUG_LOG
+                       if (ClippingQueue.Count > 0)
+                               DebugLog.AddEvent (DbgEvtType.IFaceStartClipping);
+                       #endif
                        GraphicObject g = null;
                        while (ClippingQueue.Count > 0) {
                                lock (ClippingMutex) {
@@ -713,7 +748,9 @@ namespace Crow
                                }
                                g.ClippingRegistration ();
                        }
-
+                       /*#if DEBUG_LOG
+                       DebugLog.AddEvent (DbgEvtType.IFaceEndClipping);
+                       #endif*/
                        #if MEASURE_TIME
                        clippingMeasure.StopCycle();
                        #endif
@@ -724,6 +761,10 @@ namespace Crow
                        #if MEASURE_TIME
                        drawingMeasure.StartCycle();
                        #endif
+                       #if DEBUG_LOG
+                       if (!clipping.IsEmpty)
+                               DebugLog.AddEvent (DbgEvtType.IFaceStartDrawing);
+                       #endif
                        if (DragImage != null)
                                clipping.UnionRectangle(new Rectangle (DragImageX, DragImageY, DragImageWidth, DragImageHeight));
                        //using (surf = new ImageSurface (bmp, Format.Argb32, ClientRectangle.Width, ClientRectangle.Height, ClientRectangle.Width * 4)) {
@@ -775,10 +816,13 @@ namespace Crow
                                        clipping = new Region ();
                                        //}
                                        //surf.WriteToPng (@"/mnt/data/test.png");
-
+                                       surf.Flush();
                                        backend?.Flush ();
                                }
                        }
+                       /*#if DEBUG_LOG
+                       DebugLog.AddEvent (DbgEvtType.IFaceEndDrawing);
+                       #endif*/
                        #if MEASURE_TIME
                        drawingMeasure.StopCycle();
                        #endif
@@ -904,7 +948,10 @@ namespace Crow
 
                                /*surf.Dispose ();
                                surf = new Cairo.XlibSurface (xHandle, xwinHnd, xDefaultVisual, clientRectangle.Width, clientRectangle.Height);*/
-                               (surf as XlibSurface).SetSize (clientRectangle.Width, clientRectangle.Height);
+                               if (surf is XlibSurface)
+                                       (surf as XlibSurface).SetSize (clientRectangle.Width, clientRectangle.Height);
+                               else if (surf is XcbSurface)
+                                       (surf as XcbSurface).SetSize (clientRectangle.Width, clientRectangle.Height);
 
 
                                foreach (GraphicObject g in GraphicTree)
@@ -918,7 +965,7 @@ namespace Crow
                XCursor cursor = XCursor.Default;
 
                public MouseState Mouse;
-               public KeyboardState Keyboard;
+               public IKeyboard Keyboard;
 
                public XCursor MouseCursor {
                        set {
@@ -1100,61 +1147,9 @@ namespace Crow
                        HoverWidget.onMouseWheel (this, e);
                        return true;
                }
-               /// <summary>
-               /// Forward key down event from the host to the crow interface
-               /// </summary>
-               /// <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);
-                       KeyboardKeyEventArgs e = lastKeyDownEvt = new KeyboardKeyEventArgs((Crow.Key)Key, false, Keyboard);
-                       lastKeyDownEvt.IsRepeat = true;
-
-                       KeyboardKeyDown.Raise (this, e);
-
-                       if (_focusedWidget == null)
-                               return false;
-                       _focusedWidget.onKeyDown (this, e);
-
-//                     keyboardRepeatThread = new Thread (keyboardRepeatThreadFunc);
-//                     keyboardRepeatThread.IsBackground = true;
-//                     keyboardRepeatThread.Start ();
-
-                       return true;
-               }
-               /// <summary>
-               /// Forward key up event from the host to the crow interface
-               /// </summary>
-               /// <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);
-                       if (_focusedWidget == null)
-                               return false;
-                       KeyboardKeyEventArgs e = new KeyboardKeyEventArgs((Crow.Key)Key, false, Keyboard);
 
-                       _focusedWidget.onKeyUp (this, e);
-
-                       KeyboardKeyUp.Raise (this, e);
-
-//                     if (keyboardRepeatThread != null) {
-//                             keyboardRepeatOn = false;
-//                             keyboardRepeatThread.Abort();
-//                             keyboardRepeatThread.Join ();
-//                     }
-                       return true;
-               }
-               /// <summary>
-               /// Forward a translated key press event from the host to the crow interface
-               /// </summary>
-               /// <returns>return true, if interface handled the event, false otherwise.</returns>
-               /// <param name="button">Button index</param>
-               public bool ProcessKeyPress(char Key){
-                       if (_focusedWidget == null)
-                               return false;
-                       KeyPressEventArgs e = new KeyPressEventArgs(Key);
-                       _focusedWidget.onKeyPress (this, e);
-                       return true;
+               public bool IsKeyDown (Key key) {
+                       return false;
                }
                #endregion
 
@@ -1248,7 +1243,7 @@ namespace Crow
                volatile bool mouseRepeatOn, keyboardRepeatOn, mouseRepeatTriggeredAtLeastOnce = false;
                volatile int mouseRepeatCount, keyboardRepeatCount;
                Thread mouseRepeatThread, keyboardRepeatThread;
-               KeyboardKeyEventArgs lastKeyDownEvt;
+               KeyEventArgs lastKeyDownEvt;
                void mouseRepeatThreadFunc()
                {
                        mouseRepeatOn = true;
index a9049eb9250cbe7fea6849c6a7603ec1df45b5bc..a905f25d600d0e6daa09d56a0d7e86544be8a8fa 100644 (file)
@@ -133,9 +133,13 @@ namespace Crow
                                if (LayoutingTries < Interface.MaxLayoutingTries) {
                                        Layoutable.RegisteredLayoutings |= LayoutType;
                                        (Layoutable as GraphicObject).IFace.LayoutingQueue.Enqueue (this);
+                                       #if DEBUG_LOG
                                        result = Result.Requeued;
+                                       #endif
                                } else if (DiscardCount < Interface.MaxDiscardCount) {
+                                       #if DEBUG_LOG
                                        result = Result.Discarded;
+                                       #endif
                                        LayoutingTries = 0;
                                        DiscardCount++;
                                        Layoutable.RegisteredLayoutings |= LayoutType;
index c1ced71d9952c6db11f392ae3f49b1c98e80e819..918132ef289e7ad0f4d7aa4c2fcc0776ac65741c 100644 (file)
@@ -52,5 +52,11 @@ namespace Cairo
                Xor,
                Add,
                Saturate,
+               Multiply,
+               Screen,
+               Overlay,
+               Darken,
+               Lighten,
+
        }
 }
diff --git a/src/backends/IBackend.cs b/src/backends/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();
+       }
+}
+
diff --git a/src/backends/IKeyboard.cs b/src/backends/IKeyboard.cs
new file mode 100644 (file)
index 0000000..d04655e
--- /dev/null
@@ -0,0 +1,47 @@
+//
+// IKeyboard.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 IKeyboard
+       {
+               event EventHandler<KeyEventArgs> KeyDown;
+               event EventHandler<KeyEventArgs> KeyUp;
+               event EventHandler<KeyPressEventArgs> KeyPress;
+
+
+               void HandleEvent (uint Keycode, bool pressed);
+
+               bool IsDown (Key key);
+               bool Shift { get; }
+               bool Ctrl { get; }
+               bool Alt { get; }
+
+               void Destroy ();
+       }
+}
+
diff --git a/src/backends/X11Structs.cs b/src/backends/X11Structs.cs
deleted file mode 100644 (file)
index c954068..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 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
deleted file mode 100644 (file)
index 9523d7f..0000000
+++ /dev/null
@@ -1,2943 +0,0 @@
-//
-// 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
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/XLibBackend.cs b/src/backends/XLibBackend.cs
deleted file mode 100644 (file)
index 11f44eb..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-//
-// 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;
-               }
-       }
-}
-
diff --git a/src/backends/xcb/XCBBackend.cs b/src/backends/xcb/XCBBackend.cs
new file mode 100644 (file)
index 0000000..4d0a2a8
--- /dev/null
@@ -0,0 +1,490 @@
+//
+// 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;
+
+       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;
+
+                       //expose event fields
+                       [FieldOffsetAttribute(4)]
+                       public xcb_window_t window;
+                       [FieldOffsetAttribute(8)]
+                       public UInt16 x;
+                       [FieldOffsetAttribute(10)]
+                       public UInt16 y;
+                       [FieldOffsetAttribute(12)]
+                       public UInt16 width;
+                       [FieldOffsetAttribute(14)]
+                       public UInt16 height;
+                       [FieldOffsetAttribute(14)]
+                       public UInt16 count;
+                       /// 
+
+                       [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 */
+               }
+
+
+
+               #region pinvoke XCB
+               [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;
+
+
+               #region IBackend implementation
+               public void Init (Interface _iFace)
+               {
+                       iFace = _iFace;
+
+                       conn = xcb_connect (null, IntPtr.Zero);
+
+
+                       iFace.Keyboard = new  XKB.XCBKeyboard (conn);
+
+                       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 ()
+               {
+                       iFace.Keyboard.Destroy ();
+
+                       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:
+                               if (evt.width > 0)
+                                       iFace.ProcessResize (new Rectangle (0, 0, evt.width, evt.height));
+                               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:
+                               iFace.Keyboard.HandleEvent (evt.keycode, true);
+                               break;
+                       case xcb_event_type.KEY_RELEASE:
+                               iFace.Keyboard.HandleEvent (evt.keycode, false);
+                               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/xcb/XCBKeyboard.cs b/src/backends/xcb/XCBKeyboard.cs
new file mode 100644 (file)
index 0000000..c5e6865
--- /dev/null
@@ -0,0 +1,2607 @@
+//
+// XCBKeyboard.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.Runtime.InteropServices;
+
+namespace Crow.XKB
+{
+       using xkb_keycode_t = System.UInt32;
+       using xkb_mod_index_t = System.UInt32;
+
+       public class XCBKeyboard : IKeyboard
+       {
+               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)
+               }
+
+               const string XKB_MOD_NAME_SHIFT ="Shift";
+               const string XKB_MOD_NAME_CAPS = "Lock";
+               const string XKB_MOD_NAME_CTRL = "Control";
+               const string XKB_MOD_NAME_ALT = "Mod1";
+               const string XKB_MOD_NAME_NUM = "Mod2";
+               const string XKB_MOD_NAME_LOGO = "Mod4";
+
+               const string XKB_LED_NAME_CAPS = "Caps Lock";
+               const string XKB_LED_NAME_NUM = "Num Lock";
+               const string XKB_LED_NAME_SCROLL = "Scroll Lock";
+
+               #region pinvoke XKB
+
+               [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 int xkb_state_key_get_syms (IntPtr state, xkb_keycode_t keycode, ref IntPtr syms_out);
+
+               [DllImportAttribute("xkbcommon")]
+               static extern xkb_mod_index_t xkb_keymap_num_mods (IntPtr keymap);
+               [DllImportAttribute("xkbcommon")]
+               static extern xkb_mod_index_t xkb_keymap_mod_get_index (IntPtr keymap, string name);
+               [DllImportAttribute("xkbcommon")]
+               static extern bool xkb_state_mod_index_is_active (IntPtr state, xkb_mod_index_t idx, xkb_state_component type);         
+               [DllImportAttribute("xkbcommon")]
+               static extern int xkb_state_mod_name_is_active (IntPtr state, string mod_name, xkb_state_component type);
+
+               [DllImportAttribute("xkbcommon")]
+               static extern UInt32 xkb_state_key_get_utf32 (IntPtr state, xkb_keycode_t key);
+               [DllImportAttribute("xkbcommon")]
+               static extern void xkb_state_unref (IntPtr state);      
+               [DllImportAttribute("xkbcommon")]
+               static extern void xkb_keymap_unref (IntPtr keymap);    
+               [DllImportAttribute("xkbcommon")]
+               static extern void xkb_context_unref (IntPtr ctx);      
+
+               [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);
+               #endregion
+               xkb_mod_index_t ModIdxShift;
+               xkb_mod_index_t ModIdxCtrl;
+               xkb_mod_index_t ModIdxAlt;
+               xkb_mod_index_t ModIdxLogo;
+               xkb_mod_index_t ModIdxCapsLock;
+               xkb_mod_index_t ModIdxNumLock;
+
+               IntPtr xkbCtx, xkbKeymap, xkbState;
+
+               #region IKeyboard implementation
+
+               public event EventHandler<KeyEventArgs> KeyDown;
+               public event EventHandler<KeyEventArgs> KeyUp;
+               public event EventHandler<KeyPressEventArgs> KeyPress;
+
+               public void HandleEvent (uint keycode, bool pressed) {
+                       xkb_keysym ks = xkb_state_key_get_one_sym (xkbState, keycode);
+                       xkb_key_direction keyDir = xkb_key_direction.KEY_DOWN;
+
+                       if (pressed) {
+                               KeyDown.Raise (this, new KeyEventArgs ((Key)ks, false));
+
+                               IntPtr ptrKeySyms = IntPtr.Zero;
+
+
+                               int nbKeySyms = xkb_state_key_get_syms (xkbState, keycode, ref ptrKeySyms);
+                               int[] keySyms = new int[nbKeySyms];
+                               Marshal.Copy (ptrKeySyms, keySyms, 0, nbKeySyms);
+
+                               uint utf32 = xkb_state_key_get_utf32 (xkbState, keycode);
+
+                               if (utf32 > 0)
+                                       KeyPress.Raise (this, new KeyPressEventArgs (char.ConvertFromUtf32 ((int)utf32) [0]));
+                       } else {
+                               keyDir = xkb_key_direction.KEY_UP;
+                               KeyUp.Raise (this, new KeyEventArgs ((Key)ks, false));
+                       }
+
+                       xkb_state_update_key (xkbState, keycode, keyDir);
+               }
+               public bool IsDown (Key key) {
+                       return false;
+               }
+               public bool Shift {
+                       get {
+                               return xkb_state_mod_index_is_active (xkbState, ModIdxShift, xkb_state_component.XKB_STATE_MODS_EFFECTIVE);
+                       }
+               }
+               public bool Ctrl {
+                       get {
+                               return xkb_state_mod_index_is_active (xkbState, ModIdxCtrl, xkb_state_component.XKB_STATE_MODS_EFFECTIVE);
+                       }
+               }
+               public bool Alt {
+                       get {
+                               return xkb_state_mod_index_is_active (xkbState, ModIdxAlt, xkb_state_component.XKB_STATE_MODS_EFFECTIVE);
+                       }
+               }
+               public void Destroy () {
+                       xkb_state_unref (xkbState);
+                       xkb_keymap_unref (xkbKeymap);
+                       xkb_context_unref (xkbCtx);
+               }
+               #endregion
+
+
+               public XCBKeyboard (IntPtr xcbConnection)
+               {
+                       ushort xkb_maj, xkb_min;
+                       byte base_evt, base_err;
+
+                       xkbCtx = xkb_context_new (0);
+                       xkb_x11_setup_xkb_extension (xcbConnection, 1, 0, 0, out xkb_maj, out xkb_min, out base_evt, out base_err);
+                       int kb = xkb_x11_get_core_keyboard_device_id (xcbConnection);
+                       xkbKeymap = xkb_x11_keymap_new_from_device (xkbCtx, xcbConnection, kb, 0);
+                       xkbState = xkb_x11_state_new_from_device (xkbKeymap, xcbConnection, kb);
+
+                       ModIdxShift = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_SHIFT);
+                       ModIdxCtrl = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_CTRL);
+                       ModIdxAlt = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_ALT);
+                       ModIdxLogo = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_LOGO);
+                       ModIdxCapsLock = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_CAPS);
+                       ModIdxNumLock = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_NUM);
+               }
+       }
+}
+
diff --git a/src/backends/xlib/X11Keyboard.cs b/src/backends/xlib/X11Keyboard.cs
new file mode 100644 (file)
index 0000000..78eef4e
--- /dev/null
@@ -0,0 +1,120 @@
+//
+// XCBKeyboard.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.Runtime.InteropServices;
+
+namespace Crow.XLib
+{
+       public class X11Keyboard : IKeyboard
+       {
+               #region PInvoke
+               [DllImportAttribute("X11")]
+               static extern IntPtr XFree(IntPtr data);
+               [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
+
+               #region IKeyboard implementation
+
+               public event EventHandler<KeyEventArgs> KeyDown;
+               public event EventHandler<KeyEventArgs> KeyUp;
+               public event EventHandler<KeyPressEventArgs> KeyPress;
+
+               public void HandleEvent (uint keycode, bool pressed) {
+                       /*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, (int)keycode, 0);
+                       char c = (char)keySym;
+                       if (pressed)
+                               KeyDown.Raise (this, new KeyEventArgs ((Key)keySym, false));
+                       else 
+                               KeyUp.Raise (this, new KeyEventArgs ((Key)keySym, false));                      
+               }
+               public bool IsDown (Key key) {
+                       throw new NotImplementedException();
+               }
+               public bool Shift {
+                       get {
+                               throw new NotImplementedException();
+                       }
+               }
+               public bool Ctrl {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public bool Alt {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               public void Destroy () {
+
+               }
+               #endregion
+
+
+               IntPtr xDisp;
+
+               public X11Keyboard (IntPtr _xDisp)
+               {
+                       xDisp = _xDisp;
+
+                       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);
+                       }
+               }
+       }
+}
+
diff --git a/src/backends/xlib/X11Structs.cs b/src/backends/xlib/X11Structs.cs
new file mode 100644 (file)
index 0000000..7ceff5b
--- /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/xlib/XKeySym.cs b/src/backends/xlib/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/xlib/XLibBackend.cs b/src/backends/xlib/XLibBackend.cs
new file mode 100644 (file)
index 0000000..81500c0
--- /dev/null
@@ -0,0 +1,183 @@
+//
+// 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);
+
+               #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.Keyboard = new Crow.XLib.X11Keyboard (xDisp);
+
+                       iFace.surf = new Cairo.XlibSurface (xDisp, xwinHnd, xDefaultVisual, iFace.ClientRectangle.Width, iFace.ClientRectangle.Height);
+
+                       errorHnd = new XErrorHandler (HandleError);
+                       XSetErrorHandler (errorHnd);
+               }
+
+               public void CleanUp ()
+               {
+                       iFace.Keyboard.Destroy ();
+
+                       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.Keyboard.HandleEvent ((uint)xevent.KeyEvent.keycode, true);
+                                       break;
+                               case XEventName.KeyRelease:
+                                       iFace.Keyboard.HandleEvent ((uint)xevent.KeyEvent.keycode, false);
+                                       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;
+               }
+       }
+}
+
diff --git a/src/debug/DbgLogViewer.cs b/src/debug/DbgLogViewer.cs
new file mode 100644 (file)
index 0000000..b020df4
--- /dev/null
@@ -0,0 +1,327 @@
+//
+// DbgLogViewer.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.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+#if DEBUG_LOG
+namespace Crow
+{
+       public class DbgLogViewer : ScrollingObject
+       {
+               #region CTOR
+               protected DbgLogViewer () : base(){}
+               public DbgLogViewer (Interface iface) : base(iface){}
+               #endregion
+
+               bool loaded = false;
+               double xScale = 0.125, yScale = 1.0, lineHeight = 0.0, leftMargin;
+               string logFile;
+               long currentTick = 0, selStart = -1, selEnd = -1, minTicks = 0, maxTicks = 0;
+
+               public string LogFile {
+                       get { return logFile; }
+                       set {
+                               if (logFile == value)
+                                       return;
+                               logFile = value;
+                               NotifyValueChanged ("LogFile", logFile);
+                               loaded = false;
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               public double XScale {
+                       get { return xScale; }
+                       set {
+                               if (xScale == value)
+                                       return;
+                               xScale = value;
+                               NotifyValueChanged ("XScale", xScale);
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               public double YScale {
+                       get { return yScale; }
+                       set {
+                               if (yScale == value)
+                                       return;
+                               yScale = value;
+                               NotifyValueChanged ("YScale", yScale);
+                               RegisterForGraphicUpdate ();
+                       }
+               }
+               List<DbgEvent> events;
+               List<DbgGo> objs;
+
+               protected override void onDraw (Cairo.Context gr)
+               {
+                       base.onDraw (gr);
+
+                       if (!loaded) {
+                               if (!File.Exists (logFile))
+                                       return;
+                               events = new List<DbgEvent>();
+                               objs = new List<DbgGo> ();
+
+                               using (StreamReader s = new StreamReader (logFile)) {
+                                       if (s.ReadLine () != "[GraphicObjects]") {
+                                               loaded = false;
+                                               return;
+                                       }
+                                       while (!s.EndOfStream) {
+                                               string l = s.ReadLine ();
+                                               if (l == "[Events]")
+                                                       break;
+                                               objs.Add (DbgGo.Parse (l));
+                                       }
+                                       while (!s.EndOfStream)
+                                               events.Add (DbgEvent.Parse (s.ReadLine ()));                                            
+                               }
+                               loaded = true;
+                               lineHeight = gr.FontExtents.Height;
+                               if (events.Count > 0) {
+                                       minTicks = events [0].begin;
+                                       maxTicks = events [events.Count - 1].begin;
+                               } else
+                                       minTicks = maxTicks = 0;
+                               MaxScrollY = Math.Max(0, objs.Count - (int)Math.Ceiling((double)ClientRectangle.Height / lineHeight));
+                       }
+
+                       Rectangle r = ClientRectangle;
+
+                       Foreground.SetAsSource (gr);
+
+                       leftMargin = 0.0;
+
+                       foreach (DbgGo g in objs) {
+                               if (g.yIndex == 0)
+                                       continue;
+                               double penX = r.X + g.xLevel * 5.0, penY = (g.yIndex - ScrollY) * lineHeight - gr.FontExtents.Descent;
+                               gr.MoveTo (penX, penY);
+                               Cairo.TextExtents te = gr.TextExtents (g.name);
+                               if (te.Width + penX > leftMargin)
+                                       leftMargin = te.Width + penX; 
+                               gr.ShowText (g.name);
+                       }
+
+                       leftMargin += 2.5;
+                       r.Left += (int)leftMargin;
+                       gr.LineWidth = 1.0;
+                       gr.MoveTo (leftMargin, r.Top);
+                       gr.LineTo (leftMargin, r.Bottom);
+                       gr.Stroke ();
+
+                       MaxScrollX = (int)(maxTicks - minTicks) - r.Width;
+
+                       foreach (DbgEvent evt in events) {
+                               double x = (int)((double)(evt.begin - minTicks - ScrollX) * xScale) ;
+                               x += (double)r.Left + 0.5;
+                               double w = Math.Max (Math.Max(4.0, 10.0 * xScale), (double)(evt.end - evt.begin) * xScale);
+
+                               if (x < r.Left || x > r.Right)
+                                       continue;
+
+                               if (evt.type.HasFlag (DbgEvtType.GraphicObject)) {
+                                       gr.SetSourceColor (Crow.Color.DarkSlateBlue);
+                                       DbgData data = (DbgData)evt.data;
+                                       double y = (objs.Where(o=>o.index == data.obj).FirstOrDefault().yIndex - ScrollY - 1) * lineHeight;
+                                       if (evt.type.HasFlag (DbgEvtType.GOLayouting)) {
+                                               if (evt.type == DbgEvtType.GOProcessLayouting) {                                                        
+                                                       switch (data.result) {
+                                                       case LayoutingQueueItem.Result.Success:
+                                                               gr.SetSourceColor (Crow.Color.Green);
+                                                               break;
+                                                       case LayoutingQueueItem.Result.Deleted:
+                                                               gr.SetSourceColor (Crow.Color.Red);
+                                                               break;
+                                                       case LayoutingQueueItem.Result.Discarded:
+                                                               gr.SetSourceColor (Crow.Color.DarkOrange);
+                                                               break;
+                                                       case LayoutingQueueItem.Result.Requeued:
+                                                               gr.SetSourceColor (Crow.Color.GreenYellow);
+                                                               break;
+                                                       case LayoutingQueueItem.Result.Register:
+                                                               gr.SetSourceColor (Crow.Color.Blue);
+                                                               break;
+                                                       }
+                                               }else
+                                                       gr.SetSourceColor (Crow.Color.Bisque);
+                                       }else if (evt.type == DbgEvtType.GOInitialization)
+                                               gr.SetSourceColor (Crow.Color.Cyan);                                    
+                                               
+                                       gr.Rectangle (x, y, w, lineHeight);
+                                       gr.Fill ();
+                               } else {
+                                       gr.SetSourceColor (Crow.Color.Black);
+                                       gr.MoveTo (x, r.Top);
+                                       gr.LineTo (x, r.Bottom);
+                                       gr.Stroke ();
+                                       string s = evt.type.ToString () [10].ToString ();
+                                       Cairo.TextExtents te = gr.TextExtents (s);
+                                       gr.Rectangle (x, r.Top, te.Width, lineHeight);
+                                       gr.Fill ();
+                                       gr.MoveTo (x, r.Top + gr.FontExtents.Ascent);
+                                       gr.SetSourceColor (Crow.Color.White);
+                                       gr.ShowText (s);
+                               }
+                       }
+
+               }
+               public override void Paint (ref Cairo.Context ctx)
+               {
+                       base.Paint (ref ctx);
+                       Rectangle r = new Rectangle(mousePos.X, 0, 1, Slot.Height);
+                       Rectangle cb = ContextCoordinates (r);
+
+                       ctx.Rectangle (cb);
+                       ctx.SetSourceColor (Color.CornflowerBlue);
+                       ctx.Fill();
+
+                       ctx.MoveTo (cb.X, cb.Y + lineHeight);
+                       ctx.ShowText (currentTick.ToString ());
+
+                       if (selStart < 0)
+                               return;
+                       double selStartX = (double)(selStart - ScrollX - minTicks) * xScale + leftMargin;
+                       double selEndX = (selEnd >= 0) ? (double)(selEnd - ScrollX - minTicks) * xScale + leftMargin :
+                               (double)(currentTick - ScrollX - minTicks) * xScale + leftMargin;
+
+                       if (selStartX < selEndX) {
+                               cb.X = (int)selStartX;
+                               cb.Width = (int)(selEndX - selStartX);
+                       } else {
+                               cb.X = (int)selEndX;
+                               cb.Width = (int)(selStartX - selEndX);
+                       }
+                       ctx.Operator = Cairo.Operator.Multiply;
+                       cb.Width = Math.Max (1, cb.Width);
+                       ctx.Rectangle (cb);
+                       ctx.SetSourceColor (Color.LightYellow);
+                       ctx.Fill();
+                       ctx.Operator = Cairo.Operator.Over;
+
+               }
+               public override void OnLayoutChanges (LayoutingType layoutType)
+               {
+                       base.OnLayoutChanges (layoutType);
+                       switch (layoutType) {
+                       case LayoutingType.Width:
+                               RegisterForLayouting (LayoutingType.X);
+                               break;
+                       case LayoutingType.Height:
+                               if (!loaded)
+                                       break;
+                               MaxScrollY = objs.Count - (int)Math.Ceiling((double)ClientRectangle.Height / lineHeight);
+                               break;
+                       }
+               }
+               Point mousePos;
+               void updateMouseLocalPos(Point mPos){
+                       Rectangle r = ScreenCoordinates (Slot);
+                       Rectangle cb = ClientRectangle;
+                       cb.Left += (int)leftMargin;
+                       mousePos = mPos - r.Position;
+
+                       mousePos.X = Math.Max(cb.X, mousePos.X);
+                       mousePos.X = Math.Min(cb.Right, mousePos.X);
+                       mousePos.Y = Math.Max(cb.Y, mousePos.Y);
+                       mousePos.Y = Math.Min(cb.Bottom, mousePos.Y);
+
+                       currentTick = (int)((double)Math.Max(0, mousePos.X - cb.X) / xScale) + minTicks + ScrollX;
+               }
+               public override void onMouseMove (object sender, MouseMoveEventArgs e)
+               {
+                       base.onMouseMove (sender, e);
+                       updateMouseLocalPos (e.Position);
+
+                       if (selStart >= 0 && IFace.Mouse.IsButtonDown(MouseButton.Left))
+                               selEnd = currentTick;
+
+                       RegisterForRedraw ();
+               }
+               public override void onMouseDown (object sender, MouseButtonEventArgs e)
+               {
+                       base.onMouseDown (sender, e);
+
+                       selStart = currentTick;
+                       selEnd = -1;
+
+                       RegisterForRedraw ();
+               }
+               public override void onMouseUp (object sender, MouseButtonEventArgs e)
+               {
+                       base.onMouseUp (sender, e);
+                       if (selStart == currentTick) {
+                               selStart = -1;
+                               selEnd = -1;
+                       }else
+                               selEnd = currentTick;
+                       RegisterForRedraw ();
+               }
+
+               /// <summary> Process scrolling vertically, or if shift is down, vertically </summary>
+               public override void onMouseWheel (object sender, MouseWheelEventArgs e)
+               {                       
+                       //base.onMouseWheel (sender, e);
+
+                       if (IFace.Keyboard.Shift)
+                               ScrollX -= (int)((double)(e.Delta * MouseWheelSpeed) / xScale);
+                       else if (IFace.Keyboard.Ctrl) {
+                               if (e.Delta > 0) {
+                                       XScale *= 2.0;
+                               } else {
+                                       XScale *= 0.5;
+                               }
+                               int cbx = ClientRectangle.X + (int)leftMargin;
+                               ScrollX = (int)(currentTick - (int)((double)Math.Max(0, mousePos.X - cbx) / xScale) - minTicks);
+                       }else
+                               ScrollY -= e.Delta * MouseWheelSpeed;
+               }
+
+               public override void onKeyDown (object sender, KeyEventArgs e)
+               {
+                       base.onKeyDown (sender, e);
+
+                       if (e.Key == Key.F3) {
+                               if (selEnd < 0)
+                                       return;
+                               if (selEnd < selStart)
+                                       zoom (selEnd, selStart);
+                               else
+                                       zoom (selStart, selEnd);
+                               selEnd = selStart = -1;
+                       }
+               }
+
+               void zoom (long start, long end) {                      
+                       ScrollX = (int)(start - minTicks);
+                       XScale = (ClientRectangle.Width - leftMargin)/(end - start);
+               }
+       }
+}
+#endif
+
index 0599a6a1df1f974e96a33a96441ee4183eed0a19..161d742c8a75226b6a9b9d37ee1ff369975039b9 100644 (file)
@@ -27,7 +27,6 @@ using System;
 using Cairo;
 using System.Collections.Generic;
 using System.Diagnostics;
-using System.Runtime.Serialization.Formatters.Binary;
 using System.IO;
 
 #if DEBUG_LOG
@@ -47,28 +46,41 @@ namespace Crow
                IFaceEndClipping                                = 0x0104,
                IFaceStartDrawing                               = 0x0105,
                IFaceEndDrawing                                 = 0x0106,
+               IFaceUpdate                                             = 0x0107,
                //10 nth bit set for graphic obj
                GraphicObject                                   = 0x0200,
                GOClassCreation                                 = 0x0201,
-               GOInitialized                                   = 0x0202,
+               GOInitialization                                        = 0x0202,
                GOClippingRegistration                  = 0x0203,
                GORegisterClip                                  = 0x0204,
                GORegisterForGraphicUpdate              = 0x0205,
                GOEnqueueForRepaint                             = 0x0206,
-               GORegisterLayouting                             = 0x0207,
-               GOProcessLayoutingWithNoParent  = 0x0208,
-               GOProcessLayouting                              = 0x0209,
+               GOLayouting                                             = 0x0400,
+               GORegisterLayouting                             = 0x0607,
+               GOProcessLayoutingWithNoParent  = 0x0608,
+               GOProcessLayouting                              = 0x0609,
                GODraw                                                  = 0x020a,
                GORecreateCache                                 = 0x020b,
                GOUpdateCacheAndPaintOnCTX              = 0x020c,
                GOPaint                                                 = 0x020d,
                GONewDataSource                                 = 0x020e,
        }
+       public class DbgData {
+               public int obj;
+               public LayoutingType layout;
+               public LayoutingQueueItem.Result result;
+
+               public DbgData (int _obj) {
+                       obj = _obj;
+               }
+       }
        public class DbgEvent {
                public long begin, end;
                public DbgEvtType type;
                public object data = null;
 
+               public DbgEvent() {}
+                       
                public DbgEvent(long timeStamp, DbgEvtType evt, object _data = null) {                  
                        data = _data;
                        type = evt;
@@ -79,13 +91,13 @@ namespace Crow
                {
                        GraphicObject go = data as GraphicObject;
                        if (go != null)
-                               return string.Format ("{0};{1};{2}", begin, type, GraphicObject.GraphicObjects.IndexOf(go).ToString());
+                               return string.Format ("{0};{1};{2};{3}", begin, end, type, GraphicObject.GraphicObjects.IndexOf(go).ToString());
                        if (!(data is LayoutingQueueItem))
-                               return string.Format ("{0};{1}", begin, type);
+                               return string.Format ("{0};{1};{2}", begin, end, type);
                        LayoutingQueueItem lqi = (LayoutingQueueItem)data;
                        if (type == DbgEvtType.GOProcessLayouting)
-                               return string.Format ("{0};{1};{2};{3};{4};{5}", begin, type, GraphicObject.GraphicObjects.IndexOf(lqi.graphicObject).ToString(), lqi.LayoutType.ToString(), lqi.result.ToString(), end);                       
-                       return string.Format ("{0};{1};{2};{3}", begin, type, GraphicObject.GraphicObjects.IndexOf(lqi.graphicObject).ToString(), lqi.LayoutType.ToString());
+                               return string.Format ("{0};{1};{2};{3};{4};{5}", begin, end, type, GraphicObject.GraphicObjects.IndexOf(lqi.graphicObject).ToString(), lqi.LayoutType.ToString(), lqi.result.ToString());                       
+                       return string.Format ("{0};{1};{2};{3};{4}", begin, end, type, GraphicObject.GraphicObjects.IndexOf(lqi.graphicObject).ToString(), lqi.LayoutType.ToString());
                        
                }
 
@@ -94,14 +106,43 @@ namespace Crow
                                return null;
                        string[] tmp = str.Trim().Split(';');
 
-                       long timeStamp = long.Parse (tmp [0]);
-                       DbgEvtType type = (DbgEvtType)Enum.Parse (typeof(DbgEvtType), tmp [1]);
 
-                       if (type.HasFlag (DbgEvtType.GraphicObject)) {
+                       DbgEvent evt = new DbgEvent ();
+                       evt.begin = long.Parse (tmp [0]);
+                       evt.end = long.Parse (tmp [1]);
+                       evt.type = (DbgEvtType)Enum.Parse (typeof(DbgEvtType), tmp [2]);
+
+                       if (evt.type.HasFlag (DbgEvtType.GraphicObject)) {
+                               DbgData data = new DbgData (int.Parse (tmp [3]));
+                               if (evt.type.HasFlag (DbgEvtType.GOLayouting)) {
+                                       data.layout = (LayoutingType)Enum.Parse (typeof(LayoutingType), tmp [4]);
+                                       if (evt.type == DbgEvtType.GOProcessLayouting)
+                                               data.result = (LayoutingQueueItem.Result)Enum.Parse (typeof(LayoutingQueueItem.Result), tmp [5]);                                                                               
+                               }
+                               evt.data = data;
                        }
-                       return null;
+                       return evt;
                }
        }
+       public class DbgGo {
+               public int index;
+               public string name;
+               public int yIndex;
+               public int xLevel;
+
+               public static DbgGo Parse (string str) {
+                       DbgGo g = new DbgGo ();
+                       if (str == null)
+                               return null;
+                       string[] tmp = str.Trim().Split(';');
+                       g.index = int.Parse (tmp [0]);
+                       g.name = tmp [1];
+                       g.yIndex = int.Parse (tmp [2]);
+                       g.xLevel = int.Parse (tmp [3]);
+                       return g;
+               }
+
+       }
        public static class DebugLog
        {
                static Surface surf;
@@ -123,24 +164,6 @@ namespace Crow
                        return evt;
                }
 
-               static DebugLog ()
-               {
-                       surf = new ImageSurface (Format.Argb32, bounds.Width, bounds.Height);
-                       ctx = new Context (surf);
-
-                       ctx.Antialias = Antialias.Subpixel;
-                       ctx.FontOptions = Interface.FontRenderingOptions;
-                       ctx.Antialias = Interface.Antialias;
-
-                       ctx.Rectangle (bounds);
-                       ctx.SetSourceColor (Crow.Color.WhiteSmoke);
-                       ctx.Fill ();
-
-                       ctx.SelectFontFace ("mono", FontSlant.Normal, FontWeight.Normal);
-                       ctx.SetFontSize (8.0);
-                       ySpacing = ctx.FontExtents.Height;
-               }
-
                static int y, level;
 
                static void parseTree (GraphicObject go) {
@@ -170,19 +193,18 @@ namespace Crow
                        foreach (GraphicObject go in iface.GraphicTree) 
                                parseTree (go);                 
 
-                       using (StreamWriter s = new StreamWriter("debug.bin")){
+                       using (StreamWriter s = new StreamWriter("debug.log")){
                                s.WriteLine ("[GraphicObjects]");
                                for (int i=0; i<GraphicObject.GraphicObjects.Count; i++) {
                                        GraphicObject g = GraphicObject.GraphicObjects [i];
                                        s.WriteLine ("{0};{1};{2};{3}", i, g.GetType().Name, g.yIndex, g.xLevel);       
                                }
                                s.WriteLine ("[Events]");
-                               foreach (DbgEvent e in events) {
-                                       s.WriteLine (e.ToString ());    
-                               }
 
+                               foreach (DbgEvent e in events)
+                                       s.WriteLine (e.ToString ());
                        }
-
+                       /*
                        List<GraphicObject> drawn = new List<GraphicObject> ();
 
 
@@ -213,27 +235,12 @@ namespace Crow
 
                                //penX = xPenStart + xResolution * lqi.begin;
                                //ctx.Rectangle (penX, penY, Math.Max(1.0, (lqi.end - lqi.begin) * xResolution), ySpacing);
-                               switch (lqi.result) {
-                               case LayoutingQueueItem.Result.Success:
-                                       ctx.SetSourceColor (Crow.Color.Green);
-                                       break;
-                               case LayoutingQueueItem.Result.Deleted:
-                                       ctx.SetSourceColor (Crow.Color.Red);
-                                       break;
-                               case LayoutingQueueItem.Result.Discarded:
-                                       ctx.SetSourceColor (Crow.Color.DarkOrange);
-                                       break;
-                               case LayoutingQueueItem.Result.Requeued:
-                                       ctx.SetSourceColor (Crow.Color.GreenYellow);
-                                       break;
-                               case LayoutingQueueItem.Result.Register:
-                                       ctx.SetSourceColor (Crow.Color.Blue);
-                                       break;
-                               }
+
 
                                ctx.Fill ();
                        }
                        surf.WriteToPng ("debug.png");
+                       */
                }
        }
 }