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