diff --git a/log.md b/log.md index bbfd382b3..a970c894c 100644 --- a/log.md +++ b/log.md @@ -8,6 +8,11 @@ ## 已知问题 ## 已完成 Done +### 2025.1.14 +- 添加内存大小检测 +- 添加检测开关 +- 添加内存大小显示 + ### 2025.1.13 - 修复自定义加载器获取模组文件列表错误 - 修复模组升级时信息被删除 diff --git a/src/ColorMC.Core/CoreMain.cs b/src/ColorMC.Core/CoreMain.cs index 9cb828f93..a23907eb9 100644 --- a/src/ColorMC.Core/CoreMain.cs +++ b/src/ColorMC.Core/CoreMain.cs @@ -16,7 +16,7 @@ public static class ColorMCCore { public const int VersionNum = 34; public const string TopVersion = "A34"; - public const string DateVersion = "20250113"; + public const string DateVersion = "20250114"; /// /// 版本号 diff --git a/src/ColorMC.Core/Game/GameLaunch.cs b/src/ColorMC.Core/Game/GameLaunch.cs index f877fe98c..7cedc320a 100644 --- a/src/ColorMC.Core/Game/GameLaunch.cs +++ b/src/ColorMC.Core/Game/GameLaunch.cs @@ -1366,8 +1366,11 @@ public static async Task CreateGameCmd(this GameSettingObj obj, Ga { if (larg.Request == null) { - return new() { Message = - string.Format(LanguageHelper.Get("Core.Launch.Info16"), obj.Name) }; + return new() + { + Message = + string.Format(LanguageHelper.Get("Core.Launch.Info16"), obj.Name) + }; } var res2 = await larg.Request(string.Format(LanguageHelper.Get("Core.Launch.Info15"), obj.Name)); if (!res2) diff --git a/src/ColorMC.Core/Game/GameLogs.cs b/src/ColorMC.Core/Game/GameLogs.cs index 9f442bda1..ac584bcac 100644 --- a/src/ColorMC.Core/Game/GameLogs.cs +++ b/src/ColorMC.Core/Game/GameLogs.cs @@ -100,8 +100,8 @@ public static List GetLogFiles(this GameSettingObj obj) return Encoding.GetEncoding("gbk").GetString(output.ToArray()); } catch - { - + { + } } return Encoding.UTF8.GetString(output.ToArray()); diff --git a/src/ColorMC.Core/Game/Mods.cs b/src/ColorMC.Core/Game/Mods.cs index e65ef4289..5f0c7d3ce 100644 --- a/src/ColorMC.Core/Game/Mods.cs +++ b/src/ColorMC.Core/Game/Mods.cs @@ -158,7 +158,7 @@ public static void Disable(this ModObj mod) var info = mod.Game.Mods.Values.FirstOrDefault(item => item.Sha1 == mod.Sha1); if (info != null) - { + { info.File = Path.ChangeExtension(info.File, Name3); mod.Game.SaveModInfo(); } diff --git a/src/ColorMC.Core/Hook/Win32.cs b/src/ColorMC.Core/Hook/Win32.cs index 89cc5f792..103418a8c 100644 --- a/src/ColorMC.Core/Hook/Win32.cs +++ b/src/ColorMC.Core/Hook/Win32.cs @@ -1,7 +1,6 @@ using System.ComponentModel; using System.Diagnostics; using System.Runtime.InteropServices; -using System.Security.Principal; using System.Text; using Microsoft.Win32.SafeHandles; diff --git a/src/ColorMC.Gui/ColorMCGui.cs b/src/ColorMC.Gui/ColorMCGui.cs index d5d796482..a78d996f7 100644 --- a/src/ColorMC.Gui/ColorMCGui.cs +++ b/src/ColorMC.Gui/ColorMCGui.cs @@ -81,8 +81,8 @@ public static void Main(string[] args) ProcessUtils.LaunchAdmin(args); } catch - { - + { + } return; } diff --git a/src/ColorMC.Gui/Hook/HookUtils.cs b/src/ColorMC.Gui/Hook/HookUtils.cs new file mode 100644 index 000000000..b2f60a506 --- /dev/null +++ b/src/ColorMC.Gui/Hook/HookUtils.cs @@ -0,0 +1,68 @@ +using System.Diagnostics; +using ColorMC.Core.Objs; +using ColorMC.Core.Utils; + +namespace ColorMC.Gui.Hook; + +public static class HookUtils +{ + public static ulong GetMemorySize() + { + if (SystemInfo.Os == OsType.Windows) + { + return Win32.GetTotalMemory() / 1024 / 1024; + } + else if (SystemInfo.Os == OsType.Linux) + { + return Linux.GetTotalMemory() / 1024; + } + else if (SystemInfo.Os == OsType.MacOS) + { + return Macos.GetTotalMemory() / 1024; + } + + return 0; + } + + public static ulong GetFreeSize() + { + if (SystemInfo.Os == OsType.Windows) + { + return Win32.GetFreeMemory() / 1024 / 1024; + } + else if (SystemInfo.Os == OsType.Linux) + { + return Linux.GetFreeMemory() / 1024; + } + else if (SystemInfo.Os == OsType.MacOS) + { + return Macos.GetFreeMemory() / 1024; + } + + return 0; + } + + public static void WaitWindowDisplay(Process pr) + { + if (SystemInfo.Os == OsType.Windows) + { + Win32.WaitWindowDisplay(pr); + } + else if (SystemInfo.Os == OsType.Linux) + { + X11Native.WaitWindowDisplay(pr); + } + } + + public static void SetTitle(Process pr, string title) + { + if (SystemInfo.Os == OsType.Windows) + { + Win32.SetTitle(pr, title); + } + else if (SystemInfo.Os == OsType.Linux) + { + X11Native.SetTitle(pr, title); + } + } +} diff --git a/src/ColorMC.Gui/Hook/Linux.cs b/src/ColorMC.Gui/Hook/Linux.cs new file mode 100644 index 000000000..5f7ee2be3 --- /dev/null +++ b/src/ColorMC.Gui/Hook/Linux.cs @@ -0,0 +1,51 @@ +using System; +using System.IO; + +namespace ColorMC.Gui.Hook; + +internal static class Linux +{ + public static ulong GetTotalMemory() + { + const string memInfoPath = "/proc/meminfo"; + if (File.Exists(memInfoPath)) + { + var lines = File.ReadAllLines(memInfoPath); + foreach (var line in lines) + { + if (line.StartsWith("MemTotal:")) + { + var parts = line.Split([' '], StringSplitOptions.RemoveEmptyEntries); + if (parts.Length >= 2 && ulong.TryParse(parts[1], out ulong memKb)) + { + return memKb; + } + } + } + } + + return 0; + } + + public static ulong GetFreeMemory() + { + const string memInfoPath = "/proc/meminfo"; + if (File.Exists(memInfoPath)) + { + var lines = File.ReadAllLines(memInfoPath); + foreach (var line in lines) + { + if (line.StartsWith("MemFree:")) + { + var parts = line.Split([' '], StringSplitOptions.RemoveEmptyEntries); + if (parts.Length >= 2 && ulong.TryParse(parts[1], out ulong memKb)) + { + return memKb; + } + } + } + } + + return 0; + } +} diff --git a/src/ColorMC.Gui/Hook/Macos.cs b/src/ColorMC.Gui/Hook/Macos.cs new file mode 100644 index 000000000..10c4741b1 --- /dev/null +++ b/src/ColorMC.Gui/Hook/Macos.cs @@ -0,0 +1,86 @@ +using System; +using System.Diagnostics; + +namespace ColorMC.Gui.Hook; + +internal static class Macos +{ + public static ulong GetTotalMemory() + { + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "sysctl", + Arguments = "hw.memsize", + RedirectStandardOutput = true, + UseShellExecute = false, + CreateNoWindow = true + } + }; + + process.Start(); + var output = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + + if (output.StartsWith("hw.memsize:")) + { + var parts = output.Split([' '], StringSplitOptions.RemoveEmptyEntries); + if (parts.Length >= 2 && ulong.TryParse(parts[1], out ulong memBytes)) + { + return memBytes; + } + } + + return 0; + } + + public static ulong GetFreeMemory() + { + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "vm_stat", + RedirectStandardOutput = true, + UseShellExecute = false, + CreateNoWindow = true + } + }; + + process.Start(); + var output = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + + var lines = output.Split('\n'); + ulong freePages = 0; + ulong pageSize = 4096; + + foreach (var line in lines) + { + if (line.StartsWith("Pages free:")) + { + var parts = line.Split([' '], StringSplitOptions.RemoveEmptyEntries); + if (parts.Length >= 3 && ulong.TryParse(parts[2].TrimEnd('.'), out ulong pages)) + { + freePages = pages; + } + } + else if (line.StartsWith("page size of")) + { + var parts = line.Split([' '], StringSplitOptions.RemoveEmptyEntries); + if (parts.Length >= 4 && ulong.TryParse(parts[3], out ulong size)) + { + pageSize = size; + } + } + } + + if (freePages > 0) + { + return freePages * pageSize; + } + + return 0; + } +} diff --git a/src/ColorMC.Gui/Hook/Win32Native.cs b/src/ColorMC.Gui/Hook/Win32Native.cs index 11294dca8..d0fb8bd47 100644 --- a/src/ColorMC.Gui/Hook/Win32Native.cs +++ b/src/ColorMC.Gui/Hook/Win32Native.cs @@ -190,322 +190,370 @@ public void SendScoll(bool up) Win32.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(Win32.INPUT))); } +} - internal unsafe class Win32 +internal unsafe class Win32 +{ + public const int WM_CLOSE = 0x0010; + public const int WM_DESTROY = 0x0002; + public const int WH_GETMESSAGE = 3; + public const int WH_CALLWNDPROC = 4; + public const int WM_GETICON = 0x007F; + + public const int WM_KEYDOWN = 0x0100; + public const int WM_KEYUP = 0x0101; + public const int WM_MOUSEMOVE = 0x0200; + public const int WM_LBUTTONDOWN = 0x0201; + public const int WM_LBUTTONUP = 0x0202; + public const int WM_LBUTTONDBLCLK = 0x0203; + public const int WM_RBUTTONDOWN = 0x0204; + public const int WM_RBUTTONUP = 0x0205; + public const int WM_RBUTTONDBLCLK = 0x0206; + public const int WM_MBUTTONDOWN = 0x0207; + public const int WM_MBUTTONUP = 0x0208; + public const int WM_MBUTTONDBLCLK = 0x0209; + public const int WM_XBUTTONDOWN = 0x020B; + public const int WM_XBUTTONUP = 0x020C; + public const int WM_XBUTTONDBLCLK = 0x020D; + + public const int INPUT_MOUSE = 0; + public const int INPUT_KEYBOARD = 1; + public const uint MOUSEEVENTF_WHEEL = 0x0800; + public const uint MOUSEEVENTF_MOVE = 0x0001; + public const uint KEYEVENTF_KEYUP = 0x0002; + + public const int WS_CAPTION = 0x00C00000; + public const int WS_THICKFRAME = 0x00040000; + public const int WS_MINIMIZE = 0x20000000; + public const int WS_MAXIMIZE = 0x01000000; + public const int WS_SYSMENU = 0x00080000; + + public const int MK_LBUTTON = 0x0001; + public const int MK_MBUTTON = 0x0010; + public const int MK_RBUTTON = 0x0002; + public const int MK_XBUTTON1 = 0x0020; + public const int MK_XBUTTON2 = 0x0040; + + // ShowWindow函数的命令常量 + public const int SW_MINIMIZE = 6; + public const int SW_MAXIMIZE = 3; + public const int SW_RESTORE = 9; + + // 常量用于SetWindowPos函数 + public const uint SWP_FRAMECHANGED = 0x0020; + public const uint SWP_NOMOVE = 0x0002; + public const uint SWP_NOSIZE = 0x0001; + public const uint SWP_NOZORDER = 0x0004; + + // 定义事件常量 + public const uint EVENT_OBJECT_NAMECHANGE = 0x800C; + + public const uint WINEVENT_OUTOFCONTEXT = 0; + + public const int ICON_SMALL = 0; + public const int ICON_BIG = 1; + public const int ICON_SMALL2 = 2; + + public const int GWL_WNDPROC = -4; + public const int GWL_STYLE = -16; + public const int GWL_EXSTYLE = -20; + + public const int WS_EX_LAYERED = 0x80000; + public const int WS_EX_TRANSPARENT = 0x20; + + public const uint LWA_COLORKEY = 0x00000001; + public const uint LWA_ALPHA = 0x00000002; + + public const int CURSOR_SHOWING = 0x00000001; + + [StructLayout(LayoutKind.Sequential)] + public struct INPUT { - public const int WM_CLOSE = 0x0010; - public const int WM_DESTROY = 0x0002; - public const int WH_GETMESSAGE = 3; - public const int WH_CALLWNDPROC = 4; - public const int WM_GETICON = 0x007F; - - public const int WM_KEYDOWN = 0x0100; - public const int WM_KEYUP = 0x0101; - public const int WM_MOUSEMOVE = 0x0200; - public const int WM_LBUTTONDOWN = 0x0201; - public const int WM_LBUTTONUP = 0x0202; - public const int WM_LBUTTONDBLCLK = 0x0203; - public const int WM_RBUTTONDOWN = 0x0204; - public const int WM_RBUTTONUP = 0x0205; - public const int WM_RBUTTONDBLCLK = 0x0206; - public const int WM_MBUTTONDOWN = 0x0207; - public const int WM_MBUTTONUP = 0x0208; - public const int WM_MBUTTONDBLCLK = 0x0209; - public const int WM_XBUTTONDOWN = 0x020B; - public const int WM_XBUTTONUP = 0x020C; - public const int WM_XBUTTONDBLCLK = 0x020D; - - public const int INPUT_MOUSE = 0; - public const int INPUT_KEYBOARD = 1; - public const uint MOUSEEVENTF_WHEEL = 0x0800; - public const uint MOUSEEVENTF_MOVE = 0x0001; - public const uint KEYEVENTF_KEYUP = 0x0002; - - public const int WS_CAPTION = 0x00C00000; - public const int WS_THICKFRAME = 0x00040000; - public const int WS_MINIMIZE = 0x20000000; - public const int WS_MAXIMIZE = 0x01000000; - public const int WS_SYSMENU = 0x00080000; - - public const int MK_LBUTTON = 0x0001; - public const int MK_MBUTTON = 0x0010; - public const int MK_RBUTTON = 0x0002; - public const int MK_XBUTTON1 = 0x0020; - public const int MK_XBUTTON2 = 0x0040; - - // ShowWindow函数的命令常量 - public const int SW_MINIMIZE = 6; - public const int SW_MAXIMIZE = 3; - public const int SW_RESTORE = 9; - - // 常量用于SetWindowPos函数 - public const uint SWP_FRAMECHANGED = 0x0020; - public const uint SWP_NOMOVE = 0x0002; - public const uint SWP_NOSIZE = 0x0001; - public const uint SWP_NOZORDER = 0x0004; - - // 定义事件常量 - public const uint EVENT_OBJECT_NAMECHANGE = 0x800C; - - public const uint WINEVENT_OUTOFCONTEXT = 0; - - public const int ICON_SMALL = 0; - public const int ICON_BIG = 1; - public const int ICON_SMALL2 = 2; - - public const int GWL_WNDPROC = -4; - public const int GWL_STYLE = -16; - public const int GWL_EXSTYLE = -20; - - public const int WS_EX_LAYERED = 0x80000; - public const int WS_EX_TRANSPARENT = 0x20; - - public const uint LWA_COLORKEY = 0x00000001; - public const uint LWA_ALPHA = 0x00000002; - - public const int CURSOR_SHOWING = 0x00000001; - - [StructLayout(LayoutKind.Sequential)] - public struct INPUT - { - public int type; - public InputUnion u; - } + public int type; + public InputUnion u; + } - [StructLayout(LayoutKind.Explicit)] - public struct InputUnion - { - [FieldOffset(0)] - public MOUSEINPUT mi; + [StructLayout(LayoutKind.Explicit)] + public struct InputUnion + { + [FieldOffset(0)] + public MOUSEINPUT mi; - [FieldOffset(0)] - public KEYBDINPUT ki; - } + [FieldOffset(0)] + public KEYBDINPUT ki; + } - [StructLayout(LayoutKind.Sequential)] - public struct MOUSEINPUT - { - public int dx; - public int dy; - public uint mouseData; - public uint dwFlags; - public uint time; - public IntPtr dwExtraInfo; - } + [StructLayout(LayoutKind.Sequential)] + public struct MOUSEINPUT + { + public int dx; + public int dy; + public uint mouseData; + public uint dwFlags; + public uint time; + public IntPtr dwExtraInfo; + } - [StructLayout(LayoutKind.Sequential)] - public struct KEYBDINPUT - { - public ushort wVk; - public ushort wScan; - public uint dwFlags; - public uint time; - public IntPtr dwExtraInfo; - } + [StructLayout(LayoutKind.Sequential)] + public struct KEYBDINPUT + { + public ushort wVk; + public ushort wScan; + public uint dwFlags; + public uint time; + public IntPtr dwExtraInfo; + } - [StructLayout(LayoutKind.Sequential)] - public struct POINT - { - public int x; - public int y; - } + [StructLayout(LayoutKind.Sequential)] + public struct POINT + { + public int x; + public int y; + } - [StructLayout(LayoutKind.Sequential)] - public struct CURSORINFO - { - public int cbSize; - public int flags; - public IntPtr hCursor; - public POINT ptScreenPos; - } + [StructLayout(LayoutKind.Sequential)] + public struct CURSORINFO + { + public int cbSize; + public int flags; + public IntPtr hCursor; + public POINT ptScreenPos; + } - [StructLayout(LayoutKind.Sequential)] - public struct RECT - { - public int Left; // x position of upper-left corner - public int Top; // y position of upper-left corner - public int Right; // x position of lower-right corner - public int Bottom; // y position of lower-right corner - } + [StructLayout(LayoutKind.Sequential)] + public struct RECT + { + public int Left; // x position of upper-left corner + public int Top; // y position of upper-left corner + public int Right; // x position of lower-right corner + public int Bottom; // y position of lower-right corner + } - [StructLayout(LayoutKind.Sequential)] - public struct BITMAPINFO - { - public int biSize; - public int biWidth, biHeight; - public short biPlanes, biBitCount; - public int biCompression, biSizeImage; - public int biXPelsPerMeter, biYPelsPerMeter; - public int biClrUsed, biClrImportant; - public int colors; // Actually a variable sized array of RGBQUAD - } + [StructLayout(LayoutKind.Sequential)] + public struct BITMAPINFO + { + public int biSize; + public int biWidth, biHeight; + public short biPlanes, biBitCount; + public int biCompression, biSizeImage; + public int biXPelsPerMeter, biYPelsPerMeter; + public int biClrUsed, biClrImportant; + public int colors; // Actually a variable sized array of RGBQUAD + } - [StructLayout(LayoutKind.Sequential)] - public struct SETTEXTEX - { - public uint Flags; - public uint Codepage; - } + [StructLayout(LayoutKind.Sequential)] + public struct SETTEXTEX + { + public uint Flags; + public uint Codepage; + } - [StructLayout(LayoutKind.Sequential)] - public struct BITMAP - { - public int bmType; - public int bmWidth; - public int bmHeight; - public int bmWidthBytes; - public short bmPlanes; - public short bmBitsPixel; - public IntPtr bmBits; - } + [StructLayout(LayoutKind.Sequential)] + public struct BITMAP + { + public int bmType; + public int bmWidth; + public int bmHeight; + public int bmWidthBytes; + public short bmPlanes; + public short bmBitsPixel; + public IntPtr bmBits; + } - [StructLayout(LayoutKind.Sequential)] - public struct ICONINFO - { - public bool fIcon; - public int xHotspot; - public int yHotspot; - public IntPtr hbmMask; - public IntPtr hbmColor; - } + [StructLayout(LayoutKind.Sequential)] + public struct ICONINFO + { + public bool fIcon; + public int xHotspot; + public int yHotspot; + public IntPtr hbmMask; + public IntPtr hbmColor; + } - // 定义CWPSTRUCT结构体,用于处理消息参数 - [StructLayout(LayoutKind.Sequential)] - public struct CWPSTRUCT - { - public IntPtr lParam; - public IntPtr wParam; - public uint message; - public IntPtr hwnd; - } + // 定义CWPSTRUCT结构体,用于处理消息参数 + [StructLayout(LayoutKind.Sequential)] + public struct CWPSTRUCT + { + public IntPtr lParam; + public IntPtr wParam; + public uint message; + public IntPtr hwnd; + } - internal static void WaitWindowDisplay(Process process) + internal static void WaitWindowDisplay(Process process) + { + try { - try + while (!process.HasExited) { - while (!process.HasExited) + process.WaitForInputIdle(); + Thread.Sleep(500); + if (process.MainWindowHandle != IntPtr.Zero) { - process.WaitForInputIdle(); - Thread.Sleep(500); - if (process.MainWindowHandle != IntPtr.Zero) - { - break; - } + break; } } - catch - { - - } } - - internal static void SetTitle(Process process, string title) + catch { - SetWindowText(process.MainWindowHandle, title); + } + } - public delegate IntPtr WndProcDelegate(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); - public delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam); - public delegate void WinEventDelegate(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime); + internal static void SetTitle(Process process, string title) + { + SetWindowText(process.MainWindowHandle, title); + } + + public delegate IntPtr WndProcDelegate(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); + public delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam); + public delegate void WinEventDelegate(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime); - [DllImport("gdi32.dll", SetLastError = true)] - public static extern int GetObject(IntPtr hgdiobj, int cbBuffer, out BITMAP lpvObject); + [DllImport("gdi32.dll", SetLastError = true)] + public static extern int GetObject(IntPtr hgdiobj, int cbBuffer, out BITMAP lpvObject); - [DllImport("gdi32.dll")] - public static extern int GetDIBits(IntPtr hdc, IntPtr hbmp, uint uStartScan, - uint cScanLines, [Out] byte[] lpvBits, ref BITMAPINFO lpbmi, uint uUsage); + [DllImport("gdi32.dll")] + public static extern int GetDIBits(IntPtr hdc, IntPtr hbmp, uint uStartScan, + uint cScanLines, [Out] byte[] lpvBits, ref BITMAPINFO lpbmi, uint uUsage); - [DllImport("gdi32.dll", SetLastError = true)] - public static extern IntPtr CreateCompatibleDC(IntPtr hdc); + [DllImport("gdi32.dll", SetLastError = true)] + public static extern IntPtr CreateCompatibleDC(IntPtr hdc); - [DllImport("gdi32.dll", SetLastError = true)] - public static extern bool DeleteObject(IntPtr hObject); + [DllImport("gdi32.dll", SetLastError = true)] + public static extern bool DeleteObject(IntPtr hObject); - [DllImport("user32.dll", SetLastError = true)] - public static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize); + [DllImport("user32.dll", SetLastError = true)] + public static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize); - [DllImport("user32.dll")] - public static extern bool GetCursorInfo(out CURSORINFO pci); + [DllImport("user32.dll")] + public static extern bool GetCursorInfo(out CURSORINFO pci); - //[DllImport("user32.dll")] - //public static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags); + //[DllImport("user32.dll")] + //public static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags); - //[DllImport("user32.dll", SetLastError = true)] - //public static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); + //[DllImport("user32.dll", SetLastError = true)] + //public static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); - //[DllImport("user32.dll", SetLastError = true)] - //public static extern IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong); + //[DllImport("user32.dll", SetLastError = true)] + //public static extern IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong); - [DllImport("user32.dll", SetLastError = true)] - public static extern bool SetWindowText(IntPtr hWnd, string lpString); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SetWindowText(IntPtr hWnd, string lpString); - [DllImport("user32.dll", SetLastError = true)] - public static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO pIconInfo); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO pIconInfo); - [DllImport("user32.dll", SetLastError = true)] - public static extern bool DestroyIcon(IntPtr hIcon); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool DestroyIcon(IntPtr hIcon); - [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); - [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] - public static extern int GetWindowTextLength(IntPtr hWnd); + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + public static extern int GetWindowTextLength(IntPtr hWnd); - [DllImport("user32.dll", SetLastError = true)] - public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId); + [DllImport("user32.dll", SetLastError = true)] + public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId); - [DllImport("user32.dll")] - public static extern bool UnhookWindowsHookEx(IntPtr hhk); + [DllImport("user32.dll")] + public static extern bool UnhookWindowsHookEx(IntPtr hhk); - [DllImport("user32.dll")] - public static extern bool UnhookWinEvent(IntPtr hWinEventHook); + [DllImport("user32.dll")] + public static extern bool UnhookWinEvent(IntPtr hWinEventHook); - [DllImport("user32.dll")] - public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); + [DllImport("user32.dll")] + public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); - [DllImport("user32.dll", SetLastError = true)] - public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); - [DllImport("user32.dll")] - public static extern int GetWindowLong(IntPtr hWnd, int nIndex); + [DllImport("user32.dll")] + public static extern int GetWindowLong(IntPtr hWnd, int nIndex); - [DllImport("user32.dll")] - public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); + [DllImport("user32.dll")] + public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); - [DllImport("user32.dll", SetLastError = true)] - public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); - [DllImport("user32.dll", SetLastError = true)] - public static extern bool DestroyWindow(IntPtr hwnd); + [DllImport("user32.dll", SetLastError = true)] + public static extern bool DestroyWindow(IntPtr hwnd); - [DllImport("user32.dll", CharSet = CharSet.Unicode, EntryPoint = "SendMessageW")] - public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); + [DllImport("user32.dll", CharSet = CharSet.Unicode, EntryPoint = "SendMessageW")] + public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); - [DllImport("user32.dll")] - public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); + [DllImport("user32.dll")] + public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); - [DllImport("user32.dll", SetLastError = true)] - public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); + [DllImport("user32.dll", SetLastError = true)] + public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); - [DllImport("user32.dll")] - public static extern IntPtr SetWinEventHook(uint eventMin, uint eventMax, IntPtr hmodWinEventProc, WinEventDelegate lpfnWinEventProc, uint idProcess, uint idThread, uint dwFlags); + [DllImport("user32.dll")] + public static extern IntPtr SetWinEventHook(uint eventMin, uint eventMax, IntPtr hmodWinEventProc, WinEventDelegate lpfnWinEventProc, uint idProcess, uint idThread, uint dwFlags); - //[DllImport("user32.dll", SetLastError = true)] - //public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); + //[DllImport("user32.dll", SetLastError = true)] + //public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); - [DllImport("user32.dll")] - public static extern bool IsWindow(IntPtr hWnd); + [DllImport("user32.dll")] + public static extern bool IsWindow(IntPtr hWnd); - [DllImport("user32.dll")] - public static extern bool GetClipCursor(out RECT lpRect); + [DllImport("user32.dll")] + public static extern bool GetClipCursor(out RECT lpRect); - //[DllImport("user32.dll")] - //public static extern int ShowCursor(bool bShow); + //[DllImport("user32.dll")] + //public static extern int ShowCursor(bool bShow); - //[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] - //public static extern IntPtr GetModuleHandle(string lpModuleName); + //[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + //public static extern IntPtr GetModuleHandle(string lpModuleName); - //[DllImport("kernel32.dll")] - //public static extern uint GetCurrentThreadId(); + //[DllImport("kernel32.dll")] + //public static extern uint GetCurrentThreadId(); + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + private class MEMORYSTATUSEX + { + public uint dwLength; + public uint dwMemoryLoad; + public ulong ullTotalPhys; + public ulong ullAvailPhys; + public ulong ullTotalPageFile; + public ulong ullAvailPageFile; + public ulong ullTotalVirtual; + public ulong ullAvailVirtual; + public ulong ullAvailExtendedVirtual; + + public MEMORYSTATUSEX() + { + this.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX)); + } } -} + + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer); + + public static ulong GetTotalMemory() + { + var memoryStatus = new MEMORYSTATUSEX(); + if (GlobalMemoryStatusEx(memoryStatus)) + { + return memoryStatus.ullTotalPhys; + } + else + { + throw new InvalidOperationException("Unable to get memory status."); + } + } + + public static ulong GetFreeMemory() + { + var memoryStatus = new MEMORYSTATUSEX(); + if (GlobalMemoryStatusEx(memoryStatus)) + { + return memoryStatus.ullAvailPhys; // 可用物理内存(空闲内存) + } + else + { + throw new InvalidOperationException("Unable to get memory status."); + } + } +} \ No newline at end of file diff --git a/src/ColorMC.Gui/Hook/X11Hook.cs b/src/ColorMC.Gui/Hook/X11Hook.cs index aa828cbb8..a62ab3f2e 100644 --- a/src/ColorMC.Gui/Hook/X11Hook.cs +++ b/src/ColorMC.Gui/Hook/X11Hook.cs @@ -8,7 +8,7 @@ namespace ColorMC.Gui.Hook; -internal partial class X11Hook +internal partial class X11Native { // X11 相关的常量和函数声明 public const int PropModeReplace = 0; diff --git a/src/ColorMC.Gui/Hook/X11KeyTransform.cs b/src/ColorMC.Gui/Hook/X11KeyTransform.cs deleted file mode 100644 index abf66076e..000000000 --- a/src/ColorMC.Gui/Hook/X11KeyTransform.cs +++ /dev/null @@ -1,2546 +0,0 @@ -//using Avalonia.Input; -//using System; -//using System.Collections.Generic; -//using System.Linq; -//using System.Text; -//using System.Threading.Tasks; - -//namespace ColorMC.Gui.Utils.Hook; - -//internal static class X11KeyTransform -//{ -// // X scan code to physical key map. -// // https://github.com/chromium/chromium/blob/main/ui/events/keycodes/dom/dom_code_data.inc -// // This list has the same order as the PhysicalKey enum. -// private static readonly Dictionary s_physicalKeyFromScanCode = new(162) -// { -// // Writing System Keys -// { 0x31, PhysicalKey.Backquote }, -// { 0x33, PhysicalKey.Backslash }, -// { 0x22, PhysicalKey.BracketLeft }, -// { 0x23, PhysicalKey.BracketRight }, -// { 0x3B, PhysicalKey.Comma }, -// { 0x13, PhysicalKey.Digit0 }, -// { 0x0A, PhysicalKey.Digit1 }, -// { 0x0B, PhysicalKey.Digit2 }, -// { 0x0C, PhysicalKey.Digit3 }, -// { 0x0D, PhysicalKey.Digit4 }, -// { 0x0E, PhysicalKey.Digit5 }, -// { 0x0F, PhysicalKey.Digit6 }, -// { 0x10, PhysicalKey.Digit7 }, -// { 0x11, PhysicalKey.Digit8 }, -// { 0x12, PhysicalKey.Digit9 }, -// { 0x15, PhysicalKey.Equal }, -// { 0x5E, PhysicalKey.IntlBackslash }, -// { 0x61, PhysicalKey.IntlRo }, -// { 0x84, PhysicalKey.IntlYen }, -// { 0x26, PhysicalKey.A }, -// { 0x38, PhysicalKey.B }, -// { 0x36, PhysicalKey.C }, -// { 0x28, PhysicalKey.D }, -// { 0x1A, PhysicalKey.E }, -// { 0x29, PhysicalKey.F }, -// { 0x2A, PhysicalKey.G }, -// { 0x2B, PhysicalKey.H }, -// { 0x1F, PhysicalKey.I }, -// { 0x2C, PhysicalKey.J }, -// { 0x2D, PhysicalKey.K }, -// { 0x2E, PhysicalKey.L }, -// { 0x3A, PhysicalKey.M }, -// { 0x39, PhysicalKey.N }, -// { 0x20, PhysicalKey.O }, -// { 0x21, PhysicalKey.P }, -// { 0x18, PhysicalKey.Q }, -// { 0x1B, PhysicalKey.R }, -// { 0x27, PhysicalKey.S }, -// { 0x1C, PhysicalKey.T }, -// { 0x1E, PhysicalKey.U }, -// { 0x37, PhysicalKey.V }, -// { 0x19, PhysicalKey.W }, -// { 0x35, PhysicalKey.X }, -// { 0x1D, PhysicalKey.Y }, -// { 0x34, PhysicalKey.Z }, -// { 0x14, PhysicalKey.Minus }, -// { 0x3C, PhysicalKey.Period }, -// { 0x30, PhysicalKey.Quote }, -// { 0x2F, PhysicalKey.Semicolon }, -// { 0x3D, PhysicalKey.Slash }, - -// // Functional Keys -// { 0x40, PhysicalKey.AltLeft }, -// { 0x6C, PhysicalKey.AltRight }, -// { 0x16, PhysicalKey.Backspace }, -// { 0x42, PhysicalKey.CapsLock }, -// { 0x87, PhysicalKey.ContextMenu }, -// { 0x25, PhysicalKey.ControlLeft }, -// { 0x69, PhysicalKey.ControlRight }, -// { 0x24, PhysicalKey.Enter }, -// { 0x85, PhysicalKey.MetaLeft }, -// { 0x86, PhysicalKey.MetaRight }, -// { 0x32, PhysicalKey.ShiftLeft }, -// { 0x3E, PhysicalKey.ShiftRight }, -// { 0x41, PhysicalKey.Space }, -// { 0x17, PhysicalKey.Tab }, -// { 0x64, PhysicalKey.Convert }, -// { 0x65, PhysicalKey.KanaMode }, -// { 0x82, PhysicalKey.Lang1 }, -// { 0x83, PhysicalKey.Lang2 }, -// { 0x62, PhysicalKey.Lang3 }, -// { 0x63, PhysicalKey.Lang4 }, -// { 0x5D, PhysicalKey.Lang5 }, -// { 0x66, PhysicalKey.NonConvert }, - -// // Control Pad Section -// { 0x77, PhysicalKey.Delete }, -// { 0x73, PhysicalKey.End }, -// { 0x92, PhysicalKey.Help }, -// { 0x6E, PhysicalKey.Home }, -// { 0x76, PhysicalKey.Insert }, -// { 0x75, PhysicalKey.PageDown }, -// { 0x70, PhysicalKey.PageUp }, - -// // Arrow Pad Section -// { 0x74, PhysicalKey.ArrowDown }, -// { 0x71, PhysicalKey.ArrowLeft }, -// { 0x72, PhysicalKey.ArrowRight }, -// { 0x6F, PhysicalKey.ArrowUp }, - -// // Numpad Section -// { 0x4D, PhysicalKey.NumLock }, -// { 0x5A, PhysicalKey.NumPad0 }, -// { 0x57, PhysicalKey.NumPad1 }, -// { 0x58, PhysicalKey.NumPad2 }, -// { 0x59, PhysicalKey.NumPad3 }, -// { 0x53, PhysicalKey.NumPad4 }, -// { 0x54, PhysicalKey.NumPad5 }, -// { 0x55, PhysicalKey.NumPad6 }, -// { 0x4F, PhysicalKey.NumPad7 }, -// { 0x50, PhysicalKey.NumPad8 }, -// { 0x51, PhysicalKey.NumPad9 }, -// { 0x56, PhysicalKey.NumPadAdd }, -// //{ , PhysicalKey.NumPadClear }, -// { 0x81, PhysicalKey.NumPadComma }, -// { 0x5B, PhysicalKey.NumPadDecimal }, -// { 0x6A, PhysicalKey.NumPadDivide }, -// { 0x68, PhysicalKey.NumPadEnter }, -// { 0x7D, PhysicalKey.NumPadEqual }, -// { 0x3F, PhysicalKey.NumPadMultiply }, -// { 0xBB, PhysicalKey.NumPadParenLeft }, -// { 0xBC, PhysicalKey.NumPadParenRight }, -// { 0x52, PhysicalKey.NumPadSubtract }, - -// // Function Section -// { 0x09, PhysicalKey.Escape }, -// { 0x43, PhysicalKey.F1 }, -// { 0x44, PhysicalKey.F2 }, -// { 0x45, PhysicalKey.F3 }, -// { 0x46, PhysicalKey.F4 }, -// { 0x47, PhysicalKey.F5 }, -// { 0x48, PhysicalKey.F6 }, -// { 0x49, PhysicalKey.F7 }, -// { 0x4A, PhysicalKey.F8 }, -// { 0x4B, PhysicalKey.F9 }, -// { 0x4C, PhysicalKey.F10 }, -// { 0x5F, PhysicalKey.F11 }, -// { 0x60, PhysicalKey.F12 }, -// { 0xBF, PhysicalKey.F13 }, -// { 0xC0, PhysicalKey.F14 }, -// { 0xC1, PhysicalKey.F15 }, -// { 0xC2, PhysicalKey.F16 }, -// { 0xC3, PhysicalKey.F17 }, -// { 0xC4, PhysicalKey.F18 }, -// { 0xC5, PhysicalKey.F19 }, -// { 0xC6, PhysicalKey.F20 }, -// { 0xC7, PhysicalKey.F21 }, -// { 0xC8, PhysicalKey.F22 }, -// { 0xC9, PhysicalKey.F23 }, -// { 0xCA, PhysicalKey.F24 }, -// { 0x6B, PhysicalKey.PrintScreen }, -// { 0x4E, PhysicalKey.ScrollLock }, -// { 0x7F, PhysicalKey.Pause }, - -// // Media Keys -// { 0xA6, PhysicalKey.BrowserBack }, -// { 0xA4, PhysicalKey.BrowserFavorites }, -// { 0xA7, PhysicalKey.BrowserForward }, -// { 0xB4, PhysicalKey.BrowserHome }, -// { 0xB5, PhysicalKey.BrowserRefresh }, -// { 0xE1, PhysicalKey.BrowserSearch }, -// { 0x88, PhysicalKey.BrowserStop }, -// { 0xA9, PhysicalKey.Eject }, -// { 0x98, PhysicalKey.LaunchApp1 }, -// { 0x94, PhysicalKey.LaunchApp2 }, -// { 0xA3, PhysicalKey.LaunchMail }, -// { 0xAC, PhysicalKey.MediaPlayPause }, -// { 0xB3, PhysicalKey.MediaSelect }, -// { 0xAE, PhysicalKey.MediaStop }, -// { 0xAB, PhysicalKey.MediaTrackNext }, -// { 0xAD, PhysicalKey.MediaTrackPrevious }, -// { 0x7C, PhysicalKey.Power }, -// { 0x96, PhysicalKey.Sleep }, -// { 0x7A, PhysicalKey.AudioVolumeDown }, -// { 0x79, PhysicalKey.AudioVolumeMute }, -// { 0x7B, PhysicalKey.AudioVolumeUp }, -// { 0x97, PhysicalKey.WakeUp }, - -// // Legacy Keys -// { 0x89, PhysicalKey.Again }, -// { 0x8D, PhysicalKey.Copy }, -// { 0x91, PhysicalKey.Cut }, -// { 0x90, PhysicalKey.Find }, -// { 0x8E, PhysicalKey.Open }, -// { 0x8F, PhysicalKey.Paste }, -// //{ , PhysicalKey.Props }, -// { 0x8C, PhysicalKey.Select }, -// { 0x8B, PhysicalKey.Undo } -// }; - -// public static PhysicalKey PhysicalKeyFromScanCode(int scanCode) -// => scanCode is > 0 and <= 255 && s_physicalKeyFromScanCode.TryGetValue((byte)scanCode, out var result) ? -// result : -// PhysicalKey.None; - -// private static readonly Dictionary s_keyFromX11Key = new(180) -// { -// {X11Key.Cancel, Key.Cancel}, -// {X11Key.BackSpace, Key.Back}, -// {X11Key.Tab, Key.Tab}, -// {X11Key.Linefeed, Key.LineFeed}, -// {X11Key.Clear, Key.Clear}, -// {X11Key.Return, Key.Return}, -// {X11Key.KP_Enter, Key.Return}, -// {X11Key.Pause, Key.Pause}, -// {X11Key.Caps_Lock, Key.CapsLock}, -// //{ X11Key.?, Key.HangulMode } -// //{ X11Key.?, Key.JunjaMode } -// //{ X11Key.?, Key.FinalMode } -// //{ X11Key.?, Key.KanjiMode } -// {X11Key.Escape, Key.Escape}, -// //{ X11Key.?, Key.ImeConvert } -// //{ X11Key.?, Key.ImeNonConvert } -// //{ X11Key.?, Key.ImeAccept } -// //{ X11Key.?, Key.ImeModeChange } -// {X11Key.space, Key.Space}, -// {X11Key.Prior, Key.Prior}, -// {X11Key.KP_Prior, Key.Prior}, -// {X11Key.Page_Down, Key.PageDown}, -// {X11Key.KP_Page_Down, Key.PageDown}, -// {X11Key.End, Key.End}, -// {X11Key.KP_End, Key.End}, -// {X11Key.Home, Key.Home}, -// {X11Key.KP_Home, Key.Home}, -// {X11Key.Left, Key.Left}, -// {X11Key.KP_Left, Key.Left}, -// {X11Key.Up, Key.Up}, -// {X11Key.KP_Up, Key.Up}, -// {X11Key.Right, Key.Right}, -// {X11Key.KP_Right, Key.Right}, -// {X11Key.Down, Key.Down}, -// {X11Key.KP_Down, Key.Down}, -// {X11Key.Select, Key.Select}, -// {X11Key.Print, Key.Print}, -// {X11Key.Execute, Key.Execute}, -// //{ X11Key.?, Key.Snapshot } -// {X11Key.Insert, Key.Insert}, -// {X11Key.KP_Insert, Key.Insert}, -// {X11Key.Delete, Key.Delete}, -// {X11Key.KP_Delete, Key.Delete}, -// {X11Key.Help, Key.Help}, -// {X11Key.A, Key.A}, -// {X11Key.B, Key.B}, -// {X11Key.C, Key.C}, -// {X11Key.D, Key.D}, -// {X11Key.E, Key.E}, -// {X11Key.F, Key.F}, -// {X11Key.G, Key.G}, -// {X11Key.H, Key.H}, -// {X11Key.I, Key.I}, -// {X11Key.J, Key.J}, -// {X11Key.K, Key.K}, -// {X11Key.L, Key.L}, -// {X11Key.M, Key.M}, -// {X11Key.N, Key.N}, -// {X11Key.O, Key.O}, -// {X11Key.P, Key.P}, -// {X11Key.Q, Key.Q}, -// {X11Key.R, Key.R}, -// {X11Key.S, Key.S}, -// {X11Key.T, Key.T}, -// {X11Key.U, Key.U}, -// {X11Key.V, Key.V}, -// {X11Key.W, Key.W}, -// {X11Key.X, Key.X}, -// {X11Key.Y, Key.Y}, -// {X11Key.Z, Key.Z}, -// {X11Key.a, Key.A}, -// {X11Key.b, Key.B}, -// {X11Key.c, Key.C}, -// {X11Key.d, Key.D}, -// {X11Key.e, Key.E}, -// {X11Key.f, Key.F}, -// {X11Key.g, Key.G}, -// {X11Key.h, Key.H}, -// {X11Key.i, Key.I}, -// {X11Key.j, Key.J}, -// {X11Key.k, Key.K}, -// {X11Key.l, Key.L}, -// {X11Key.m, Key.M}, -// {X11Key.n, Key.N}, -// {X11Key.o, Key.O}, -// {X11Key.p, Key.P}, -// {X11Key.q, Key.Q}, -// {X11Key.r, Key.R}, -// {X11Key.s, Key.S}, -// {X11Key.t, Key.T}, -// {X11Key.u, Key.U}, -// {X11Key.v, Key.V}, -// {X11Key.w, Key.W}, -// {X11Key.x, Key.X}, -// {X11Key.y, Key.Y}, -// {X11Key.z, Key.Z}, -// {X11Key.Super_L, Key.LWin }, -// {X11Key.Super_R, Key.RWin }, -// {X11Key.Menu, Key.Apps}, -// //{ X11Key.?, Key.Sleep } -// {X11Key.KP_0, Key.NumPad0}, -// {X11Key.KP_1, Key.NumPad1}, -// {X11Key.KP_2, Key.NumPad2}, -// {X11Key.KP_3, Key.NumPad3}, -// {X11Key.KP_4, Key.NumPad4}, -// {X11Key.KP_5, Key.NumPad5}, -// {X11Key.KP_6, Key.NumPad6}, -// {X11Key.KP_7, Key.NumPad7}, -// {X11Key.KP_8, Key.NumPad8}, -// {X11Key.KP_9, Key.NumPad9}, -// {X11Key.multiply, Key.Multiply}, -// {X11Key.KP_Multiply, Key.Multiply}, -// {X11Key.KP_Add, Key.Add}, -// //{ X11Key.?, Key.Separator } -// {X11Key.KP_Subtract, Key.Subtract}, -// {X11Key.KP_Decimal, Key.Decimal}, -// {X11Key.KP_Divide, Key.Divide}, -// {X11Key.F1, Key.F1}, -// {X11Key.F2, Key.F2}, -// {X11Key.F3, Key.F3}, -// {X11Key.F4, Key.F4}, -// {X11Key.F5, Key.F5}, -// {X11Key.F6, Key.F6}, -// {X11Key.F7, Key.F7}, -// {X11Key.F8, Key.F8}, -// {X11Key.F9, Key.F9}, -// {X11Key.F10, Key.F10}, -// {X11Key.F11, Key.F11}, -// {X11Key.F12, Key.F12}, -// {X11Key.L3, Key.F13}, -// {X11Key.F14, Key.F14}, -// {X11Key.L5, Key.F15}, -// {X11Key.F16, Key.F16}, -// {X11Key.F17, Key.F17}, -// {X11Key.L8, Key.F18}, -// {X11Key.L9, Key.F19}, -// {X11Key.L10, Key.F20}, -// {X11Key.R1, Key.F21}, -// {X11Key.R2, Key.F22}, -// {X11Key.F23, Key.F23}, -// {X11Key.R4, Key.F24}, -// {X11Key.Num_Lock, Key.NumLock}, -// {X11Key.Scroll_Lock, Key.Scroll}, -// {X11Key.Shift_L, Key.LeftShift}, -// {X11Key.Shift_R, Key.RightShift}, -// {X11Key.Control_L, Key.LeftCtrl}, -// {X11Key.Control_R, Key.RightCtrl}, -// {X11Key.Alt_L, Key.LeftAlt}, -// {X11Key.Alt_R, Key.RightAlt}, -// //{ X11Key.?, Key.BrowserBack } -// //{ X11Key.?, Key.BrowserForward } -// //{ X11Key.?, Key.BrowserRefresh } -// //{ X11Key.?, Key.BrowserStop } -// //{ X11Key.?, Key.BrowserSearch } -// //{ X11Key.?, Key.BrowserFavorites } -// //{ X11Key.?, Key.BrowserHome } -// //{ X11Key.?, Key.VolumeMute } -// //{ X11Key.?, Key.VolumeDown } -// //{ X11Key.?, Key.VolumeUp } -// //{ X11Key.?, Key.MediaNextTrack } -// //{ X11Key.?, Key.MediaPreviousTrack } -// //{ X11Key.?, Key.MediaStop } -// //{ X11Key.?, Key.MediaPlayPause } -// //{ X11Key.?, Key.LaunchMail } -// //{ X11Key.?, Key.SelectMedia } -// //{ X11Key.?, Key.LaunchApplication1 } -// //{ X11Key.?, Key.LaunchApplication2 } -// {X11Key.minus, Key.OemMinus}, -// {X11Key.underscore, Key.OemMinus}, -// {X11Key.plus, Key.OemPlus}, -// {X11Key.equal, Key.OemPlus}, -// {X11Key.bracketleft, Key.OemOpenBrackets}, -// {X11Key.braceleft, Key.OemOpenBrackets}, -// {X11Key.bracketright, Key.OemCloseBrackets}, -// {X11Key.braceright, Key.OemCloseBrackets}, -// {X11Key.backslash, Key.OemPipe}, -// {X11Key.bar, Key.OemPipe}, -// {X11Key.semicolon, Key.OemSemicolon}, -// {X11Key.colon, Key.OemSemicolon}, -// {X11Key.apostrophe, Key.OemQuotes}, -// {X11Key.quotedbl, Key.OemQuotes}, -// {X11Key.comma, Key.OemComma}, -// {X11Key.less, Key.OemComma}, -// {X11Key.period, Key.OemPeriod}, -// {X11Key.greater, Key.OemPeriod}, -// {X11Key.slash, Key.Oem2}, -// {X11Key.question, Key.Oem2}, -// {X11Key.grave, Key.OemTilde}, -// {X11Key.asciitilde, Key.OemTilde}, -// {X11Key.XK_1, Key.D1}, -// {X11Key.XK_2, Key.D2}, -// {X11Key.XK_3, Key.D3}, -// {X11Key.XK_4, Key.D4}, -// {X11Key.XK_5, Key.D5}, -// {X11Key.XK_6, Key.D6}, -// {X11Key.XK_7, Key.D7}, -// {X11Key.XK_8, Key.D8}, -// {X11Key.XK_9, Key.D9}, -// {X11Key.XK_0, Key.D0}, -// //{ X11Key.?, Key.AbntC1 } -// //{ X11Key.?, Key.AbntC2 } -// //{ X11Key.?, Key.Oem8 } -// //{ X11Key.?, Key.Oem102 } -// //{ X11Key.?, Key.ImeProcessed } -// //{ X11Key.?, Key.System } -// //{ X11Key.?, Key.OemAttn } -// //{ X11Key.?, Key.OemFinish } -// //{ X11Key.?, Key.DbeHiragana } -// //{ X11Key.?, Key.OemAuto } -// //{ X11Key.?, Key.DbeDbcsChar } -// //{ X11Key.?, Key.OemBackTab } -// //{ X11Key.?, Key.Attn } -// //{ X11Key.?, Key.DbeEnterWordRegisterMode } -// //{ X11Key.?, Key.DbeEnterImeConfigureMode } -// //{ X11Key.?, Key.EraseEof } -// //{ X11Key.?, Key.Play } -// //{ X11Key.?, Key.Zoom } -// //{ X11Key.?, Key.NoName } -// //{ X11Key.?, Key.DbeEnterDialogConversionMode } -// //{ X11Key.?, Key.OemClear } -// //{ X11Key.?, Key.DeadCharProcessed } -// }; - -// public static Key KeyFromX11Key(X11Key key) -// => s_keyFromX11Key.TryGetValue(key, out var result) ? result : Key.None; - -// public static X11Key X11KeyFromKey(Key key) -// { -// foreach (var item in s_keyFromX11Key) -// { -// if (item.Value == key) -// { -// return item.Key; -// } -// } - -// return X11Key.VoidSymbol; -// } -//} - -//internal enum X11Key -//{ -// VoidSymbol = 0xffffff /* Void symbol */, -// BackSpace = 0xff08 /* Back space, back char */, -// Tab = 0xff09, -// Linefeed = 0xff0a /* Linefeed, LF */, -// Clear = 0xff0b, -// Return = 0xff0d /* Return, enter */, -// Pause = 0xff13 /* Pause, hold */, -// Scroll_Lock = 0xff14, -// Sys_Req = 0xff15, -// Escape = 0xff1b, -// Delete = 0xffff /* Delete, rubout */, -// Multi_key = 0xff20 /* Multi-key character compose */, -// Codeinput = 0xff37, -// SingleCandidate = 0xff3c, -// MultipleCandidate = 0xff3d, -// PreviousCandidate = 0xff3e, -// Kanji = 0xff21 /* Kanji, Kanji convert */, -// Muhenkan = 0xff22 /* Cancel Conversion */, -// Henkan_Mode = 0xff23 /* Start/Stop Conversion */, -// Henkan = 0xff23 /* Alias for Henkan_Mode */, -// Romaji = 0xff24 /* to Romaji */, -// Hiragana = 0xff25 /* to Hiragana */, -// Katakana = 0xff26 /* to Katakana */, -// Hiragana_Katakana = 0xff27 /* Hiragana/Katakana toggle */, -// Zenkaku = 0xff28 /* to Zenkaku */, -// Hankaku = 0xff29 /* to Hankaku */, -// Zenkaku_Hankaku = 0xff2a /* Zenkaku/Hankaku toggle */, -// Touroku = 0xff2b /* Add to Dictionary */, -// Massyo = 0xff2c /* Delete from Dictionary */, -// Kana_Lock = 0xff2d /* Kana Lock */, -// Kana_Shift = 0xff2e /* Kana Shift */, -// Eisu_Shift = 0xff2f /* Alphanumeric Shift */, -// Eisu_toggle = 0xff30 /* Alphanumeric toggle */, -// Kanji_Bangou = 0xff37 /* Codeinput */, -// Zen_Koho = 0xff3d /* Multiple/All Candidate(s) */, -// Mae_Koho = 0xff3e /* Previous Candidate */, -// Home = 0xff50, -// Left = 0xff51 /* Move left, left arrow */, -// Up = 0xff52 /* Move up, up arrow */, -// Right = 0xff53 /* Move right, right arrow */, -// Down = 0xff54 /* Move down, down arrow */, -// Prior = 0xff55 /* Prior, previous */, -// Page_Up = 0xff55, -// Next = 0xff56 /* Next */, -// Page_Down = 0xff56, -// End = 0xff57 /* EOL */, -// Begin = 0xff58 /* BOL */, -// Select = 0xff60 /* Select, mark */, -// Print = 0xff61, -// Execute = 0xff62 /* Execute, run, do */, -// Insert = 0xff63 /* Insert, insert here */, -// Undo = 0xff65, -// Redo = 0xff66 /* Redo, again */, -// Menu = 0xff67, -// Find = 0xff68 /* Find, search */, -// Cancel = 0xff69 /* Cancel, stop, abort, exit */, -// Help = 0xff6a /* Help */, -// Break = 0xff6b, -// Mode_switch = 0xff7e /* Character set switch */, -// script_switch = 0xff7e /* Alias for mode_switch */, -// Num_Lock = 0xff7f, -// KP_Space = 0xff80 /* Space */, -// KP_Tab = 0xff89, -// KP_Enter = 0xff8d /* Enter */, -// KP_F1 = 0xff91 /* PF1, KP_A, ... */, -// 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 /* Equals */, -// KP_Multiply = 0xffaa, -// KP_Add = 0xffab, -// KP_Separator = 0xffac /* Separator, often comma */, -// 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 /* Left shift */, -// Shift_R = 0xffe2 /* Right shift */, -// Control_L = 0xffe3 /* Left control */, -// Control_R = 0xffe4 /* Right control */, -// Caps_Lock = 0xffe5 /* Caps lock */, -// Shift_Lock = 0xffe6 /* Shift lock */, -// Meta_L = 0xffe7 /* Left meta */, -// Meta_R = 0xffe8 /* Right meta */, -// Alt_L = 0xffe9 /* Left alt */, -// Alt_R = 0xffea /* Right alt */, -// Super_L = 0xffeb /* Left super */, -// Super_R = 0xffec /* Right super */, -// Hyper_L = 0xffed /* Left hyper */, -// Hyper_R = 0xffee /* Right hyper */, -// 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 /* Alias for mode_switch */, -// 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 /* alias for dead_tilde */, -// 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 /* alias for dead_abovecomma */, -// dead_abovereversedcomma = 0xfe65, -// dead_dasia = 0xfe65 /* alias for dead_abovereversedcomma */, -// 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, -// 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, -// space = 0x0020 /* U+0020 SPACE */, -// exclam = 0x0021 /* U+0021 EXCLAMATION MARK */, -// quotedbl = 0x0022 /* U+0022 QUOTATION MARK */, -// numbersign = 0x0023 /* U+0023 NUMBER SIGN */, -// dollar = 0x0024 /* U+0024 DOLLAR SIGN */, -// percent = 0x0025 /* U+0025 PERCENT SIGN */, -// ampersand = 0x0026 /* U+0026 AMPERSAND */, -// apostrophe = 0x0027 /* U+0027 APOSTROPHE */, -// quoteright = 0x0027 /* deprecated */, -// parenleft = 0x0028 /* U+0028 LEFT PARENTHESIS */, -// parenright = 0x0029 /* U+0029 RIGHT PARENTHESIS */, -// asterisk = 0x002a /* U+002A ASTERISK */, -// plus = 0x002b /* U+002B PLUS SIGN */, -// comma = 0x002c /* U+002C COMMA */, -// minus = 0x002d /* U+002D HYPHEN-MINUS */, -// period = 0x002e /* U+002E FULL STOP */, -// slash = 0x002f /* U+002F SOLIDUS */, -// XK_0 = 0x0030 /* U+0030 DIGIT ZERO */, -// XK_1 = 0x0031 /* U+0031 DIGIT ONE */, -// XK_2 = 0x0032 /* U+0032 DIGIT TWO */, -// XK_3 = 0x0033 /* U+0033 DIGIT THREE */, -// XK_4 = 0x0034 /* U+0034 DIGIT FOUR */, -// XK_5 = 0x0035 /* U+0035 DIGIT FIVE */, -// XK_6 = 0x0036 /* U+0036 DIGIT SIX */, -// XK_7 = 0x0037 /* U+0037 DIGIT SEVEN */, -// XK_8 = 0x0038 /* U+0038 DIGIT EIGHT */, -// XK_9 = 0x0039 /* U+0039 DIGIT NINE */, -// colon = 0x003a /* U+003A COLON */, -// semicolon = 0x003b /* U+003B SEMICOLON */, -// less = 0x003c /* U+003C LESS-THAN SIGN */, -// equal = 0x003d /* U+003D EQUALS SIGN */, -// greater = 0x003e /* U+003E GREATER-THAN SIGN */, -// question = 0x003f /* U+003F QUESTION MARK */, -// at = 0x0040 /* U+0040 COMMERCIAL AT */, -// A = 0x0041 /* U+0041 LATIN CAPITAL LETTER A */, -// B = 0x0042 /* U+0042 LATIN CAPITAL LETTER B */, -// C = 0x0043 /* U+0043 LATIN CAPITAL LETTER C */, -// D = 0x0044 /* U+0044 LATIN CAPITAL LETTER D */, -// E = 0x0045 /* U+0045 LATIN CAPITAL LETTER E */, -// F = 0x0046 /* U+0046 LATIN CAPITAL LETTER F */, -// G = 0x0047 /* U+0047 LATIN CAPITAL LETTER G */, -// H = 0x0048 /* U+0048 LATIN CAPITAL LETTER H */, -// I = 0x0049 /* U+0049 LATIN CAPITAL LETTER I */, -// J = 0x004a /* U+004A LATIN CAPITAL LETTER J */, -// K = 0x004b /* U+004B LATIN CAPITAL LETTER K */, -// L = 0x004c /* U+004C LATIN CAPITAL LETTER L */, -// M = 0x004d /* U+004D LATIN CAPITAL LETTER M */, -// N = 0x004e /* U+004E LATIN CAPITAL LETTER N */, -// O = 0x004f /* U+004F LATIN CAPITAL LETTER O */, -// P = 0x0050 /* U+0050 LATIN CAPITAL LETTER P */, -// Q = 0x0051 /* U+0051 LATIN CAPITAL LETTER Q */, -// R = 0x0052 /* U+0052 LATIN CAPITAL LETTER R */, -// S = 0x0053 /* U+0053 LATIN CAPITAL LETTER S */, -// T = 0x0054 /* U+0054 LATIN CAPITAL LETTER T */, -// U = 0x0055 /* U+0055 LATIN CAPITAL LETTER U */, -// V = 0x0056 /* U+0056 LATIN CAPITAL LETTER V */, -// W = 0x0057 /* U+0057 LATIN CAPITAL LETTER W */, -// X = 0x0058 /* U+0058 LATIN CAPITAL LETTER X */, -// Y = 0x0059 /* U+0059 LATIN CAPITAL LETTER Y */, -// Z = 0x005a /* U+005A LATIN CAPITAL LETTER Z */, -// bracketleft = 0x005b /* U+005B LEFT SQUARE BRACKET */, -// backslash = 0x005c /* U+005C REVERSE SOLIDUS */, -// bracketright = 0x005d /* U+005D RIGHT SQUARE BRACKET */, -// asciicircum = 0x005e /* U+005E CIRCUMFLEX ACCENT */, -// underscore = 0x005f /* U+005F LOW LINE */, -// grave = 0x0060 /* U+0060 GRAVE ACCENT */, -// quoteleft = 0x0060 /* deprecated */, -// a = 0x0061 /* U+0061 LATIN SMALL LETTER A */, -// b = 0x0062 /* U+0062 LATIN SMALL LETTER B */, -// c = 0x0063 /* U+0063 LATIN SMALL LETTER C */, -// d = 0x0064 /* U+0064 LATIN SMALL LETTER D */, -// e = 0x0065 /* U+0065 LATIN SMALL LETTER E */, -// f = 0x0066 /* U+0066 LATIN SMALL LETTER F */, -// g = 0x0067 /* U+0067 LATIN SMALL LETTER G */, -// h = 0x0068 /* U+0068 LATIN SMALL LETTER H */, -// i = 0x0069 /* U+0069 LATIN SMALL LETTER I */, -// j = 0x006a /* U+006A LATIN SMALL LETTER J */, -// k = 0x006b /* U+006B LATIN SMALL LETTER K */, -// l = 0x006c /* U+006C LATIN SMALL LETTER L */, -// m = 0x006d /* U+006D LATIN SMALL LETTER M */, -// n = 0x006e /* U+006E LATIN SMALL LETTER N */, -// o = 0x006f /* U+006F LATIN SMALL LETTER O */, -// p = 0x0070 /* U+0070 LATIN SMALL LETTER P */, -// q = 0x0071 /* U+0071 LATIN SMALL LETTER Q */, -// r = 0x0072 /* U+0072 LATIN SMALL LETTER R */, -// s = 0x0073 /* U+0073 LATIN SMALL LETTER S */, -// t = 0x0074 /* U+0074 LATIN SMALL LETTER T */, -// u = 0x0075 /* U+0075 LATIN SMALL LETTER U */, -// v = 0x0076 /* U+0076 LATIN SMALL LETTER V */, -// w = 0x0077 /* U+0077 LATIN SMALL LETTER W */, -// x = 0x0078 /* U+0078 LATIN SMALL LETTER X */, -// y = 0x0079 /* U+0079 LATIN SMALL LETTER Y */, -// z = 0x007a /* U+007A LATIN SMALL LETTER Z */, -// braceleft = 0x007b /* U+007B LEFT CURLY BRACKET */, -// bar = 0x007c /* U+007C VERTICAL LINE */, -// braceright = 0x007d /* U+007D RIGHT CURLY BRACKET */, -// asciitilde = 0x007e /* U+007E TILDE */, -// nobreakspace = 0x00a0 /* U+00A0 NO-BREAK SPACE */, -// exclamdown = 0x00a1 /* U+00A1 INVERTED EXCLAMATION MARK */, -// cent = 0x00a2 /* U+00A2 CENT SIGN */, -// sterling = 0x00a3 /* U+00A3 POUND SIGN */, -// currency = 0x00a4 /* U+00A4 CURRENCY SIGN */, -// yen = 0x00a5 /* U+00A5 YEN SIGN */, -// brokenbar = 0x00a6 /* U+00A6 BROKEN BAR */, -// section = 0x00a7 /* U+00A7 SECTION SIGN */, -// diaeresis = 0x00a8 /* U+00A8 DIAERESIS */, -// copyright = 0x00a9 /* U+00A9 COPYRIGHT SIGN */, -// ordfeminine = 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */, -// guillemotleft = 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */, -// notsign = 0x00ac /* U+00AC NOT SIGN */, -// hyphen = 0x00ad /* U+00AD SOFT HYPHEN */, -// registered = 0x00ae /* U+00AE REGISTERED SIGN */, -// macron = 0x00af /* U+00AF MACRON */, -// degree = 0x00b0 /* U+00B0 DEGREE SIGN */, -// plusminus = 0x00b1 /* U+00B1 PLUS-MINUS SIGN */, -// twosuperior = 0x00b2 /* U+00B2 SUPERSCRIPT TWO */, -// threesuperior = 0x00b3 /* U+00B3 SUPERSCRIPT THREE */, -// acute = 0x00b4 /* U+00B4 ACUTE ACCENT */, -// mu = 0x00b5 /* U+00B5 MICRO SIGN */, -// paragraph = 0x00b6 /* U+00B6 PILCROW SIGN */, -// periodcentered = 0x00b7 /* U+00B7 MIDDLE DOT */, -// cedilla = 0x00b8 /* U+00B8 CEDILLA */, -// onesuperior = 0x00b9 /* U+00B9 SUPERSCRIPT ONE */, -// masculine = 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */, -// guillemotright = 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */, -// onequarter = 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */, -// onehalf = 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */, -// threequarters = 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */, -// questiondown = 0x00bf /* U+00BF INVERTED QUESTION MARK */, -// Agrave = 0x00c0 /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */, -// Aacute = 0x00c1 /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */, -// Acircumflex = 0x00c2 /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */, -// Atilde = 0x00c3 /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */, -// Adiaeresis = 0x00c4 /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */, -// Aring = 0x00c5 /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */, -// AE = 0x00c6 /* U+00C6 LATIN CAPITAL LETTER AE */, -// Ccedilla = 0x00c7 /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */, -// Egrave = 0x00c8 /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */, -// Eacute = 0x00c9 /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */, -// Ecircumflex = 0x00ca /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */, -// Ediaeresis = 0x00cb /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */, -// Igrave = 0x00cc /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */, -// Iacute = 0x00cd /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */, -// Icircumflex = 0x00ce /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */, -// Idiaeresis = 0x00cf /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */, -// ETH = 0x00d0 /* U+00D0 LATIN CAPITAL LETTER ETH */, -// Eth = 0x00d0 /* deprecated */, -// Ntilde = 0x00d1 /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */, -// Ograve = 0x00d2 /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */, -// Oacute = 0x00d3 /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */, -// Ocircumflex = 0x00d4 /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */, -// Otilde = 0x00d5 /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */, -// Odiaeresis = 0x00d6 /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */, -// multiply = 0x00d7 /* U+00D7 MULTIPLICATION SIGN */, -// Oslash = 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */, -// Ooblique = 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */, -// Ugrave = 0x00d9 /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */, -// Uacute = 0x00da /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */, -// Ucircumflex = 0x00db /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */, -// Udiaeresis = 0x00dc /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */, -// Yacute = 0x00dd /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */, -// THORN = 0x00de /* U+00DE LATIN CAPITAL LETTER THORN */, -// Thorn = 0x00de /* deprecated */, -// ssharp = 0x00df /* U+00DF LATIN SMALL LETTER SHARP S */, -// agrave = 0x00e0 /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */, -// aacute = 0x00e1 /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */, -// acircumflex = 0x00e2 /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */, -// atilde = 0x00e3 /* U+00E3 LATIN SMALL LETTER A WITH TILDE */, -// adiaeresis = 0x00e4 /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */, -// aring = 0x00e5 /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */, -// ae = 0x00e6 /* U+00E6 LATIN SMALL LETTER AE */, -// ccedilla = 0x00e7 /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */, -// egrave = 0x00e8 /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */, -// eacute = 0x00e9 /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */, -// ecircumflex = 0x00ea /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */, -// ediaeresis = 0x00eb /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */, -// igrave = 0x00ec /* U+00EC LATIN SMALL LETTER I WITH GRAVE */, -// iacute = 0x00ed /* U+00ED LATIN SMALL LETTER I WITH ACUTE */, -// icircumflex = 0x00ee /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */, -// idiaeresis = 0x00ef /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */, -// eth = 0x00f0 /* U+00F0 LATIN SMALL LETTER ETH */, -// ntilde = 0x00f1 /* U+00F1 LATIN SMALL LETTER N WITH TILDE */, -// ograve = 0x00f2 /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */, -// oacute = 0x00f3 /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */, -// ocircumflex = 0x00f4 /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */, -// otilde = 0x00f5 /* U+00F5 LATIN SMALL LETTER O WITH TILDE */, -// odiaeresis = 0x00f6 /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */, -// division = 0x00f7 /* U+00F7 DIVISION SIGN */, -// oslash = 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */, -// ooblique = 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */, -// ugrave = 0x00f9 /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */, -// uacute = 0x00fa /* U+00FA LATIN SMALL LETTER U WITH ACUTE */, -// ucircumflex = 0x00fb /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */, -// udiaeresis = 0x00fc /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */, -// yacute = 0x00fd /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */, -// thorn = 0x00fe /* U+00FE LATIN SMALL LETTER THORN */, -// ydiaeresis = 0x00ff /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */, -// Aogonek = 0x01a1 /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */, -// breve = 0x01a2 /* U+02D8 BREVE */, -// Lstroke = 0x01a3 /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */, -// Lcaron = 0x01a5 /* U+013D LATIN CAPITAL LETTER L WITH CARON */, -// Sacute = 0x01a6 /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */, -// Scaron = 0x01a9 /* U+0160 LATIN CAPITAL LETTER S WITH CARON */, -// Scedilla = 0x01aa /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */, -// Tcaron = 0x01ab /* U+0164 LATIN CAPITAL LETTER T WITH CARON */, -// Zacute = 0x01ac /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */, -// Zcaron = 0x01ae /* U+017D LATIN CAPITAL LETTER Z WITH CARON */, -// Zabovedot = 0x01af /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */, -// aogonek = 0x01b1 /* U+0105 LATIN SMALL LETTER A WITH OGONEK */, -// ogonek = 0x01b2 /* U+02DB OGONEK */, -// lstroke = 0x01b3 /* U+0142 LATIN SMALL LETTER L WITH STROKE */, -// lcaron = 0x01b5 /* U+013E LATIN SMALL LETTER L WITH CARON */, -// sacute = 0x01b6 /* U+015B LATIN SMALL LETTER S WITH ACUTE */, -// caron = 0x01b7 /* U+02C7 CARON */, -// scaron = 0x01b9 /* U+0161 LATIN SMALL LETTER S WITH CARON */, -// scedilla = 0x01ba /* U+015F LATIN SMALL LETTER S WITH CEDILLA */, -// tcaron = 0x01bb /* U+0165 LATIN SMALL LETTER T WITH CARON */, -// zacute = 0x01bc /* U+017A LATIN SMALL LETTER Z WITH ACUTE */, -// doubleacute = 0x01bd /* U+02DD DOUBLE ACUTE ACCENT */, -// zcaron = 0x01be /* U+017E LATIN SMALL LETTER Z WITH CARON */, -// zabovedot = 0x01bf /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */, -// Racute = 0x01c0 /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */, -// Abreve = 0x01c3 /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */, -// Lacute = 0x01c5 /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */, -// Cacute = 0x01c6 /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */, -// Ccaron = 0x01c8 /* U+010C LATIN CAPITAL LETTER C WITH CARON */, -// Eogonek = 0x01ca /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */, -// Ecaron = 0x01cc /* U+011A LATIN CAPITAL LETTER E WITH CARON */, -// Dcaron = 0x01cf /* U+010E LATIN CAPITAL LETTER D WITH CARON */, -// Dstroke = 0x01d0 /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */, -// Nacute = 0x01d1 /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */, -// Ncaron = 0x01d2 /* U+0147 LATIN CAPITAL LETTER N WITH CARON */, -// Odoubleacute = 0x01d5 /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */, -// Rcaron = 0x01d8 /* U+0158 LATIN CAPITAL LETTER R WITH CARON */, -// Uring = 0x01d9 /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */, -// Udoubleacute = 0x01db /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */, -// Tcedilla = 0x01de /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */, -// racute = 0x01e0 /* U+0155 LATIN SMALL LETTER R WITH ACUTE */, -// abreve = 0x01e3 /* U+0103 LATIN SMALL LETTER A WITH BREVE */, -// lacute = 0x01e5 /* U+013A LATIN SMALL LETTER L WITH ACUTE */, -// cacute = 0x01e6 /* U+0107 LATIN SMALL LETTER C WITH ACUTE */, -// ccaron = 0x01e8 /* U+010D LATIN SMALL LETTER C WITH CARON */, -// eogonek = 0x01ea /* U+0119 LATIN SMALL LETTER E WITH OGONEK */, -// ecaron = 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */, -// dcaron = 0x01ef /* U+010F LATIN SMALL LETTER D WITH CARON */, -// dstroke = 0x01f0 /* U+0111 LATIN SMALL LETTER D WITH STROKE */, -// nacute = 0x01f1 /* U+0144 LATIN SMALL LETTER N WITH ACUTE */, -// ncaron = 0x01f2 /* U+0148 LATIN SMALL LETTER N WITH CARON */, -// odoubleacute = 0x01f5 /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */, -// rcaron = 0x01f8 /* U+0159 LATIN SMALL LETTER R WITH CARON */, -// uring = 0x01f9 /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */, -// udoubleacute = 0x01fb /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */, -// tcedilla = 0x01fe /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */, -// abovedot = 0x01ff /* U+02D9 DOT ABOVE */, -// Hstroke = 0x02a1 /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */, -// Hcircumflex = 0x02a6 /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */, -// Iabovedot = 0x02a9 /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */, -// Gbreve = 0x02ab /* U+011E LATIN CAPITAL LETTER G WITH BREVE */, -// Jcircumflex = 0x02ac /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */, -// hstroke = 0x02b1 /* U+0127 LATIN SMALL LETTER H WITH STROKE */, -// hcircumflex = 0x02b6 /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */, -// idotless = 0x02b9 /* U+0131 LATIN SMALL LETTER DOTLESS I */, -// gbreve = 0x02bb /* U+011F LATIN SMALL LETTER G WITH BREVE */, -// jcircumflex = 0x02bc /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */, -// Cabovedot = 0x02c5 /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */, -// Ccircumflex = 0x02c6 /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */, -// Gabovedot = 0x02d5 /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */, -// Gcircumflex = 0x02d8 /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */, -// Ubreve = 0x02dd /* U+016C LATIN CAPITAL LETTER U WITH BREVE */, -// Scircumflex = 0x02de /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */, -// cabovedot = 0x02e5 /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */, -// ccircumflex = 0x02e6 /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */, -// gabovedot = 0x02f5 /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */, -// gcircumflex = 0x02f8 /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */, -// ubreve = 0x02fd /* U+016D LATIN SMALL LETTER U WITH BREVE */, -// scircumflex = 0x02fe /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */, -// kra = 0x03a2 /* U+0138 LATIN SMALL LETTER KRA */, -// kappa = 0x03a2 /* deprecated */, -// Rcedilla = 0x03a3 /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */, -// Itilde = 0x03a5 /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */, -// Lcedilla = 0x03a6 /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */, -// Emacron = 0x03aa /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */, -// Gcedilla = 0x03ab /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */, -// Tslash = 0x03ac /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */, -// rcedilla = 0x03b3 /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */, -// itilde = 0x03b5 /* U+0129 LATIN SMALL LETTER I WITH TILDE */, -// lcedilla = 0x03b6 /* U+013C LATIN SMALL LETTER L WITH CEDILLA */, -// emacron = 0x03ba /* U+0113 LATIN SMALL LETTER E WITH MACRON */, -// gcedilla = 0x03bb /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */, -// tslash = 0x03bc /* U+0167 LATIN SMALL LETTER T WITH STROKE */, -// ENG = 0x03bd /* U+014A LATIN CAPITAL LETTER ENG */, -// eng = 0x03bf /* U+014B LATIN SMALL LETTER ENG */, -// Amacron = 0x03c0 /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */, -// Iogonek = 0x03c7 /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */, -// Eabovedot = 0x03cc /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */, -// Imacron = 0x03cf /* U+012A LATIN CAPITAL LETTER I WITH MACRON */, -// Ncedilla = 0x03d1 /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */, -// Omacron = 0x03d2 /* U+014C LATIN CAPITAL LETTER O WITH MACRON */, -// Kcedilla = 0x03d3 /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */, -// Uogonek = 0x03d9 /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */, -// Utilde = 0x03dd /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */, -// Umacron = 0x03de /* U+016A LATIN CAPITAL LETTER U WITH MACRON */, -// amacron = 0x03e0 /* U+0101 LATIN SMALL LETTER A WITH MACRON */, -// iogonek = 0x03e7 /* U+012F LATIN SMALL LETTER I WITH OGONEK */, -// eabovedot = 0x03ec /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */, -// imacron = 0x03ef /* U+012B LATIN SMALL LETTER I WITH MACRON */, -// ncedilla = 0x03f1 /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */, -// omacron = 0x03f2 /* U+014D LATIN SMALL LETTER O WITH MACRON */, -// kcedilla = 0x03f3 /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */, -// uogonek = 0x03f9 /* U+0173 LATIN SMALL LETTER U WITH OGONEK */, -// utilde = 0x03fd /* U+0169 LATIN SMALL LETTER U WITH TILDE */, -// umacron = 0x03fe /* U+016B LATIN SMALL LETTER U WITH MACRON */, -// Wcircumflex = 0x1000174 /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */, -// wcircumflex = 0x1000175 /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */, -// Ycircumflex = 0x1000176 /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */, -// ycircumflex = 0x1000177 /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */, -// Babovedot = 0x1001e02 /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */, -// babovedot = 0x1001e03 /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */, -// Dabovedot = 0x1001e0a /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */, -// dabovedot = 0x1001e0b /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */, -// Fabovedot = 0x1001e1e /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */, -// fabovedot = 0x1001e1f /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */, -// Mabovedot = 0x1001e40 /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */, -// mabovedot = 0x1001e41 /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */, -// Pabovedot = 0x1001e56 /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */, -// pabovedot = 0x1001e57 /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */, -// Sabovedot = 0x1001e60 /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */, -// sabovedot = 0x1001e61 /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */, -// Tabovedot = 0x1001e6a /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */, -// tabovedot = 0x1001e6b /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */, -// Wgrave = 0x1001e80 /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */, -// wgrave = 0x1001e81 /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */, -// Wacute = 0x1001e82 /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */, -// wacute = 0x1001e83 /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */, -// Wdiaeresis = 0x1001e84 /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */, -// wdiaeresis = 0x1001e85 /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */, -// Ygrave = 0x1001ef2 /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */, -// ygrave = 0x1001ef3 /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */, -// OE = 0x13bc /* U+0152 LATIN CAPITAL LIGATURE OE */, -// oe = 0x13bd /* U+0153 LATIN SMALL LIGATURE OE */, -// Ydiaeresis = 0x13be /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */, -// overline = 0x047e /* U+203E OVERLINE */, -// kana_fullstop = 0x04a1 /* U+3002 IDEOGRAPHIC FULL STOP */, -// kana_openingbracket = 0x04a2 /* U+300C LEFT CORNER BRACKET */, -// kana_closingbracket = 0x04a3 /* U+300D RIGHT CORNER BRACKET */, -// kana_comma = 0x04a4 /* U+3001 IDEOGRAPHIC COMMA */, -// kana_conjunctive = 0x04a5 /* U+30FB KATAKANA MIDDLE DOT */, -// kana_middledot = 0x04a5 /* deprecated */, -// kana_WO = 0x04a6 /* U+30F2 KATAKANA LETTER WO */, -// kana_a = 0x04a7 /* U+30A1 KATAKANA LETTER SMALL A */, -// kana_i = 0x04a8 /* U+30A3 KATAKANA LETTER SMALL I */, -// kana_u = 0x04a9 /* U+30A5 KATAKANA LETTER SMALL U */, -// kana_e = 0x04aa /* U+30A7 KATAKANA LETTER SMALL E */, -// kana_o = 0x04ab /* U+30A9 KATAKANA LETTER SMALL O */, -// kana_ya = 0x04ac /* U+30E3 KATAKANA LETTER SMALL YA */, -// kana_yu = 0x04ad /* U+30E5 KATAKANA LETTER SMALL YU */, -// kana_yo = 0x04ae /* U+30E7 KATAKANA LETTER SMALL YO */, -// kana_tsu = 0x04af /* U+30C3 KATAKANA LETTER SMALL TU */, -// kana_tu = 0x04af /* deprecated */, -// prolongedsound = 0x04b0 /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */, -// kana_A = 0x04b1 /* U+30A2 KATAKANA LETTER A */, -// kana_I = 0x04b2 /* U+30A4 KATAKANA LETTER I */, -// kana_U = 0x04b3 /* U+30A6 KATAKANA LETTER U */, -// kana_E = 0x04b4 /* U+30A8 KATAKANA LETTER E */, -// kana_O = 0x04b5 /* U+30AA KATAKANA LETTER O */, -// kana_KA = 0x04b6 /* U+30AB KATAKANA LETTER KA */, -// kana_KI = 0x04b7 /* U+30AD KATAKANA LETTER KI */, -// kana_KU = 0x04b8 /* U+30AF KATAKANA LETTER KU */, -// kana_KE = 0x04b9 /* U+30B1 KATAKANA LETTER KE */, -// kana_KO = 0x04ba /* U+30B3 KATAKANA LETTER KO */, -// kana_SA = 0x04bb /* U+30B5 KATAKANA LETTER SA */, -// kana_SHI = 0x04bc /* U+30B7 KATAKANA LETTER SI */, -// kana_SU = 0x04bd /* U+30B9 KATAKANA LETTER SU */, -// kana_SE = 0x04be /* U+30BB KATAKANA LETTER SE */, -// kana_SO = 0x04bf /* U+30BD KATAKANA LETTER SO */, -// kana_TA = 0x04c0 /* U+30BF KATAKANA LETTER TA */, -// kana_CHI = 0x04c1 /* U+30C1 KATAKANA LETTER TI */, -// kana_TI = 0x04c1 /* deprecated */, -// kana_TSU = 0x04c2 /* U+30C4 KATAKANA LETTER TU */, -// kana_TU = 0x04c2 /* deprecated */, -// kana_TE = 0x04c3 /* U+30C6 KATAKANA LETTER TE */, -// kana_TO = 0x04c4 /* U+30C8 KATAKANA LETTER TO */, -// kana_NA = 0x04c5 /* U+30CA KATAKANA LETTER NA */, -// kana_NI = 0x04c6 /* U+30CB KATAKANA LETTER NI */, -// kana_NU = 0x04c7 /* U+30CC KATAKANA LETTER NU */, -// kana_NE = 0x04c8 /* U+30CD KATAKANA LETTER NE */, -// kana_NO = 0x04c9 /* U+30CE KATAKANA LETTER NO */, -// kana_HA = 0x04ca /* U+30CF KATAKANA LETTER HA */, -// kana_HI = 0x04cb /* U+30D2 KATAKANA LETTER HI */, -// kana_FU = 0x04cc /* U+30D5 KATAKANA LETTER HU */, -// kana_HU = 0x04cc /* deprecated */, -// kana_HE = 0x04cd /* U+30D8 KATAKANA LETTER HE */, -// kana_HO = 0x04ce /* U+30DB KATAKANA LETTER HO */, -// kana_MA = 0x04cf /* U+30DE KATAKANA LETTER MA */, -// kana_MI = 0x04d0 /* U+30DF KATAKANA LETTER MI */, -// kana_MU = 0x04d1 /* U+30E0 KATAKANA LETTER MU */, -// kana_ME = 0x04d2 /* U+30E1 KATAKANA LETTER ME */, -// kana_MO = 0x04d3 /* U+30E2 KATAKANA LETTER MO */, -// kana_YA = 0x04d4 /* U+30E4 KATAKANA LETTER YA */, -// kana_YU = 0x04d5 /* U+30E6 KATAKANA LETTER YU */, -// kana_YO = 0x04d6 /* U+30E8 KATAKANA LETTER YO */, -// kana_RA = 0x04d7 /* U+30E9 KATAKANA LETTER RA */, -// kana_RI = 0x04d8 /* U+30EA KATAKANA LETTER RI */, -// kana_RU = 0x04d9 /* U+30EB KATAKANA LETTER RU */, -// kana_RE = 0x04da /* U+30EC KATAKANA LETTER RE */, -// kana_RO = 0x04db /* U+30ED KATAKANA LETTER RO */, -// kana_WA = 0x04dc /* U+30EF KATAKANA LETTER WA */, -// kana_N = 0x04dd /* U+30F3 KATAKANA LETTER N */, -// voicedsound = 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */, -// semivoicedsound = 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */, -// kana_switch = 0xff7e /* Alias for mode_switch */, -// Farsi_0 = 0x10006f0 /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */, -// Farsi_1 = 0x10006f1 /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */, -// Farsi_2 = 0x10006f2 /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */, -// Farsi_3 = 0x10006f3 /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */, -// Farsi_4 = 0x10006f4 /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */, -// Farsi_5 = 0x10006f5 /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */, -// Farsi_6 = 0x10006f6 /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */, -// Farsi_7 = 0x10006f7 /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */, -// Farsi_8 = 0x10006f8 /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */, -// Farsi_9 = 0x10006f9 /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */, -// Arabic_percent = 0x100066a /* U+066A ARABIC PERCENT SIGN */, -// Arabic_superscript_alef = 0x1000670 /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */, -// Arabic_tteh = 0x1000679 /* U+0679 ARABIC LETTER TTEH */, -// Arabic_peh = 0x100067e /* U+067E ARABIC LETTER PEH */, -// Arabic_tcheh = 0x1000686 /* U+0686 ARABIC LETTER TCHEH */, -// Arabic_ddal = 0x1000688 /* U+0688 ARABIC LETTER DDAL */, -// Arabic_rreh = 0x1000691 /* U+0691 ARABIC LETTER RREH */, -// Arabic_comma = 0x05ac /* U+060C ARABIC COMMA */, -// Arabic_fullstop = 0x10006d4 /* U+06D4 ARABIC FULL STOP */, -// Arabic_0 = 0x1000660 /* U+0660 ARABIC-INDIC DIGIT ZERO */, -// Arabic_1 = 0x1000661 /* U+0661 ARABIC-INDIC DIGIT ONE */, -// Arabic_2 = 0x1000662 /* U+0662 ARABIC-INDIC DIGIT TWO */, -// Arabic_3 = 0x1000663 /* U+0663 ARABIC-INDIC DIGIT THREE */, -// Arabic_4 = 0x1000664 /* U+0664 ARABIC-INDIC DIGIT FOUR */, -// Arabic_5 = 0x1000665 /* U+0665 ARABIC-INDIC DIGIT FIVE */, -// Arabic_6 = 0x1000666 /* U+0666 ARABIC-INDIC DIGIT SIX */, -// Arabic_7 = 0x1000667 /* U+0667 ARABIC-INDIC DIGIT SEVEN */, -// Arabic_8 = 0x1000668 /* U+0668 ARABIC-INDIC DIGIT EIGHT */, -// Arabic_9 = 0x1000669 /* U+0669 ARABIC-INDIC DIGIT NINE */, -// Arabic_semicolon = 0x05bb /* U+061B ARABIC SEMICOLON */, -// Arabic_question_mark = 0x05bf /* U+061F ARABIC QUESTION MARK */, -// Arabic_hamza = 0x05c1 /* U+0621 ARABIC LETTER HAMZA */, -// Arabic_maddaonalef = 0x05c2 /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */, -// Arabic_hamzaonalef = 0x05c3 /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */, -// Arabic_hamzaonwaw = 0x05c4 /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */, -// Arabic_hamzaunderalef = 0x05c5 /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */, -// Arabic_hamzaonyeh = 0x05c6 /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */, -// Arabic_alef = 0x05c7 /* U+0627 ARABIC LETTER ALEF */, -// Arabic_beh = 0x05c8 /* U+0628 ARABIC LETTER BEH */, -// Arabic_tehmarbuta = 0x05c9 /* U+0629 ARABIC LETTER TEH MARBUTA */, -// Arabic_teh = 0x05ca /* U+062A ARABIC LETTER TEH */, -// Arabic_theh = 0x05cb /* U+062B ARABIC LETTER THEH */, -// Arabic_jeem = 0x05cc /* U+062C ARABIC LETTER JEEM */, -// Arabic_hah = 0x05cd /* U+062D ARABIC LETTER HAH */, -// Arabic_khah = 0x05ce /* U+062E ARABIC LETTER KHAH */, -// Arabic_dal = 0x05cf /* U+062F ARABIC LETTER DAL */, -// Arabic_thal = 0x05d0 /* U+0630 ARABIC LETTER THAL */, -// Arabic_ra = 0x05d1 /* U+0631 ARABIC LETTER REH */, -// Arabic_zain = 0x05d2 /* U+0632 ARABIC LETTER ZAIN */, -// Arabic_seen = 0x05d3 /* U+0633 ARABIC LETTER SEEN */, -// Arabic_sheen = 0x05d4 /* U+0634 ARABIC LETTER SHEEN */, -// Arabic_sad = 0x05d5 /* U+0635 ARABIC LETTER SAD */, -// Arabic_dad = 0x05d6 /* U+0636 ARABIC LETTER DAD */, -// Arabic_tah = 0x05d7 /* U+0637 ARABIC LETTER TAH */, -// Arabic_zah = 0x05d8 /* U+0638 ARABIC LETTER ZAH */, -// Arabic_ain = 0x05d9 /* U+0639 ARABIC LETTER AIN */, -// Arabic_ghain = 0x05da /* U+063A ARABIC LETTER GHAIN */, -// Arabic_tatweel = 0x05e0 /* U+0640 ARABIC TATWEEL */, -// Arabic_feh = 0x05e1 /* U+0641 ARABIC LETTER FEH */, -// Arabic_qaf = 0x05e2 /* U+0642 ARABIC LETTER QAF */, -// Arabic_kaf = 0x05e3 /* U+0643 ARABIC LETTER KAF */, -// Arabic_lam = 0x05e4 /* U+0644 ARABIC LETTER LAM */, -// Arabic_meem = 0x05e5 /* U+0645 ARABIC LETTER MEEM */, -// Arabic_noon = 0x05e6 /* U+0646 ARABIC LETTER NOON */, -// Arabic_ha = 0x05e7 /* U+0647 ARABIC LETTER HEH */, -// Arabic_heh = 0x05e7 /* deprecated */, -// Arabic_waw = 0x05e8 /* U+0648 ARABIC LETTER WAW */, -// Arabic_alefmaksura = 0x05e9 /* U+0649 ARABIC LETTER ALEF MAKSURA */, -// Arabic_yeh = 0x05ea /* U+064A ARABIC LETTER YEH */, -// Arabic_fathatan = 0x05eb /* U+064B ARABIC FATHATAN */, -// Arabic_dammatan = 0x05ec /* U+064C ARABIC DAMMATAN */, -// Arabic_kasratan = 0x05ed /* U+064D ARABIC KASRATAN */, -// Arabic_fatha = 0x05ee /* U+064E ARABIC FATHA */, -// Arabic_damma = 0x05ef /* U+064F ARABIC DAMMA */, -// Arabic_kasra = 0x05f0 /* U+0650 ARABIC KASRA */, -// Arabic_shadda = 0x05f1 /* U+0651 ARABIC SHADDA */, -// Arabic_sukun = 0x05f2 /* U+0652 ARABIC SUKUN */, -// Arabic_madda_above = 0x1000653 /* U+0653 ARABIC MADDAH ABOVE */, -// Arabic_hamza_above = 0x1000654 /* U+0654 ARABIC HAMZA ABOVE */, -// Arabic_hamza_below = 0x1000655 /* U+0655 ARABIC HAMZA BELOW */, -// Arabic_jeh = 0x1000698 /* U+0698 ARABIC LETTER JEH */, -// Arabic_veh = 0x10006a4 /* U+06A4 ARABIC LETTER VEH */, -// Arabic_keheh = 0x10006a9 /* U+06A9 ARABIC LETTER KEHEH */, -// Arabic_gaf = 0x10006af /* U+06AF ARABIC LETTER GAF */, -// Arabic_noon_ghunna = 0x10006ba /* U+06BA ARABIC LETTER NOON GHUNNA */, -// Arabic_heh_doachashmee = 0x10006be /* U+06BE ARABIC LETTER HEH DOACHASHMEE */, -// Farsi_yeh = 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */, -// Arabic_farsi_yeh = 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */, -// Arabic_yeh_baree = 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */, -// Arabic_heh_goal = 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */, -// Arabic_switch = 0xff7e /* Alias for mode_switch */, -// Cyrillic_GHE_bar = 0x1000492 /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */, -// Cyrillic_ghe_bar = 0x1000493 /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */, -// Cyrillic_ZHE_descender = 0x1000496 /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */, -// Cyrillic_zhe_descender = 0x1000497 /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */, -// Cyrillic_KA_descender = 0x100049a /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */, -// Cyrillic_ka_descender = 0x100049b /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */, -// Cyrillic_KA_vertstroke = 0x100049c /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */, -// Cyrillic_ka_vertstroke = 0x100049d /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */, -// Cyrillic_EN_descender = 0x10004a2 /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */, -// Cyrillic_en_descender = 0x10004a3 /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */, -// Cyrillic_U_straight = 0x10004ae /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */, -// Cyrillic_u_straight = 0x10004af /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */, -// Cyrillic_U_straight_bar = 0x10004b0 /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */, -// Cyrillic_u_straight_bar = 0x10004b1 /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */, -// Cyrillic_HA_descender = 0x10004b2 /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */, -// Cyrillic_ha_descender = 0x10004b3 /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */, -// Cyrillic_CHE_descender = 0x10004b6 /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */, -// Cyrillic_che_descender = 0x10004b7 /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */, -// Cyrillic_CHE_vertstroke = 0x10004b8 /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */, -// Cyrillic_che_vertstroke = 0x10004b9 /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */, -// Cyrillic_SHHA = 0x10004ba /* U+04BA CYRILLIC CAPITAL LETTER SHHA */, -// Cyrillic_shha = 0x10004bb /* U+04BB CYRILLIC SMALL LETTER SHHA */, -// Cyrillic_SCHWA = 0x10004d8 /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */, -// Cyrillic_schwa = 0x10004d9 /* U+04D9 CYRILLIC SMALL LETTER SCHWA */, -// Cyrillic_I_macron = 0x10004e2 /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */, -// Cyrillic_i_macron = 0x10004e3 /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */, -// Cyrillic_O_bar = 0x10004e8 /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */, -// Cyrillic_o_bar = 0x10004e9 /* U+04E9 CYRILLIC SMALL LETTER BARRED O */, -// Cyrillic_U_macron = 0x10004ee /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */, -// Cyrillic_u_macron = 0x10004ef /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */, -// Serbian_dje = 0x06a1 /* U+0452 CYRILLIC SMALL LETTER DJE */, -// Macedonia_gje = 0x06a2 /* U+0453 CYRILLIC SMALL LETTER GJE */, -// Cyrillic_io = 0x06a3 /* U+0451 CYRILLIC SMALL LETTER IO */, -// Ukrainian_ie = 0x06a4 /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */, -// Ukranian_je = 0x06a4 /* deprecated */, -// Macedonia_dse = 0x06a5 /* U+0455 CYRILLIC SMALL LETTER DZE */, -// Ukrainian_i = 0x06a6 /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */, -// Ukranian_i = 0x06a6 /* deprecated */, -// Ukrainian_yi = 0x06a7 /* U+0457 CYRILLIC SMALL LETTER YI */, -// Ukranian_yi = 0x06a7 /* deprecated */, -// Cyrillic_je = 0x06a8 /* U+0458 CYRILLIC SMALL LETTER JE */, -// Serbian_je = 0x06a8 /* deprecated */, -// Cyrillic_lje = 0x06a9 /* U+0459 CYRILLIC SMALL LETTER LJE */, -// Serbian_lje = 0x06a9 /* deprecated */, -// Cyrillic_nje = 0x06aa /* U+045A CYRILLIC SMALL LETTER NJE */, -// Serbian_nje = 0x06aa /* deprecated */, -// Serbian_tshe = 0x06ab /* U+045B CYRILLIC SMALL LETTER TSHE */, -// Macedonia_kje = 0x06ac /* U+045C CYRILLIC SMALL LETTER KJE */, -// Ukrainian_ghe_with_upturn = 0x06ad /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */, -// Byelorussian_shortu = 0x06ae /* U+045E CYRILLIC SMALL LETTER SHORT U */, -// Cyrillic_dzhe = 0x06af /* U+045F CYRILLIC SMALL LETTER DZHE */, -// Serbian_dze = 0x06af /* deprecated */, -// numerosign = 0x06b0 /* U+2116 NUMERO SIGN */, -// Serbian_DJE = 0x06b1 /* U+0402 CYRILLIC CAPITAL LETTER DJE */, -// Macedonia_GJE = 0x06b2 /* U+0403 CYRILLIC CAPITAL LETTER GJE */, -// Cyrillic_IO = 0x06b3 /* U+0401 CYRILLIC CAPITAL LETTER IO */, -// Ukrainian_IE = 0x06b4 /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */, -// Ukranian_JE = 0x06b4 /* deprecated */, -// Macedonia_DSE = 0x06b5 /* U+0405 CYRILLIC CAPITAL LETTER DZE */, -// Ukrainian_I = 0x06b6 /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */, -// Ukranian_I = 0x06b6 /* deprecated */, -// Ukrainian_YI = 0x06b7 /* U+0407 CYRILLIC CAPITAL LETTER YI */, -// Ukranian_YI = 0x06b7 /* deprecated */, -// Cyrillic_JE = 0x06b8 /* U+0408 CYRILLIC CAPITAL LETTER JE */, -// Serbian_JE = 0x06b8 /* deprecated */, -// Cyrillic_LJE = 0x06b9 /* U+0409 CYRILLIC CAPITAL LETTER LJE */, -// Serbian_LJE = 0x06b9 /* deprecated */, -// Cyrillic_NJE = 0x06ba /* U+040A CYRILLIC CAPITAL LETTER NJE */, -// Serbian_NJE = 0x06ba /* deprecated */, -// Serbian_TSHE = 0x06bb /* U+040B CYRILLIC CAPITAL LETTER TSHE */, -// Macedonia_KJE = 0x06bc /* U+040C CYRILLIC CAPITAL LETTER KJE */, -// Ukrainian_GHE_WITH_UPTURN = 0x06bd /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */, -// Byelorussian_SHORTU = 0x06be /* U+040E CYRILLIC CAPITAL LETTER SHORT U */, -// Cyrillic_DZHE = 0x06bf /* U+040F CYRILLIC CAPITAL LETTER DZHE */, -// Serbian_DZE = 0x06bf /* deprecated */, -// Cyrillic_yu = 0x06c0 /* U+044E CYRILLIC SMALL LETTER YU */, -// Cyrillic_a = 0x06c1 /* U+0430 CYRILLIC SMALL LETTER A */, -// Cyrillic_be = 0x06c2 /* U+0431 CYRILLIC SMALL LETTER BE */, -// Cyrillic_tse = 0x06c3 /* U+0446 CYRILLIC SMALL LETTER TSE */, -// Cyrillic_de = 0x06c4 /* U+0434 CYRILLIC SMALL LETTER DE */, -// Cyrillic_ie = 0x06c5 /* U+0435 CYRILLIC SMALL LETTER IE */, -// Cyrillic_ef = 0x06c6 /* U+0444 CYRILLIC SMALL LETTER EF */, -// Cyrillic_ghe = 0x06c7 /* U+0433 CYRILLIC SMALL LETTER GHE */, -// Cyrillic_ha = 0x06c8 /* U+0445 CYRILLIC SMALL LETTER HA */, -// Cyrillic_i = 0x06c9 /* U+0438 CYRILLIC SMALL LETTER I */, -// Cyrillic_shorti = 0x06ca /* U+0439 CYRILLIC SMALL LETTER SHORT I */, -// Cyrillic_ka = 0x06cb /* U+043A CYRILLIC SMALL LETTER KA */, -// Cyrillic_el = 0x06cc /* U+043B CYRILLIC SMALL LETTER EL */, -// Cyrillic_em = 0x06cd /* U+043C CYRILLIC SMALL LETTER EM */, -// Cyrillic_en = 0x06ce /* U+043D CYRILLIC SMALL LETTER EN */, -// Cyrillic_o = 0x06cf /* U+043E CYRILLIC SMALL LETTER O */, -// Cyrillic_pe = 0x06d0 /* U+043F CYRILLIC SMALL LETTER PE */, -// Cyrillic_ya = 0x06d1 /* U+044F CYRILLIC SMALL LETTER YA */, -// Cyrillic_er = 0x06d2 /* U+0440 CYRILLIC SMALL LETTER ER */, -// Cyrillic_es = 0x06d3 /* U+0441 CYRILLIC SMALL LETTER ES */, -// Cyrillic_te = 0x06d4 /* U+0442 CYRILLIC SMALL LETTER TE */, -// Cyrillic_u = 0x06d5 /* U+0443 CYRILLIC SMALL LETTER U */, -// Cyrillic_zhe = 0x06d6 /* U+0436 CYRILLIC SMALL LETTER ZHE */, -// Cyrillic_ve = 0x06d7 /* U+0432 CYRILLIC SMALL LETTER VE */, -// Cyrillic_softsign = 0x06d8 /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */, -// Cyrillic_yeru = 0x06d9 /* U+044B CYRILLIC SMALL LETTER YERU */, -// Cyrillic_ze = 0x06da /* U+0437 CYRILLIC SMALL LETTER ZE */, -// Cyrillic_sha = 0x06db /* U+0448 CYRILLIC SMALL LETTER SHA */, -// Cyrillic_e = 0x06dc /* U+044D CYRILLIC SMALL LETTER E */, -// Cyrillic_shcha = 0x06dd /* U+0449 CYRILLIC SMALL LETTER SHCHA */, -// Cyrillic_che = 0x06de /* U+0447 CYRILLIC SMALL LETTER CHE */, -// Cyrillic_hardsign = 0x06df /* U+044A CYRILLIC SMALL LETTER HARD SIGN */, -// Cyrillic_YU = 0x06e0 /* U+042E CYRILLIC CAPITAL LETTER YU */, -// Cyrillic_A = 0x06e1 /* U+0410 CYRILLIC CAPITAL LETTER A */, -// Cyrillic_BE = 0x06e2 /* U+0411 CYRILLIC CAPITAL LETTER BE */, -// Cyrillic_TSE = 0x06e3 /* U+0426 CYRILLIC CAPITAL LETTER TSE */, -// Cyrillic_DE = 0x06e4 /* U+0414 CYRILLIC CAPITAL LETTER DE */, -// Cyrillic_IE = 0x06e5 /* U+0415 CYRILLIC CAPITAL LETTER IE */, -// Cyrillic_EF = 0x06e6 /* U+0424 CYRILLIC CAPITAL LETTER EF */, -// Cyrillic_GHE = 0x06e7 /* U+0413 CYRILLIC CAPITAL LETTER GHE */, -// Cyrillic_HA = 0x06e8 /* U+0425 CYRILLIC CAPITAL LETTER HA */, -// Cyrillic_I = 0x06e9 /* U+0418 CYRILLIC CAPITAL LETTER I */, -// Cyrillic_SHORTI = 0x06ea /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */, -// Cyrillic_KA = 0x06eb /* U+041A CYRILLIC CAPITAL LETTER KA */, -// Cyrillic_EL = 0x06ec /* U+041B CYRILLIC CAPITAL LETTER EL */, -// Cyrillic_EM = 0x06ed /* U+041C CYRILLIC CAPITAL LETTER EM */, -// Cyrillic_EN = 0x06ee /* U+041D CYRILLIC CAPITAL LETTER EN */, -// Cyrillic_O = 0x06ef /* U+041E CYRILLIC CAPITAL LETTER O */, -// Cyrillic_PE = 0x06f0 /* U+041F CYRILLIC CAPITAL LETTER PE */, -// Cyrillic_YA = 0x06f1 /* U+042F CYRILLIC CAPITAL LETTER YA */, -// Cyrillic_ER = 0x06f2 /* U+0420 CYRILLIC CAPITAL LETTER ER */, -// Cyrillic_ES = 0x06f3 /* U+0421 CYRILLIC CAPITAL LETTER ES */, -// Cyrillic_TE = 0x06f4 /* U+0422 CYRILLIC CAPITAL LETTER TE */, -// Cyrillic_U = 0x06f5 /* U+0423 CYRILLIC CAPITAL LETTER U */, -// Cyrillic_ZHE = 0x06f6 /* U+0416 CYRILLIC CAPITAL LETTER ZHE */, -// Cyrillic_VE = 0x06f7 /* U+0412 CYRILLIC CAPITAL LETTER VE */, -// Cyrillic_SOFTSIGN = 0x06f8 /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */, -// Cyrillic_YERU = 0x06f9 /* U+042B CYRILLIC CAPITAL LETTER YERU */, -// Cyrillic_ZE = 0x06fa /* U+0417 CYRILLIC CAPITAL LETTER ZE */, -// Cyrillic_SHA = 0x06fb /* U+0428 CYRILLIC CAPITAL LETTER SHA */, -// Cyrillic_E = 0x06fc /* U+042D CYRILLIC CAPITAL LETTER E */, -// Cyrillic_SHCHA = 0x06fd /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */, -// Cyrillic_CHE = 0x06fe /* U+0427 CYRILLIC CAPITAL LETTER CHE */, -// Cyrillic_HARDSIGN = 0x06ff /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */, -// Greek_ALPHAaccent = 0x07a1 /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */, -// Greek_EPSILONaccent = 0x07a2 /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */, -// Greek_ETAaccent = 0x07a3 /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */, -// Greek_IOTAaccent = 0x07a4 /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */, -// Greek_IOTAdieresis = 0x07a5 /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */, -// Greek_IOTAdiaeresis = 0x07a5 /* old typo */, -// Greek_OMICRONaccent = 0x07a7 /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */, -// Greek_UPSILONaccent = 0x07a8 /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */, -// Greek_UPSILONdieresis = 0x07a9 /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */, -// Greek_OMEGAaccent = 0x07ab /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */, -// Greek_accentdieresis = 0x07ae /* U+0385 GREEK DIALYTIKA TONOS */, -// Greek_horizbar = 0x07af /* U+2015 HORIZONTAL BAR */, -// Greek_alphaaccent = 0x07b1 /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */, -// Greek_epsilonaccent = 0x07b2 /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */, -// Greek_etaaccent = 0x07b3 /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */, -// Greek_iotaaccent = 0x07b4 /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */, -// Greek_iotadieresis = 0x07b5 /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */, -// Greek_iotaaccentdieresis = 0x07b6 /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */, -// Greek_omicronaccent = 0x07b7 /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */, -// Greek_upsilonaccent = 0x07b8 /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */, -// Greek_upsilondieresis = 0x07b9 /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */, -// Greek_upsilonaccentdieresis = 0x07ba /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */, -// Greek_omegaaccent = 0x07bb /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */, -// Greek_ALPHA = 0x07c1 /* U+0391 GREEK CAPITAL LETTER ALPHA */, -// Greek_BETA = 0x07c2 /* U+0392 GREEK CAPITAL LETTER BETA */, -// Greek_GAMMA = 0x07c3 /* U+0393 GREEK CAPITAL LETTER GAMMA */, -// Greek_DELTA = 0x07c4 /* U+0394 GREEK CAPITAL LETTER DELTA */, -// Greek_EPSILON = 0x07c5 /* U+0395 GREEK CAPITAL LETTER EPSILON */, -// Greek_ZETA = 0x07c6 /* U+0396 GREEK CAPITAL LETTER ZETA */, -// Greek_ETA = 0x07c7 /* U+0397 GREEK CAPITAL LETTER ETA */, -// Greek_THETA = 0x07c8 /* U+0398 GREEK CAPITAL LETTER THETA */, -// Greek_IOTA = 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */, -// Greek_KAPPA = 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */, -// Greek_LAMDA = 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */, -// Greek_LAMBDA = 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */, -// Greek_MU = 0x07cc /* U+039C GREEK CAPITAL LETTER MU */, -// Greek_NU = 0x07cd /* U+039D GREEK CAPITAL LETTER NU */, -// Greek_XI = 0x07ce /* U+039E GREEK CAPITAL LETTER XI */, -// Greek_OMICRON = 0x07cf /* U+039F GREEK CAPITAL LETTER OMICRON */, -// Greek_PI = 0x07d0 /* U+03A0 GREEK CAPITAL LETTER PI */, -// Greek_RHO = 0x07d1 /* U+03A1 GREEK CAPITAL LETTER RHO */, -// Greek_SIGMA = 0x07d2 /* U+03A3 GREEK CAPITAL LETTER SIGMA */, -// Greek_TAU = 0x07d4 /* U+03A4 GREEK CAPITAL LETTER TAU */, -// Greek_UPSILON = 0x07d5 /* U+03A5 GREEK CAPITAL LETTER UPSILON */, -// Greek_PHI = 0x07d6 /* U+03A6 GREEK CAPITAL LETTER PHI */, -// Greek_CHI = 0x07d7 /* U+03A7 GREEK CAPITAL LETTER CHI */, -// Greek_PSI = 0x07d8 /* U+03A8 GREEK CAPITAL LETTER PSI */, -// Greek_OMEGA = 0x07d9 /* U+03A9 GREEK CAPITAL LETTER OMEGA */, -// Greek_alpha = 0x07e1 /* U+03B1 GREEK SMALL LETTER ALPHA */, -// Greek_beta = 0x07e2 /* U+03B2 GREEK SMALL LETTER BETA */, -// Greek_gamma = 0x07e3 /* U+03B3 GREEK SMALL LETTER GAMMA */, -// Greek_delta = 0x07e4 /* U+03B4 GREEK SMALL LETTER DELTA */, -// Greek_epsilon = 0x07e5 /* U+03B5 GREEK SMALL LETTER EPSILON */, -// Greek_zeta = 0x07e6 /* U+03B6 GREEK SMALL LETTER ZETA */, -// Greek_eta = 0x07e7 /* U+03B7 GREEK SMALL LETTER ETA */, -// Greek_theta = 0x07e8 /* U+03B8 GREEK SMALL LETTER THETA */, -// Greek_iota = 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */, -// Greek_kappa = 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */, -// Greek_lamda = 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */, -// Greek_lambda = 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */, -// Greek_mu = 0x07ec /* U+03BC GREEK SMALL LETTER MU */, -// Greek_nu = 0x07ed /* U+03BD GREEK SMALL LETTER NU */, -// Greek_xi = 0x07ee /* U+03BE GREEK SMALL LETTER XI */, -// Greek_omicron = 0x07ef /* U+03BF GREEK SMALL LETTER OMICRON */, -// Greek_pi = 0x07f0 /* U+03C0 GREEK SMALL LETTER PI */, -// Greek_rho = 0x07f1 /* U+03C1 GREEK SMALL LETTER RHO */, -// Greek_sigma = 0x07f2 /* U+03C3 GREEK SMALL LETTER SIGMA */, -// Greek_finalsmallsigma = 0x07f3 /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */, -// Greek_tau = 0x07f4 /* U+03C4 GREEK SMALL LETTER TAU */, -// Greek_upsilon = 0x07f5 /* U+03C5 GREEK SMALL LETTER UPSILON */, -// Greek_phi = 0x07f6 /* U+03C6 GREEK SMALL LETTER PHI */, -// Greek_chi = 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */, -// Greek_psi = 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */, -// Greek_omega = 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */, -// Greek_switch = 0xff7e /* Alias for mode_switch */, -// leftradical = 0x08a1 /* U+23B7 RADICAL SYMBOL BOTTOM */, -// topleftradical = 0x08a2 /*(U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)*/, -// horizconnector = 0x08a3 /*(U+2500 BOX DRAWINGS LIGHT HORIZONTAL)*/, -// topintegral = 0x08a4 /* U+2320 TOP HALF INTEGRAL */, -// botintegral = 0x08a5 /* U+2321 BOTTOM HALF INTEGRAL */, -// vertconnector = 0x08a6 /*(U+2502 BOX DRAWINGS LIGHT VERTICAL)*/, -// topleftsqbracket = 0x08a7 /* U+23A1 LEFT SQUARE BRACKET UPPER CORNER */, -// botleftsqbracket = 0x08a8 /* U+23A3 LEFT SQUARE BRACKET LOWER CORNER */, -// toprightsqbracket = 0x08a9 /* U+23A4 RIGHT SQUARE BRACKET UPPER CORNER */, -// botrightsqbracket = 0x08aa /* U+23A6 RIGHT SQUARE BRACKET LOWER CORNER */, -// topleftparens = 0x08ab /* U+239B LEFT PARENTHESIS UPPER HOOK */, -// botleftparens = 0x08ac /* U+239D LEFT PARENTHESIS LOWER HOOK */, -// toprightparens = 0x08ad /* U+239E RIGHT PARENTHESIS UPPER HOOK */, -// botrightparens = 0x08ae /* U+23A0 RIGHT PARENTHESIS LOWER HOOK */, -// leftmiddlecurlybrace = 0x08af /* U+23A8 LEFT CURLY BRACKET MIDDLE PIECE */, -// rightmiddlecurlybrace = 0x08b0 /* U+23AC RIGHT CURLY BRACKET MIDDLE PIECE */, -// topleftsummation = 0x08b1, -// botleftsummation = 0x08b2, -// topvertsummationconnector = 0x08b3, -// botvertsummationconnector = 0x08b4, -// toprightsummation = 0x08b5, -// botrightsummation = 0x08b6, -// rightmiddlesummation = 0x08b7, -// lessthanequal = 0x08bc /* U+2264 LESS-THAN OR EQUAL TO */, -// notequal = 0x08bd /* U+2260 NOT EQUAL TO */, -// greaterthanequal = 0x08be /* U+2265 GREATER-THAN OR EQUAL TO */, -// integral = 0x08bf /* U+222B INTEGRAL */, -// therefore = 0x08c0 /* U+2234 THEREFORE */, -// variation = 0x08c1 /* U+221D PROPORTIONAL TO */, -// infinity = 0x08c2 /* U+221E INFINITY */, -// nabla = 0x08c5 /* U+2207 NABLA */, -// approximate = 0x08c8 /* U+223C TILDE OPERATOR */, -// similarequal = 0x08c9 /* U+2243 ASYMPTOTICALLY EQUAL TO */, -// ifonlyif = 0x08cd /* U+21D4 LEFT RIGHT DOUBLE ARROW */, -// implies = 0x08ce /* U+21D2 RIGHTWARDS DOUBLE ARROW */, -// identical = 0x08cf /* U+2261 IDENTICAL TO */, -// radical = 0x08d6 /* U+221A SQUARE ROOT */, -// includedin = 0x08da /* U+2282 SUBSET OF */, -// includes = 0x08db /* U+2283 SUPERSET OF */, -// intersection = 0x08dc /* U+2229 INTERSECTION */, -// union = 0x08dd /* U+222A UNION */, -// logicaland = 0x08de /* U+2227 LOGICAL AND */, -// logicalor = 0x08df /* U+2228 LOGICAL OR */, -// partialderivative = 0x08ef /* U+2202 PARTIAL DIFFERENTIAL */, -// function = 0x08f6 /* U+0192 LATIN SMALL LETTER F WITH HOOK */, -// leftarrow = 0x08fb /* U+2190 LEFTWARDS ARROW */, -// uparrow = 0x08fc /* U+2191 UPWARDS ARROW */, -// rightarrow = 0x08fd /* U+2192 RIGHTWARDS ARROW */, -// downarrow = 0x08fe /* U+2193 DOWNWARDS ARROW */, -// blank = 0x09df, -// soliddiamond = 0x09e0 /* U+25C6 BLACK DIAMOND */, -// checkerboard = 0x09e1 /* U+2592 MEDIUM SHADE */, -// ht = 0x09e2 /* U+2409 SYMBOL FOR HORIZONTAL TABULATION */, -// ff = 0x09e3 /* U+240C SYMBOL FOR FORM FEED */, -// cr = 0x09e4 /* U+240D SYMBOL FOR CARRIAGE RETURN */, -// lf = 0x09e5 /* U+240A SYMBOL FOR LINE FEED */, -// nl = 0x09e8 /* U+2424 SYMBOL FOR NEWLINE */, -// vt = 0x09e9 /* U+240B SYMBOL FOR VERTICAL TABULATION */, -// lowrightcorner = 0x09ea /* U+2518 BOX DRAWINGS LIGHT UP AND LEFT */, -// uprightcorner = 0x09eb /* U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT */, -// upleftcorner = 0x09ec /* U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT */, -// lowleftcorner = 0x09ed /* U+2514 BOX DRAWINGS LIGHT UP AND RIGHT */, -// crossinglines = 0x09ee /* U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */, -// horizlinescan1 = 0x09ef /* U+23BA HORIZONTAL SCAN LINE-1 */, -// horizlinescan3 = 0x09f0 /* U+23BB HORIZONTAL SCAN LINE-3 */, -// horizlinescan5 = 0x09f1 /* U+2500 BOX DRAWINGS LIGHT HORIZONTAL */, -// horizlinescan7 = 0x09f2 /* U+23BC HORIZONTAL SCAN LINE-7 */, -// horizlinescan9 = 0x09f3 /* U+23BD HORIZONTAL SCAN LINE-9 */, -// leftt = 0x09f4 /* U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT */, -// rightt = 0x09f5 /* U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT */, -// bott = 0x09f6 /* U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL */, -// topt = 0x09f7 /* U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */, -// vertbar = 0x09f8 /* U+2502 BOX DRAWINGS LIGHT VERTICAL */, -// emspace = 0x0aa1 /* U+2003 EM SPACE */, -// enspace = 0x0aa2 /* U+2002 EN SPACE */, -// em3space = 0x0aa3 /* U+2004 THREE-PER-EM SPACE */, -// em4space = 0x0aa4 /* U+2005 FOUR-PER-EM SPACE */, -// digitspace = 0x0aa5 /* U+2007 FIGURE SPACE */, -// punctspace = 0x0aa6 /* U+2008 PUNCTUATION SPACE */, -// thinspace = 0x0aa7 /* U+2009 THIN SPACE */, -// hairspace = 0x0aa8 /* U+200A HAIR SPACE */, -// emdash = 0x0aa9 /* U+2014 EM DASH */, -// endash = 0x0aaa /* U+2013 EN DASH */, -// signifblank = 0x0aac /*(U+2423 OPEN BOX)*/, -// ellipsis = 0x0aae /* U+2026 HORIZONTAL ELLIPSIS */, -// doubbaselinedot = 0x0aaf /* U+2025 TWO DOT LEADER */, -// onethird = 0x0ab0 /* U+2153 VULGAR FRACTION ONE THIRD */, -// twothirds = 0x0ab1 /* U+2154 VULGAR FRACTION TWO THIRDS */, -// onefifth = 0x0ab2 /* U+2155 VULGAR FRACTION ONE FIFTH */, -// twofifths = 0x0ab3 /* U+2156 VULGAR FRACTION TWO FIFTHS */, -// threefifths = 0x0ab4 /* U+2157 VULGAR FRACTION THREE FIFTHS */, -// fourfifths = 0x0ab5 /* U+2158 VULGAR FRACTION FOUR FIFTHS */, -// onesixth = 0x0ab6 /* U+2159 VULGAR FRACTION ONE SIXTH */, -// fivesixths = 0x0ab7 /* U+215A VULGAR FRACTION FIVE SIXTHS */, -// careof = 0x0ab8 /* U+2105 CARE OF */, -// figdash = 0x0abb /* U+2012 FIGURE DASH */, -// leftanglebracket = 0x0abc /*(U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)*/, -// decimalpoint = 0x0abd /*(U+002E FULL STOP)*/, -// rightanglebracket = 0x0abe /*(U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)*/, -// marker = 0x0abf, -// oneeighth = 0x0ac3 /* U+215B VULGAR FRACTION ONE EIGHTH */, -// threeeighths = 0x0ac4 /* U+215C VULGAR FRACTION THREE EIGHTHS */, -// fiveeighths = 0x0ac5 /* U+215D VULGAR FRACTION FIVE EIGHTHS */, -// seveneighths = 0x0ac6 /* U+215E VULGAR FRACTION SEVEN EIGHTHS */, -// trademark = 0x0ac9 /* U+2122 TRADE MARK SIGN */, -// signaturemark = 0x0aca /*(U+2613 SALTIRE)*/, -// trademarkincircle = 0x0acb, -// leftopentriangle = 0x0acc /*(U+25C1 WHITE LEFT-POINTING TRIANGLE)*/, -// rightopentriangle = 0x0acd /*(U+25B7 WHITE RIGHT-POINTING TRIANGLE)*/, -// emopencircle = 0x0ace /*(U+25CB WHITE CIRCLE)*/, -// emopenrectangle = 0x0acf /*(U+25AF WHITE VERTICAL RECTANGLE)*/, -// leftsinglequotemark = 0x0ad0 /* U+2018 LEFT SINGLE QUOTATION MARK */, -// rightsinglequotemark = 0x0ad1 /* U+2019 RIGHT SINGLE QUOTATION MARK */, -// leftdoublequotemark = 0x0ad2 /* U+201C LEFT DOUBLE QUOTATION MARK */, -// rightdoublequotemark = 0x0ad3 /* U+201D RIGHT DOUBLE QUOTATION MARK */, -// prescription = 0x0ad4 /* U+211E PRESCRIPTION TAKE */, -// permille = 0x0ad5 /* U+2030 PER MILLE SIGN */, -// minutes = 0x0ad6 /* U+2032 PRIME */, -// seconds = 0x0ad7 /* U+2033 DOUBLE PRIME */, -// latincross = 0x0ad9 /* U+271D LATIN CROSS */, -// hexagram = 0x0ada, -// filledrectbullet = 0x0adb /*(U+25AC BLACK RECTANGLE)*/, -// filledlefttribullet = 0x0adc /*(U+25C0 BLACK LEFT-POINTING TRIANGLE)*/, -// filledrighttribullet = 0x0add /*(U+25B6 BLACK RIGHT-POINTING TRIANGLE)*/, -// emfilledcircle = 0x0ade /*(U+25CF BLACK CIRCLE)*/, -// emfilledrect = 0x0adf /*(U+25AE BLACK VERTICAL RECTANGLE)*/, -// enopencircbullet = 0x0ae0 /*(U+25E6 WHITE BULLET)*/, -// enopensquarebullet = 0x0ae1 /*(U+25AB WHITE SMALL SQUARE)*/, -// openrectbullet = 0x0ae2 /*(U+25AD WHITE RECTANGLE)*/, -// opentribulletup = 0x0ae3 /*(U+25B3 WHITE UP-POINTING TRIANGLE)*/, -// opentribulletdown = 0x0ae4 /*(U+25BD WHITE DOWN-POINTING TRIANGLE)*/, -// openstar = 0x0ae5 /*(U+2606 WHITE STAR)*/, -// enfilledcircbullet = 0x0ae6 /*(U+2022 BULLET)*/, -// enfilledsqbullet = 0x0ae7 /*(U+25AA BLACK SMALL SQUARE)*/, -// filledtribulletup = 0x0ae8 /*(U+25B2 BLACK UP-POINTING TRIANGLE)*/, -// filledtribulletdown = 0x0ae9 /*(U+25BC BLACK DOWN-POINTING TRIANGLE)*/, -// leftpointer = 0x0aea /*(U+261C WHITE LEFT POINTING INDEX)*/, -// rightpointer = 0x0aeb /*(U+261E WHITE RIGHT POINTING INDEX)*/, -// club = 0x0aec /* U+2663 BLACK CLUB SUIT */, -// diamond = 0x0aed /* U+2666 BLACK DIAMOND SUIT */, -// heart = 0x0aee /* U+2665 BLACK HEART SUIT */, -// maltesecross = 0x0af0 /* U+2720 MALTESE CROSS */, -// dagger = 0x0af1 /* U+2020 DAGGER */, -// doubledagger = 0x0af2 /* U+2021 DOUBLE DAGGER */, -// checkmark = 0x0af3 /* U+2713 CHECK MARK */, -// ballotcross = 0x0af4 /* U+2717 BALLOT X */, -// musicalsharp = 0x0af5 /* U+266F MUSIC SHARP SIGN */, -// musicalflat = 0x0af6 /* U+266D MUSIC FLAT SIGN */, -// malesymbol = 0x0af7 /* U+2642 MALE SIGN */, -// femalesymbol = 0x0af8 /* U+2640 FEMALE SIGN */, -// telephone = 0x0af9 /* U+260E BLACK TELEPHONE */, -// telephonerecorder = 0x0afa /* U+2315 TELEPHONE RECORDER */, -// phonographcopyright = 0x0afb /* U+2117 SOUND RECORDING COPYRIGHT */, -// caret = 0x0afc /* U+2038 CARET */, -// singlelowquotemark = 0x0afd /* U+201A SINGLE LOW-9 QUOTATION MARK */, -// doublelowquotemark = 0x0afe /* U+201E DOUBLE LOW-9 QUOTATION MARK */, -// cursor = 0x0aff, -// leftcaret = 0x0ba3 /*(U+003C LESS-THAN SIGN)*/, -// rightcaret = 0x0ba6 /*(U+003E GREATER-THAN SIGN)*/, -// downcaret = 0x0ba8 /*(U+2228 LOGICAL OR)*/, -// upcaret = 0x0ba9 /*(U+2227 LOGICAL AND)*/, -// overbar = 0x0bc0 /*(U+00AF MACRON)*/, -// downtack = 0x0bc2 /* U+22A4 DOWN TACK */, -// upshoe = 0x0bc3 /*(U+2229 INTERSECTION)*/, -// downstile = 0x0bc4 /* U+230A LEFT FLOOR */, -// underbar = 0x0bc6 /*(U+005F LOW LINE)*/, -// jot = 0x0bca /* U+2218 RING OPERATOR */, -// quad = 0x0bcc /* U+2395 APL FUNCTIONAL SYMBOL QUAD */, -// uptack = 0x0bce /* U+22A5 UP TACK */, -// circle = 0x0bcf /* U+25CB WHITE CIRCLE */, -// upstile = 0x0bd3 /* U+2308 LEFT CEILING */, -// downshoe = 0x0bd6 /*(U+222A UNION)*/, -// rightshoe = 0x0bd8 /*(U+2283 SUPERSET OF)*/, -// leftshoe = 0x0bda /*(U+2282 SUBSET OF)*/, -// lefttack = 0x0bdc /* U+22A3 LEFT TACK */, -// righttack = 0x0bfc /* U+22A2 RIGHT TACK */, -// hebrew_doublelowline = 0x0cdf /* U+2017 DOUBLE LOW LINE */, -// hebrew_aleph = 0x0ce0 /* U+05D0 HEBREW LETTER ALEF */, -// hebrew_bet = 0x0ce1 /* U+05D1 HEBREW LETTER BET */, -// hebrew_beth = 0x0ce1 /* deprecated */, -// hebrew_gimel = 0x0ce2 /* U+05D2 HEBREW LETTER GIMEL */, -// hebrew_gimmel = 0x0ce2 /* deprecated */, -// hebrew_dalet = 0x0ce3 /* U+05D3 HEBREW LETTER DALET */, -// hebrew_daleth = 0x0ce3 /* deprecated */, -// hebrew_he = 0x0ce4 /* U+05D4 HEBREW LETTER HE */, -// hebrew_waw = 0x0ce5 /* U+05D5 HEBREW LETTER VAV */, -// hebrew_zain = 0x0ce6 /* U+05D6 HEBREW LETTER ZAYIN */, -// hebrew_zayin = 0x0ce6 /* deprecated */, -// hebrew_chet = 0x0ce7 /* U+05D7 HEBREW LETTER HET */, -// hebrew_het = 0x0ce7 /* deprecated */, -// hebrew_tet = 0x0ce8 /* U+05D8 HEBREW LETTER TET */, -// hebrew_teth = 0x0ce8 /* deprecated */, -// hebrew_yod = 0x0ce9 /* U+05D9 HEBREW LETTER YOD */, -// hebrew_finalkaph = 0x0cea /* U+05DA HEBREW LETTER FINAL KAF */, -// hebrew_kaph = 0x0ceb /* U+05DB HEBREW LETTER KAF */, -// hebrew_lamed = 0x0cec /* U+05DC HEBREW LETTER LAMED */, -// hebrew_finalmem = 0x0ced /* U+05DD HEBREW LETTER FINAL MEM */, -// hebrew_mem = 0x0cee /* U+05DE HEBREW LETTER MEM */, -// hebrew_finalnun = 0x0cef /* U+05DF HEBREW LETTER FINAL NUN */, -// hebrew_nun = 0x0cf0 /* U+05E0 HEBREW LETTER NUN */, -// hebrew_samech = 0x0cf1 /* U+05E1 HEBREW LETTER SAMEKH */, -// hebrew_samekh = 0x0cf1 /* deprecated */, -// hebrew_ayin = 0x0cf2 /* U+05E2 HEBREW LETTER AYIN */, -// hebrew_finalpe = 0x0cf3 /* U+05E3 HEBREW LETTER FINAL PE */, -// hebrew_pe = 0x0cf4 /* U+05E4 HEBREW LETTER PE */, -// hebrew_finalzade = 0x0cf5 /* U+05E5 HEBREW LETTER FINAL TSADI */, -// hebrew_finalzadi = 0x0cf5 /* deprecated */, -// hebrew_zade = 0x0cf6 /* U+05E6 HEBREW LETTER TSADI */, -// hebrew_zadi = 0x0cf6 /* deprecated */, -// hebrew_qoph = 0x0cf7 /* U+05E7 HEBREW LETTER QOF */, -// hebrew_kuf = 0x0cf7 /* deprecated */, -// hebrew_resh = 0x0cf8 /* U+05E8 HEBREW LETTER RESH */, -// hebrew_shin = 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */, -// hebrew_taw = 0x0cfa /* U+05EA HEBREW LETTER TAV */, -// hebrew_taf = 0x0cfa /* deprecated */, -// Hebrew_switch = 0xff7e /* Alias for mode_switch */, -// Thai_kokai = 0x0da1 /* U+0E01 THAI CHARACTER KO KAI */, -// Thai_khokhai = 0x0da2 /* U+0E02 THAI CHARACTER KHO KHAI */, -// Thai_khokhuat = 0x0da3 /* U+0E03 THAI CHARACTER KHO KHUAT */, -// Thai_khokhwai = 0x0da4 /* U+0E04 THAI CHARACTER KHO KHWAI */, -// Thai_khokhon = 0x0da5 /* U+0E05 THAI CHARACTER KHO KHON */, -// Thai_khorakhang = 0x0da6 /* U+0E06 THAI CHARACTER KHO RAKHANG */, -// Thai_ngongu = 0x0da7 /* U+0E07 THAI CHARACTER NGO NGU */, -// Thai_chochan = 0x0da8 /* U+0E08 THAI CHARACTER CHO CHAN */, -// Thai_choching = 0x0da9 /* U+0E09 THAI CHARACTER CHO CHING */, -// Thai_chochang = 0x0daa /* U+0E0A THAI CHARACTER CHO CHANG */, -// Thai_soso = 0x0dab /* U+0E0B THAI CHARACTER SO SO */, -// Thai_chochoe = 0x0dac /* U+0E0C THAI CHARACTER CHO CHOE */, -// Thai_yoying = 0x0dad /* U+0E0D THAI CHARACTER YO YING */, -// Thai_dochada = 0x0dae /* U+0E0E THAI CHARACTER DO CHADA */, -// Thai_topatak = 0x0daf /* U+0E0F THAI CHARACTER TO PATAK */, -// Thai_thothan = 0x0db0 /* U+0E10 THAI CHARACTER THO THAN */, -// Thai_thonangmontho = 0x0db1 /* U+0E11 THAI CHARACTER THO NANGMONTHO */, -// Thai_thophuthao = 0x0db2 /* U+0E12 THAI CHARACTER THO PHUTHAO */, -// Thai_nonen = 0x0db3 /* U+0E13 THAI CHARACTER NO NEN */, -// Thai_dodek = 0x0db4 /* U+0E14 THAI CHARACTER DO DEK */, -// Thai_totao = 0x0db5 /* U+0E15 THAI CHARACTER TO TAO */, -// Thai_thothung = 0x0db6 /* U+0E16 THAI CHARACTER THO THUNG */, -// Thai_thothahan = 0x0db7 /* U+0E17 THAI CHARACTER THO THAHAN */, -// Thai_thothong = 0x0db8 /* U+0E18 THAI CHARACTER THO THONG */, -// Thai_nonu = 0x0db9 /* U+0E19 THAI CHARACTER NO NU */, -// Thai_bobaimai = 0x0dba /* U+0E1A THAI CHARACTER BO BAIMAI */, -// Thai_popla = 0x0dbb /* U+0E1B THAI CHARACTER PO PLA */, -// Thai_phophung = 0x0dbc /* U+0E1C THAI CHARACTER PHO PHUNG */, -// Thai_fofa = 0x0dbd /* U+0E1D THAI CHARACTER FO FA */, -// Thai_phophan = 0x0dbe /* U+0E1E THAI CHARACTER PHO PHAN */, -// Thai_fofan = 0x0dbf /* U+0E1F THAI CHARACTER FO FAN */, -// Thai_phosamphao = 0x0dc0 /* U+0E20 THAI CHARACTER PHO SAMPHAO */, -// Thai_moma = 0x0dc1 /* U+0E21 THAI CHARACTER MO MA */, -// Thai_yoyak = 0x0dc2 /* U+0E22 THAI CHARACTER YO YAK */, -// Thai_rorua = 0x0dc3 /* U+0E23 THAI CHARACTER RO RUA */, -// Thai_ru = 0x0dc4 /* U+0E24 THAI CHARACTER RU */, -// Thai_loling = 0x0dc5 /* U+0E25 THAI CHARACTER LO LING */, -// Thai_lu = 0x0dc6 /* U+0E26 THAI CHARACTER LU */, -// Thai_wowaen = 0x0dc7 /* U+0E27 THAI CHARACTER WO WAEN */, -// Thai_sosala = 0x0dc8 /* U+0E28 THAI CHARACTER SO SALA */, -// Thai_sorusi = 0x0dc9 /* U+0E29 THAI CHARACTER SO RUSI */, -// Thai_sosua = 0x0dca /* U+0E2A THAI CHARACTER SO SUA */, -// Thai_hohip = 0x0dcb /* U+0E2B THAI CHARACTER HO HIP */, -// Thai_lochula = 0x0dcc /* U+0E2C THAI CHARACTER LO CHULA */, -// Thai_oang = 0x0dcd /* U+0E2D THAI CHARACTER O ANG */, -// Thai_honokhuk = 0x0dce /* U+0E2E THAI CHARACTER HO NOKHUK */, -// Thai_paiyannoi = 0x0dcf /* U+0E2F THAI CHARACTER PAIYANNOI */, -// Thai_saraa = 0x0dd0 /* U+0E30 THAI CHARACTER SARA A */, -// Thai_maihanakat = 0x0dd1 /* U+0E31 THAI CHARACTER MAI HAN-AKAT */, -// Thai_saraaa = 0x0dd2 /* U+0E32 THAI CHARACTER SARA AA */, -// Thai_saraam = 0x0dd3 /* U+0E33 THAI CHARACTER SARA AM */, -// Thai_sarai = 0x0dd4 /* U+0E34 THAI CHARACTER SARA I */, -// Thai_saraii = 0x0dd5 /* U+0E35 THAI CHARACTER SARA II */, -// Thai_saraue = 0x0dd6 /* U+0E36 THAI CHARACTER SARA UE */, -// Thai_sarauee = 0x0dd7 /* U+0E37 THAI CHARACTER SARA UEE */, -// Thai_sarau = 0x0dd8 /* U+0E38 THAI CHARACTER SARA U */, -// Thai_sarauu = 0x0dd9 /* U+0E39 THAI CHARACTER SARA UU */, -// Thai_phinthu = 0x0dda /* U+0E3A THAI CHARACTER PHINTHU */, -// Thai_maihanakat_maitho = 0x0dde, -// Thai_baht = 0x0ddf /* U+0E3F THAI CURRENCY SYMBOL BAHT */, -// Thai_sarae = 0x0de0 /* U+0E40 THAI CHARACTER SARA E */, -// Thai_saraae = 0x0de1 /* U+0E41 THAI CHARACTER SARA AE */, -// Thai_sarao = 0x0de2 /* U+0E42 THAI CHARACTER SARA O */, -// Thai_saraaimaimuan = 0x0de3 /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */, -// Thai_saraaimaimalai = 0x0de4 /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */, -// Thai_lakkhangyao = 0x0de5 /* U+0E45 THAI CHARACTER LAKKHANGYAO */, -// Thai_maiyamok = 0x0de6 /* U+0E46 THAI CHARACTER MAIYAMOK */, -// Thai_maitaikhu = 0x0de7 /* U+0E47 THAI CHARACTER MAITAIKHU */, -// Thai_maiek = 0x0de8 /* U+0E48 THAI CHARACTER MAI EK */, -// Thai_maitho = 0x0de9 /* U+0E49 THAI CHARACTER MAI THO */, -// Thai_maitri = 0x0dea /* U+0E4A THAI CHARACTER MAI TRI */, -// Thai_maichattawa = 0x0deb /* U+0E4B THAI CHARACTER MAI CHATTAWA */, -// Thai_thanthakhat = 0x0dec /* U+0E4C THAI CHARACTER THANTHAKHAT */, -// Thai_nikhahit = 0x0ded /* U+0E4D THAI CHARACTER NIKHAHIT */, -// Thai_leksun = 0x0df0 /* U+0E50 THAI DIGIT ZERO */, -// Thai_leknung = 0x0df1 /* U+0E51 THAI DIGIT ONE */, -// Thai_leksong = 0x0df2 /* U+0E52 THAI DIGIT TWO */, -// Thai_leksam = 0x0df3 /* U+0E53 THAI DIGIT THREE */, -// Thai_leksi = 0x0df4 /* U+0E54 THAI DIGIT FOUR */, -// Thai_lekha = 0x0df5 /* U+0E55 THAI DIGIT FIVE */, -// Thai_lekhok = 0x0df6 /* U+0E56 THAI DIGIT SIX */, -// Thai_lekchet = 0x0df7 /* U+0E57 THAI DIGIT SEVEN */, -// Thai_lekpaet = 0x0df8 /* U+0E58 THAI DIGIT EIGHT */, -// Thai_lekkao = 0x0df9 /* U+0E59 THAI DIGIT NINE */, -// Hangul = 0xff31 /* Hangul start/stop(toggle) */, -// Hangul_Start = 0xff32 /* Hangul start */, -// Hangul_End = 0xff33 /* Hangul end, English start */, -// Hangul_Hanja = 0xff34 /* Start Hangul->Hanja Conversion */, -// Hangul_Jamo = 0xff35 /* Hangul Jamo mode */, -// Hangul_Romaja = 0xff36 /* Hangul Romaja mode */, -// Hangul_Codeinput = 0xff37 /* Hangul code input mode */, -// Hangul_Jeonja = 0xff38 /* Jeonja mode */, -// Hangul_Banja = 0xff39 /* Banja mode */, -// Hangul_PreHanja = 0xff3a /* Pre Hanja conversion */, -// Hangul_PostHanja = 0xff3b /* Post Hanja conversion */, -// Hangul_SingleCandidate = 0xff3c /* Single candidate */, -// Hangul_MultipleCandidate = 0xff3d /* Multiple candidate */, -// Hangul_PreviousCandidate = 0xff3e /* Previous candidate */, -// Hangul_Special = 0xff3f /* Special symbols */, -// Hangul_switch = 0xff7e /* Alias for mode_switch */, -// 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 /*(U+20A9 WON SIGN)*/, -// Armenian_ligature_ew = 0x1000587 /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */, -// Armenian_full_stop = 0x1000589 /* U+0589 ARMENIAN FULL STOP */, -// Armenian_verjaket = 0x1000589 /* U+0589 ARMENIAN FULL STOP */, -// Armenian_separation_mark = 0x100055d /* U+055D ARMENIAN COMMA */, -// Armenian_but = 0x100055d /* U+055D ARMENIAN COMMA */, -// Armenian_hyphen = 0x100058a /* U+058A ARMENIAN HYPHEN */, -// Armenian_yentamna = 0x100058a /* U+058A ARMENIAN HYPHEN */, -// Armenian_exclam = 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */, -// Armenian_amanak = 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */, -// Armenian_accent = 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */, -// Armenian_shesht = 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */, -// Armenian_question = 0x100055e /* U+055E ARMENIAN QUESTION MARK */, -// Armenian_paruyk = 0x100055e /* U+055E ARMENIAN QUESTION MARK */, -// Armenian_AYB = 0x1000531 /* U+0531 ARMENIAN CAPITAL LETTER AYB */, -// Armenian_ayb = 0x1000561 /* U+0561 ARMENIAN SMALL LETTER AYB */, -// Armenian_BEN = 0x1000532 /* U+0532 ARMENIAN CAPITAL LETTER BEN */, -// Armenian_ben = 0x1000562 /* U+0562 ARMENIAN SMALL LETTER BEN */, -// Armenian_GIM = 0x1000533 /* U+0533 ARMENIAN CAPITAL LETTER GIM */, -// Armenian_gim = 0x1000563 /* U+0563 ARMENIAN SMALL LETTER GIM */, -// Armenian_DA = 0x1000534 /* U+0534 ARMENIAN CAPITAL LETTER DA */, -// Armenian_da = 0x1000564 /* U+0564 ARMENIAN SMALL LETTER DA */, -// Armenian_YECH = 0x1000535 /* U+0535 ARMENIAN CAPITAL LETTER ECH */, -// Armenian_yech = 0x1000565 /* U+0565 ARMENIAN SMALL LETTER ECH */, -// Armenian_ZA = 0x1000536 /* U+0536 ARMENIAN CAPITAL LETTER ZA */, -// Armenian_za = 0x1000566 /* U+0566 ARMENIAN SMALL LETTER ZA */, -// Armenian_E = 0x1000537 /* U+0537 ARMENIAN CAPITAL LETTER EH */, -// Armenian_e = 0x1000567 /* U+0567 ARMENIAN SMALL LETTER EH */, -// Armenian_AT = 0x1000538 /* U+0538 ARMENIAN CAPITAL LETTER ET */, -// Armenian_at = 0x1000568 /* U+0568 ARMENIAN SMALL LETTER ET */, -// Armenian_TO = 0x1000539 /* U+0539 ARMENIAN CAPITAL LETTER TO */, -// Armenian_to = 0x1000569 /* U+0569 ARMENIAN SMALL LETTER TO */, -// Armenian_ZHE = 0x100053a /* U+053A ARMENIAN CAPITAL LETTER ZHE */, -// Armenian_zhe = 0x100056a /* U+056A ARMENIAN SMALL LETTER ZHE */, -// Armenian_INI = 0x100053b /* U+053B ARMENIAN CAPITAL LETTER INI */, -// Armenian_ini = 0x100056b /* U+056B ARMENIAN SMALL LETTER INI */, -// Armenian_LYUN = 0x100053c /* U+053C ARMENIAN CAPITAL LETTER LIWN */, -// Armenian_lyun = 0x100056c /* U+056C ARMENIAN SMALL LETTER LIWN */, -// Armenian_KHE = 0x100053d /* U+053D ARMENIAN CAPITAL LETTER XEH */, -// Armenian_khe = 0x100056d /* U+056D ARMENIAN SMALL LETTER XEH */, -// Armenian_TSA = 0x100053e /* U+053E ARMENIAN CAPITAL LETTER CA */, -// Armenian_tsa = 0x100056e /* U+056E ARMENIAN SMALL LETTER CA */, -// Armenian_KEN = 0x100053f /* U+053F ARMENIAN CAPITAL LETTER KEN */, -// Armenian_ken = 0x100056f /* U+056F ARMENIAN SMALL LETTER KEN */, -// Armenian_HO = 0x1000540 /* U+0540 ARMENIAN CAPITAL LETTER HO */, -// Armenian_ho = 0x1000570 /* U+0570 ARMENIAN SMALL LETTER HO */, -// Armenian_DZA = 0x1000541 /* U+0541 ARMENIAN CAPITAL LETTER JA */, -// Armenian_dza = 0x1000571 /* U+0571 ARMENIAN SMALL LETTER JA */, -// Armenian_GHAT = 0x1000542 /* U+0542 ARMENIAN CAPITAL LETTER GHAD */, -// Armenian_ghat = 0x1000572 /* U+0572 ARMENIAN SMALL LETTER GHAD */, -// Armenian_TCHE = 0x1000543 /* U+0543 ARMENIAN CAPITAL LETTER CHEH */, -// Armenian_tche = 0x1000573 /* U+0573 ARMENIAN SMALL LETTER CHEH */, -// Armenian_MEN = 0x1000544 /* U+0544 ARMENIAN CAPITAL LETTER MEN */, -// Armenian_men = 0x1000574 /* U+0574 ARMENIAN SMALL LETTER MEN */, -// Armenian_HI = 0x1000545 /* U+0545 ARMENIAN CAPITAL LETTER YI */, -// Armenian_hi = 0x1000575 /* U+0575 ARMENIAN SMALL LETTER YI */, -// Armenian_NU = 0x1000546 /* U+0546 ARMENIAN CAPITAL LETTER NOW */, -// Armenian_nu = 0x1000576 /* U+0576 ARMENIAN SMALL LETTER NOW */, -// Armenian_SHA = 0x1000547 /* U+0547 ARMENIAN CAPITAL LETTER SHA */, -// Armenian_sha = 0x1000577 /* U+0577 ARMENIAN SMALL LETTER SHA */, -// Armenian_VO = 0x1000548 /* U+0548 ARMENIAN CAPITAL LETTER VO */, -// Armenian_vo = 0x1000578 /* U+0578 ARMENIAN SMALL LETTER VO */, -// Armenian_CHA = 0x1000549 /* U+0549 ARMENIAN CAPITAL LETTER CHA */, -// Armenian_cha = 0x1000579 /* U+0579 ARMENIAN SMALL LETTER CHA */, -// Armenian_PE = 0x100054a /* U+054A ARMENIAN CAPITAL LETTER PEH */, -// Armenian_pe = 0x100057a /* U+057A ARMENIAN SMALL LETTER PEH */, -// Armenian_JE = 0x100054b /* U+054B ARMENIAN CAPITAL LETTER JHEH */, -// Armenian_je = 0x100057b /* U+057B ARMENIAN SMALL LETTER JHEH */, -// Armenian_RA = 0x100054c /* U+054C ARMENIAN CAPITAL LETTER RA */, -// Armenian_ra = 0x100057c /* U+057C ARMENIAN SMALL LETTER RA */, -// Armenian_SE = 0x100054d /* U+054D ARMENIAN CAPITAL LETTER SEH */, -// Armenian_se = 0x100057d /* U+057D ARMENIAN SMALL LETTER SEH */, -// Armenian_VEV = 0x100054e /* U+054E ARMENIAN CAPITAL LETTER VEW */, -// Armenian_vev = 0x100057e /* U+057E ARMENIAN SMALL LETTER VEW */, -// Armenian_TYUN = 0x100054f /* U+054F ARMENIAN CAPITAL LETTER TIWN */, -// Armenian_tyun = 0x100057f /* U+057F ARMENIAN SMALL LETTER TIWN */, -// Armenian_RE = 0x1000550 /* U+0550 ARMENIAN CAPITAL LETTER REH */, -// Armenian_re = 0x1000580 /* U+0580 ARMENIAN SMALL LETTER REH */, -// Armenian_TSO = 0x1000551 /* U+0551 ARMENIAN CAPITAL LETTER CO */, -// Armenian_tso = 0x1000581 /* U+0581 ARMENIAN SMALL LETTER CO */, -// Armenian_VYUN = 0x1000552 /* U+0552 ARMENIAN CAPITAL LETTER YIWN */, -// Armenian_vyun = 0x1000582 /* U+0582 ARMENIAN SMALL LETTER YIWN */, -// Armenian_PYUR = 0x1000553 /* U+0553 ARMENIAN CAPITAL LETTER PIWR */, -// Armenian_pyur = 0x1000583 /* U+0583 ARMENIAN SMALL LETTER PIWR */, -// Armenian_KE = 0x1000554 /* U+0554 ARMENIAN CAPITAL LETTER KEH */, -// Armenian_ke = 0x1000584 /* U+0584 ARMENIAN SMALL LETTER KEH */, -// Armenian_O = 0x1000555 /* U+0555 ARMENIAN CAPITAL LETTER OH */, -// Armenian_o = 0x1000585 /* U+0585 ARMENIAN SMALL LETTER OH */, -// Armenian_FE = 0x1000556 /* U+0556 ARMENIAN CAPITAL LETTER FEH */, -// Armenian_fe = 0x1000586 /* U+0586 ARMENIAN SMALL LETTER FEH */, -// Armenian_apostrophe = 0x100055a /* U+055A ARMENIAN APOSTROPHE */, -// Georgian_an = 0x10010d0 /* U+10D0 GEORGIAN LETTER AN */, -// Georgian_ban = 0x10010d1 /* U+10D1 GEORGIAN LETTER BAN */, -// Georgian_gan = 0x10010d2 /* U+10D2 GEORGIAN LETTER GAN */, -// Georgian_don = 0x10010d3 /* U+10D3 GEORGIAN LETTER DON */, -// Georgian_en = 0x10010d4 /* U+10D4 GEORGIAN LETTER EN */, -// Georgian_vin = 0x10010d5 /* U+10D5 GEORGIAN LETTER VIN */, -// Georgian_zen = 0x10010d6 /* U+10D6 GEORGIAN LETTER ZEN */, -// Georgian_tan = 0x10010d7 /* U+10D7 GEORGIAN LETTER TAN */, -// Georgian_in = 0x10010d8 /* U+10D8 GEORGIAN LETTER IN */, -// Georgian_kan = 0x10010d9 /* U+10D9 GEORGIAN LETTER KAN */, -// Georgian_las = 0x10010da /* U+10DA GEORGIAN LETTER LAS */, -// Georgian_man = 0x10010db /* U+10DB GEORGIAN LETTER MAN */, -// Georgian_nar = 0x10010dc /* U+10DC GEORGIAN LETTER NAR */, -// Georgian_on = 0x10010dd /* U+10DD GEORGIAN LETTER ON */, -// Georgian_par = 0x10010de /* U+10DE GEORGIAN LETTER PAR */, -// Georgian_zhar = 0x10010df /* U+10DF GEORGIAN LETTER ZHAR */, -// Georgian_rae = 0x10010e0 /* U+10E0 GEORGIAN LETTER RAE */, -// Georgian_san = 0x10010e1 /* U+10E1 GEORGIAN LETTER SAN */, -// Georgian_tar = 0x10010e2 /* U+10E2 GEORGIAN LETTER TAR */, -// Georgian_un = 0x10010e3 /* U+10E3 GEORGIAN LETTER UN */, -// Georgian_phar = 0x10010e4 /* U+10E4 GEORGIAN LETTER PHAR */, -// Georgian_khar = 0x10010e5 /* U+10E5 GEORGIAN LETTER KHAR */, -// Georgian_ghan = 0x10010e6 /* U+10E6 GEORGIAN LETTER GHAN */, -// Georgian_qar = 0x10010e7 /* U+10E7 GEORGIAN LETTER QAR */, -// Georgian_shin = 0x10010e8 /* U+10E8 GEORGIAN LETTER SHIN */, -// Georgian_chin = 0x10010e9 /* U+10E9 GEORGIAN LETTER CHIN */, -// Georgian_can = 0x10010ea /* U+10EA GEORGIAN LETTER CAN */, -// Georgian_jil = 0x10010eb /* U+10EB GEORGIAN LETTER JIL */, -// Georgian_cil = 0x10010ec /* U+10EC GEORGIAN LETTER CIL */, -// Georgian_char = 0x10010ed /* U+10ED GEORGIAN LETTER CHAR */, -// Georgian_xan = 0x10010ee /* U+10EE GEORGIAN LETTER XAN */, -// Georgian_jhan = 0x10010ef /* U+10EF GEORGIAN LETTER JHAN */, -// Georgian_hae = 0x10010f0 /* U+10F0 GEORGIAN LETTER HAE */, -// Georgian_he = 0x10010f1 /* U+10F1 GEORGIAN LETTER HE */, -// Georgian_hie = 0x10010f2 /* U+10F2 GEORGIAN LETTER HIE */, -// Georgian_we = 0x10010f3 /* U+10F3 GEORGIAN LETTER WE */, -// Georgian_har = 0x10010f4 /* U+10F4 GEORGIAN LETTER HAR */, -// Georgian_hoe = 0x10010f5 /* U+10F5 GEORGIAN LETTER HOE */, -// Georgian_fi = 0x10010f6 /* U+10F6 GEORGIAN LETTER FI */, -// Xabovedot = 0x1001e8a /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */, -// Ibreve = 0x100012c /* U+012C LATIN CAPITAL LETTER I WITH BREVE */, -// Zstroke = 0x10001b5 /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */, -// Gcaron = 0x10001e6 /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */, -// Ocaron = 0x10001d1 /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */, -// Obarred = 0x100019f /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */, -// xabovedot = 0x1001e8b /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */, -// ibreve = 0x100012d /* U+012D LATIN SMALL LETTER I WITH BREVE */, -// zstroke = 0x10001b6 /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */, -// gcaron = 0x10001e7 /* U+01E7 LATIN SMALL LETTER G WITH CARON */, -// ocaron = 0x10001d2 /* U+01D2 LATIN SMALL LETTER O WITH CARON */, -// obarred = 0x1000275 /* U+0275 LATIN SMALL LETTER BARRED O */, -// SCHWA = 0x100018f /* U+018F LATIN CAPITAL LETTER SCHWA */, -// schwa = 0x1000259 /* U+0259 LATIN SMALL LETTER SCHWA */, -// EZH = 0x10001b7 /* U+01B7 LATIN CAPITAL LETTER EZH */, -// ezh = 0x1000292 /* U+0292 LATIN SMALL LETTER EZH */, -// Lbelowdot = 0x1001e36 /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */, -// lbelowdot = 0x1001e37 /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */, -// Abelowdot = 0x1001ea0 /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */, -// abelowdot = 0x1001ea1 /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */, -// Ahook = 0x1001ea2 /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */, -// ahook = 0x1001ea3 /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */, -// Acircumflexacute = 0x1001ea4 /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */, -// acircumflexacute = 0x1001ea5 /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */, -// Acircumflexgrave = 0x1001ea6 /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */, -// acircumflexgrave = 0x1001ea7 /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */, -// Acircumflexhook = 0x1001ea8 /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */, -// acircumflexhook = 0x1001ea9 /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */, -// Acircumflextilde = 0x1001eaa /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */, -// acircumflextilde = 0x1001eab /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */, -// Acircumflexbelowdot = 0x1001eac /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */, -// acircumflexbelowdot = 0x1001ead /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */, -// Abreveacute = 0x1001eae /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */, -// abreveacute = 0x1001eaf /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */, -// Abrevegrave = 0x1001eb0 /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */, -// abrevegrave = 0x1001eb1 /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */, -// Abrevehook = 0x1001eb2 /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */, -// abrevehook = 0x1001eb3 /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */, -// Abrevetilde = 0x1001eb4 /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */, -// abrevetilde = 0x1001eb5 /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */, -// Abrevebelowdot = 0x1001eb6 /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */, -// abrevebelowdot = 0x1001eb7 /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */, -// Ebelowdot = 0x1001eb8 /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */, -// ebelowdot = 0x1001eb9 /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */, -// Ehook = 0x1001eba /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */, -// ehook = 0x1001ebb /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */, -// Etilde = 0x1001ebc /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */, -// etilde = 0x1001ebd /* U+1EBD LATIN SMALL LETTER E WITH TILDE */, -// Ecircumflexacute = 0x1001ebe /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */, -// ecircumflexacute = 0x1001ebf /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */, -// Ecircumflexgrave = 0x1001ec0 /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */, -// ecircumflexgrave = 0x1001ec1 /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */, -// Ecircumflexhook = 0x1001ec2 /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */, -// ecircumflexhook = 0x1001ec3 /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */, -// Ecircumflextilde = 0x1001ec4 /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */, -// ecircumflextilde = 0x1001ec5 /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */, -// Ecircumflexbelowdot = 0x1001ec6 /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */, -// ecircumflexbelowdot = 0x1001ec7 /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */, -// Ihook = 0x1001ec8 /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */, -// ihook = 0x1001ec9 /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */, -// Ibelowdot = 0x1001eca /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */, -// ibelowdot = 0x1001ecb /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */, -// Obelowdot = 0x1001ecc /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */, -// obelowdot = 0x1001ecd /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */, -// Ohook = 0x1001ece /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */, -// ohook = 0x1001ecf /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */, -// Ocircumflexacute = 0x1001ed0 /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */, -// ocircumflexacute = 0x1001ed1 /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */, -// Ocircumflexgrave = 0x1001ed2 /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */, -// ocircumflexgrave = 0x1001ed3 /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */, -// Ocircumflexhook = 0x1001ed4 /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */, -// ocircumflexhook = 0x1001ed5 /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */, -// Ocircumflextilde = 0x1001ed6 /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */, -// ocircumflextilde = 0x1001ed7 /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */, -// Ocircumflexbelowdot = 0x1001ed8 /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */, -// ocircumflexbelowdot = 0x1001ed9 /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */, -// Ohornacute = 0x1001eda /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */, -// ohornacute = 0x1001edb /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */, -// Ohorngrave = 0x1001edc /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */, -// ohorngrave = 0x1001edd /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */, -// Ohornhook = 0x1001ede /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */, -// ohornhook = 0x1001edf /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */, -// Ohorntilde = 0x1001ee0 /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */, -// ohorntilde = 0x1001ee1 /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */, -// Ohornbelowdot = 0x1001ee2 /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */, -// ohornbelowdot = 0x1001ee3 /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */, -// Ubelowdot = 0x1001ee4 /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */, -// ubelowdot = 0x1001ee5 /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */, -// Uhook = 0x1001ee6 /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */, -// uhook = 0x1001ee7 /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */, -// Uhornacute = 0x1001ee8 /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */, -// uhornacute = 0x1001ee9 /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */, -// Uhorngrave = 0x1001eea /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */, -// uhorngrave = 0x1001eeb /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */, -// Uhornhook = 0x1001eec /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */, -// uhornhook = 0x1001eed /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */, -// Uhorntilde = 0x1001eee /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */, -// uhorntilde = 0x1001eef /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */, -// Uhornbelowdot = 0x1001ef0 /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */, -// uhornbelowdot = 0x1001ef1 /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */, -// Ybelowdot = 0x1001ef4 /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */, -// ybelowdot = 0x1001ef5 /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */, -// Yhook = 0x1001ef6 /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */, -// yhook = 0x1001ef7 /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */, -// Ytilde = 0x1001ef8 /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */, -// ytilde = 0x1001ef9 /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */, -// Ohorn = 0x10001a0 /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */, -// ohorn = 0x10001a1 /* U+01A1 LATIN SMALL LETTER O WITH HORN */, -// Uhorn = 0x10001af /* U+01AF LATIN CAPITAL LETTER U WITH HORN */, -// uhorn = 0x10001b0 /* U+01B0 LATIN SMALL LETTER U WITH HORN */, -// EcuSign = 0x10020a0 /* U+20A0 EURO-CURRENCY SIGN */, -// ColonSign = 0x10020a1 /* U+20A1 COLON SIGN */, -// CruzeiroSign = 0x10020a2 /* U+20A2 CRUZEIRO SIGN */, -// FFrancSign = 0x10020a3 /* U+20A3 FRENCH FRANC SIGN */, -// LiraSign = 0x10020a4 /* U+20A4 LIRA SIGN */, -// MillSign = 0x10020a5 /* U+20A5 MILL SIGN */, -// NairaSign = 0x10020a6 /* U+20A6 NAIRA SIGN */, -// PesetaSign = 0x10020a7 /* U+20A7 PESETA SIGN */, -// RupeeSign = 0x10020a8 /* U+20A8 RUPEE SIGN */, -// WonSign = 0x10020a9 /* U+20A9 WON SIGN */, -// NewSheqelSign = 0x10020aa /* U+20AA NEW SHEQEL SIGN */, -// DongSign = 0x10020ab /* U+20AB DONG SIGN */, -// EuroSign = 0x20ac /* U+20AC EURO SIGN */, -// zerosuperior = 0x1002070 /* U+2070 SUPERSCRIPT ZERO */, -// foursuperior = 0x1002074 /* U+2074 SUPERSCRIPT FOUR */, -// fivesuperior = 0x1002075 /* U+2075 SUPERSCRIPT FIVE */, -// sixsuperior = 0x1002076 /* U+2076 SUPERSCRIPT SIX */, -// sevensuperior = 0x1002077 /* U+2077 SUPERSCRIPT SEVEN */, -// eightsuperior = 0x1002078 /* U+2078 SUPERSCRIPT EIGHT */, -// ninesuperior = 0x1002079 /* U+2079 SUPERSCRIPT NINE */, -// zerosubscript = 0x1002080 /* U+2080 SUBSCRIPT ZERO */, -// onesubscript = 0x1002081 /* U+2081 SUBSCRIPT ONE */, -// twosubscript = 0x1002082 /* U+2082 SUBSCRIPT TWO */, -// threesubscript = 0x1002083 /* U+2083 SUBSCRIPT THREE */, -// foursubscript = 0x1002084 /* U+2084 SUBSCRIPT FOUR */, -// fivesubscript = 0x1002085 /* U+2085 SUBSCRIPT FIVE */, -// sixsubscript = 0x1002086 /* U+2086 SUBSCRIPT SIX */, -// sevensubscript = 0x1002087 /* U+2087 SUBSCRIPT SEVEN */, -// eightsubscript = 0x1002088 /* U+2088 SUBSCRIPT EIGHT */, -// ninesubscript = 0x1002089 /* U+2089 SUBSCRIPT NINE */, -// partdifferential = 0x1002202 /* U+2202 PARTIAL DIFFERENTIAL */, -// emptyset = 0x1002205 /* U+2205 NULL SET */, -// elementof = 0x1002208 /* U+2208 ELEMENT OF */, -// notelementof = 0x1002209 /* U+2209 NOT AN ELEMENT OF */, -// containsas = 0x100220B /* U+220B CONTAINS AS MEMBER */, -// squareroot = 0x100221A /* U+221A SQUARE ROOT */, -// cuberoot = 0x100221B /* U+221B CUBE ROOT */, -// fourthroot = 0x100221C /* U+221C FOURTH ROOT */, -// dintegral = 0x100222C /* U+222C DOUBLE INTEGRAL */, -// tintegral = 0x100222D /* U+222D TRIPLE INTEGRAL */, -// because = 0x1002235 /* U+2235 BECAUSE */, -// approxeq = 0x1002248 /* U+2245 ALMOST EQUAL TO */, -// notapproxeq = 0x1002247 /* U+2247 NOT ALMOST EQUAL TO */, -// notidentical = 0x1002262 /* U+2262 NOT IDENTICAL TO */, -// stricteq = 0x1002263 /* U+2263 STRICTLY EQUIVALENT TO */, -// 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 /* U+2800 BRAILLE PATTERN BLANK */, -// braille_dots_1 = 0x1002801 /* U+2801 BRAILLE PATTERN DOTS-1 */, -// braille_dots_2 = 0x1002802 /* U+2802 BRAILLE PATTERN DOTS-2 */, -// braille_dots_12 = 0x1002803 /* U+2803 BRAILLE PATTERN DOTS-12 */, -// braille_dots_3 = 0x1002804 /* U+2804 BRAILLE PATTERN DOTS-3 */, -// braille_dots_13 = 0x1002805 /* U+2805 BRAILLE PATTERN DOTS-13 */, -// braille_dots_23 = 0x1002806 /* U+2806 BRAILLE PATTERN DOTS-23 */, -// braille_dots_123 = 0x1002807 /* U+2807 BRAILLE PATTERN DOTS-123 */, -// braille_dots_4 = 0x1002808 /* U+2808 BRAILLE PATTERN DOTS-4 */, -// braille_dots_14 = 0x1002809 /* U+2809 BRAILLE PATTERN DOTS-14 */, -// braille_dots_24 = 0x100280a /* U+280a BRAILLE PATTERN DOTS-24 */, -// braille_dots_124 = 0x100280b /* U+280b BRAILLE PATTERN DOTS-124 */, -// braille_dots_34 = 0x100280c /* U+280c BRAILLE PATTERN DOTS-34 */, -// braille_dots_134 = 0x100280d /* U+280d BRAILLE PATTERN DOTS-134 */, -// braille_dots_234 = 0x100280e /* U+280e BRAILLE PATTERN DOTS-234 */, -// braille_dots_1234 = 0x100280f /* U+280f BRAILLE PATTERN DOTS-1234 */, -// braille_dots_5 = 0x1002810 /* U+2810 BRAILLE PATTERN DOTS-5 */, -// braille_dots_15 = 0x1002811 /* U+2811 BRAILLE PATTERN DOTS-15 */, -// braille_dots_25 = 0x1002812 /* U+2812 BRAILLE PATTERN DOTS-25 */, -// braille_dots_125 = 0x1002813 /* U+2813 BRAILLE PATTERN DOTS-125 */, -// braille_dots_35 = 0x1002814 /* U+2814 BRAILLE PATTERN DOTS-35 */, -// braille_dots_135 = 0x1002815 /* U+2815 BRAILLE PATTERN DOTS-135 */, -// braille_dots_235 = 0x1002816 /* U+2816 BRAILLE PATTERN DOTS-235 */, -// braille_dots_1235 = 0x1002817 /* U+2817 BRAILLE PATTERN DOTS-1235 */, -// braille_dots_45 = 0x1002818 /* U+2818 BRAILLE PATTERN DOTS-45 */, -// braille_dots_145 = 0x1002819 /* U+2819 BRAILLE PATTERN DOTS-145 */, -// braille_dots_245 = 0x100281a /* U+281a BRAILLE PATTERN DOTS-245 */, -// braille_dots_1245 = 0x100281b /* U+281b BRAILLE PATTERN DOTS-1245 */, -// braille_dots_345 = 0x100281c /* U+281c BRAILLE PATTERN DOTS-345 */, -// braille_dots_1345 = 0x100281d /* U+281d BRAILLE PATTERN DOTS-1345 */, -// braille_dots_2345 = 0x100281e /* U+281e BRAILLE PATTERN DOTS-2345 */, -// braille_dots_12345 = 0x100281f /* U+281f BRAILLE PATTERN DOTS-12345 */, -// braille_dots_6 = 0x1002820 /* U+2820 BRAILLE PATTERN DOTS-6 */, -// braille_dots_16 = 0x1002821 /* U+2821 BRAILLE PATTERN DOTS-16 */, -// braille_dots_26 = 0x1002822 /* U+2822 BRAILLE PATTERN DOTS-26 */, -// braille_dots_126 = 0x1002823 /* U+2823 BRAILLE PATTERN DOTS-126 */, -// braille_dots_36 = 0x1002824 /* U+2824 BRAILLE PATTERN DOTS-36 */, -// braille_dots_136 = 0x1002825 /* U+2825 BRAILLE PATTERN DOTS-136 */, -// braille_dots_236 = 0x1002826 /* U+2826 BRAILLE PATTERN DOTS-236 */, -// braille_dots_1236 = 0x1002827 /* U+2827 BRAILLE PATTERN DOTS-1236 */, -// braille_dots_46 = 0x1002828 /* U+2828 BRAILLE PATTERN DOTS-46 */, -// braille_dots_146 = 0x1002829 /* U+2829 BRAILLE PATTERN DOTS-146 */, -// braille_dots_246 = 0x100282a /* U+282a BRAILLE PATTERN DOTS-246 */, -// braille_dots_1246 = 0x100282b /* U+282b BRAILLE PATTERN DOTS-1246 */, -// braille_dots_346 = 0x100282c /* U+282c BRAILLE PATTERN DOTS-346 */, -// braille_dots_1346 = 0x100282d /* U+282d BRAILLE PATTERN DOTS-1346 */, -// braille_dots_2346 = 0x100282e /* U+282e BRAILLE PATTERN DOTS-2346 */, -// braille_dots_12346 = 0x100282f /* U+282f BRAILLE PATTERN DOTS-12346 */, -// braille_dots_56 = 0x1002830 /* U+2830 BRAILLE PATTERN DOTS-56 */, -// braille_dots_156 = 0x1002831 /* U+2831 BRAILLE PATTERN DOTS-156 */, -// braille_dots_256 = 0x1002832 /* U+2832 BRAILLE PATTERN DOTS-256 */, -// braille_dots_1256 = 0x1002833 /* U+2833 BRAILLE PATTERN DOTS-1256 */, -// braille_dots_356 = 0x1002834 /* U+2834 BRAILLE PATTERN DOTS-356 */, -// braille_dots_1356 = 0x1002835 /* U+2835 BRAILLE PATTERN DOTS-1356 */, -// braille_dots_2356 = 0x1002836 /* U+2836 BRAILLE PATTERN DOTS-2356 */, -// braille_dots_12356 = 0x1002837 /* U+2837 BRAILLE PATTERN DOTS-12356 */, -// braille_dots_456 = 0x1002838 /* U+2838 BRAILLE PATTERN DOTS-456 */, -// braille_dots_1456 = 0x1002839 /* U+2839 BRAILLE PATTERN DOTS-1456 */, -// braille_dots_2456 = 0x100283a /* U+283a BRAILLE PATTERN DOTS-2456 */, -// braille_dots_12456 = 0x100283b /* U+283b BRAILLE PATTERN DOTS-12456 */, -// braille_dots_3456 = 0x100283c /* U+283c BRAILLE PATTERN DOTS-3456 */, -// braille_dots_13456 = 0x100283d /* U+283d BRAILLE PATTERN DOTS-13456 */, -// braille_dots_23456 = 0x100283e /* U+283e BRAILLE PATTERN DOTS-23456 */, -// braille_dots_123456 = 0x100283f /* U+283f BRAILLE PATTERN DOTS-123456 */, -// braille_dots_7 = 0x1002840 /* U+2840 BRAILLE PATTERN DOTS-7 */, -// braille_dots_17 = 0x1002841 /* U+2841 BRAILLE PATTERN DOTS-17 */, -// braille_dots_27 = 0x1002842 /* U+2842 BRAILLE PATTERN DOTS-27 */, -// braille_dots_127 = 0x1002843 /* U+2843 BRAILLE PATTERN DOTS-127 */, -// braille_dots_37 = 0x1002844 /* U+2844 BRAILLE PATTERN DOTS-37 */, -// braille_dots_137 = 0x1002845 /* U+2845 BRAILLE PATTERN DOTS-137 */, -// braille_dots_237 = 0x1002846 /* U+2846 BRAILLE PATTERN DOTS-237 */, -// braille_dots_1237 = 0x1002847 /* U+2847 BRAILLE PATTERN DOTS-1237 */, -// braille_dots_47 = 0x1002848 /* U+2848 BRAILLE PATTERN DOTS-47 */, -// braille_dots_147 = 0x1002849 /* U+2849 BRAILLE PATTERN DOTS-147 */, -// braille_dots_247 = 0x100284a /* U+284a BRAILLE PATTERN DOTS-247 */, -// braille_dots_1247 = 0x100284b /* U+284b BRAILLE PATTERN DOTS-1247 */, -// braille_dots_347 = 0x100284c /* U+284c BRAILLE PATTERN DOTS-347 */, -// braille_dots_1347 = 0x100284d /* U+284d BRAILLE PATTERN DOTS-1347 */, -// braille_dots_2347 = 0x100284e /* U+284e BRAILLE PATTERN DOTS-2347 */, -// braille_dots_12347 = 0x100284f /* U+284f BRAILLE PATTERN DOTS-12347 */, -// braille_dots_57 = 0x1002850 /* U+2850 BRAILLE PATTERN DOTS-57 */, -// braille_dots_157 = 0x1002851 /* U+2851 BRAILLE PATTERN DOTS-157 */, -// braille_dots_257 = 0x1002852 /* U+2852 BRAILLE PATTERN DOTS-257 */, -// braille_dots_1257 = 0x1002853 /* U+2853 BRAILLE PATTERN DOTS-1257 */, -// braille_dots_357 = 0x1002854 /* U+2854 BRAILLE PATTERN DOTS-357 */, -// braille_dots_1357 = 0x1002855 /* U+2855 BRAILLE PATTERN DOTS-1357 */, -// braille_dots_2357 = 0x1002856 /* U+2856 BRAILLE PATTERN DOTS-2357 */, -// braille_dots_12357 = 0x1002857 /* U+2857 BRAILLE PATTERN DOTS-12357 */, -// braille_dots_457 = 0x1002858 /* U+2858 BRAILLE PATTERN DOTS-457 */, -// braille_dots_1457 = 0x1002859 /* U+2859 BRAILLE PATTERN DOTS-1457 */, -// braille_dots_2457 = 0x100285a /* U+285a BRAILLE PATTERN DOTS-2457 */, -// braille_dots_12457 = 0x100285b /* U+285b BRAILLE PATTERN DOTS-12457 */, -// braille_dots_3457 = 0x100285c /* U+285c BRAILLE PATTERN DOTS-3457 */, -// braille_dots_13457 = 0x100285d /* U+285d BRAILLE PATTERN DOTS-13457 */, -// braille_dots_23457 = 0x100285e /* U+285e BRAILLE PATTERN DOTS-23457 */, -// braille_dots_123457 = 0x100285f /* U+285f BRAILLE PATTERN DOTS-123457 */, -// braille_dots_67 = 0x1002860 /* U+2860 BRAILLE PATTERN DOTS-67 */, -// braille_dots_167 = 0x1002861 /* U+2861 BRAILLE PATTERN DOTS-167 */, -// braille_dots_267 = 0x1002862 /* U+2862 BRAILLE PATTERN DOTS-267 */, -// braille_dots_1267 = 0x1002863 /* U+2863 BRAILLE PATTERN DOTS-1267 */, -// braille_dots_367 = 0x1002864 /* U+2864 BRAILLE PATTERN DOTS-367 */, -// braille_dots_1367 = 0x1002865 /* U+2865 BRAILLE PATTERN DOTS-1367 */, -// braille_dots_2367 = 0x1002866 /* U+2866 BRAILLE PATTERN DOTS-2367 */, -// braille_dots_12367 = 0x1002867 /* U+2867 BRAILLE PATTERN DOTS-12367 */, -// braille_dots_467 = 0x1002868 /* U+2868 BRAILLE PATTERN DOTS-467 */, -// braille_dots_1467 = 0x1002869 /* U+2869 BRAILLE PATTERN DOTS-1467 */, -// braille_dots_2467 = 0x100286a /* U+286a BRAILLE PATTERN DOTS-2467 */, -// braille_dots_12467 = 0x100286b /* U+286b BRAILLE PATTERN DOTS-12467 */, -// braille_dots_3467 = 0x100286c /* U+286c BRAILLE PATTERN DOTS-3467 */, -// braille_dots_13467 = 0x100286d /* U+286d BRAILLE PATTERN DOTS-13467 */, -// braille_dots_23467 = 0x100286e /* U+286e BRAILLE PATTERN DOTS-23467 */, -// braille_dots_123467 = 0x100286f /* U+286f BRAILLE PATTERN DOTS-123467 */, -// braille_dots_567 = 0x1002870 /* U+2870 BRAILLE PATTERN DOTS-567 */, -// braille_dots_1567 = 0x1002871 /* U+2871 BRAILLE PATTERN DOTS-1567 */, -// braille_dots_2567 = 0x1002872 /* U+2872 BRAILLE PATTERN DOTS-2567 */, -// braille_dots_12567 = 0x1002873 /* U+2873 BRAILLE PATTERN DOTS-12567 */, -// braille_dots_3567 = 0x1002874 /* U+2874 BRAILLE PATTERN DOTS-3567 */, -// braille_dots_13567 = 0x1002875 /* U+2875 BRAILLE PATTERN DOTS-13567 */, -// braille_dots_23567 = 0x1002876 /* U+2876 BRAILLE PATTERN DOTS-23567 */, -// braille_dots_123567 = 0x1002877 /* U+2877 BRAILLE PATTERN DOTS-123567 */, -// braille_dots_4567 = 0x1002878 /* U+2878 BRAILLE PATTERN DOTS-4567 */, -// braille_dots_14567 = 0x1002879 /* U+2879 BRAILLE PATTERN DOTS-14567 */, -// braille_dots_24567 = 0x100287a /* U+287a BRAILLE PATTERN DOTS-24567 */, -// braille_dots_124567 = 0x100287b /* U+287b BRAILLE PATTERN DOTS-124567 */, -// braille_dots_34567 = 0x100287c /* U+287c BRAILLE PATTERN DOTS-34567 */, -// braille_dots_134567 = 0x100287d /* U+287d BRAILLE PATTERN DOTS-134567 */, -// braille_dots_234567 = 0x100287e /* U+287e BRAILLE PATTERN DOTS-234567 */, -// braille_dots_1234567 = 0x100287f /* U+287f BRAILLE PATTERN DOTS-1234567 */, -// braille_dots_8 = 0x1002880 /* U+2880 BRAILLE PATTERN DOTS-8 */, -// braille_dots_18 = 0x1002881 /* U+2881 BRAILLE PATTERN DOTS-18 */, -// braille_dots_28 = 0x1002882 /* U+2882 BRAILLE PATTERN DOTS-28 */, -// braille_dots_128 = 0x1002883 /* U+2883 BRAILLE PATTERN DOTS-128 */, -// braille_dots_38 = 0x1002884 /* U+2884 BRAILLE PATTERN DOTS-38 */, -// braille_dots_138 = 0x1002885 /* U+2885 BRAILLE PATTERN DOTS-138 */, -// braille_dots_238 = 0x1002886 /* U+2886 BRAILLE PATTERN DOTS-238 */, -// braille_dots_1238 = 0x1002887 /* U+2887 BRAILLE PATTERN DOTS-1238 */, -// braille_dots_48 = 0x1002888 /* U+2888 BRAILLE PATTERN DOTS-48 */, -// braille_dots_148 = 0x1002889 /* U+2889 BRAILLE PATTERN DOTS-148 */, -// braille_dots_248 = 0x100288a /* U+288a BRAILLE PATTERN DOTS-248 */, -// braille_dots_1248 = 0x100288b /* U+288b BRAILLE PATTERN DOTS-1248 */, -// braille_dots_348 = 0x100288c /* U+288c BRAILLE PATTERN DOTS-348 */, -// braille_dots_1348 = 0x100288d /* U+288d BRAILLE PATTERN DOTS-1348 */, -// braille_dots_2348 = 0x100288e /* U+288e BRAILLE PATTERN DOTS-2348 */, -// braille_dots_12348 = 0x100288f /* U+288f BRAILLE PATTERN DOTS-12348 */, -// braille_dots_58 = 0x1002890 /* U+2890 BRAILLE PATTERN DOTS-58 */, -// braille_dots_158 = 0x1002891 /* U+2891 BRAILLE PATTERN DOTS-158 */, -// braille_dots_258 = 0x1002892 /* U+2892 BRAILLE PATTERN DOTS-258 */, -// braille_dots_1258 = 0x1002893 /* U+2893 BRAILLE PATTERN DOTS-1258 */, -// braille_dots_358 = 0x1002894 /* U+2894 BRAILLE PATTERN DOTS-358 */, -// braille_dots_1358 = 0x1002895 /* U+2895 BRAILLE PATTERN DOTS-1358 */, -// braille_dots_2358 = 0x1002896 /* U+2896 BRAILLE PATTERN DOTS-2358 */, -// braille_dots_12358 = 0x1002897 /* U+2897 BRAILLE PATTERN DOTS-12358 */, -// braille_dots_458 = 0x1002898 /* U+2898 BRAILLE PATTERN DOTS-458 */, -// braille_dots_1458 = 0x1002899 /* U+2899 BRAILLE PATTERN DOTS-1458 */, -// braille_dots_2458 = 0x100289a /* U+289a BRAILLE PATTERN DOTS-2458 */, -// braille_dots_12458 = 0x100289b /* U+289b BRAILLE PATTERN DOTS-12458 */, -// braille_dots_3458 = 0x100289c /* U+289c BRAILLE PATTERN DOTS-3458 */, -// braille_dots_13458 = 0x100289d /* U+289d BRAILLE PATTERN DOTS-13458 */, -// braille_dots_23458 = 0x100289e /* U+289e BRAILLE PATTERN DOTS-23458 */, -// braille_dots_123458 = 0x100289f /* U+289f BRAILLE PATTERN DOTS-123458 */, -// braille_dots_68 = 0x10028a0 /* U+28a0 BRAILLE PATTERN DOTS-68 */, -// braille_dots_168 = 0x10028a1 /* U+28a1 BRAILLE PATTERN DOTS-168 */, -// braille_dots_268 = 0x10028a2 /* U+28a2 BRAILLE PATTERN DOTS-268 */, -// braille_dots_1268 = 0x10028a3 /* U+28a3 BRAILLE PATTERN DOTS-1268 */, -// braille_dots_368 = 0x10028a4 /* U+28a4 BRAILLE PATTERN DOTS-368 */, -// braille_dots_1368 = 0x10028a5 /* U+28a5 BRAILLE PATTERN DOTS-1368 */, -// braille_dots_2368 = 0x10028a6 /* U+28a6 BRAILLE PATTERN DOTS-2368 */, -// braille_dots_12368 = 0x10028a7 /* U+28a7 BRAILLE PATTERN DOTS-12368 */, -// braille_dots_468 = 0x10028a8 /* U+28a8 BRAILLE PATTERN DOTS-468 */, -// braille_dots_1468 = 0x10028a9 /* U+28a9 BRAILLE PATTERN DOTS-1468 */, -// braille_dots_2468 = 0x10028aa /* U+28aa BRAILLE PATTERN DOTS-2468 */, -// braille_dots_12468 = 0x10028ab /* U+28ab BRAILLE PATTERN DOTS-12468 */, -// braille_dots_3468 = 0x10028ac /* U+28ac BRAILLE PATTERN DOTS-3468 */, -// braille_dots_13468 = 0x10028ad /* U+28ad BRAILLE PATTERN DOTS-13468 */, -// braille_dots_23468 = 0x10028ae /* U+28ae BRAILLE PATTERN DOTS-23468 */, -// braille_dots_123468 = 0x10028af /* U+28af BRAILLE PATTERN DOTS-123468 */, -// braille_dots_568 = 0x10028b0 /* U+28b0 BRAILLE PATTERN DOTS-568 */, -// braille_dots_1568 = 0x10028b1 /* U+28b1 BRAILLE PATTERN DOTS-1568 */, -// braille_dots_2568 = 0x10028b2 /* U+28b2 BRAILLE PATTERN DOTS-2568 */, -// braille_dots_12568 = 0x10028b3 /* U+28b3 BRAILLE PATTERN DOTS-12568 */, -// braille_dots_3568 = 0x10028b4 /* U+28b4 BRAILLE PATTERN DOTS-3568 */, -// braille_dots_13568 = 0x10028b5 /* U+28b5 BRAILLE PATTERN DOTS-13568 */, -// braille_dots_23568 = 0x10028b6 /* U+28b6 BRAILLE PATTERN DOTS-23568 */, -// braille_dots_123568 = 0x10028b7 /* U+28b7 BRAILLE PATTERN DOTS-123568 */, -// braille_dots_4568 = 0x10028b8 /* U+28b8 BRAILLE PATTERN DOTS-4568 */, -// braille_dots_14568 = 0x10028b9 /* U+28b9 BRAILLE PATTERN DOTS-14568 */, -// braille_dots_24568 = 0x10028ba /* U+28ba BRAILLE PATTERN DOTS-24568 */, -// braille_dots_124568 = 0x10028bb /* U+28bb BRAILLE PATTERN DOTS-124568 */, -// braille_dots_34568 = 0x10028bc /* U+28bc BRAILLE PATTERN DOTS-34568 */, -// braille_dots_134568 = 0x10028bd /* U+28bd BRAILLE PATTERN DOTS-134568 */, -// braille_dots_234568 = 0x10028be /* U+28be BRAILLE PATTERN DOTS-234568 */, -// braille_dots_1234568 = 0x10028bf /* U+28bf BRAILLE PATTERN DOTS-1234568 */, -// braille_dots_78 = 0x10028c0 /* U+28c0 BRAILLE PATTERN DOTS-78 */, -// braille_dots_178 = 0x10028c1 /* U+28c1 BRAILLE PATTERN DOTS-178 */, -// braille_dots_278 = 0x10028c2 /* U+28c2 BRAILLE PATTERN DOTS-278 */, -// braille_dots_1278 = 0x10028c3 /* U+28c3 BRAILLE PATTERN DOTS-1278 */, -// braille_dots_378 = 0x10028c4 /* U+28c4 BRAILLE PATTERN DOTS-378 */, -// braille_dots_1378 = 0x10028c5 /* U+28c5 BRAILLE PATTERN DOTS-1378 */, -// braille_dots_2378 = 0x10028c6 /* U+28c6 BRAILLE PATTERN DOTS-2378 */, -// braille_dots_12378 = 0x10028c7 /* U+28c7 BRAILLE PATTERN DOTS-12378 */, -// braille_dots_478 = 0x10028c8 /* U+28c8 BRAILLE PATTERN DOTS-478 */, -// braille_dots_1478 = 0x10028c9 /* U+28c9 BRAILLE PATTERN DOTS-1478 */, -// braille_dots_2478 = 0x10028ca /* U+28ca BRAILLE PATTERN DOTS-2478 */, -// braille_dots_12478 = 0x10028cb /* U+28cb BRAILLE PATTERN DOTS-12478 */, -// braille_dots_3478 = 0x10028cc /* U+28cc BRAILLE PATTERN DOTS-3478 */, -// braille_dots_13478 = 0x10028cd /* U+28cd BRAILLE PATTERN DOTS-13478 */, -// braille_dots_23478 = 0x10028ce /* U+28ce BRAILLE PATTERN DOTS-23478 */, -// braille_dots_123478 = 0x10028cf /* U+28cf BRAILLE PATTERN DOTS-123478 */, -// braille_dots_578 = 0x10028d0 /* U+28d0 BRAILLE PATTERN DOTS-578 */, -// braille_dots_1578 = 0x10028d1 /* U+28d1 BRAILLE PATTERN DOTS-1578 */, -// braille_dots_2578 = 0x10028d2 /* U+28d2 BRAILLE PATTERN DOTS-2578 */, -// braille_dots_12578 = 0x10028d3 /* U+28d3 BRAILLE PATTERN DOTS-12578 */, -// braille_dots_3578 = 0x10028d4 /* U+28d4 BRAILLE PATTERN DOTS-3578 */, -// braille_dots_13578 = 0x10028d5 /* U+28d5 BRAILLE PATTERN DOTS-13578 */, -// braille_dots_23578 = 0x10028d6 /* U+28d6 BRAILLE PATTERN DOTS-23578 */, -// braille_dots_123578 = 0x10028d7 /* U+28d7 BRAILLE PATTERN DOTS-123578 */, -// braille_dots_4578 = 0x10028d8 /* U+28d8 BRAILLE PATTERN DOTS-4578 */, -// braille_dots_14578 = 0x10028d9 /* U+28d9 BRAILLE PATTERN DOTS-14578 */, -// braille_dots_24578 = 0x10028da /* U+28da BRAILLE PATTERN DOTS-24578 */, -// braille_dots_124578 = 0x10028db /* U+28db BRAILLE PATTERN DOTS-124578 */, -// braille_dots_34578 = 0x10028dc /* U+28dc BRAILLE PATTERN DOTS-34578 */, -// braille_dots_134578 = 0x10028dd /* U+28dd BRAILLE PATTERN DOTS-134578 */, -// braille_dots_234578 = 0x10028de /* U+28de BRAILLE PATTERN DOTS-234578 */, -// braille_dots_1234578 = 0x10028df /* U+28df BRAILLE PATTERN DOTS-1234578 */, -// braille_dots_678 = 0x10028e0 /* U+28e0 BRAILLE PATTERN DOTS-678 */, -// braille_dots_1678 = 0x10028e1 /* U+28e1 BRAILLE PATTERN DOTS-1678 */, -// braille_dots_2678 = 0x10028e2 /* U+28e2 BRAILLE PATTERN DOTS-2678 */, -// braille_dots_12678 = 0x10028e3 /* U+28e3 BRAILLE PATTERN DOTS-12678 */, -// braille_dots_3678 = 0x10028e4 /* U+28e4 BRAILLE PATTERN DOTS-3678 */, -// braille_dots_13678 = 0x10028e5 /* U+28e5 BRAILLE PATTERN DOTS-13678 */, -// braille_dots_23678 = 0x10028e6 /* U+28e6 BRAILLE PATTERN DOTS-23678 */, -// braille_dots_123678 = 0x10028e7 /* U+28e7 BRAILLE PATTERN DOTS-123678 */, -// braille_dots_4678 = 0x10028e8 /* U+28e8 BRAILLE PATTERN DOTS-4678 */, -// braille_dots_14678 = 0x10028e9 /* U+28e9 BRAILLE PATTERN DOTS-14678 */, -// braille_dots_24678 = 0x10028ea /* U+28ea BRAILLE PATTERN DOTS-24678 */, -// braille_dots_124678 = 0x10028eb /* U+28eb BRAILLE PATTERN DOTS-124678 */, -// braille_dots_34678 = 0x10028ec /* U+28ec BRAILLE PATTERN DOTS-34678 */, -// braille_dots_134678 = 0x10028ed /* U+28ed BRAILLE PATTERN DOTS-134678 */, -// braille_dots_234678 = 0x10028ee /* U+28ee BRAILLE PATTERN DOTS-234678 */, -// braille_dots_1234678 = 0x10028ef /* U+28ef BRAILLE PATTERN DOTS-1234678 */, -// braille_dots_5678 = 0x10028f0 /* U+28f0 BRAILLE PATTERN DOTS-5678 */, -// braille_dots_15678 = 0x10028f1 /* U+28f1 BRAILLE PATTERN DOTS-15678 */, -// braille_dots_25678 = 0x10028f2 /* U+28f2 BRAILLE PATTERN DOTS-25678 */, -// braille_dots_125678 = 0x10028f3 /* U+28f3 BRAILLE PATTERN DOTS-125678 */, -// braille_dots_35678 = 0x10028f4 /* U+28f4 BRAILLE PATTERN DOTS-35678 */, -// braille_dots_135678 = 0x10028f5 /* U+28f5 BRAILLE PATTERN DOTS-135678 */, -// braille_dots_235678 = 0x10028f6 /* U+28f6 BRAILLE PATTERN DOTS-235678 */, -// braille_dots_1235678 = 0x10028f7 /* U+28f7 BRAILLE PATTERN DOTS-1235678 */, -// braille_dots_45678 = 0x10028f8 /* U+28f8 BRAILLE PATTERN DOTS-45678 */, -// braille_dots_145678 = 0x10028f9 /* U+28f9 BRAILLE PATTERN DOTS-145678 */, -// braille_dots_245678 = 0x10028fa /* U+28fa BRAILLE PATTERN DOTS-245678 */, -// braille_dots_1245678 = 0x10028fb /* U+28fb BRAILLE PATTERN DOTS-1245678 */, -// braille_dots_345678 = 0x10028fc /* U+28fc BRAILLE PATTERN DOTS-345678 */, -// braille_dots_1345678 = 0x10028fd /* U+28fd BRAILLE PATTERN DOTS-1345678 */, -// braille_dots_2345678 = 0x10028fe /* U+28fe BRAILLE PATTERN DOTS-2345678 */, -// braille_dots_12345678 = 0x10028ff /* U+28ff BRAILLE PATTERN DOTS-12345678 */, -// Sinh_ng = 0x1000d82 /* U+0D82 SINHALA ANUSVARAYA */, -// Sinh_h2 = 0x1000d83 /* U+0D83 SINHALA VISARGAYA */, -// Sinh_a = 0x1000d85 /* U+0D85 SINHALA AYANNA */, -// Sinh_aa = 0x1000d86 /* U+0D86 SINHALA AAYANNA */, -// Sinh_ae = 0x1000d87 /* U+0D87 SINHALA AEYANNA */, -// Sinh_aee = 0x1000d88 /* U+0D88 SINHALA AEEYANNA */, -// Sinh_i = 0x1000d89 /* U+0D89 SINHALA IYANNA */, -// Sinh_ii = 0x1000d8a /* U+0D8A SINHALA IIYANNA */, -// Sinh_u = 0x1000d8b /* U+0D8B SINHALA UYANNA */, -// Sinh_uu = 0x1000d8c /* U+0D8C SINHALA UUYANNA */, -// Sinh_ri = 0x1000d8d /* U+0D8D SINHALA IRUYANNA */, -// Sinh_rii = 0x1000d8e /* U+0D8E SINHALA IRUUYANNA */, -// Sinh_lu = 0x1000d8f /* U+0D8F SINHALA ILUYANNA */, -// Sinh_luu = 0x1000d90 /* U+0D90 SINHALA ILUUYANNA */, -// Sinh_e = 0x1000d91 /* U+0D91 SINHALA EYANNA */, -// Sinh_ee = 0x1000d92 /* U+0D92 SINHALA EEYANNA */, -// Sinh_ai = 0x1000d93 /* U+0D93 SINHALA AIYANNA */, -// Sinh_o = 0x1000d94 /* U+0D94 SINHALA OYANNA */, -// Sinh_oo = 0x1000d95 /* U+0D95 SINHALA OOYANNA */, -// Sinh_au = 0x1000d96 /* U+0D96 SINHALA AUYANNA */, -// Sinh_ka = 0x1000d9a /* U+0D9A SINHALA KAYANNA */, -// Sinh_kha = 0x1000d9b /* U+0D9B SINHALA MAHA. KAYANNA */, -// Sinh_ga = 0x1000d9c /* U+0D9C SINHALA GAYANNA */, -// Sinh_gha = 0x1000d9d /* U+0D9D SINHALA MAHA. GAYANNA */, -// Sinh_ng2 = 0x1000d9e /* U+0D9E SINHALA KANTAJA NAASIKYAYA */, -// Sinh_nga = 0x1000d9f /* U+0D9F SINHALA SANYAKA GAYANNA */, -// Sinh_ca = 0x1000da0 /* U+0DA0 SINHALA CAYANNA */, -// Sinh_cha = 0x1000da1 /* U+0DA1 SINHALA MAHA. CAYANNA */, -// Sinh_ja = 0x1000da2 /* U+0DA2 SINHALA JAYANNA */, -// Sinh_jha = 0x1000da3 /* U+0DA3 SINHALA MAHA. JAYANNA */, -// Sinh_nya = 0x1000da4 /* U+0DA4 SINHALA TAALUJA NAASIKYAYA */, -// Sinh_jnya = 0x1000da5 /* U+0DA5 SINHALA TAALUJA SANYOOGA NAASIKYAYA */, -// Sinh_nja = 0x1000da6 /* U+0DA6 SINHALA SANYAKA JAYANNA */, -// Sinh_tta = 0x1000da7 /* U+0DA7 SINHALA TTAYANNA */, -// Sinh_ttha = 0x1000da8 /* U+0DA8 SINHALA MAHA. TTAYANNA */, -// Sinh_dda = 0x1000da9 /* U+0DA9 SINHALA DDAYANNA */, -// Sinh_ddha = 0x1000daa /* U+0DAA SINHALA MAHA. DDAYANNA */, -// Sinh_nna = 0x1000dab /* U+0DAB SINHALA MUURDHAJA NAYANNA */, -// Sinh_ndda = 0x1000dac /* U+0DAC SINHALA SANYAKA DDAYANNA */, -// Sinh_tha = 0x1000dad /* U+0DAD SINHALA TAYANNA */, -// Sinh_thha = 0x1000dae /* U+0DAE SINHALA MAHA. TAYANNA */, -// Sinh_dha = 0x1000daf /* U+0DAF SINHALA DAYANNA */, -// Sinh_dhha = 0x1000db0 /* U+0DB0 SINHALA MAHA. DAYANNA */, -// Sinh_na = 0x1000db1 /* U+0DB1 SINHALA DANTAJA NAYANNA */, -// Sinh_ndha = 0x1000db3 /* U+0DB3 SINHALA SANYAKA DAYANNA */, -// Sinh_pa = 0x1000db4 /* U+0DB4 SINHALA PAYANNA */, -// Sinh_pha = 0x1000db5 /* U+0DB5 SINHALA MAHA. PAYANNA */, -// Sinh_ba = 0x1000db6 /* U+0DB6 SINHALA BAYANNA */, -// Sinh_bha = 0x1000db7 /* U+0DB7 SINHALA MAHA. BAYANNA */, -// Sinh_ma = 0x1000db8 /* U+0DB8 SINHALA MAYANNA */, -// Sinh_mba = 0x1000db9 /* U+0DB9 SINHALA AMBA BAYANNA */, -// Sinh_ya = 0x1000dba /* U+0DBA SINHALA YAYANNA */, -// Sinh_ra = 0x1000dbb /* U+0DBB SINHALA RAYANNA */, -// Sinh_la = 0x1000dbd /* U+0DBD SINHALA DANTAJA LAYANNA */, -// Sinh_va = 0x1000dc0 /* U+0DC0 SINHALA VAYANNA */, -// Sinh_sha = 0x1000dc1 /* U+0DC1 SINHALA TAALUJA SAYANNA */, -// Sinh_ssha = 0x1000dc2 /* U+0DC2 SINHALA MUURDHAJA SAYANNA */, -// Sinh_sa = 0x1000dc3 /* U+0DC3 SINHALA DANTAJA SAYANNA */, -// Sinh_ha = 0x1000dc4 /* U+0DC4 SINHALA HAYANNA */, -// Sinh_lla = 0x1000dc5 /* U+0DC5 SINHALA MUURDHAJA LAYANNA */, -// Sinh_fa = 0x1000dc6 /* U+0DC6 SINHALA FAYANNA */, -// Sinh_al = 0x1000dca /* U+0DCA SINHALA AL-LAKUNA */, -// Sinh_aa2 = 0x1000dcf /* U+0DCF SINHALA AELA-PILLA */, -// Sinh_ae2 = 0x1000dd0 /* U+0DD0 SINHALA AEDA-PILLA */, -// Sinh_aee2 = 0x1000dd1 /* U+0DD1 SINHALA DIGA AEDA-PILLA */, -// Sinh_i2 = 0x1000dd2 /* U+0DD2 SINHALA IS-PILLA */, -// Sinh_ii2 = 0x1000dd3 /* U+0DD3 SINHALA DIGA IS-PILLA */, -// Sinh_u2 = 0x1000dd4 /* U+0DD4 SINHALA PAA-PILLA */, -// Sinh_uu2 = 0x1000dd6 /* U+0DD6 SINHALA DIGA PAA-PILLA */, -// Sinh_ru2 = 0x1000dd8 /* U+0DD8 SINHALA GAETTA-PILLA */, -// Sinh_e2 = 0x1000dd9 /* U+0DD9 SINHALA KOMBUVA */, -// Sinh_ee2 = 0x1000dda /* U+0DDA SINHALA DIGA KOMBUVA */, -// Sinh_ai2 = 0x1000ddb /* U+0DDB SINHALA KOMBU DEKA */, -// Sinh_o2 = 0x1000ddc /* U+0DDC SINHALA KOMBUVA HAA AELA-PILLA*/, -// Sinh_oo2 = 0x1000ddd /* U+0DDD SINHALA KOMBUVA HAA DIGA AELA-PILLA*/, -// Sinh_au2 = 0x1000dde /* U+0DDE SINHALA KOMBUVA HAA GAYANUKITTA */, -// Sinh_lu2 = 0x1000ddf /* U+0DDF SINHALA GAYANUKITTA */, -// Sinh_ruu2 = 0x1000df2 /* U+0DF2 SINHALA DIGA GAETTA-PILLA */, -// Sinh_luu2 = 0x1000df3 /* U+0DF3 SINHALA DIGA GAYANUKITTA */, -// Sinh_kunddaliya = 0x1000df4 /* U+0DF4 SINHALA KUNDDALIYA */ -//} diff --git a/src/ColorMC.Gui/Hook/X11Native.cs b/src/ColorMC.Gui/Hook/X11Native.cs deleted file mode 100644 index f1611f29b..000000000 --- a/src/ColorMC.Gui/Hook/X11Native.cs +++ /dev/null @@ -1,388 +0,0 @@ -//using Avalonia.Input; -//using Avalonia.Media.Imaging; -//using ColorMC.Gui.Objs; -//using SkiaSharp; -//using System; -//using System.Diagnostics; -//using System.Runtime.InteropServices; -//using X11; - -//namespace ColorMC.Gui.Utils.Hook; - -//public class X11Native : INative -//{ -// public event Action? TitleChange; -// public event Action? IsFocus; - -// private IntPtr target; -// private IntPtr topTarget; -// private IntPtr display; - -// public void AddHook(Process process, IntPtr handel) -// { -// target = handel; - -// var pd = process.StartInfo.Environment["DISPLAY"]; - -// display = Xlib.XOpenDisplay(pd); -// if (display == IntPtr.Zero) -// { -// throw new Exception("DISPLAY open fail"); -// } -// } - -// public void AddHookTop(IntPtr top) -// { -// topTarget = top; -// } - - -// private bool GetWindow(out XWindowAttributes attributes) -// { -// return Xlib.XGetWindowAttributes(display, target, out attributes) != Status.Failure; -// } - -// public void NoTranferTop() -// { -// if (GetWindow(out var attributes)) -// { -// X11.XRectangle rect = new() { x = 0, y = 0, width = (short)attributes.width, height = (short)attributes.height }; -// X11.XShapeCombineRectangles(display, target, X11.ShapeKind.ShapeInput, 0, 0, ref rect, 1, X11.ShapeOp.ShapeSet, 0); -// } -// } - - -// public void TransferTop() -// { -// if (GetWindow(out _)) -// { -// X11.XRectangle rect = new() { x = 0, y = 0, width = 0, height = 0 }; -// X11.XShapeCombineRectangles(display, target, X11.ShapeKind.ShapeInput, 0, 0, ref rect, 1, X11.ShapeOp.ShapeSet, 0); -// } -// } - - -// public void Close() -// { -// var wmDelete = Xlib.XInternAtom(display, "WM_DELETE_WINDOW", false); - -// XAnyEvent evt = new() -// { -// type = (int)Event.ClientMessage, -// send_event = true, -// display = display, -// window = target, -// serial = (ulong)wmDelete -// }; - -// unsafe -// { -// Xlib.XSendEvent(display, target, false, (long)EventMask.NoEventMask, new IntPtr(&evt)); -// } -// Xlib.XFlush(display); -// } - -// public void DestroyWindow() -// { -// Xlib.XDestroyWindow(display, target); -// } - -// public Bitmap? GetIcon() -// { -// var atomNetWmIcon = Xlib.XInternAtom(display, "_NET_WM_ICON", false); - -// if (X11.XGetWindowProperty(display, target, atomNetWmIcon, 0, long.MaxValue, false, Atom.None, -// out var actualType, out int actualFormat, out long nItems, out long bytesAfter, out IntPtr prop) == 0 && prop != IntPtr.Zero) -// { -// try -// { -// if (actualFormat == 32) -// { -// // The first two values are width and height -// int width = Marshal.ReadInt32(prop); -// int height = Marshal.ReadInt32(prop, 4); - -// // Prepare to read the ARGB values -// var argbValues = new int[width * height]; -// Marshal.Copy(prop, argbValues, 2, argbValues.Length); - -// // Create SKBitmap from the ARGB values -// var info = new SKImageInfo(width, height, SKColorType.Bgra8888); -// var skBitmap = new SKBitmap(info); -// unsafe -// { -// fixed (void* ptr = argbValues) -// { -// skBitmap.SetPixels(new IntPtr(ptr)); -// } -// } -// // Convert SKBitmap to Avalonia Bitmap -// using var image = SKImage.FromBitmap(skBitmap); -// using var data = image.Encode(SKEncodedImageFormat.Png, 100); -// var stream = data.AsStream(); -// var bitmap = new Bitmap(stream); -// return bitmap; -// } -// } -// finally -// { -// Xlib.XFree(prop); -// } -// } - -// return null; -// } - -// public bool GetMouseMode() -// { -// if (Xlib.XQueryPointer(display, target, out IntPtr root_return, out IntPtr child_return, -// out int root_x, out int root_y, out int win_x, out int win_y, out uint mask_return)) -// { -// return true; -// } -// else -// { -// return false; -// } - -// } - -// public bool GetWindowSize(out int width, out int height) -// { -// if (GetWindow(out var attributes)) -// { -// width = (int)attributes.width; -// height = (int)attributes.height; -// return true; -// } -// else -// { -// width = 0; -// height = 0; -// return false; -// } -// } - -// public string GetWindowTitle() -// { -// Xlib.XFetchName(display, target, out var window_name); - -// return window_name ?? ""; -// } - -// public void NoBorder() -// { -// // _NET_WM_WINDOW_TYPE -// var xaPropType = Xlib.XInternAtom(display, "_NET_WM_WINDOW_TYPE", false); -// // _NET_WM_WINDOW_TYPE_DIALOG -// var xaDialogAtom = Xlib.XInternAtom(display, "_NET_WM_WINDOW_TYPE_DIALOG", false); - -// IntPtr data = (IntPtr)xaDialogAtom; -// Xlib.XChangeProperty(display, target, xaPropType, xaPropType, 32, X11.PropModeReplace, data, 1); -// } - -// private void SendMouse(byte key1, bool down) -// { -// var xKeyEvent = new XKeyEvent -// { -// type = down ? (int)Event.ButtonPress : (int)Event.ButtonRelease, -// serial = IntPtr.Zero, -// send_event = true, -// display = display, -// window = target, -// root = Xlib.XRootWindow(display, 0), -// subwindow = IntPtr.Zero, -// time = 0, -// x = 0, -// y = 0, -// x_root = 0, -// y_root = 0, -// state = 0, -// keycode = key1, -// same_screen = true -// }; - -// unsafe -// { -// Xlib.XSendEvent(display, target, true, (long)(down ? EventMask.ButtonPressMask : EventMask.ButtonReleaseMask), new IntPtr(&xKeyEvent)); -// } -// Xlib.XFlush(display); -// } - -// private void SendKey(byte key1, bool down) -// { -// var xKeyEvent = new XKeyEvent -// { -// type = down ? (int)Event.KeyPress : (int)Event.KeyRelease, -// serial = IntPtr.Zero, -// send_event = true, -// display = display, -// window = target, -// root = Xlib.XRootWindow(display, 0), -// subwindow = IntPtr.Zero, -// time = 0, -// x = 0, -// y = 0, -// x_root = 0, -// y_root = 0, -// state = 0, -// keycode = key1, -// same_screen = true -// }; - -// unsafe -// { -// Xlib.XSendEvent(display, target, true, (long)(down ? EventMask.KeyPressMask : EventMask.KeyReleaseMask), new IntPtr(&xKeyEvent)); -// } -// Xlib.XFlush(display); -// } - -// public void SendKey(InputKeyObj key, bool down, bool message) -// { -// if (InputControlUtils.IsEditMode) -// { -// return; -// } - -// X11Key key1 = 0; -// if (key.KeyModifiers == KeyModifiers.Alt) -// { -// X11KeyTransform.X11KeyFromKey(Key.LeftAlt); -// } -// else if (key.KeyModifiers == KeyModifiers.Control) -// { -// key1 = X11KeyTransform.X11KeyFromKey(Key.LeftCtrl); -// } -// else if (key.KeyModifiers == KeyModifiers.Shift) -// { -// key1 = X11KeyTransform.X11KeyFromKey(Key.LeftShift); -// } - -// if (key1 != 0) -// { -// var keycode = Xlib.XKeysymToKeycode(display, (KeySym)key1); -// SendKey((byte)keycode, down); -// } - -// if (key.MouseButton != MouseButton.None) -// { -// var key2 = key.MouseButton switch -// { -// MouseButton.Left => Button.LEFT, -// MouseButton.Right => Button.RIGHT, -// MouseButton.Middle => Button.MIDDLE, -// MouseButton.XButton1 => Button.X1, -// MouseButton.XButton2 => Button.X2, -// _ => throw new Exception() -// }; -// SendMouse((byte)key2, down); -// } -// else -// { -// key1 = X11KeyTransform.X11KeyFromKey(key.Key); - -// SendKey((byte)key1, down); -// } -// } - -// public void SendMouse(double cursorX, double cursorY, bool message) -// { -// int x = (int)cursorX; -// int y = (int)cursorY; -// XMotionEvent motionEvent = new() -// { -// type = 6, // MotionNotify -// serial = 0, -// send_event = true, -// display = display, -// window = target, -// root = Xlib.XRootWindow(display, 0), -// subwindow = 0, -// time = 0, // You can also use Xlib's CurrentTime -// x = x, -// y = y, -// x_root = x, -// y_root = y, -// state = 0, -// is_hint = 0, -// same_screen = true, -// }; - -// unsafe -// { -// Xlib.XSendEvent(display, target, true, (long)EventMask.PointerMotionMask, new IntPtr(&motionEvent)); -// } -// } - -// public void SendScoll(bool up) -// { -// SendMouse((byte)(up ? Button.FOUR : Button.FIVE), true); -// SendMouse((byte)(up ? Button.FOUR : Button.FIVE), false); -// } - -// private void ChangeState(IntPtr stateAtom, bool set) -// { -// var wmState = Xlib.XInternAtom(display, "_NET_WM_STATE", false); - -// var xev = new XWindowStateEvent -// { -// type = (int)Event.ClientMessage, -// serial = IntPtr.Zero, -// send_event = true, -// display = display, -// window = target, -// message_type = (nint)wmState, -// format = 32, -// data1 = (set ? 1 : 0), // _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE -// data2 = stateAtom, -// data3 = IntPtr.Zero, -// data4 = IntPtr.Zero, -// data5 = IntPtr.Zero -// }; - -// unsafe -// { -// Xlib.XSendEvent(display, target, false, (long)(EventMask.SubstructureRedirectMask | EventMask.SubstructureNotifyMask), new IntPtr(&xev)); -// } -// } - -// public void SetWindowState(Avalonia.Controls.WindowState state) -// { -// var stateAtom = (IntPtr)Xlib.XInternAtom(display, "_NET_WM_STATE_MAXIMIZED_HORZ", false); -// var stateAtom1 = (IntPtr)Xlib.XInternAtom(display, "_NET_WM_STATE_MAXIMIZED_VERT", false); -// var stateAtom2 = (IntPtr)Xlib.XInternAtom(display, "_NET_WM_STATE_HIDDEN", false); - -// if (state == Avalonia.Controls.WindowState.Normal) -// { -// ChangeState(stateAtom, false); -// ChangeState(stateAtom1, false); -// ChangeState(stateAtom2, false); -// } -// else if (state == Avalonia.Controls.WindowState.Minimized) -// { -// ChangeState(stateAtom, false); -// ChangeState(stateAtom1, false); - -// ChangeState(stateAtom2, true); -// } -// else if (state == Avalonia.Controls.WindowState.Maximized) -// { -// ChangeState(stateAtom2, false); - -// ChangeState(stateAtom, true); -// ChangeState(stateAtom1, true); -// } - -// Xlib.XFlush(display); -// } - -// public void Stop() -// { -// if (display != IntPtr.Zero) -// { -// Xlib.XCloseDisplay(display); -// display = IntPtr.Zero; -// } -// } -//} - diff --git a/src/ColorMC.Gui/MusicPlayer/Decoder/Flac/EmptyBlock.cs b/src/ColorMC.Gui/MusicPlayer/Decoder/Flac/EmptyBlock.cs index 29802df4f..e389b81af 100644 --- a/src/ColorMC.Gui/MusicPlayer/Decoder/Flac/EmptyBlock.cs +++ b/src/ColorMC.Gui/MusicPlayer/Decoder/Flac/EmptyBlock.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ColorMC.Gui.MusicPlayer.Decoder.Flac; +namespace ColorMC.Gui.MusicPlayer.Decoder.Flac; public class EmptyBlock(bool last, BlockType type, int size) : FlacInfoBlock(last, type, size) { diff --git a/src/ColorMC.Gui/Objs/GuiConfigObj.cs b/src/ColorMC.Gui/Objs/GuiConfigObj.cs index d7b99b3cb..c39e7004f 100644 --- a/src/ColorMC.Gui/Objs/GuiConfigObj.cs +++ b/src/ColorMC.Gui/Objs/GuiConfigObj.cs @@ -3,6 +3,25 @@ namespace ColorMC.Gui.Objs; +/// +/// 启动前检测 +/// +public record LaunchCheckSetting +{ + /// + /// 检测账户锁定 + /// + public bool CheckUser { get; set; } + /// + /// 检测加载器 + /// + public bool CheckLoader { get; set; } + /// + /// 检测内存大小 + /// + public bool CheckMemory { get; set; } +} + /// /// 样式设置 /// @@ -356,6 +375,10 @@ public record GuiConfigObj /// public InputSetting Input { get; set; } /// + /// 启动前检测 + /// + public LaunchCheckSetting LaunchCheck { get; set; } + /// /// 服务器云同步密钥 /// public string ServerKey { get; set; } diff --git a/src/ColorMC.Gui/Resource/Language/gui_zh-cn.json b/src/ColorMC.Gui/Resource/Language/gui_zh-cn.json index 4f40291c9..d9120a1e1 100644 --- a/src/ColorMC.Gui/Resource/Language/gui_zh-cn.json +++ b/src/ColorMC.Gui/Resource/Language/gui_zh-cn.json @@ -55,6 +55,7 @@ "MainWindow.Flyouts.Text21": "启动实例", "MainWindow.Flyouts.Text22": "选中分组实例", "MainWindow.Flyouts.Text23": "导出启动参数", + "MainWindow.Flyouts.Text24": "启动参数", "MainWindow.Info2": "已启动", "MainWindow.Info3": "正在启动游戏", "MainWindow.Info8": "正在登录账户", @@ -303,8 +304,12 @@ "SettingWindow.Tab4.Text21": "执行的程序命令", "SettingWindow.Tab4.Text22": "校验完整性", "SettingWindow.Tab4.Text23": "启用安全log4j", - "SettingWindow.Tab4.Text24": "游戏文件检查", + "SettingWindow.Tab4.Text24": "游戏启动前检查", "SettingWindow.Tab4.Text25": "同时启动游戏", + "SettingWindow.Tab4.Text26": "检测账户冲突", + "SettingWindow.Tab4.Text27": "检测模组加载器", + "SettingWindow.Tab4.Text28": "检测内存参数", + "SettingWindow.Tab4.Text29": "当前系统内存:{0} MB,剩余内存{1} MB", "SettingWindow.Tab5.Text1": "添加Java路径", "SettingWindow.Tab5.Text2": "Java名字", "SettingWindow.Tab5.Text3": "Java路径", @@ -1211,11 +1216,12 @@ "GameBinding.Info15": "无法识别的模组", "GameBinding.Info16": "正在下载服务器实例文件", "GameBinding.Info17": "损坏的结构文件", - "GameBinding.Info18": "是否不再提醒账户冲突", + "GameBinding.Info18": "是否不再检测账户冲突", "GameBinding.Info19": "游戏实例 {0} 添加了Mod,但是没有使用Mod加载器,是否要继续启动", "GameBinding.Info20": "你正在启动大型整合包,但是内存分配过小,\n可能会导致性能问题(卡顿),是否继续启动", "GameBinding.Info21": "调整内存", - "GameBinding.Info22": "是否不再提示内存过小问题", + "GameBinding.Info22": "是否不再检测内存过小", + "GameBinding.Info23": "是否不再检测模组加载器", "GameBinding.Error1": "账户已被占用,是否继续使用这个账户", "GameBinding.Error2": "设置图标错误", "GameBinding.Error3": "没有选择账户", diff --git a/src/ColorMC.Gui/UI/Controls/GameEdit/GameEditControl.axaml.cs b/src/ColorMC.Gui/UI/Controls/GameEdit/GameEditControl.axaml.cs index 4790e3a02..a4da423d7 100644 --- a/src/ColorMC.Gui/UI/Controls/GameEdit/GameEditControl.axaml.cs +++ b/src/ColorMC.Gui/UI/Controls/GameEdit/GameEditControl.axaml.cs @@ -74,6 +74,11 @@ public override void Closed() WindowManager.GameEditWindows.Remove(_obj.UUID); } + public override void Opened() + { + (DataContext as GameEditModel)?.Load(); + } + public override TopModel GenModel(BaseModel model) { return new GameEditModel(model, _obj); diff --git a/src/ColorMC.Gui/UI/Controls/GameEdit/Tab2Control.axaml b/src/ColorMC.Gui/UI/Controls/GameEdit/Tab2Control.axaml index 6b1cf0b9e..1c88f7f6a 100644 --- a/src/ColorMC.Gui/UI/Controls/GameEdit/Tab2Control.axaml +++ b/src/ColorMC.Gui/UI/Controls/GameEdit/Tab2Control.axaml @@ -115,6 +115,28 @@ Stroke="{setting:Theme FontColor}" /> + + + + + + + + + + + + - - +