-
-
Save kanaka/2e7f20be852a4527df63 to your computer and use it in GitHub Desktop.
noVNC keyboard layout modified patch from Colin Dean
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/include/canvas.js b/include/canvas.js | |
index e3a2e23..7749d46 100644 | |
--- a/include/canvas.js | |
+++ b/include/canvas.js | |
@@ -8,7 +8,7 @@ | |
"use strict"; | |
/*jslint browser: true, white: false, bitwise: false */ | |
-/*global window, Util, Base64 */ | |
+/*global window, Util, Base64, KeySym */ | |
function Canvas(conf) { | |
@@ -215,99 +215,6 @@ function constructor() { | |
return that ; | |
} | |
-/* Translate DOM key event to keysym value */ | |
-function getKeysym(e) { | |
- var evt, keysym; | |
- evt = (e ? e : window.event); | |
- | |
- /* Remap modifier and special keys */ | |
- switch ( evt.keyCode ) { | |
- case 8 : keysym = 0xFF08; break; // BACKSPACE | |
- case 9 : keysym = 0xFF09; break; // TAB | |
- case 13 : keysym = 0xFF0D; break; // ENTER | |
- case 27 : keysym = 0xFF1B; break; // ESCAPE | |
- case 45 : keysym = 0xFF63; break; // INSERT | |
- case 46 : keysym = 0xFFFF; break; // DELETE | |
- case 36 : keysym = 0xFF50; break; // HOME | |
- case 35 : keysym = 0xFF57; break; // END | |
- case 33 : keysym = 0xFF55; break; // PAGE_UP | |
- case 34 : keysym = 0xFF56; break; // PAGE_DOWN | |
- case 37 : keysym = 0xFF51; break; // LEFT | |
- case 38 : keysym = 0xFF52; break; // UP | |
- case 39 : keysym = 0xFF53; break; // RIGHT | |
- case 40 : keysym = 0xFF54; break; // DOWN | |
- case 112 : keysym = 0xFFBE; break; // F1 | |
- case 113 : keysym = 0xFFBF; break; // F2 | |
- case 114 : keysym = 0xFFC0; break; // F3 | |
- case 115 : keysym = 0xFFC1; break; // F4 | |
- case 116 : keysym = 0xFFC2; break; // F5 | |
- case 117 : keysym = 0xFFC3; break; // F6 | |
- case 118 : keysym = 0xFFC4; break; // F7 | |
- case 119 : keysym = 0xFFC5; break; // F8 | |
- case 120 : keysym = 0xFFC6; break; // F9 | |
- case 121 : keysym = 0xFFC7; break; // F10 | |
- case 122 : keysym = 0xFFC8; break; // F11 | |
- case 123 : keysym = 0xFFC9; break; // F12 | |
- case 16 : keysym = 0xFFE1; break; // SHIFT | |
- case 17 : keysym = 0xFFE3; break; // CONTROL | |
- //case 18 : keysym = 0xFFE7; break; // Left Meta (Mac Option) | |
- case 18 : keysym = 0xFFE9; break; // Left ALT (Mac Command) | |
- default : keysym = evt.keyCode; break; | |
- } | |
- | |
- /* Remap symbols */ | |
- switch (keysym) { | |
- case 186 : keysym = 59; break; // ; (IE) | |
- case 187 : keysym = 61; break; // = (IE) | |
- case 188 : keysym = 44; break; // , (Mozilla, IE) | |
- case 109 : // - (Mozilla) | |
- if (Util.Engine.gecko) { | |
- keysym = 45; } | |
- break; | |
- case 189 : keysym = 45; break; // - (IE) | |
- case 190 : keysym = 46; break; // . (Mozilla, IE) | |
- case 191 : keysym = 47; break; // / (Mozilla, IE) | |
- case 192 : keysym = 96; break; // ` (Mozilla, IE) | |
- case 219 : keysym = 91; break; // [ (Mozilla, IE) | |
- case 220 : keysym = 92; break; // \ (Mozilla, IE) | |
- case 221 : keysym = 93; break; // ] (Mozilla, IE) | |
- case 222 : keysym = 39; break; // ' (Mozilla, IE) | |
- } | |
- | |
- /* Remap shifted and unshifted keys */ | |
- if (!!evt.shiftKey) { | |
- switch (keysym) { | |
- case 48 : keysym = 41 ; break; // ) (shifted 0) | |
- case 49 : keysym = 33 ; break; // ! (shifted 1) | |
- case 50 : keysym = 64 ; break; // @ (shifted 2) | |
- case 51 : keysym = 35 ; break; // # (shifted 3) | |
- case 52 : keysym = 36 ; break; // $ (shifted 4) | |
- case 53 : keysym = 37 ; break; // % (shifted 5) | |
- case 54 : keysym = 94 ; break; // ^ (shifted 6) | |
- case 55 : keysym = 38 ; break; // & (shifted 7) | |
- case 56 : keysym = 42 ; break; // * (shifted 8) | |
- case 57 : keysym = 40 ; break; // ( (shifted 9) | |
- | |
- case 59 : keysym = 58 ; break; // : (shifted `) | |
- case 61 : keysym = 43 ; break; // + (shifted ;) | |
- case 44 : keysym = 60 ; break; // < (shifted ,) | |
- case 45 : keysym = 95 ; break; // _ (shifted -) | |
- case 46 : keysym = 62 ; break; // > (shifted .) | |
- case 47 : keysym = 63 ; break; // ? (shifted /) | |
- case 96 : keysym = 126; break; // ~ (shifted `) | |
- case 91 : keysym = 123; break; // { (shifted [) | |
- case 92 : keysym = 124; break; // | (shifted \) | |
- case 93 : keysym = 125; break; // } (shifted ]) | |
- case 39 : keysym = 34 ; break; // " (shifted ') | |
- } | |
- } else if ((keysym >= 65) && (keysym <=90)) { | |
- /* Remap unshifted A-Z */ | |
- keysym += 32; | |
- } | |
- | |
- return keysym; | |
-} | |
- | |
function onMouseButton(e, down) { | |
var evt, pos, bmask; | |
if (! conf.focused) { | |
@@ -362,29 +269,76 @@ function onMouseMove(e) { | |
} | |
function onKeyDown(e) { | |
- //Util.Debug("keydown: " + getKeysym(e)); | |
if (! conf.focused) { | |
return true; | |
} | |
+ var evt = (e ? e : window.event), | |
+ ks = KeySym.fromCode(evt.keyCode, evt.ctrlKey, evt.altKey); | |
+ | |
+ if (ks === null) { | |
+ Util.Debug("onKeyDown: handled as keypress"); | |
+ return true; // handled as keypress instead | |
+ } | |
+ | |
+ //Util.Debug("keydown: " + ks + " 0x" + ks.toString(16)); | |
if (c_keyPress) { | |
- c_keyPress(getKeysym(e), 1); | |
+ c_keyPress(ks, 1); | |
} | |
Util.stopEvent(e); | |
return false; | |
} | |
function onKeyUp(e) { | |
- //Util.Debug("keyup: " + getKeysym(e)); | |
if (! conf.focused) { | |
return true; | |
} | |
+ var evt = (e ? e : window.event), | |
+ ks = KeySym.fromCode(evt.keyCode, evt.ctrlKey, evt.altKey); | |
+ | |
+ if (ks === null) { | |
+ return true; // handled as keypress instead | |
+ } | |
+ | |
+ //Util.Debug("keyup: " + ks + " 0x" + ks.toString(16)); | |
if (c_keyPress) { | |
- c_keyPress(getKeysym(e), 0); | |
+ c_keyPress(ks, 0); | |
} | |
Util.stopEvent(e); | |
return false; | |
} | |
+function onKeyPress(e) { | |
+ if (! conf.focused) { | |
+ return true; | |
+ } | |
+ var code; | |
+ if (e.ctrlKey && !e.altKey) { | |
+ code = 0; // Prevent Gecko sending these again | |
+ } else if (typeof e.which === 'undefined' && typeof e.charCode === 'undefined') { | |
+ code = e.keyCode; // IE, normal key | |
+ } else { | |
+ code = e.charCode; | |
+ } | |
+ | |
+ if (code > 255) { | |
+ // Map Unicode outside Latin 1 to X11 keysyms | |
+ code = KeySym.unicodeTable[code]; | |
+ if (typeof code === 'undefined') | |
+ code = 0; | |
+ } | |
+ | |
+ if (code != 0) { | |
+ //Util.Debug("keypress: " + code + " 0x" + code.toString(16)); | |
+ if (c_keyPress) { | |
+ c_keyPress(code, 1); | |
+ c_keyPress(code, 0); | |
+ } | |
+ } | |
+ | |
+ Util.stopEvent(e); | |
+ return false; | |
+} | |
+ | |
function onMouseDisable(e) { | |
var evt, pos; | |
if (! conf.focused) { | |
@@ -422,6 +376,7 @@ that.start = function(keyPressFunc, mouseButtonFunc, mouseMoveFunc) { | |
Util.addEvent(conf.focusContainer, 'keydown', onKeyDown); | |
Util.addEvent(conf.focusContainer, 'keyup', onKeyUp); | |
+ Util.addEvent(conf.focusContainer, 'keypress', onKeyPress); | |
Util.addEvent(c, 'mousedown', onMouseDown); | |
Util.addEvent(c, 'mouseup', onMouseUp); | |
Util.addEvent(c, 'mousemove', onMouseMove); | |
diff --git a/include/keysym.js b/include/keysym.js | |
new file mode 100644 | |
index 0000000..c05ca44 | |
--- /dev/null | |
+++ b/include/keysym.js | |
@@ -0,0 +1,1390 @@ | |
+/* | |
+ * noVNC: HTML5 VNC client | |
+ * Copyright (C) 2010 Joel Martin & Colin Dean | |
+ * Licensed under LGPL-3 (see LICENSE.txt) | |
+ * | |
+ * The data in the Unicode Table below was derived from the X.Org | |
+ * Foundation's X11R7.4 /usr/include/X11/keysymdef.h. | |
+ * | |
+ * See README.md for usage and integration instructions. | |
+ */ | |
+ | |
+"use strict"; | |
+/*jslint browser: true, white: false, bitwise: false */ | |
+ | |
+var KeySym = { | |
+ | |
+ // | |
+ // Translate DOM key code to keysym value | |
+ // | |
+ fromCode : function (keyCode, ctrlKey, altKey) { | |
+ var keysym; | |
+ | |
+ // remap special keys like BACKSPACE, ENTER, SHIFT, CONTROL, ... | |
+ keysym = KeySym.specialTable[keyCode]; | |
+ if (typeof keysym !== 'undefined') { | |
+ return keysym; | |
+ } | |
+ | |
+ // Remap ASCII control keys (e.g. Ctrl-C, Ctrl-]) but not Ctrl-Alt keys | |
+ if (ctrlKey && !altKey) { | |
+ keysym = KeySym.controlTable[keyCode]; | |
+ if (typeof keysym !== 'undefined') { | |
+ return keysym; | |
+ } | |
+ return keyCode; // in hope rather than anticipation | |
+ } | |
+ | |
+ // | |
+ // For normal keys, we cannot deduce anything like ASCII or Unicode | |
+ // character value from keyCode, because this is dependent on the | |
+ // keyboard layout, which we don't know. For example, Shift-2 on | |
+ // a US keyboard is character '@', but on UK keyboard it's '"', and | |
+ // many European keyboards use Ctrl-Alt to enter what would be standard | |
+ // keys on US keyboard (e.g. Ctrl-Alt-0 is '@' on French keyboard and | |
+ // Ctrl-Alt-x is '#' on Czech). | |
+ // | |
+ // These would therefore all be better handled as keypress events | |
+ // rather than keydown + keyup, so return null to indicate this. | |
+ // | |
+ return null; | |
+ | |
+ }, | |
+ | |
+ // | |
+ // Browser keycode to X11 keysym for special non-alphanumeric keys | |
+ // | |
+ specialTable : { | |
+ 8 : 0xFF08, // BACKSPACE | |
+ 9 : 0xFF09, // TAB | |
+ 13 : 0xFF0D, // ENTER | |
+ 27 : 0xFF1B, // ESCAPE | |
+ 45 : 0xFF63, // INSERT | |
+ 46 : 0xFFFF, // DELETE | |
+ 36 : 0xFF50, // HOME | |
+ 35 : 0xFF57, // END | |
+ 33 : 0xFF55, // PAGE_UP | |
+ 34 : 0xFF56, // PAGE_DOWN | |
+ 37 : 0xFF51, // LEFT | |
+ 38 : 0xFF52, // UP | |
+ 39 : 0xFF53, // RIGHT | |
+ 40 : 0xFF54, // DOWN | |
+ 112 : 0xFFBE, // F1 | |
+ 113 : 0xFFBF, // F2 | |
+ 114 : 0xFFC0, // F3 | |
+ 115 : 0xFFC1, // F4 | |
+ 116 : 0xFFC2, // F5 | |
+ 117 : 0xFFC3, // F6 | |
+ 118 : 0xFFC4, // F7 | |
+ 119 : 0xFFC5, // F8 | |
+ 120 : 0xFFC6, // F9 | |
+ 121 : 0xFFC7, // F10 | |
+ 122 : 0xFFC8, // F11 | |
+ 123 : 0xFFC9, // F12 | |
+ 16 : 0xFFE1, // SHIFT | |
+ 17 : 0xFFE3, // CONTROL | |
+ //18 : 0xFFE7, // Left Meta (Mac Option) | |
+ 18 : 0xFFE9 // Left ALT (Mac Command) | |
+ }, | |
+ | |
+ // | |
+ // Browser keycode to X11 keysym for ASII control characters 0-31 | |
+ // | |
+ controlTable : { | |
+ 65 : 97, // Ctrl-a | |
+ 66 : 98, // Ctrl-b | |
+ 67 : 99, // Ctrl-c | |
+ 68 : 100, // Ctrl-d | |
+ 69 : 101, // Ctrl-e | |
+ 70 : 102, // Ctrl-f | |
+ 71 : 103, // Ctrl-g | |
+ 72 : 104, // Ctrl-h | |
+ 73 : 105, // Ctrl-i | |
+ 74 : 106, // Ctrl-j | |
+ 75 : 107, // Ctrl-k | |
+ 76 : 108, // Ctrl-l | |
+ 77 : 109, // Ctrl-m | |
+ 78 : 110, // Ctrl-n | |
+ 79 : 111, // Ctrl-o | |
+ 80 : 112, // Ctrl-p | |
+ 81 : 113, // Ctrl-q | |
+ 82 : 114, // Ctrl-r | |
+ 83 : 115, // Ctrl-s | |
+ 84 : 116, // Ctrl-t | |
+ 85 : 117, // Ctrl-u | |
+ 86 : 118, // Ctrl-v | |
+ 87 : 119, // Ctrl-w | |
+ 88 : 120, // Ctrl-x | |
+ 89 : 121, // Ctrl-y | |
+ 90 : 122, // Ctrl-z | |
+ // The following may not all work using non-US keyboard layouts | |
+ 32 : 0x0020, // Ctrl-SPACE | |
+ 50 : 0x0040, // Ctrl-@ | |
+ 219 : 0x005B, // Ctrl-[ | |
+ 220 : 0x005C, // Ctrl-\ | |
+ 221 : 0x005D, // Ctrl-] | |
+ 94 : 0x005E, // Ctrl-^ | |
+ 95 : 0x005F // Ctrl-_ | |
+ }, | |
+ | |
+ // | |
+ // Browser keypress to X11 keysym for Unicode characters > U+00FF | |
+ // | |
+ unicodeTable : { | |
+ 0x0104 : 0x01A1, | |
+ 0x02D8 : 0x01A2, | |
+ 0x0141 : 0x01A3, | |
+ 0x013D : 0x01A5, | |
+ 0x015A : 0x01A6, | |
+ 0x0160 : 0x01A9, | |
+ 0x015E : 0x01AA, | |
+ 0x0164 : 0x01AB, | |
+ 0x0179 : 0x01AC, | |
+ 0x017D : 0x01AE, | |
+ 0x017B : 0x01AF, | |
+ 0x0105 : 0x01B1, | |
+ 0x02DB : 0x01B2, | |
+ 0x0142 : 0x01B3, | |
+ 0x013E : 0x01B5, | |
+ 0x015B : 0x01B6, | |
+ 0x02C7 : 0x01B7, | |
+ 0x0161 : 0x01B9, | |
+ 0x015F : 0x01BA, | |
+ 0x0165 : 0x01BB, | |
+ 0x017A : 0x01BC, | |
+ 0x02DD : 0x01BD, | |
+ 0x017E : 0x01BE, | |
+ 0x017C : 0x01BF, | |
+ 0x0154 : 0x01C0, | |
+ 0x0102 : 0x01C3, | |
+ 0x0139 : 0x01C5, | |
+ 0x0106 : 0x01C6, | |
+ 0x010C : 0x01C8, | |
+ 0x0118 : 0x01CA, | |
+ 0x011A : 0x01CC, | |
+ 0x010E : 0x01CF, | |
+ 0x0110 : 0x01D0, | |
+ 0x0143 : 0x01D1, | |
+ 0x0147 : 0x01D2, | |
+ 0x0150 : 0x01D5, | |
+ 0x0158 : 0x01D8, | |
+ 0x016E : 0x01D9, | |
+ 0x0170 : 0x01DB, | |
+ 0x0162 : 0x01DE, | |
+ 0x0155 : 0x01E0, | |
+ 0x0103 : 0x01E3, | |
+ 0x013A : 0x01E5, | |
+ 0x0107 : 0x01E6, | |
+ 0x010D : 0x01E8, | |
+ 0x0119 : 0x01EA, | |
+ 0x011B : 0x01EC, | |
+ 0x010F : 0x01EF, | |
+ 0x0111 : 0x01F0, | |
+ 0x0144 : 0x01F1, | |
+ 0x0148 : 0x01F2, | |
+ 0x0151 : 0x01F5, | |
+ 0x0171 : 0x01FB, | |
+ 0x0159 : 0x01F8, | |
+ 0x016F : 0x01F9, | |
+ 0x0163 : 0x01FE, | |
+ 0x02D9 : 0x01FF, | |
+ 0x0126 : 0x02A1, | |
+ 0x0124 : 0x02A6, | |
+ 0x0130 : 0x02A9, | |
+ 0x011E : 0x02AB, | |
+ 0x0134 : 0x02AC, | |
+ 0x0127 : 0x02B1, | |
+ 0x0125 : 0x02B6, | |
+ 0x0131 : 0x02B9, | |
+ 0x011F : 0x02BB, | |
+ 0x0135 : 0x02BC, | |
+ 0x010A : 0x02C5, | |
+ 0x0108 : 0x02C6, | |
+ 0x0120 : 0x02D5, | |
+ 0x011C : 0x02D8, | |
+ 0x016C : 0x02DD, | |
+ 0x015C : 0x02DE, | |
+ 0x010B : 0x02E5, | |
+ 0x0109 : 0x02E6, | |
+ 0x0121 : 0x02F5, | |
+ 0x011D : 0x02F8, | |
+ 0x016D : 0x02FD, | |
+ 0x015D : 0x02FE, | |
+ 0x0138 : 0x03A2, | |
+ 0x0156 : 0x03A3, | |
+ 0x0128 : 0x03A5, | |
+ 0x013B : 0x03A6, | |
+ 0x0112 : 0x03AA, | |
+ 0x0122 : 0x03AB, | |
+ 0x0166 : 0x03AC, | |
+ 0x0157 : 0x03B3, | |
+ 0x0129 : 0x03B5, | |
+ 0x013C : 0x03B6, | |
+ 0x0113 : 0x03BA, | |
+ 0x0123 : 0x03BB, | |
+ 0x0167 : 0x03BC, | |
+ 0x014A : 0x03BD, | |
+ 0x014B : 0x03BF, | |
+ 0x0100 : 0x03C0, | |
+ 0x012E : 0x03C7, | |
+ 0x0116 : 0x03CC, | |
+ 0x012A : 0x03CF, | |
+ 0x0145 : 0x03D1, | |
+ 0x014C : 0x03D2, | |
+ 0x0136 : 0x03D3, | |
+ 0x0172 : 0x03D9, | |
+ 0x0168 : 0x03DD, | |
+ 0x016A : 0x03DE, | |
+ 0x0101 : 0x03E0, | |
+ 0x012F : 0x03E7, | |
+ 0x0117 : 0x03EC, | |
+ 0x012B : 0x03EF, | |
+ 0x0146 : 0x03F1, | |
+ 0x014D : 0x03F2, | |
+ 0x0137 : 0x03F3, | |
+ 0x0173 : 0x03F9, | |
+ 0x0169 : 0x03FD, | |
+ 0x016B : 0x03FE, | |
+ 0x1E02 : 0x1001E02, | |
+ 0x1E03 : 0x1001E03, | |
+ 0x1E0A : 0x1001E0A, | |
+ 0x1E80 : 0x1001E80, | |
+ 0x1E82 : 0x1001E82, | |
+ 0x1E0B : 0x1001E0B, | |
+ 0x1EF2 : 0x1001EF2, | |
+ 0x1E1E : 0x1001E1E, | |
+ 0x1E1F : 0x1001E1F, | |
+ 0x1E40 : 0x1001E40, | |
+ 0x1E41 : 0x1001E41, | |
+ 0x1E56 : 0x1001E56, | |
+ 0x1E81 : 0x1001E81, | |
+ 0x1E57 : 0x1001E57, | |
+ 0x1E83 : 0x1001E83, | |
+ 0x1E60 : 0x1001E60, | |
+ 0x1EF3 : 0x1001EF3, | |
+ 0x1E84 : 0x1001E84, | |
+ 0x1E85 : 0x1001E85, | |
+ 0x1E61 : 0x1001E61, | |
+ 0x0174 : 0x1000174, | |
+ 0x1E6A : 0x1001E6A, | |
+ 0x0176 : 0x1000176, | |
+ 0x0175 : 0x1000175, | |
+ 0x1E6B : 0x1001E6B, | |
+ 0x0177 : 0x1000177, | |
+ 0x0152 : 0x13BC, | |
+ 0x0153 : 0x13BD, | |
+ 0x0178 : 0x13BE, | |
+ 0x203E : 0x047E, | |
+ 0x3002 : 0x04A1, | |
+ 0x300C : 0x04A2, | |
+ 0x300D : 0x04A3, | |
+ 0x3001 : 0x04A4, | |
+ 0x30FB : 0x04A5, | |
+ 0x30F2 : 0x04A6, | |
+ 0x30A1 : 0x04A7, | |
+ 0x30A3 : 0x04A8, | |
+ 0x30A5 : 0x04A9, | |
+ 0x30A7 : 0x04AA, | |
+ 0x30A9 : 0x04AB, | |
+ 0x30E3 : 0x04AC, | |
+ 0x30E5 : 0x04AD, | |
+ 0x30E7 : 0x04AE, | |
+ 0x30C3 : 0x04AF, | |
+ 0x30FC : 0x04B0, | |
+ 0x30A2 : 0x04B1, | |
+ 0x30A4 : 0x04B2, | |
+ 0x30A6 : 0x04B3, | |
+ 0x30A8 : 0x04B4, | |
+ 0x30AA : 0x04B5, | |
+ 0x30AB : 0x04B6, | |
+ 0x30AD : 0x04B7, | |
+ 0x30AF : 0x04B8, | |
+ 0x30B1 : 0x04B9, | |
+ 0x30B3 : 0x04BA, | |
+ 0x30B5 : 0x04BB, | |
+ 0x30B7 : 0x04BC, | |
+ 0x30B9 : 0x04BD, | |
+ 0x30BB : 0x04BE, | |
+ 0x30BD : 0x04BF, | |
+ 0x30BF : 0x04C0, | |
+ 0x30C1 : 0x04C1, | |
+ 0x30C4 : 0x04C2, | |
+ 0x30C6 : 0x04C3, | |
+ 0x30C8 : 0x04C4, | |
+ 0x30CA : 0x04C5, | |
+ 0x30CB : 0x04C6, | |
+ 0x30CC : 0x04C7, | |
+ 0x30CD : 0x04C8, | |
+ 0x30CE : 0x04C9, | |
+ 0x30CF : 0x04CA, | |
+ 0x30D2 : 0x04CB, | |
+ 0x30D5 : 0x04CC, | |
+ 0x30D8 : 0x04CD, | |
+ 0x30DB : 0x04CE, | |
+ 0x30DE : 0x04CF, | |
+ 0x30DF : 0x04D0, | |
+ 0x30E0 : 0x04D1, | |
+ 0x30E1 : 0x04D2, | |
+ 0x30E2 : 0x04D3, | |
+ 0x30E4 : 0x04D4, | |
+ 0x30E6 : 0x04D5, | |
+ 0x30E8 : 0x04D6, | |
+ 0x30E9 : 0x04D7, | |
+ 0x30EA : 0x04D8, | |
+ 0x30EB : 0x04D9, | |
+ 0x30EC : 0x04DA, | |
+ 0x30ED : 0x04DB, | |
+ 0x30EF : 0x04DC, | |
+ 0x30F3 : 0x04DD, | |
+ 0x309B : 0x04DE, | |
+ 0x309C : 0x04DF, | |
+ 0x06F0 : 0x10006F0, | |
+ 0x06F1 : 0x10006F1, | |
+ 0x06F2 : 0x10006F2, | |
+ 0x06F3 : 0x10006F3, | |
+ 0x06F4 : 0x10006F4, | |
+ 0x06F5 : 0x10006F5, | |
+ 0x06F6 : 0x10006F6, | |
+ 0x06F7 : 0x10006F7, | |
+ 0x06F8 : 0x10006F8, | |
+ 0x06F9 : 0x10006F9, | |
+ 0x066A : 0x100066A, | |
+ 0x0670 : 0x1000670, | |
+ 0x0679 : 0x1000679, | |
+ 0x067E : 0x100067E, | |
+ 0x0686 : 0x1000686, | |
+ 0x0688 : 0x1000688, | |
+ 0x0691 : 0x1000691, | |
+ 0x060C : 0x05AC, | |
+ 0x06D4 : 0x10006D4, | |
+ 0x0660 : 0x1000660, | |
+ 0x0661 : 0x1000661, | |
+ 0x0662 : 0x1000662, | |
+ 0x0663 : 0x1000663, | |
+ 0x0664 : 0x1000664, | |
+ 0x0665 : 0x1000665, | |
+ 0x0666 : 0x1000666, | |
+ 0x0667 : 0x1000667, | |
+ 0x0668 : 0x1000668, | |
+ 0x0669 : 0x1000669, | |
+ 0x061B : 0x05BB, | |
+ 0x061F : 0x05BF, | |
+ 0x0621 : 0x05C1, | |
+ 0x0622 : 0x05C2, | |
+ 0x0623 : 0x05C3, | |
+ 0x0624 : 0x05C4, | |
+ 0x0625 : 0x05C5, | |
+ 0x0626 : 0x05C6, | |
+ 0x0627 : 0x05C7, | |
+ 0x0628 : 0x05C8, | |
+ 0x0629 : 0x05C9, | |
+ 0x062A : 0x05CA, | |
+ 0x062B : 0x05CB, | |
+ 0x062C : 0x05CC, | |
+ 0x062D : 0x05CD, | |
+ 0x062E : 0x05CE, | |
+ 0x062F : 0x05CF, | |
+ 0x0630 : 0x05D0, | |
+ 0x0631 : 0x05D1, | |
+ 0x0632 : 0x05D2, | |
+ 0x0633 : 0x05D3, | |
+ 0x0634 : 0x05D4, | |
+ 0x0635 : 0x05D5, | |
+ 0x0636 : 0x05D6, | |
+ 0x0637 : 0x05D7, | |
+ 0x0638 : 0x05D8, | |
+ 0x0639 : 0x05D9, | |
+ 0x063A : 0x05DA, | |
+ 0x0640 : 0x05E0, | |
+ 0x0641 : 0x05E1, | |
+ 0x0642 : 0x05E2, | |
+ 0x0643 : 0x05E3, | |
+ 0x0644 : 0x05E4, | |
+ 0x0645 : 0x05E5, | |
+ 0x0646 : 0x05E6, | |
+ 0x0647 : 0x05E7, | |
+ 0x0648 : 0x05E8, | |
+ 0x0649 : 0x05E9, | |
+ 0x064A : 0x05EA, | |
+ 0x064B : 0x05EB, | |
+ 0x064C : 0x05EC, | |
+ 0x064D : 0x05ED, | |
+ 0x064E : 0x05EE, | |
+ 0x064F : 0x05EF, | |
+ 0x0650 : 0x05F0, | |
+ 0x0651 : 0x05F1, | |
+ 0x0652 : 0x05F2, | |
+ 0x0653 : 0x1000653, | |
+ 0x0654 : 0x1000654, | |
+ 0x0655 : 0x1000655, | |
+ 0x0698 : 0x1000698, | |
+ 0x06A4 : 0x10006A4, | |
+ 0x06A9 : 0x10006A9, | |
+ 0x06AF : 0x10006AF, | |
+ 0x06BA : 0x10006BA, | |
+ 0x06BE : 0x10006BE, | |
+ 0x06CC : 0x10006CC, | |
+ 0x06D2 : 0x10006D2, | |
+ 0x06C1 : 0x10006C1, | |
+ 0x0492 : 0x1000492, | |
+ 0x0493 : 0x1000493, | |
+ 0x0496 : 0x1000496, | |
+ 0x0497 : 0x1000497, | |
+ 0x049A : 0x100049A, | |
+ 0x049B : 0x100049B, | |
+ 0x049C : 0x100049C, | |
+ 0x049D : 0x100049D, | |
+ 0x04A2 : 0x10004A2, | |
+ 0x04A3 : 0x10004A3, | |
+ 0x04AE : 0x10004AE, | |
+ 0x04AF : 0x10004AF, | |
+ 0x04B0 : 0x10004B0, | |
+ 0x04B1 : 0x10004B1, | |
+ 0x04B2 : 0x10004B2, | |
+ 0x04B3 : 0x10004B3, | |
+ 0x04B6 : 0x10004B6, | |
+ 0x04B7 : 0x10004B7, | |
+ 0x04B8 : 0x10004B8, | |
+ 0x04B9 : 0x10004B9, | |
+ 0x04BA : 0x10004BA, | |
+ 0x04BB : 0x10004BB, | |
+ 0x04D8 : 0x10004D8, | |
+ 0x04D9 : 0x10004D9, | |
+ 0x04E2 : 0x10004E2, | |
+ 0x04E3 : 0x10004E3, | |
+ 0x04E8 : 0x10004E8, | |
+ 0x04E9 : 0x10004E9, | |
+ 0x04EE : 0x10004EE, | |
+ 0x04EF : 0x10004EF, | |
+ 0x0452 : 0x06A1, | |
+ 0x0453 : 0x06A2, | |
+ 0x0451 : 0x06A3, | |
+ 0x0454 : 0x06A4, | |
+ 0x0455 : 0x06A5, | |
+ 0x0456 : 0x06A6, | |
+ 0x0457 : 0x06A7, | |
+ 0x0458 : 0x06A8, | |
+ 0x0459 : 0x06A9, | |
+ 0x045A : 0x06AA, | |
+ 0x045B : 0x06AB, | |
+ 0x045C : 0x06AC, | |
+ 0x0491 : 0x06AD, | |
+ 0x045E : 0x06AE, | |
+ 0x045F : 0x06AF, | |
+ 0x2116 : 0x06B0, | |
+ 0x0402 : 0x06B1, | |
+ 0x0403 : 0x06B2, | |
+ 0x0401 : 0x06B3, | |
+ 0x0404 : 0x06B4, | |
+ 0x0405 : 0x06B5, | |
+ 0x0406 : 0x06B6, | |
+ 0x0407 : 0x06B7, | |
+ 0x0408 : 0x06B8, | |
+ 0x0409 : 0x06B9, | |
+ 0x040A : 0x06BA, | |
+ 0x040B : 0x06BB, | |
+ 0x040C : 0x06BC, | |
+ 0x0490 : 0x06BD, | |
+ 0x040E : 0x06BE, | |
+ 0x040F : 0x06BF, | |
+ 0x044E : 0x06C0, | |
+ 0x0430 : 0x06C1, | |
+ 0x0431 : 0x06C2, | |
+ 0x0446 : 0x06C3, | |
+ 0x0434 : 0x06C4, | |
+ 0x0435 : 0x06C5, | |
+ 0x0444 : 0x06C6, | |
+ 0x0433 : 0x06C7, | |
+ 0x0445 : 0x06C8, | |
+ 0x0438 : 0x06C9, | |
+ 0x0439 : 0x06CA, | |
+ 0x043A : 0x06CB, | |
+ 0x043B : 0x06CC, | |
+ 0x043C : 0x06CD, | |
+ 0x043D : 0x06CE, | |
+ 0x043E : 0x06CF, | |
+ 0x043F : 0x06D0, | |
+ 0x044F : 0x06D1, | |
+ 0x0440 : 0x06D2, | |
+ 0x0441 : 0x06D3, | |
+ 0x0442 : 0x06D4, | |
+ 0x0443 : 0x06D5, | |
+ 0x0436 : 0x06D6, | |
+ 0x0432 : 0x06D7, | |
+ 0x044C : 0x06D8, | |
+ 0x044B : 0x06D9, | |
+ 0x0437 : 0x06DA, | |
+ 0x0448 : 0x06DB, | |
+ 0x044D : 0x06DC, | |
+ 0x0449 : 0x06DD, | |
+ 0x0447 : 0x06DE, | |
+ 0x044A : 0x06DF, | |
+ 0x042E : 0x06E0, | |
+ 0x0410 : 0x06E1, | |
+ 0x0411 : 0x06E2, | |
+ 0x0426 : 0x06E3, | |
+ 0x0414 : 0x06E4, | |
+ 0x0415 : 0x06E5, | |
+ 0x0424 : 0x06E6, | |
+ 0x0413 : 0x06E7, | |
+ 0x0425 : 0x06E8, | |
+ 0x0418 : 0x06E9, | |
+ 0x0419 : 0x06EA, | |
+ 0x041A : 0x06EB, | |
+ 0x041B : 0x06EC, | |
+ 0x041C : 0x06ED, | |
+ 0x041D : 0x06EE, | |
+ 0x041E : 0x06EF, | |
+ 0x041F : 0x06F0, | |
+ 0x042F : 0x06F1, | |
+ 0x0420 : 0x06F2, | |
+ 0x0421 : 0x06F3, | |
+ 0x0422 : 0x06F4, | |
+ 0x0423 : 0x06F5, | |
+ 0x0416 : 0x06F6, | |
+ 0x0412 : 0x06F7, | |
+ 0x042C : 0x06F8, | |
+ 0x042B : 0x06F9, | |
+ 0x0417 : 0x06FA, | |
+ 0x0428 : 0x06FB, | |
+ 0x042D : 0x06FC, | |
+ 0x0429 : 0x06FD, | |
+ 0x0427 : 0x06FE, | |
+ 0x042A : 0x06FF, | |
+ 0x0386 : 0x07A1, | |
+ 0x0388 : 0x07A2, | |
+ 0x0389 : 0x07A3, | |
+ 0x038A : 0x07A4, | |
+ 0x03AA : 0x07A5, | |
+ 0x038C : 0x07A7, | |
+ 0x038E : 0x07A8, | |
+ 0x03AB : 0x07A9, | |
+ 0x038F : 0x07AB, | |
+ 0x0385 : 0x07AE, | |
+ 0x2015 : 0x07AF, | |
+ 0x03AC : 0x07B1, | |
+ 0x03AD : 0x07B2, | |
+ 0x03AE : 0x07B3, | |
+ 0x03AF : 0x07B4, | |
+ 0x03CA : 0x07B5, | |
+ 0x0390 : 0x07B6, | |
+ 0x03CC : 0x07B7, | |
+ 0x03CD : 0x07B8, | |
+ 0x03CB : 0x07B9, | |
+ 0x03B0 : 0x07BA, | |
+ 0x03CE : 0x07BB, | |
+ 0x0391 : 0x07C1, | |
+ 0x0392 : 0x07C2, | |
+ 0x0393 : 0x07C3, | |
+ 0x0394 : 0x07C4, | |
+ 0x0395 : 0x07C5, | |
+ 0x0396 : 0x07C6, | |
+ 0x0397 : 0x07C7, | |
+ 0x0398 : 0x07C8, | |
+ 0x0399 : 0x07C9, | |
+ 0x039A : 0x07CA, | |
+ 0x039B : 0x07CB, | |
+ 0x039C : 0x07CC, | |
+ 0x039D : 0x07CD, | |
+ 0x039E : 0x07CE, | |
+ 0x039F : 0x07CF, | |
+ 0x03A0 : 0x07D0, | |
+ 0x03A1 : 0x07D1, | |
+ 0x03A3 : 0x07D2, | |
+ 0x03A4 : 0x07D4, | |
+ 0x03A5 : 0x07D5, | |
+ 0x03A6 : 0x07D6, | |
+ 0x03A7 : 0x07D7, | |
+ 0x03A8 : 0x07D8, | |
+ 0x03A9 : 0x07D9, | |
+ 0x03B1 : 0x07E1, | |
+ 0x03B2 : 0x07E2, | |
+ 0x03B3 : 0x07E3, | |
+ 0x03B4 : 0x07E4, | |
+ 0x03B5 : 0x07E5, | |
+ 0x03B6 : 0x07E6, | |
+ 0x03B7 : 0x07E7, | |
+ 0x03B8 : 0x07E8, | |
+ 0x03B9 : 0x07E9, | |
+ 0x03BA : 0x07EA, | |
+ 0x03BB : 0x07EB, | |
+ 0x03BC : 0x07EC, | |
+ 0x03BD : 0x07ED, | |
+ 0x03BE : 0x07EE, | |
+ 0x03BF : 0x07EF, | |
+ 0x03C0 : 0x07F0, | |
+ 0x03C1 : 0x07F1, | |
+ 0x03C3 : 0x07F2, | |
+ 0x03C2 : 0x07F3, | |
+ 0x03C4 : 0x07F4, | |
+ 0x03C5 : 0x07F5, | |
+ 0x03C6 : 0x07F6, | |
+ 0x03C7 : 0x07F7, | |
+ 0x03C8 : 0x07F8, | |
+ 0x03C9 : 0x07F9, | |
+ 0x23B7 : 0x08A1, | |
+ 0x2320 : 0x08A4, | |
+ 0x2321 : 0x08A5, | |
+ 0x23A1 : 0x08A7, | |
+ 0x23A3 : 0x08A8, | |
+ 0x23A4 : 0x08A9, | |
+ 0x23A6 : 0x08AA, | |
+ 0x239B : 0x08AB, | |
+ 0x239D : 0x08AC, | |
+ 0x239E : 0x08AD, | |
+ 0x23A0 : 0x08AE, | |
+ 0x23A8 : 0x08AF, | |
+ 0x23AC : 0x08B0, | |
+ 0x2264 : 0x08BC, | |
+ 0x2260 : 0x08BD, | |
+ 0x2265 : 0x08BE, | |
+ 0x222B : 0x08BF, | |
+ 0x2234 : 0x08C0, | |
+ 0x221D : 0x08C1, | |
+ 0x221E : 0x08C2, | |
+ 0x2207 : 0x08C5, | |
+ 0x223C : 0x08C8, | |
+ 0x2243 : 0x08C9, | |
+ 0x21D4 : 0x08CD, | |
+ 0x21D2 : 0x08CE, | |
+ 0x2261 : 0x08CF, | |
+ 0x221A : 0x08D6, | |
+ 0x2282 : 0x08DA, | |
+ 0x2283 : 0x08DB, | |
+ 0x2229 : 0x08DC, | |
+ 0x222A : 0x08DD, | |
+ 0x2227 : 0x08DE, | |
+ 0x2228 : 0x08DF, | |
+ 0x2202 : 0x08EF, | |
+ 0x0192 : 0x08F6, | |
+ 0x2190 : 0x08FB, | |
+ 0x2191 : 0x08FC, | |
+ 0x2192 : 0x08FD, | |
+ 0x2193 : 0x08FE, | |
+ 0x25C6 : 0x09E0, | |
+ 0x2592 : 0x09E1, | |
+ 0x2409 : 0x09E2, | |
+ 0x240C : 0x09E3, | |
+ 0x240D : 0x09E4, | |
+ 0x240A : 0x09E5, | |
+ 0x2424 : 0x09E8, | |
+ 0x240B : 0x09E9, | |
+ 0x2518 : 0x09EA, | |
+ 0x2510 : 0x09EB, | |
+ 0x250C : 0x09EC, | |
+ 0x2514 : 0x09ED, | |
+ 0x253C : 0x09EE, | |
+ 0x23BA : 0x09EF, | |
+ 0x23BB : 0x09F0, | |
+ 0x2500 : 0x09F1, | |
+ 0x23BC : 0x09F2, | |
+ 0x23BD : 0x09F3, | |
+ 0x251C : 0x09F4, | |
+ 0x2524 : 0x09F5, | |
+ 0x2534 : 0x09F6, | |
+ 0x252C : 0x09F7, | |
+ 0x2502 : 0x09F8, | |
+ 0x2003 : 0x0AA1, | |
+ 0x2002 : 0x0AA2, | |
+ 0x2004 : 0x0AA3, | |
+ 0x2005 : 0x0AA4, | |
+ 0x2007 : 0x0AA5, | |
+ 0x2008 : 0x0AA6, | |
+ 0x2009 : 0x0AA7, | |
+ 0x200A : 0x0AA8, | |
+ 0x2014 : 0x0AA9, | |
+ 0x2013 : 0x0AAA, | |
+ 0x2026 : 0x0AAE, | |
+ 0x2025 : 0x0AAF, | |
+ 0x2153 : 0x0AB0, | |
+ 0x2154 : 0x0AB1, | |
+ 0x2155 : 0x0AB2, | |
+ 0x2156 : 0x0AB3, | |
+ 0x2157 : 0x0AB4, | |
+ 0x2158 : 0x0AB5, | |
+ 0x2159 : 0x0AB6, | |
+ 0x215A : 0x0AB7, | |
+ 0x2105 : 0x0AB8, | |
+ 0x2012 : 0x0ABB, | |
+ 0x215B : 0x0AC3, | |
+ 0x215C : 0x0AC4, | |
+ 0x215D : 0x0AC5, | |
+ 0x215E : 0x0AC6, | |
+ 0x2122 : 0x0AC9, | |
+ 0x2018 : 0x0AD0, | |
+ 0x2019 : 0x0AD1, | |
+ 0x201C : 0x0AD2, | |
+ 0x201D : 0x0AD3, | |
+ 0x211E : 0x0AD4, | |
+ 0x2032 : 0x0AD6, | |
+ 0x2033 : 0x0AD7, | |
+ 0x271D : 0x0AD9, | |
+ 0x2663 : 0x0AEC, | |
+ 0x2666 : 0x0AED, | |
+ 0x2665 : 0x0AEE, | |
+ 0x2720 : 0x0AF0, | |
+ 0x2020 : 0x0AF1, | |
+ 0x2021 : 0x0AF2, | |
+ 0x2713 : 0x0AF3, | |
+ 0x2717 : 0x0AF4, | |
+ 0x266F : 0x0AF5, | |
+ 0x266D : 0x0AF6, | |
+ 0x2642 : 0x0AF7, | |
+ 0x2640 : 0x0AF8, | |
+ 0x260E : 0x0AF9, | |
+ 0x2315 : 0x0AFA, | |
+ 0x2117 : 0x0AFB, | |
+ 0x2038 : 0x0AFC, | |
+ 0x201A : 0x0AFD, | |
+ 0x201E : 0x0AFE, | |
+ 0x22A4 : 0x0BC2, | |
+ 0x230A : 0x0BC4, | |
+ 0x2218 : 0x0BCA, | |
+ 0x2395 : 0x0BCC, | |
+ 0x22A5 : 0x0BCE, | |
+ 0x25CB : 0x0BCF, | |
+ 0x2308 : 0x0BD3, | |
+ 0x22A3 : 0x0BDC, | |
+ 0x22A2 : 0x0BFC, | |
+ 0x2017 : 0x0CDF, | |
+ 0x05D0 : 0x0CE0, | |
+ 0x05D1 : 0x0CE1, | |
+ 0x05D2 : 0x0CE2, | |
+ 0x05D3 : 0x0CE3, | |
+ 0x05D4 : 0x0CE4, | |
+ 0x05D5 : 0x0CE5, | |
+ 0x05D6 : 0x0CE6, | |
+ 0x05D7 : 0x0CE7, | |
+ 0x05D8 : 0x0CE8, | |
+ 0x05D9 : 0x0CE9, | |
+ 0x05DA : 0x0CEA, | |
+ 0x05DB : 0x0CEB, | |
+ 0x05DC : 0x0CEC, | |
+ 0x05DD : 0x0CED, | |
+ 0x05DE : 0x0CEE, | |
+ 0x05DF : 0x0CEF, | |
+ 0x05E0 : 0x0CF0, | |
+ 0x05E1 : 0x0CF1, | |
+ 0x05E2 : 0x0CF2, | |
+ 0x05E3 : 0x0CF3, | |
+ 0x05E4 : 0x0CF4, | |
+ 0x05E5 : 0x0CF5, | |
+ 0x05E6 : 0x0CF6, | |
+ 0x05E7 : 0x0CF7, | |
+ 0x05E8 : 0x0CF8, | |
+ 0x05E9 : 0x0CF9, | |
+ 0x05EA : 0x0CFA, | |
+ 0x0E01 : 0x0DA1, | |
+ 0x0E02 : 0x0DA2, | |
+ 0x0E03 : 0x0DA3, | |
+ 0x0E04 : 0x0DA4, | |
+ 0x0E05 : 0x0DA5, | |
+ 0x0E06 : 0x0DA6, | |
+ 0x0E07 : 0x0DA7, | |
+ 0x0E08 : 0x0DA8, | |
+ 0x0E09 : 0x0DA9, | |
+ 0x0E0A : 0x0DAA, | |
+ 0x0E0B : 0x0DAB, | |
+ 0x0E0C : 0x0DAC, | |
+ 0x0E0D : 0x0DAD, | |
+ 0x0E0E : 0x0DAE, | |
+ 0x0E0F : 0x0DAF, | |
+ 0x0E10 : 0x0DB0, | |
+ 0x0E11 : 0x0DB1, | |
+ 0x0E12 : 0x0DB2, | |
+ 0x0E13 : 0x0DB3, | |
+ 0x0E14 : 0x0DB4, | |
+ 0x0E15 : 0x0DB5, | |
+ 0x0E16 : 0x0DB6, | |
+ 0x0E17 : 0x0DB7, | |
+ 0x0E18 : 0x0DB8, | |
+ 0x0E19 : 0x0DB9, | |
+ 0x0E1A : 0x0DBA, | |
+ 0x0E1B : 0x0DBB, | |
+ 0x0E1C : 0x0DBC, | |
+ 0x0E1D : 0x0DBD, | |
+ 0x0E1E : 0x0DBE, | |
+ 0x0E1F : 0x0DBF, | |
+ 0x0E20 : 0x0DC0, | |
+ 0x0E21 : 0x0DC1, | |
+ 0x0E22 : 0x0DC2, | |
+ 0x0E23 : 0x0DC3, | |
+ 0x0E24 : 0x0DC4, | |
+ 0x0E25 : 0x0DC5, | |
+ 0x0E26 : 0x0DC6, | |
+ 0x0E27 : 0x0DC7, | |
+ 0x0E28 : 0x0DC8, | |
+ 0x0E29 : 0x0DC9, | |
+ 0x0E2A : 0x0DCA, | |
+ 0x0E2B : 0x0DCB, | |
+ 0x0E2C : 0x0DCC, | |
+ 0x0E2D : 0x0DCD, | |
+ 0x0E2E : 0x0DCE, | |
+ 0x0E2F : 0x0DCF, | |
+ 0x0E30 : 0x0DD0, | |
+ 0x0E31 : 0x0DD1, | |
+ 0x0E32 : 0x0DD2, | |
+ 0x0E33 : 0x0DD3, | |
+ 0x0E34 : 0x0DD4, | |
+ 0x0E35 : 0x0DD5, | |
+ 0x0E36 : 0x0DD6, | |
+ 0x0E37 : 0x0DD7, | |
+ 0x0E38 : 0x0DD8, | |
+ 0x0E39 : 0x0DD9, | |
+ 0x0E3A : 0x0DDA, | |
+ 0x0E3F : 0x0DDF, | |
+ 0x0E40 : 0x0DE0, | |
+ 0x0E41 : 0x0DE1, | |
+ 0x0E42 : 0x0DE2, | |
+ 0x0E43 : 0x0DE3, | |
+ 0x0E44 : 0x0DE4, | |
+ 0x0E45 : 0x0DE5, | |
+ 0x0E46 : 0x0DE6, | |
+ 0x0E47 : 0x0DE7, | |
+ 0x0E48 : 0x0DE8, | |
+ 0x0E49 : 0x0DE9, | |
+ 0x0E4A : 0x0DEA, | |
+ 0x0E4B : 0x0DEB, | |
+ 0x0E4C : 0x0DEC, | |
+ 0x0E4D : 0x0DED, | |
+ 0x0E50 : 0x0DF0, | |
+ 0x0E51 : 0x0DF1, | |
+ 0x0E52 : 0x0DF2, | |
+ 0x0E53 : 0x0DF3, | |
+ 0x0E54 : 0x0DF4, | |
+ 0x0E55 : 0x0DF5, | |
+ 0x0E56 : 0x0DF6, | |
+ 0x0E57 : 0x0DF7, | |
+ 0x0E58 : 0x0DF8, | |
+ 0x0E59 : 0x0DF9, | |
+ 0x0587 : 0x1000587, | |
+ 0x0589 : 0x1000589, | |
+ 0x055D : 0x100055D, | |
+ 0x058A : 0x100058A, | |
+ 0x055C : 0x100055C, | |
+ 0x055B : 0x100055B, | |
+ 0x055E : 0x100055E, | |
+ 0x0531 : 0x1000531, | |
+ 0x0561 : 0x1000561, | |
+ 0x0532 : 0x1000532, | |
+ 0x0562 : 0x1000562, | |
+ 0x0533 : 0x1000533, | |
+ 0x0563 : 0x1000563, | |
+ 0x0534 : 0x1000534, | |
+ 0x0564 : 0x1000564, | |
+ 0x0535 : 0x1000535, | |
+ 0x0565 : 0x1000565, | |
+ 0x0536 : 0x1000536, | |
+ 0x0566 : 0x1000566, | |
+ 0x0537 : 0x1000537, | |
+ 0x0567 : 0x1000567, | |
+ 0x0538 : 0x1000538, | |
+ 0x0568 : 0x1000568, | |
+ 0x0539 : 0x1000539, | |
+ 0x0569 : 0x1000569, | |
+ 0x053A : 0x100053A, | |
+ 0x056A : 0x100056A, | |
+ 0x053B : 0x100053B, | |
+ 0x056B : 0x100056B, | |
+ 0x053C : 0x100053C, | |
+ 0x056C : 0x100056C, | |
+ 0x053D : 0x100053D, | |
+ 0x056D : 0x100056D, | |
+ 0x053E : 0x100053E, | |
+ 0x056E : 0x100056E, | |
+ 0x053F : 0x100053F, | |
+ 0x056F : 0x100056F, | |
+ 0x0540 : 0x1000540, | |
+ 0x0570 : 0x1000570, | |
+ 0x0541 : 0x1000541, | |
+ 0x0571 : 0x1000571, | |
+ 0x0542 : 0x1000542, | |
+ 0x0572 : 0x1000572, | |
+ 0x0543 : 0x1000543, | |
+ 0x0573 : 0x1000573, | |
+ 0x0544 : 0x1000544, | |
+ 0x0574 : 0x1000574, | |
+ 0x0545 : 0x1000545, | |
+ 0x0575 : 0x1000575, | |
+ 0x0546 : 0x1000546, | |
+ 0x0576 : 0x1000576, | |
+ 0x0547 : 0x1000547, | |
+ 0x0577 : 0x1000577, | |
+ 0x0548 : 0x1000548, | |
+ 0x0578 : 0x1000578, | |
+ 0x0549 : 0x1000549, | |
+ 0x0579 : 0x1000579, | |
+ 0x054A : 0x100054A, | |
+ 0x057A : 0x100057A, | |
+ 0x054B : 0x100054B, | |
+ 0x057B : 0x100057B, | |
+ 0x054C : 0x100054C, | |
+ 0x057C : 0x100057C, | |
+ 0x054D : 0x100054D, | |
+ 0x057D : 0x100057D, | |
+ 0x054E : 0x100054E, | |
+ 0x057E : 0x100057E, | |
+ 0x054F : 0x100054F, | |
+ 0x057F : 0x100057F, | |
+ 0x0550 : 0x1000550, | |
+ 0x0580 : 0x1000580, | |
+ 0x0551 : 0x1000551, | |
+ 0x0581 : 0x1000581, | |
+ 0x0552 : 0x1000552, | |
+ 0x0582 : 0x1000582, | |
+ 0x0553 : 0x1000553, | |
+ 0x0583 : 0x1000583, | |
+ 0x0554 : 0x1000554, | |
+ 0x0584 : 0x1000584, | |
+ 0x0555 : 0x1000555, | |
+ 0x0585 : 0x1000585, | |
+ 0x0556 : 0x1000556, | |
+ 0x0586 : 0x1000586, | |
+ 0x055A : 0x100055A, | |
+ 0x10D0 : 0x10010D0, | |
+ 0x10D1 : 0x10010D1, | |
+ 0x10D2 : 0x10010D2, | |
+ 0x10D3 : 0x10010D3, | |
+ 0x10D4 : 0x10010D4, | |
+ 0x10D5 : 0x10010D5, | |
+ 0x10D6 : 0x10010D6, | |
+ 0x10D7 : 0x10010D7, | |
+ 0x10D8 : 0x10010D8, | |
+ 0x10D9 : 0x10010D9, | |
+ 0x10DA : 0x10010DA, | |
+ 0x10DB : 0x10010DB, | |
+ 0x10DC : 0x10010DC, | |
+ 0x10DD : 0x10010DD, | |
+ 0x10DE : 0x10010DE, | |
+ 0x10DF : 0x10010DF, | |
+ 0x10E0 : 0x10010E0, | |
+ 0x10E1 : 0x10010E1, | |
+ 0x10E2 : 0x10010E2, | |
+ 0x10E3 : 0x10010E3, | |
+ 0x10E4 : 0x10010E4, | |
+ 0x10E5 : 0x10010E5, | |
+ 0x10E6 : 0x10010E6, | |
+ 0x10E7 : 0x10010E7, | |
+ 0x10E8 : 0x10010E8, | |
+ 0x10E9 : 0x10010E9, | |
+ 0x10EA : 0x10010EA, | |
+ 0x10EB : 0x10010EB, | |
+ 0x10EC : 0x10010EC, | |
+ 0x10ED : 0x10010ED, | |
+ 0x10EE : 0x10010EE, | |
+ 0x10EF : 0x10010EF, | |
+ 0x10F0 : 0x10010F0, | |
+ 0x10F1 : 0x10010F1, | |
+ 0x10F2 : 0x10010F2, | |
+ 0x10F3 : 0x10010F3, | |
+ 0x10F4 : 0x10010F4, | |
+ 0x10F5 : 0x10010F5, | |
+ 0x10F6 : 0x10010F6, | |
+ 0x1E8A : 0x1001E8A, | |
+ 0x012C : 0x100012C, | |
+ 0x01B5 : 0x10001B5, | |
+ 0x01E6 : 0x10001E6, | |
+ 0x019F : 0x100019F, | |
+ 0x1E8B : 0x1001E8B, | |
+ 0x012D : 0x100012D, | |
+ 0x01B6 : 0x10001B6, | |
+ 0x01E7 : 0x10001E7, | |
+ 0x01D2 : 0x10001D2, | |
+ 0x0275 : 0x1000275, | |
+ 0x018F : 0x100018F, | |
+ 0x0259 : 0x1000259, | |
+ 0x1E36 : 0x1001E36, | |
+ 0x1E37 : 0x1001E37, | |
+ 0x1EA0 : 0x1001EA0, | |
+ 0x1EA1 : 0x1001EA1, | |
+ 0x1EA2 : 0x1001EA2, | |
+ 0x1EA3 : 0x1001EA3, | |
+ 0x1EA4 : 0x1001EA4, | |
+ 0x1EA5 : 0x1001EA5, | |
+ 0x1EA6 : 0x1001EA6, | |
+ 0x1EA7 : 0x1001EA7, | |
+ 0x1EA8 : 0x1001EA8, | |
+ 0x1EA9 : 0x1001EA9, | |
+ 0x1EAA : 0x1001EAA, | |
+ 0x1EAB : 0x1001EAB, | |
+ 0x1EAC : 0x1001EAC, | |
+ 0x1EAD : 0x1001EAD, | |
+ 0x1EAE : 0x1001EAE, | |
+ 0x1EAF : 0x1001EAF, | |
+ 0x1EB0 : 0x1001EB0, | |
+ 0x1EB1 : 0x1001EB1, | |
+ 0x1EB2 : 0x1001EB2, | |
+ 0x1EB3 : 0x1001EB3, | |
+ 0x1EB4 : 0x1001EB4, | |
+ 0x1EB5 : 0x1001EB5, | |
+ 0x1EB6 : 0x1001EB6, | |
+ 0x1EB7 : 0x1001EB7, | |
+ 0x1EB8 : 0x1001EB8, | |
+ 0x1EB9 : 0x1001EB9, | |
+ 0x1EBA : 0x1001EBA, | |
+ 0x1EBB : 0x1001EBB, | |
+ 0x1EBC : 0x1001EBC, | |
+ 0x1EBD : 0x1001EBD, | |
+ 0x1EBE : 0x1001EBE, | |
+ 0x1EBF : 0x1001EBF, | |
+ 0x1EC0 : 0x1001EC0, | |
+ 0x1EC1 : 0x1001EC1, | |
+ 0x1EC2 : 0x1001EC2, | |
+ 0x1EC3 : 0x1001EC3, | |
+ 0x1EC4 : 0x1001EC4, | |
+ 0x1EC5 : 0x1001EC5, | |
+ 0x1EC6 : 0x1001EC6, | |
+ 0x1EC7 : 0x1001EC7, | |
+ 0x1EC8 : 0x1001EC8, | |
+ 0x1EC9 : 0x1001EC9, | |
+ 0x1ECA : 0x1001ECA, | |
+ 0x1ECB : 0x1001ECB, | |
+ 0x1ECC : 0x1001ECC, | |
+ 0x1ECD : 0x1001ECD, | |
+ 0x1ECE : 0x1001ECE, | |
+ 0x1ECF : 0x1001ECF, | |
+ 0x1ED0 : 0x1001ED0, | |
+ 0x1ED1 : 0x1001ED1, | |
+ 0x1ED2 : 0x1001ED2, | |
+ 0x1ED3 : 0x1001ED3, | |
+ 0x1ED4 : 0x1001ED4, | |
+ 0x1ED5 : 0x1001ED5, | |
+ 0x1ED6 : 0x1001ED6, | |
+ 0x1ED7 : 0x1001ED7, | |
+ 0x1ED8 : 0x1001ED8, | |
+ 0x1ED9 : 0x1001ED9, | |
+ 0x1EDA : 0x1001EDA, | |
+ 0x1EDB : 0x1001EDB, | |
+ 0x1EDC : 0x1001EDC, | |
+ 0x1EDD : 0x1001EDD, | |
+ 0x1EDE : 0x1001EDE, | |
+ 0x1EDF : 0x1001EDF, | |
+ 0x1EE0 : 0x1001EE0, | |
+ 0x1EE1 : 0x1001EE1, | |
+ 0x1EE2 : 0x1001EE2, | |
+ 0x1EE3 : 0x1001EE3, | |
+ 0x1EE4 : 0x1001EE4, | |
+ 0x1EE5 : 0x1001EE5, | |
+ 0x1EE6 : 0x1001EE6, | |
+ 0x1EE7 : 0x1001EE7, | |
+ 0x1EE8 : 0x1001EE8, | |
+ 0x1EE9 : 0x1001EE9, | |
+ 0x1EEA : 0x1001EEA, | |
+ 0x1EEB : 0x1001EEB, | |
+ 0x1EEC : 0x1001EEC, | |
+ 0x1EED : 0x1001EED, | |
+ 0x1EEE : 0x1001EEE, | |
+ 0x1EEF : 0x1001EEF, | |
+ 0x1EF0 : 0x1001EF0, | |
+ 0x1EF1 : 0x1001EF1, | |
+ 0x1EF4 : 0x1001EF4, | |
+ 0x1EF5 : 0x1001EF5, | |
+ 0x1EF6 : 0x1001EF6, | |
+ 0x1EF7 : 0x1001EF7, | |
+ 0x1EF8 : 0x1001EF8, | |
+ 0x1EF9 : 0x1001EF9, | |
+ 0x01A0 : 0x10001A0, | |
+ 0x01A1 : 0x10001A1, | |
+ 0x01AF : 0x10001AF, | |
+ 0x01B0 : 0x10001B0, | |
+ 0x20A0 : 0x10020A0, | |
+ 0x20A1 : 0x10020A1, | |
+ 0x20A2 : 0x10020A2, | |
+ 0x20A3 : 0x10020A3, | |
+ 0x20A4 : 0x10020A4, | |
+ 0x20A5 : 0x10020A5, | |
+ 0x20A6 : 0x10020A6, | |
+ 0x20A7 : 0x10020A7, | |
+ 0x20A8 : 0x10020A8, | |
+ 0x20A9 : 0x10020A9, | |
+ 0x20AA : 0x10020AA, | |
+ 0x20AB : 0x10020AB, | |
+ 0x20AC : 0x20AC, | |
+ 0x2070 : 0x1002070, | |
+ 0x2074 : 0x1002074, | |
+ 0x2075 : 0x1002075, | |
+ 0x2076 : 0x1002076, | |
+ 0x2077 : 0x1002077, | |
+ 0x2078 : 0x1002078, | |
+ 0x2079 : 0x1002079, | |
+ 0x2080 : 0x1002080, | |
+ 0x2081 : 0x1002081, | |
+ 0x2082 : 0x1002082, | |
+ 0x2083 : 0x1002083, | |
+ 0x2084 : 0x1002084, | |
+ 0x2085 : 0x1002085, | |
+ 0x2086 : 0x1002086, | |
+ 0x2087 : 0x1002087, | |
+ 0x2088 : 0x1002088, | |
+ 0x2089 : 0x1002089, | |
+ 0x2205 : 0x1002205, | |
+ 0x2208 : 0x1002208, | |
+ 0x2209 : 0x1002209, | |
+ 0x220B : 0x100220B, | |
+ 0x221B : 0x100221B, | |
+ 0x221C : 0x100221C, | |
+ 0x222C : 0x100222C, | |
+ 0x222D : 0x100222D, | |
+ 0x2235 : 0x1002235, | |
+ 0x2245 : 0x1002248, | |
+ 0x2247 : 0x1002247, | |
+ 0x2262 : 0x1002262, | |
+ 0x2263 : 0x1002263, | |
+ 0x2800 : 0x1002800, | |
+ 0x2801 : 0x1002801, | |
+ 0x2802 : 0x1002802, | |
+ 0x2803 : 0x1002803, | |
+ 0x2804 : 0x1002804, | |
+ 0x2805 : 0x1002805, | |
+ 0x2806 : 0x1002806, | |
+ 0x2807 : 0x1002807, | |
+ 0x2808 : 0x1002808, | |
+ 0x2809 : 0x1002809, | |
+ 0x280A : 0x100280A, | |
+ 0x280B : 0x100280B, | |
+ 0x280C : 0x100280C, | |
+ 0x280D : 0x100280D, | |
+ 0x280E : 0x100280E, | |
+ 0x280F : 0x100280F, | |
+ 0x2810 : 0x1002810, | |
+ 0x2811 : 0x1002811, | |
+ 0x2812 : 0x1002812, | |
+ 0x2813 : 0x1002813, | |
+ 0x2814 : 0x1002814, | |
+ 0x2815 : 0x1002815, | |
+ 0x2816 : 0x1002816, | |
+ 0x2817 : 0x1002817, | |
+ 0x2818 : 0x1002818, | |
+ 0x2819 : 0x1002819, | |
+ 0x281A : 0x100281A, | |
+ 0x281B : 0x100281B, | |
+ 0x281C : 0x100281C, | |
+ 0x281D : 0x100281D, | |
+ 0x281E : 0x100281E, | |
+ 0x281F : 0x100281F, | |
+ 0x2820 : 0x1002820, | |
+ 0x2821 : 0x1002821, | |
+ 0x2822 : 0x1002822, | |
+ 0x2823 : 0x1002823, | |
+ 0x2824 : 0x1002824, | |
+ 0x2825 : 0x1002825, | |
+ 0x2826 : 0x1002826, | |
+ 0x2827 : 0x1002827, | |
+ 0x2828 : 0x1002828, | |
+ 0x2829 : 0x1002829, | |
+ 0x282A : 0x100282A, | |
+ 0x282B : 0x100282B, | |
+ 0x282C : 0x100282C, | |
+ 0x282D : 0x100282D, | |
+ 0x282E : 0x100282E, | |
+ 0x282F : 0x100282F, | |
+ 0x2830 : 0x1002830, | |
+ 0x2831 : 0x1002831, | |
+ 0x2832 : 0x1002832, | |
+ 0x2833 : 0x1002833, | |
+ 0x2834 : 0x1002834, | |
+ 0x2835 : 0x1002835, | |
+ 0x2836 : 0x1002836, | |
+ 0x2837 : 0x1002837, | |
+ 0x2838 : 0x1002838, | |
+ 0x2839 : 0x1002839, | |
+ 0x283A : 0x100283A, | |
+ 0x283B : 0x100283B, | |
+ 0x283C : 0x100283C, | |
+ 0x283D : 0x100283D, | |
+ 0x283E : 0x100283E, | |
+ 0x283F : 0x100283F, | |
+ 0x2840 : 0x1002840, | |
+ 0x2841 : 0x1002841, | |
+ 0x2842 : 0x1002842, | |
+ 0x2843 : 0x1002843, | |
+ 0x2844 : 0x1002844, | |
+ 0x2845 : 0x1002845, | |
+ 0x2846 : 0x1002846, | |
+ 0x2847 : 0x1002847, | |
+ 0x2848 : 0x1002848, | |
+ 0x2849 : 0x1002849, | |
+ 0x284A : 0x100284A, | |
+ 0x284B : 0x100284B, | |
+ 0x284C : 0x100284C, | |
+ 0x284D : 0x100284D, | |
+ 0x284E : 0x100284E, | |
+ 0x284F : 0x100284F, | |
+ 0x2850 : 0x1002850, | |
+ 0x2851 : 0x1002851, | |
+ 0x2852 : 0x1002852, | |
+ 0x2853 : 0x1002853, | |
+ 0x2854 : 0x1002854, | |
+ 0x2855 : 0x1002855, | |
+ 0x2856 : 0x1002856, | |
+ 0x2857 : 0x1002857, | |
+ 0x2858 : 0x1002858, | |
+ 0x2859 : 0x1002859, | |
+ 0x285A : 0x100285A, | |
+ 0x285B : 0x100285B, | |
+ 0x285C : 0x100285C, | |
+ 0x285D : 0x100285D, | |
+ 0x285E : 0x100285E, | |
+ 0x285F : 0x100285F, | |
+ 0x2860 : 0x1002860, | |
+ 0x2861 : 0x1002861, | |
+ 0x2862 : 0x1002862, | |
+ 0x2863 : 0x1002863, | |
+ 0x2864 : 0x1002864, | |
+ 0x2865 : 0x1002865, | |
+ 0x2866 : 0x1002866, | |
+ 0x2867 : 0x1002867, | |
+ 0x2868 : 0x1002868, | |
+ 0x2869 : 0x1002869, | |
+ 0x286A : 0x100286A, | |
+ 0x286B : 0x100286B, | |
+ 0x286C : 0x100286C, | |
+ 0x286D : 0x100286D, | |
+ 0x286E : 0x100286E, | |
+ 0x286F : 0x100286F, | |
+ 0x2870 : 0x1002870, | |
+ 0x2871 : 0x1002871, | |
+ 0x2872 : 0x1002872, | |
+ 0x2873 : 0x1002873, | |
+ 0x2874 : 0x1002874, | |
+ 0x2875 : 0x1002875, | |
+ 0x2876 : 0x1002876, | |
+ 0x2877 : 0x1002877, | |
+ 0x2878 : 0x1002878, | |
+ 0x2879 : 0x1002879, | |
+ 0x287A : 0x100287A, | |
+ 0x287B : 0x100287B, | |
+ 0x287C : 0x100287C, | |
+ 0x287D : 0x100287D, | |
+ 0x287E : 0x100287E, | |
+ 0x287F : 0x100287F, | |
+ 0x2880 : 0x1002880, | |
+ 0x2881 : 0x1002881, | |
+ 0x2882 : 0x1002882, | |
+ 0x2883 : 0x1002883, | |
+ 0x2884 : 0x1002884, | |
+ 0x2885 : 0x1002885, | |
+ 0x2886 : 0x1002886, | |
+ 0x2887 : 0x1002887, | |
+ 0x2888 : 0x1002888, | |
+ 0x2889 : 0x1002889, | |
+ 0x288A : 0x100288A, | |
+ 0x288B : 0x100288B, | |
+ 0x288C : 0x100288C, | |
+ 0x288D : 0x100288D, | |
+ 0x288E : 0x100288E, | |
+ 0x288F : 0x100288F, | |
+ 0x2890 : 0x1002890, | |
+ 0x2891 : 0x1002891, | |
+ 0x2892 : 0x1002892, | |
+ 0x2893 : 0x1002893, | |
+ 0x2894 : 0x1002894, | |
+ 0x2895 : 0x1002895, | |
+ 0x2896 : 0x1002896, | |
+ 0x2897 : 0x1002897, | |
+ 0x2898 : 0x1002898, | |
+ 0x2899 : 0x1002899, | |
+ 0x289A : 0x100289A, | |
+ 0x289B : 0x100289B, | |
+ 0x289C : 0x100289C, | |
+ 0x289D : 0x100289D, | |
+ 0x289E : 0x100289E, | |
+ 0x289F : 0x100289F, | |
+ 0x28A0 : 0x10028A0, | |
+ 0x28A1 : 0x10028A1, | |
+ 0x28A2 : 0x10028A2, | |
+ 0x28A3 : 0x10028A3, | |
+ 0x28A4 : 0x10028A4, | |
+ 0x28A5 : 0x10028A5, | |
+ 0x28A6 : 0x10028A6, | |
+ 0x28A7 : 0x10028A7, | |
+ 0x28A8 : 0x10028A8, | |
+ 0x28A9 : 0x10028A9, | |
+ 0x28AA : 0x10028AA, | |
+ 0x28AB : 0x10028AB, | |
+ 0x28AC : 0x10028AC, | |
+ 0x28AD : 0x10028AD, | |
+ 0x28AE : 0x10028AE, | |
+ 0x28AF : 0x10028AF, | |
+ 0x28B0 : 0x10028B0, | |
+ 0x28B1 : 0x10028B1, | |
+ 0x28B2 : 0x10028B2, | |
+ 0x28B3 : 0x10028B3, | |
+ 0x28B4 : 0x10028B4, | |
+ 0x28B5 : 0x10028B5, | |
+ 0x28B6 : 0x10028B6, | |
+ 0x28B7 : 0x10028B7, | |
+ 0x28B8 : 0x10028B8, | |
+ 0x28B9 : 0x10028B9, | |
+ 0x28BA : 0x10028BA, | |
+ 0x28BB : 0x10028BB, | |
+ 0x28BC : 0x10028BC, | |
+ 0x28BD : 0x10028BD, | |
+ 0x28BE : 0x10028BE, | |
+ 0x28BF : 0x10028BF, | |
+ 0x28C0 : 0x10028C0, | |
+ 0x28C1 : 0x10028C1, | |
+ 0x28C2 : 0x10028C2, | |
+ 0x28C3 : 0x10028C3, | |
+ 0x28C4 : 0x10028C4, | |
+ 0x28C5 : 0x10028C5, | |
+ 0x28C6 : 0x10028C6, | |
+ 0x28C7 : 0x10028C7, | |
+ 0x28C8 : 0x10028C8, | |
+ 0x28C9 : 0x10028C9, | |
+ 0x28CA : 0x10028CA, | |
+ 0x28CB : 0x10028CB, | |
+ 0x28CC : 0x10028CC, | |
+ 0x28CD : 0x10028CD, | |
+ 0x28CE : 0x10028CE, | |
+ 0x28CF : 0x10028CF, | |
+ 0x28D0 : 0x10028D0, | |
+ 0x28D1 : 0x10028D1, | |
+ 0x28D2 : 0x10028D2, | |
+ 0x28D3 : 0x10028D3, | |
+ 0x28D4 : 0x10028D4, | |
+ 0x28D5 : 0x10028D5, | |
+ 0x28D6 : 0x10028D6, | |
+ 0x28D7 : 0x10028D7, | |
+ 0x28D8 : 0x10028D8, | |
+ 0x28D9 : 0x10028D9, | |
+ 0x28DA : 0x10028DA, | |
+ 0x28DB : 0x10028DB, | |
+ 0x28DC : 0x10028DC, | |
+ 0x28DD : 0x10028DD, | |
+ 0x28DE : 0x10028DE, | |
+ 0x28DF : 0x10028DF, | |
+ 0x28E0 : 0x10028E0, | |
+ 0x28E1 : 0x10028E1, | |
+ 0x28E2 : 0x10028E2, | |
+ 0x28E3 : 0x10028E3, | |
+ 0x28E4 : 0x10028E4, | |
+ 0x28E5 : 0x10028E5, | |
+ 0x28E6 : 0x10028E6, | |
+ 0x28E7 : 0x10028E7, | |
+ 0x28E8 : 0x10028E8, | |
+ 0x28E9 : 0x10028E9, | |
+ 0x28EA : 0x10028EA, | |
+ 0x28EB : 0x10028EB, | |
+ 0x28EC : 0x10028EC, | |
+ 0x28ED : 0x10028ED, | |
+ 0x28EE : 0x10028EE, | |
+ 0x28EF : 0x10028EF, | |
+ 0x28F0 : 0x10028F0, | |
+ 0x28F1 : 0x10028F1, | |
+ 0x28F2 : 0x10028F2, | |
+ 0x28F3 : 0x10028F3, | |
+ 0x28F4 : 0x10028F4, | |
+ 0x28F5 : 0x10028F5, | |
+ 0x28F6 : 0x10028F6, | |
+ 0x28F7 : 0x10028F7, | |
+ 0x28F8 : 0x10028F8, | |
+ 0x28F9 : 0x10028F9, | |
+ 0x28FA : 0x10028FA, | |
+ 0x28FB : 0x10028FB, | |
+ 0x28FC : 0x10028FC, | |
+ 0x28FD : 0x10028FD, | |
+ 0x28FE : 0x10028FE, | |
+ 0x28FF : 0x10028FF | |
+ } | |
+} | |
diff --git a/include/rfb.js b/include/rfb.js | |
index a460f1c..c51d76b 100644 | |
--- a/include/rfb.js | |
+++ b/include/rfb.js | |
@@ -709,6 +709,7 @@ init_msg = function() { | |
case "003.006": rfb_version = 3.3; break; // UltraVNC | |
case "003.007": rfb_version = 3.7; break; | |
case "003.008": rfb_version = 3.8; break; | |
+ case "004.001": rfb_version = 4.1; break; // recent RealVNC | |
default: | |
return fail("Invalid server version " + sversion); | |
} | |
diff --git a/include/vnc.js b/include/vnc.js | |
index a11f28d..040265b 100644 | |
--- a/include/vnc.js | |
+++ b/include/vnc.js | |
@@ -34,6 +34,7 @@ function get_VNC_uri_prefix() { | |
extra += start + "webutil.js" + end; | |
extra += start + "base64.js" + end; | |
extra += start + "des.js" + end; | |
+ extra += start + "keysym.js" + end; | |
extra += start + "canvas.js" + end; | |
extra += start + "rfb.js" + end; | |
diff --git a/tests/input.html b/tests/input.html | |
index b3fc8ed..6e634eb 100644 | |
--- a/tests/input.html | |
+++ b/tests/input.html | |
@@ -21,6 +21,7 @@ | |
<script src="include/util.js"></script> | |
<script src="include/webutil.js"></script> | |
<script src="include/base64.js"></script> | |
+ <script src="include/keysym.js"></script> | |
<script src="include/canvas.js"></script> | |
<script> | |
var msg_cnt = 0; | |
diff --git a/utils/u2x11 b/utils/u2x11 | |
new file mode 100755 | |
index 0000000..86c69de | |
--- /dev/null | |
+++ b/utils/u2x11 | |
@@ -0,0 +1,28 @@ | |
+#!/bin/bash | |
+# | |
+# Convert "U+..." commented entries in /usr/include/X11/keysymdef.h | |
+# into JavaScript for use by noVNC. Note this is likely to produce | |
+# a few duplicate properties with clashing values, that will need | |
+# resolving manually. | |
+# | |
+# Colin Dean <colin@xvpsource.org> | |
+# | |
+ | |
+regex="^#define[ \t]+XK_[A-Za-z0-9_]+[ \t]+0x([0-9a-fA-F]+)[ \t]+\/\*[ \t]+U\+([0-9a-fA-F]+)[ \t]+[^*]+.[ \t]+\*\/[ \t]*$" | |
+echo " unicodeTable : {" | |
+while read line; do | |
+ if echo "${line}" | egrep -qs "${regex}"; then | |
+ | |
+ x11=$(echo "${line}" | sed -r "s/${regex}/\1/") | |
+ vnc=$(echo "${line}" | sed -r "s/${regex}/\2/") | |
+ | |
+ if echo "${vnc}" | egrep -qs "^00[2-9A-F][0-9A-F]$"; then | |
+ : # skip ISO Latin-1 (U+0020 to U+00FF) as 1-to-1 mapping | |
+ else | |
+ # note 1-to-1 is possible (e.g. for Euro symbol, U+20AC) | |
+ echo " 0x${vnc} : 0x${x11}," | |
+ fi | |
+ fi | |
+done < /usr/include/X11/keysymdef.h | uniq | |
+echo " }" | |
+ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment