Source Code Cross Referenced for XKeysym.java in  » 6.0-JDK-Platform » solaris » sun » awt » X11 » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » 6.0 JDK Platform » solaris » sun.awt.X11 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


0001:        // This is a generated file: do not edit! Edit keysym2ucs.h if necessary.
0002:
0003:        /*
0004:         * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
0005:         * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0006:         *
0007:         * This code is free software; you can redistribute it and/or modify it
0008:         * under the terms of the GNU General Public License version 2 only, as
0009:         * published by the Free Software Foundation.  Sun designates this
0010:         * particular file as subject to the "Classpath" exception as provided
0011:         * by Sun in the LICENSE file that accompanied this code.
0012:         *
0013:         * This code is distributed in the hope that it will be useful, but WITHOUT
0014:         * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0015:         * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
0016:         * version 2 for more details (a copy is included in the LICENSE file that
0017:         * accompanied this code).
0018:         *
0019:         * You should have received a copy of the GNU General Public License version
0020:         * 2 along with this work; if not, write to the Free Software Foundation,
0021:         * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0022:         *
0023:         * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
0024:         * CA 95054 USA or visit www.sun.com if you need additional information or
0025:         * have any questions.
0026:         */
0027:
0028:        package sun.awt.X11;
0029:
0030:        import java.util.Hashtable;
0031:        import sun.misc.Unsafe;
0032:
0033:        public class XKeysym {
0034:
0035:            public static void main(String args[]) {
0036:                System.out.println("Cyrillc zhe:" + convertKeysym(0x06d6, 0));
0037:                System.out.println("Arabic sheen:" + convertKeysym(0x05d4, 0));
0038:                System.out.println("Latin a breve:" + convertKeysym(0x01e3, 0));
0039:                System.out.println("Latin f:" + convertKeysym(0x066, 0));
0040:                System.out.println("Backspace:"
0041:                        + Integer.toHexString(convertKeysym(0xff08, 0)));
0042:                System.out.println("Ctrl+f:"
0043:                        + Integer.toHexString(convertKeysym(0x066,
0044:                                XConstants.ControlMask)));
0045:            }
0046:
0047:            private XKeysym() {
0048:            }
0049:
0050:            static class Keysym2JavaKeycode {
0051:                int jkeycode;
0052:                int keyLocation;
0053:
0054:                int getJavaKeycode() {
0055:                    return jkeycode;
0056:                }
0057:
0058:                int getKeyLocation() {
0059:                    return keyLocation;
0060:                }
0061:
0062:                Keysym2JavaKeycode(int jk, int loc) {
0063:                    jkeycode = jk;
0064:                    keyLocation = loc;
0065:                }
0066:            };
0067:
0068:            private static Unsafe unsafe = XlibWrapper.unsafe;
0069:            static Hashtable<Long, Keysym2JavaKeycode> keysym2JavaKeycodeHash = new Hashtable<Long, Keysym2JavaKeycode>();
0070:            static Hashtable<Long, Character> keysym2UCSHash = new Hashtable<Long, Character>();
0071:            static Hashtable<Long, Long> uppercaseHash = new Hashtable<Long, Long>();
0072:            // TODO: or not to do: add reverse lookup javakeycode2keysym,
0073:            // for robot only it seems to me. After that, we can remove lookup table
0074:            // from XWindow.c altogether.
0075:            static long keysym_lowercase = unsafe.allocateMemory(Native
0076:                    .getLongSize());
0077:            static long keysym_uppercase = unsafe.allocateMemory(Native
0078:                    .getLongSize());
0079:
0080:            public static char convertKeysym(long ks, int state) {
0081:
0082:                /* First check for Latin-1 characters (1:1 mapping) */
0083:                if ((ks >= 0x0020 && ks <= 0x007e)
0084:                        || (ks >= 0x00a0 && ks <= 0x00ff)) {
0085:                    if ((state & XConstants.ControlMask) != 0) {
0086:                        if ((ks >= 'A' && ks <= ']') || (ks == '_')
0087:                                || (ks >= 'a' && ks <= 'z')) {
0088:                            ks &= 0x1F;
0089:                        }
0090:                    }
0091:                    return (char) ks;
0092:                }
0093:
0094:                /* XXX: Also check for directly encoded 24-bit UCS characters:
0095:                 */
0096:                if ((ks & 0xff000000) == 0x01000000)
0097:                    return (char) (ks & 0x00ffffff);
0098:
0099:                Character ch = keysym2UCSHash.get(ks);
0100:                return ch == null ? (char) 0 : ch.charValue();
0101:            }
0102:
0103:            static long xkeycode2keysym(XKeyEvent ev, int ndx) {
0104:                XToolkit.awtLock();
0105:                try {
0106:                    return XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev
0107:                            .get_keycode(), ndx);
0108:                } finally {
0109:                    XToolkit.awtUnlock();
0110:                }
0111:            }
0112:
0113:            public static boolean isKPEvent(XKeyEvent ev) {
0114:                // Xsun without XKB uses keysymarray[2] keysym to determine if it is KP event.
0115:                // Otherwise, it is [1].
0116:                int ndx = XToolkit.isXsunServer() && !XToolkit.isXKBenabled() ? 2
0117:                        : 1;
0118:                XToolkit.awtLock();
0119:                try {
0120:                    return XlibWrapper.IsKeypadKey(XlibWrapper
0121:                            .XKeycodeToKeysym(ev.get_display(), ev
0122:                                    .get_keycode(), ndx));
0123:                } finally {
0124:                    XToolkit.awtUnlock();
0125:                }
0126:            }
0127:
0128:            /**
0129:                Return uppercase keysym correspondent to a given keysym.
0130:                If input keysym does not belong to any lower/uppercase pair, return -1.
0131:             */
0132:            public static long getUppercaseAlphabetic(long keysym) {
0133:                long lc = -1;
0134:                long uc = -1;
0135:                Long stored = uppercaseHash.get(keysym);
0136:                if (stored != null) {
0137:                    return stored.longValue();
0138:                }
0139:                XToolkit.awtLock();
0140:                try {
0141:                    XlibWrapper.XConvertCase(keysym, keysym_lowercase,
0142:                            keysym_uppercase);
0143:                    lc = Native.getLong(keysym_lowercase);
0144:                    uc = Native.getLong(keysym_uppercase);
0145:                    if (lc == uc) {
0146:                        //not applicable
0147:                        uc = -1;
0148:                    }
0149:                    uppercaseHash.put(keysym, uc);
0150:                } finally {
0151:                    XToolkit.awtUnlock();
0152:                }
0153:                return uc;
0154:            }
0155:
0156:            /**
0157:                Get a keypad keysym derived from a keycode.
0158:                I do not check if this is a keypad event, I just presume it.
0159:             */
0160:            private static long getKeypadKeysym(XKeyEvent ev) {
0161:                int ndx = 0;
0162:                long keysym = XConstants.NoSymbol;
0163:                if (XToolkit.isXsunServer() && !XToolkit.isXKBenabled()) {
0164:                    if ((ev.get_state() & XConstants.ShiftMask) != 0) { // shift modifier is on
0165:                        ndx = 3;
0166:                        keysym = xkeycode2keysym(ev, ndx);
0167:                    } else {
0168:                        ndx = 2;
0169:                        keysym = xkeycode2keysym(ev, ndx);
0170:                    }
0171:                } else {
0172:                    if ((ev.get_state() & XConstants.ShiftMask) != 0 || // shift modifier is on
0173:                            ((ev.get_state() & XConstants.LockMask) != 0 && // lock modifier is on
0174:                            (XToolkit.modLockIsShiftLock != 0))) { // it is interpreted as ShiftLock
0175:                        ndx = 0;
0176:                        keysym = xkeycode2keysym(ev, ndx);
0177:                    } else {
0178:                        ndx = 1;
0179:                        keysym = xkeycode2keysym(ev, ndx);
0180:                    }
0181:                }
0182:                return keysym;
0183:            }
0184:
0185:            /**
0186:                Return java.awt.KeyEvent constant meaning (Java) keycode, derived from X Window KeyEvent.
0187:                Algorithm is, extract via XKeycodeToKeysym  a proper keysym according to Xlib spec rules and
0188:                err exceptions, then search a java keycode in a table.
0189:                Some keysyms maps to more than one keycode, these would require extra processing. If someone
0190:                points me to such a keysym.
0191:             */
0192:            static Keysym2JavaKeycode getJavaKeycode(XKeyEvent ev) {
0193:                // get from keysym2JavaKeycodeHash.
0194:                long keysym = XConstants.NoSymbol;
0195:                int ndx = 0;
0196:                if ((ev.get_state() & XToolkit.numLockMask) != 0
0197:                        && isKPEvent(ev)) {
0198:                    keysym = getKeypadKeysym(ev);
0199:                } else {
0200:                    // we only need primary-layer keysym to derive a java keycode.
0201:                    ndx = 0;
0202:                    keysym = xkeycode2keysym(ev, ndx);
0203:                }
0204:
0205:                Keysym2JavaKeycode jkc = keysym2JavaKeycodeHash.get(keysym);
0206:                return jkc;
0207:            }
0208:
0209:            static int getJavaKeycodeOnly(XKeyEvent ev) {
0210:                Keysym2JavaKeycode jkc = getJavaKeycode(ev);
0211:                return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc
0212:                        .getJavaKeycode();
0213:            }
0214:
0215:            /**
0216:                Return keysym derived from a keycode and modifiers.
0217:                Usually an input method does this. However non-system input methods (e.g. Java IMs) do not.
0218:                For rules, see "Xlib - C Language X Interface",
0219:                                MIT X Consortium Standard
0220:                                X Version 11, Release 6
0221:                                Ch. 12.7
0222:                XXX TODO: or maybe not to do: process Mode Lock and therefore
0223:                not only 0-th and 1-st but 2-nd and 3-rd keysyms for a keystroke.
0224:             */
0225:            static long getKeysym(XKeyEvent ev) {
0226:                long keysym = XConstants.NoSymbol;
0227:                long uppercaseKeysym = XConstants.NoSymbol;
0228:                int ndx = 0;
0229:                boolean getUppercase = false;
0230:                if ((ev.get_state() & XToolkit.numLockMask) != 0
0231:                        && isKPEvent(ev)) {
0232:                    keysym = getKeypadKeysym(ev);
0233:                } else {
0234:                    // XXX: at this point, anything in keysym[23] is ignored.
0235:                    //
0236:                    // Shift & Lock are off ===> ndx = 0;
0237:                    // Shift off & Lock on & Lock is CapsLock ===> ndx = 0;
0238:                    //       if keysym[ndx] is lowecase alphabetic, then corresp. uppercase used.
0239:                    // Shift on & Lock on & Lock is CapsLock ===> ndx == 1;
0240:                    //       if keysym[ndx] is lowecase alphabetic, then corresp. uppercase used.
0241:                    // Shift on || (Lock on & Lock is ShiftLock) ===> ndx = 1.
0242:                    if ((ev.get_state() & XConstants.ShiftMask) == 0) { // shift is off
0243:                        if ((ev.get_state() & XConstants.LockMask) == 0) { // lock is off
0244:                            ndx = 0;
0245:                            getUppercase = false;
0246:                        } else if ((ev.get_state() & XConstants.LockMask) != 0
0247:                                && // lock is on
0248:                                (XToolkit.modLockIsShiftLock == 0)) { // lock is capslock
0249:                            ndx = 0;
0250:                            getUppercase = true;
0251:                        } else if ((ev.get_state() & XConstants.LockMask) != 0
0252:                                && // lock is on
0253:                                (XToolkit.modLockIsShiftLock != 0)) { // lock is shift lock
0254:                            ndx = 1;
0255:                            getUppercase = false;
0256:                        }
0257:                    } else { // shift on
0258:                        if ((ev.get_state() & XConstants.LockMask) != 0 && // lock is on
0259:                                (XToolkit.modLockIsShiftLock == 0)) { // lock is capslock
0260:                            ndx = 1;
0261:                            getUppercase = true;
0262:                        } else {
0263:                            ndx = 1;
0264:                            getUppercase = false;
0265:                        }
0266:                    }
0267:                    keysym = xkeycode2keysym(ev, ndx);
0268:                    if (getUppercase
0269:                            && (uppercaseKeysym = getUppercaseAlphabetic(keysym)) != -1) {
0270:                        keysym = uppercaseKeysym;
0271:                    }
0272:                }
0273:                return keysym;
0274:            }
0275:
0276:            static {
0277:                keysym2UCSHash.put((long) 0xFF08, (char) 0x0008); // XK_BackSpace --> <control> 
0278:                keysym2UCSHash.put((long) 0xFF09, (char) 0x0009); // XK_Tab --> <control> 
0279:                keysym2UCSHash.put((long) 0xFF0A, (char) 0x000a); // XK_Linefeed --> <control> 
0280:                keysym2UCSHash.put((long) 0xFF0B, (char) 0x000b); // XK_Clear --> <control> 
0281:                keysym2UCSHash.put((long) 0xFF0D, (char) 0x000a); // XK_Return --> <control> 
0282:                keysym2UCSHash.put((long) 0xFF1B, (char) 0x001B); // XK_Escape --> <control> 
0283:                keysym2UCSHash.put((long) 0xFFFF, (char) 0x007F); // XK_Delete --> <control> 
0284:                keysym2UCSHash.put((long) 0xFF80, (char) 0x0020); // XK_KP_Space --> SPACE 
0285:                keysym2UCSHash.put((long) 0xFF89, (char) 0x0009); // XK_KP_Tab --> <control> 
0286:                keysym2UCSHash.put((long) 0xFF8D, (char) 0x000A); // XK_KP_Enter --> <control> 
0287:                keysym2UCSHash.put((long) 0xFF9F, (char) 0x007F); // XK_KP_Delete --> <control> 
0288:                keysym2UCSHash.put((long) 0xFFBD, (char) 0x003d); // XK_KP_Equal --> EQUALS SIGN 
0289:                keysym2UCSHash.put((long) 0xFFAA, (char) 0x002a); // XK_KP_Multiply --> ASTERISK 
0290:                keysym2UCSHash.put((long) 0xFFAB, (char) 0x002b); // XK_KP_Add --> PLUS SIGN 
0291:                keysym2UCSHash.put((long) 0xFFAC, (char) 0x002c); // XK_KP_Separator --> COMMA 
0292:                keysym2UCSHash.put((long) 0xFFAD, (char) 0x002d); // XK_KP_Subtract --> HYPHEN-MINUS 
0293:                keysym2UCSHash.put((long) 0xFFAE, (char) 0x002e); // XK_KP_Decimal --> FULL STOP 
0294:                keysym2UCSHash.put((long) 0xFFAF, (char) 0x002f); // XK_KP_Divide --> SOLIDUS 
0295:                keysym2UCSHash.put((long) 0xFFB0, (char) 0x0030); // XK_KP_0 --> DIGIT ZERO 
0296:                keysym2UCSHash.put((long) 0xFFB1, (char) 0x0031); // XK_KP_1 --> DIGIT ONE 
0297:                keysym2UCSHash.put((long) 0xFFB2, (char) 0x0032); // XK_KP_2 --> DIGIT TWO 
0298:                keysym2UCSHash.put((long) 0xFFB3, (char) 0x0033); // XK_KP_3 --> DIGIT THREE 
0299:                keysym2UCSHash.put((long) 0xFFB4, (char) 0x0034); // XK_KP_4 --> DIGIT FOUR 
0300:                keysym2UCSHash.put((long) 0xFFB5, (char) 0x0035); // XK_KP_5 --> DIGIT FIVE 
0301:                keysym2UCSHash.put((long) 0xFFB6, (char) 0x0036); // XK_KP_6 --> DIGIT SIX 
0302:                keysym2UCSHash.put((long) 0xFFB7, (char) 0x0037); // XK_KP_7 --> DIGIT SEVEN 
0303:                keysym2UCSHash.put((long) 0xFFB8, (char) 0x0038); // XK_KP_8 --> DIGIT EIGHT 
0304:                keysym2UCSHash.put((long) 0xFFB9, (char) 0x0039); // XK_KP_9 --> DIGIT NINE 
0305:                keysym2UCSHash.put((long) 0x1a1, (char) 0x0104); // XK_Aogonek --> LATIN CAPITAL LETTER A WITH OGONEK 
0306:                keysym2UCSHash.put((long) 0x1a2, (char) 0x02d8); // XK_breve --> BREVE 
0307:                keysym2UCSHash.put((long) 0x1a3, (char) 0x0141); // XK_Lstroke --> LATIN CAPITAL LETTER L WITH STROKE 
0308:                keysym2UCSHash.put((long) 0x1a5, (char) 0x013d); // XK_Lcaron --> LATIN CAPITAL LETTER L WITH CARON 
0309:                keysym2UCSHash.put((long) 0x1a6, (char) 0x015a); // XK_Sacute --> LATIN CAPITAL LETTER S WITH ACUTE 
0310:                keysym2UCSHash.put((long) 0x1a9, (char) 0x0160); // XK_Scaron --> LATIN CAPITAL LETTER S WITH CARON 
0311:                keysym2UCSHash.put((long) 0x1aa, (char) 0x015e); // XK_Scedilla --> LATIN CAPITAL LETTER S WITH CEDILLA 
0312:                keysym2UCSHash.put((long) 0x1ab, (char) 0x0164); // XK_Tcaron --> LATIN CAPITAL LETTER T WITH CARON 
0313:                keysym2UCSHash.put((long) 0x1ac, (char) 0x0179); // XK_Zacute --> LATIN CAPITAL LETTER Z WITH ACUTE 
0314:                keysym2UCSHash.put((long) 0x1ae, (char) 0x017d); // XK_Zcaron --> LATIN CAPITAL LETTER Z WITH CARON 
0315:                keysym2UCSHash.put((long) 0x1af, (char) 0x017b); // XK_Zabovedot --> LATIN CAPITAL LETTER Z WITH DOT ABOVE 
0316:                keysym2UCSHash.put((long) 0x1b1, (char) 0x0105); // XK_aogonek --> LATIN SMALL LETTER A WITH OGONEK 
0317:                keysym2UCSHash.put((long) 0x1b2, (char) 0x02db); // XK_ogonek --> OGONEK 
0318:                keysym2UCSHash.put((long) 0x1b3, (char) 0x0142); // XK_lstroke --> LATIN SMALL LETTER L WITH STROKE 
0319:                keysym2UCSHash.put((long) 0x1b5, (char) 0x013e); // XK_lcaron --> LATIN SMALL LETTER L WITH CARON 
0320:                keysym2UCSHash.put((long) 0x1b6, (char) 0x015b); // XK_sacute --> LATIN SMALL LETTER S WITH ACUTE 
0321:                keysym2UCSHash.put((long) 0x1b7, (char) 0x02c7); // XK_caron --> CARON 
0322:                keysym2UCSHash.put((long) 0x1b9, (char) 0x0161); // XK_scaron --> LATIN SMALL LETTER S WITH CARON 
0323:                keysym2UCSHash.put((long) 0x1ba, (char) 0x015f); // XK_scedilla --> LATIN SMALL LETTER S WITH CEDILLA 
0324:                keysym2UCSHash.put((long) 0x1bb, (char) 0x0165); // XK_tcaron --> LATIN SMALL LETTER T WITH CARON 
0325:                keysym2UCSHash.put((long) 0x1bc, (char) 0x017a); // XK_zacute --> LATIN SMALL LETTER Z WITH ACUTE 
0326:                keysym2UCSHash.put((long) 0x1bd, (char) 0x02dd); // XK_doubleacute --> DOUBLE ACUTE ACCENT 
0327:                keysym2UCSHash.put((long) 0x1be, (char) 0x017e); // XK_zcaron --> LATIN SMALL LETTER Z WITH CARON 
0328:                keysym2UCSHash.put((long) 0x1bf, (char) 0x017c); // XK_zabovedot --> LATIN SMALL LETTER Z WITH DOT ABOVE 
0329:                keysym2UCSHash.put((long) 0x1c0, (char) 0x0154); // XK_Racute --> LATIN CAPITAL LETTER R WITH ACUTE 
0330:                keysym2UCSHash.put((long) 0x1c3, (char) 0x0102); // XK_Abreve --> LATIN CAPITAL LETTER A WITH BREVE 
0331:                keysym2UCSHash.put((long) 0x1c5, (char) 0x0139); // XK_Lacute --> LATIN CAPITAL LETTER L WITH ACUTE 
0332:                keysym2UCSHash.put((long) 0x1c6, (char) 0x0106); // XK_Cacute --> LATIN CAPITAL LETTER C WITH ACUTE 
0333:                keysym2UCSHash.put((long) 0x1c8, (char) 0x010c); // XK_Ccaron --> LATIN CAPITAL LETTER C WITH CARON 
0334:                keysym2UCSHash.put((long) 0x1ca, (char) 0x0118); // XK_Eogonek --> LATIN CAPITAL LETTER E WITH OGONEK 
0335:                keysym2UCSHash.put((long) 0x1cc, (char) 0x011a); // XK_Ecaron --> LATIN CAPITAL LETTER E WITH CARON 
0336:                keysym2UCSHash.put((long) 0x1cf, (char) 0x010e); // XK_Dcaron --> LATIN CAPITAL LETTER D WITH CARON 
0337:                keysym2UCSHash.put((long) 0x1d0, (char) 0x0110); // XK_Dstroke --> LATIN CAPITAL LETTER D WITH STROKE 
0338:                keysym2UCSHash.put((long) 0x1d1, (char) 0x0143); // XK_Nacute --> LATIN CAPITAL LETTER N WITH ACUTE 
0339:                keysym2UCSHash.put((long) 0x1d2, (char) 0x0147); // XK_Ncaron --> LATIN CAPITAL LETTER N WITH CARON 
0340:                keysym2UCSHash.put((long) 0x1d5, (char) 0x0150); // XK_Odoubleacute --> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 
0341:                keysym2UCSHash.put((long) 0x1d8, (char) 0x0158); // XK_Rcaron --> LATIN CAPITAL LETTER R WITH CARON 
0342:                keysym2UCSHash.put((long) 0x1d9, (char) 0x016e); // XK_Uring --> LATIN CAPITAL LETTER U WITH RING ABOVE 
0343:                keysym2UCSHash.put((long) 0x1db, (char) 0x0170); // XK_Udoubleacute --> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 
0344:                keysym2UCSHash.put((long) 0x1de, (char) 0x0162); // XK_Tcedilla --> LATIN CAPITAL LETTER T WITH CEDILLA 
0345:                keysym2UCSHash.put((long) 0x1e0, (char) 0x0155); // XK_racute --> LATIN SMALL LETTER R WITH ACUTE 
0346:                keysym2UCSHash.put((long) 0x1e3, (char) 0x0103); // XK_abreve --> LATIN SMALL LETTER A WITH BREVE 
0347:                keysym2UCSHash.put((long) 0x1e5, (char) 0x013a); // XK_lacute --> LATIN SMALL LETTER L WITH ACUTE 
0348:                keysym2UCSHash.put((long) 0x1e6, (char) 0x0107); // XK_cacute --> LATIN SMALL LETTER C WITH ACUTE 
0349:                keysym2UCSHash.put((long) 0x1e8, (char) 0x010d); // XK_ccaron --> LATIN SMALL LETTER C WITH CARON 
0350:                keysym2UCSHash.put((long) 0x1ea, (char) 0x0119); // XK_eogonek --> LATIN SMALL LETTER E WITH OGONEK 
0351:                keysym2UCSHash.put((long) 0x1ec, (char) 0x011b); // XK_ecaron --> LATIN SMALL LETTER E WITH CARON 
0352:                keysym2UCSHash.put((long) 0x1ef, (char) 0x010f); // XK_dcaron --> LATIN SMALL LETTER D WITH CARON 
0353:                keysym2UCSHash.put((long) 0x1f0, (char) 0x0111); // XK_dstroke --> LATIN SMALL LETTER D WITH STROKE 
0354:                keysym2UCSHash.put((long) 0x1f1, (char) 0x0144); // XK_nacute --> LATIN SMALL LETTER N WITH ACUTE 
0355:                keysym2UCSHash.put((long) 0x1f2, (char) 0x0148); // XK_ncaron --> LATIN SMALL LETTER N WITH CARON 
0356:                keysym2UCSHash.put((long) 0x1f5, (char) 0x0151); // XK_odoubleacute --> LATIN SMALL LETTER O WITH DOUBLE ACUTE 
0357:                keysym2UCSHash.put((long) 0x1fb, (char) 0x0171); // XK_udoubleacute --> LATIN SMALL LETTER U WITH DOUBLE ACUTE 
0358:                keysym2UCSHash.put((long) 0x1f8, (char) 0x0159); // XK_rcaron --> LATIN SMALL LETTER R WITH CARON 
0359:                keysym2UCSHash.put((long) 0x1f9, (char) 0x016f); // XK_uring --> LATIN SMALL LETTER U WITH RING ABOVE 
0360:                keysym2UCSHash.put((long) 0x1fe, (char) 0x0163); // XK_tcedilla --> LATIN SMALL LETTER T WITH CEDILLA 
0361:                keysym2UCSHash.put((long) 0x1ff, (char) 0x02d9); // XK_abovedot --> DOT ABOVE 
0362:                keysym2UCSHash.put((long) 0x2a1, (char) 0x0126); // XK_Hstroke --> LATIN CAPITAL LETTER H WITH STROKE 
0363:                keysym2UCSHash.put((long) 0x2a6, (char) 0x0124); // XK_Hcircumflex --> LATIN CAPITAL LETTER H WITH CIRCUMFLEX 
0364:                keysym2UCSHash.put((long) 0x2a9, (char) 0x0130); // XK_Iabovedot --> LATIN CAPITAL LETTER I WITH DOT ABOVE 
0365:                keysym2UCSHash.put((long) 0x2ab, (char) 0x011e); // XK_Gbreve --> LATIN CAPITAL LETTER G WITH BREVE 
0366:                keysym2UCSHash.put((long) 0x2ac, (char) 0x0134); // XK_Jcircumflex --> LATIN CAPITAL LETTER J WITH CIRCUMFLEX 
0367:                keysym2UCSHash.put((long) 0x2b1, (char) 0x0127); // XK_hstroke --> LATIN SMALL LETTER H WITH STROKE 
0368:                keysym2UCSHash.put((long) 0x2b6, (char) 0x0125); // XK_hcircumflex --> LATIN SMALL LETTER H WITH CIRCUMFLEX 
0369:                keysym2UCSHash.put((long) 0x2b9, (char) 0x0131); // XK_idotless --> LATIN SMALL LETTER DOTLESS I 
0370:                keysym2UCSHash.put((long) 0x2bb, (char) 0x011f); // XK_gbreve --> LATIN SMALL LETTER G WITH BREVE 
0371:                keysym2UCSHash.put((long) 0x2bc, (char) 0x0135); // XK_jcircumflex --> LATIN SMALL LETTER J WITH CIRCUMFLEX 
0372:                keysym2UCSHash.put((long) 0x2c5, (char) 0x010a); // XK_Cabovedot --> LATIN CAPITAL LETTER C WITH DOT ABOVE 
0373:                keysym2UCSHash.put((long) 0x2c6, (char) 0x0108); // XK_Ccircumflex --> LATIN CAPITAL LETTER C WITH CIRCUMFLEX 
0374:                keysym2UCSHash.put((long) 0x2d5, (char) 0x0120); // XK_Gabovedot --> LATIN CAPITAL LETTER G WITH DOT ABOVE 
0375:                keysym2UCSHash.put((long) 0x2d8, (char) 0x011c); // XK_Gcircumflex --> LATIN CAPITAL LETTER G WITH CIRCUMFLEX 
0376:                keysym2UCSHash.put((long) 0x2dd, (char) 0x016c); // XK_Ubreve --> LATIN CAPITAL LETTER U WITH BREVE 
0377:                keysym2UCSHash.put((long) 0x2de, (char) 0x015c); // XK_Scircumflex --> LATIN CAPITAL LETTER S WITH CIRCUMFLEX 
0378:                keysym2UCSHash.put((long) 0x2e5, (char) 0x010b); // XK_cabovedot --> LATIN SMALL LETTER C WITH DOT ABOVE 
0379:                keysym2UCSHash.put((long) 0x2e6, (char) 0x0109); // XK_ccircumflex --> LATIN SMALL LETTER C WITH CIRCUMFLEX 
0380:                keysym2UCSHash.put((long) 0x2f5, (char) 0x0121); // XK_gabovedot --> LATIN SMALL LETTER G WITH DOT ABOVE 
0381:                keysym2UCSHash.put((long) 0x2f8, (char) 0x011d); // XK_gcircumflex --> LATIN SMALL LETTER G WITH CIRCUMFLEX 
0382:                keysym2UCSHash.put((long) 0x2fd, (char) 0x016d); // XK_ubreve --> LATIN SMALL LETTER U WITH BREVE 
0383:                keysym2UCSHash.put((long) 0x2fe, (char) 0x015d); // XK_scircumflex --> LATIN SMALL LETTER S WITH CIRCUMFLEX 
0384:                keysym2UCSHash.put((long) 0x3a2, (char) 0x0138); // XK_kra --> LATIN SMALL LETTER KRA 
0385:                keysym2UCSHash.put((long) 0x3a3, (char) 0x0156); // XK_Rcedilla --> LATIN CAPITAL LETTER R WITH CEDILLA 
0386:                keysym2UCSHash.put((long) 0x3a5, (char) 0x0128); // XK_Itilde --> LATIN CAPITAL LETTER I WITH TILDE 
0387:                keysym2UCSHash.put((long) 0x3a6, (char) 0x013b); // XK_Lcedilla --> LATIN CAPITAL LETTER L WITH CEDILLA 
0388:                keysym2UCSHash.put((long) 0x3aa, (char) 0x0112); // XK_Emacron --> LATIN CAPITAL LETTER E WITH MACRON 
0389:                keysym2UCSHash.put((long) 0x3ab, (char) 0x0122); // XK_Gcedilla --> LATIN CAPITAL LETTER G WITH CEDILLA 
0390:                keysym2UCSHash.put((long) 0x3ac, (char) 0x0166); // XK_Tslash --> LATIN CAPITAL LETTER T WITH STROKE 
0391:                keysym2UCSHash.put((long) 0x3b3, (char) 0x0157); // XK_rcedilla --> LATIN SMALL LETTER R WITH CEDILLA 
0392:                keysym2UCSHash.put((long) 0x3b5, (char) 0x0129); // XK_itilde --> LATIN SMALL LETTER I WITH TILDE 
0393:                keysym2UCSHash.put((long) 0x3b6, (char) 0x013c); // XK_lcedilla --> LATIN SMALL LETTER L WITH CEDILLA 
0394:                keysym2UCSHash.put((long) 0x3ba, (char) 0x0113); // XK_emacron --> LATIN SMALL LETTER E WITH MACRON 
0395:                keysym2UCSHash.put((long) 0x3bb, (char) 0x0123); // XK_gcedilla --> LATIN SMALL LETTER G WITH CEDILLA 
0396:                keysym2UCSHash.put((long) 0x3bc, (char) 0x0167); // XK_tslash --> LATIN SMALL LETTER T WITH STROKE 
0397:                keysym2UCSHash.put((long) 0x3bd, (char) 0x014a); // XK_ENG --> LATIN CAPITAL LETTER ENG 
0398:                keysym2UCSHash.put((long) 0x3bf, (char) 0x014b); // XK_eng --> LATIN SMALL LETTER ENG 
0399:                keysym2UCSHash.put((long) 0x3c0, (char) 0x0100); // XK_Amacron --> LATIN CAPITAL LETTER A WITH MACRON 
0400:                keysym2UCSHash.put((long) 0x3c7, (char) 0x012e); // XK_Iogonek --> LATIN CAPITAL LETTER I WITH OGONEK 
0401:                keysym2UCSHash.put((long) 0x3cc, (char) 0x0116); // XK_Eabovedot --> LATIN CAPITAL LETTER E WITH DOT ABOVE 
0402:                keysym2UCSHash.put((long) 0x3cf, (char) 0x012a); // XK_Imacron --> LATIN CAPITAL LETTER I WITH MACRON 
0403:                keysym2UCSHash.put((long) 0x3d1, (char) 0x0145); // XK_Ncedilla --> LATIN CAPITAL LETTER N WITH CEDILLA 
0404:                keysym2UCSHash.put((long) 0x3d2, (char) 0x014c); // XK_Omacron --> LATIN CAPITAL LETTER O WITH MACRON 
0405:                keysym2UCSHash.put((long) 0x3d3, (char) 0x0136); // XK_Kcedilla --> LATIN CAPITAL LETTER K WITH CEDILLA 
0406:                keysym2UCSHash.put((long) 0x3d9, (char) 0x0172); // XK_Uogonek --> LATIN CAPITAL LETTER U WITH OGONEK 
0407:                keysym2UCSHash.put((long) 0x3dd, (char) 0x0168); // XK_Utilde --> LATIN CAPITAL LETTER U WITH TILDE 
0408:                keysym2UCSHash.put((long) 0x3de, (char) 0x016a); // XK_Umacron --> LATIN CAPITAL LETTER U WITH MACRON 
0409:                keysym2UCSHash.put((long) 0x3e0, (char) 0x0101); // XK_amacron --> LATIN SMALL LETTER A WITH MACRON 
0410:                keysym2UCSHash.put((long) 0x3e7, (char) 0x012f); // XK_iogonek --> LATIN SMALL LETTER I WITH OGONEK 
0411:                keysym2UCSHash.put((long) 0x3ec, (char) 0x0117); // XK_eabovedot --> LATIN SMALL LETTER E WITH DOT ABOVE 
0412:                keysym2UCSHash.put((long) 0x3ef, (char) 0x012b); // XK_imacron --> LATIN SMALL LETTER I WITH MACRON 
0413:                keysym2UCSHash.put((long) 0x3f1, (char) 0x0146); // XK_ncedilla --> LATIN SMALL LETTER N WITH CEDILLA 
0414:                keysym2UCSHash.put((long) 0x3f2, (char) 0x014d); // XK_omacron --> LATIN SMALL LETTER O WITH MACRON 
0415:                keysym2UCSHash.put((long) 0x3f3, (char) 0x0137); // XK_kcedilla --> LATIN SMALL LETTER K WITH CEDILLA 
0416:                keysym2UCSHash.put((long) 0x3f9, (char) 0x0173); // XK_uogonek --> LATIN SMALL LETTER U WITH OGONEK 
0417:                keysym2UCSHash.put((long) 0x3fd, (char) 0x0169); // XK_utilde --> LATIN SMALL LETTER U WITH TILDE 
0418:                keysym2UCSHash.put((long) 0x3fe, (char) 0x016b); // XK_umacron --> LATIN SMALL LETTER U WITH MACRON 
0419:                keysym2UCSHash.put((long) 0x12a1, (char) 0x1e02); // XK_Babovedot --> LATIN CAPITAL LETTER B WITH DOT ABOVE 
0420:                keysym2UCSHash.put((long) 0x12a2, (char) 0x1e03); // XK_babovedot --> LATIN SMALL LETTER B WITH DOT ABOVE 
0421:                keysym2UCSHash.put((long) 0x12a6, (char) 0x1e0a); // XK_Dabovedot --> LATIN CAPITAL LETTER D WITH DOT ABOVE 
0422:                keysym2UCSHash.put((long) 0x12a8, (char) 0x1e80); // XK_Wgrave --> LATIN CAPITAL LETTER W WITH GRAVE 
0423:                keysym2UCSHash.put((long) 0x12aa, (char) 0x1e82); // XK_Wacute --> LATIN CAPITAL LETTER W WITH ACUTE 
0424:                keysym2UCSHash.put((long) 0x12ab, (char) 0x1e0b); // XK_dabovedot --> LATIN SMALL LETTER D WITH DOT ABOVE 
0425:                keysym2UCSHash.put((long) 0x12ac, (char) 0x1ef2); // XK_Ygrave --> LATIN CAPITAL LETTER Y WITH GRAVE 
0426:                keysym2UCSHash.put((long) 0x12b0, (char) 0x1e1e); // XK_Fabovedot --> LATIN CAPITAL LETTER F WITH DOT ABOVE 
0427:                keysym2UCSHash.put((long) 0x12b1, (char) 0x1e1f); // XK_fabovedot --> LATIN SMALL LETTER F WITH DOT ABOVE 
0428:                keysym2UCSHash.put((long) 0x12b4, (char) 0x1e40); // XK_Mabovedot --> LATIN CAPITAL LETTER M WITH DOT ABOVE 
0429:                keysym2UCSHash.put((long) 0x12b5, (char) 0x1e41); // XK_mabovedot --> LATIN SMALL LETTER M WITH DOT ABOVE 
0430:                keysym2UCSHash.put((long) 0x12b7, (char) 0x1e56); // XK_Pabovedot --> LATIN CAPITAL LETTER P WITH DOT ABOVE 
0431:                keysym2UCSHash.put((long) 0x12b8, (char) 0x1e81); // XK_wgrave --> LATIN SMALL LETTER W WITH GRAVE 
0432:                keysym2UCSHash.put((long) 0x12b9, (char) 0x1e57); // XK_pabovedot --> LATIN SMALL LETTER P WITH DOT ABOVE 
0433:                keysym2UCSHash.put((long) 0x12ba, (char) 0x1e83); // XK_wacute --> LATIN SMALL LETTER W WITH ACUTE 
0434:                keysym2UCSHash.put((long) 0x12bb, (char) 0x1e60); // XK_Sabovedot --> LATIN CAPITAL LETTER S WITH DOT ABOVE 
0435:                keysym2UCSHash.put((long) 0x12bc, (char) 0x1ef3); // XK_ygrave --> LATIN SMALL LETTER Y WITH GRAVE 
0436:                keysym2UCSHash.put((long) 0x12bd, (char) 0x1e84); // XK_Wdiaeresis --> LATIN CAPITAL LETTER W WITH DIAERESIS 
0437:                keysym2UCSHash.put((long) 0x12be, (char) 0x1e85); // XK_wdiaeresis --> LATIN SMALL LETTER W WITH DIAERESIS 
0438:                keysym2UCSHash.put((long) 0x12bf, (char) 0x1e61); // XK_sabovedot --> LATIN SMALL LETTER S WITH DOT ABOVE 
0439:                keysym2UCSHash.put((long) 0x12d0, (char) 0x017); // XK_Wcircumflex -->  
0440:                keysym2UCSHash.put((long) 0x12d7, (char) 0x1e6a); // XK_Tabovedot --> LATIN CAPITAL LETTER T WITH DOT ABOVE 
0441:                keysym2UCSHash.put((long) 0x12de, (char) 0x0176); // XK_Ycircumflex --> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX 
0442:                keysym2UCSHash.put((long) 0x12f0, (char) 0x0175); // XK_wcircumflex --> LATIN SMALL LETTER W WITH CIRCUMFLEX 
0443:                keysym2UCSHash.put((long) 0x12f7, (char) 0x1e6b); // XK_tabovedot --> LATIN SMALL LETTER T WITH DOT ABOVE 
0444:                keysym2UCSHash.put((long) 0x12fe, (char) 0x0177); // XK_ycircumflex --> LATIN SMALL LETTER Y WITH CIRCUMFLEX 
0445:                keysym2UCSHash.put((long) 0x13bc, (char) 0x0152); // XK_OE --> LATIN CAPITAL LIGATURE OE 
0446:                keysym2UCSHash.put((long) 0x13bd, (char) 0x0153); // XK_oe --> LATIN SMALL LIGATURE OE 
0447:                keysym2UCSHash.put((long) 0x13be, (char) 0x0178); // XK_Ydiaeresis --> LATIN CAPITAL LETTER Y WITH DIAERESIS 
0448:                keysym2UCSHash.put((long) 0x47e, (char) 0x203e); // XK_overline --> OVERLINE 
0449:                keysym2UCSHash.put((long) 0x4a1, (char) 0x3002); // XK_kana_fullstop --> IDEOGRAPHIC FULL STOP 
0450:                keysym2UCSHash.put((long) 0x4a2, (char) 0x300c); // XK_kana_openingbracket --> LEFT CORNER BRACKET 
0451:                keysym2UCSHash.put((long) 0x4a3, (char) 0x300d); // XK_kana_closingbracket --> RIGHT CORNER BRACKET 
0452:                keysym2UCSHash.put((long) 0x4a4, (char) 0x3001); // XK_kana_comma --> IDEOGRAPHIC COMMA 
0453:                keysym2UCSHash.put((long) 0x4a5, (char) 0x30fb); // XK_kana_conjunctive --> KATAKANA MIDDLE DOT 
0454:                keysym2UCSHash.put((long) 0x4a6, (char) 0x30f2); // XK_kana_WO --> KATAKANA LETTER WO 
0455:                keysym2UCSHash.put((long) 0x4a7, (char) 0x30a1); // XK_kana_a --> KATAKANA LETTER SMALL A 
0456:                keysym2UCSHash.put((long) 0x4a8, (char) 0x30a3); // XK_kana_i --> KATAKANA LETTER SMALL I 
0457:                keysym2UCSHash.put((long) 0x4a9, (char) 0x30a5); // XK_kana_u --> KATAKANA LETTER SMALL U 
0458:                keysym2UCSHash.put((long) 0x4aa, (char) 0x30a7); // XK_kana_e --> KATAKANA LETTER SMALL E 
0459:                keysym2UCSHash.put((long) 0x4ab, (char) 0x30a9); // XK_kana_o --> KATAKANA LETTER SMALL O 
0460:                keysym2UCSHash.put((long) 0x4ac, (char) 0x30e3); // XK_kana_ya --> KATAKANA LETTER SMALL YA 
0461:                keysym2UCSHash.put((long) 0x4ad, (char) 0x30e5); // XK_kana_yu --> KATAKANA LETTER SMALL YU 
0462:                keysym2UCSHash.put((long) 0x4ae, (char) 0x30e7); // XK_kana_yo --> KATAKANA LETTER SMALL YO 
0463:                keysym2UCSHash.put((long) 0x4af, (char) 0x30c3); // XK_kana_tsu --> KATAKANA LETTER SMALL TU 
0464:                keysym2UCSHash.put((long) 0x4b0, (char) 0x30fc); // XK_prolongedsound --> KATAKANA-HIRAGANA PROLONGED SOUND MARK 
0465:                keysym2UCSHash.put((long) 0x4b1, (char) 0x30a2); // XK_kana_A --> KATAKANA LETTER A 
0466:                keysym2UCSHash.put((long) 0x4b2, (char) 0x30a4); // XK_kana_I --> KATAKANA LETTER I 
0467:                keysym2UCSHash.put((long) 0x4b3, (char) 0x30a6); // XK_kana_U --> KATAKANA LETTER U 
0468:                keysym2UCSHash.put((long) 0x4b4, (char) 0x30a8); // XK_kana_E --> KATAKANA LETTER E 
0469:                keysym2UCSHash.put((long) 0x4b5, (char) 0x30aa); // XK_kana_O --> KATAKANA LETTER O 
0470:                keysym2UCSHash.put((long) 0x4b6, (char) 0x30ab); // XK_kana_KA --> KATAKANA LETTER KA 
0471:                keysym2UCSHash.put((long) 0x4b7, (char) 0x30ad); // XK_kana_KI --> KATAKANA LETTER KI 
0472:                keysym2UCSHash.put((long) 0x4b8, (char) 0x30af); // XK_kana_KU --> KATAKANA LETTER KU 
0473:                keysym2UCSHash.put((long) 0x4b9, (char) 0x30b1); // XK_kana_KE --> KATAKANA LETTER KE 
0474:                keysym2UCSHash.put((long) 0x4ba, (char) 0x30b3); // XK_kana_KO --> KATAKANA LETTER KO 
0475:                keysym2UCSHash.put((long) 0x4bb, (char) 0x30b5); // XK_kana_SA --> KATAKANA LETTER SA 
0476:                keysym2UCSHash.put((long) 0x4bc, (char) 0x30b7); // XK_kana_SHI --> KATAKANA LETTER SI 
0477:                keysym2UCSHash.put((long) 0x4bd, (char) 0x30b9); // XK_kana_SU --> KATAKANA LETTER SU 
0478:                keysym2UCSHash.put((long) 0x4be, (char) 0x30bb); // XK_kana_SE --> KATAKANA LETTER SE 
0479:                keysym2UCSHash.put((long) 0x4bf, (char) 0x30bd); // XK_kana_SO --> KATAKANA LETTER SO 
0480:                keysym2UCSHash.put((long) 0x4c0, (char) 0x30bf); // XK_kana_TA --> KATAKANA LETTER TA 
0481:                keysym2UCSHash.put((long) 0x4c1, (char) 0x30c1); // XK_kana_CHI --> KATAKANA LETTER TI 
0482:                keysym2UCSHash.put((long) 0x4c2, (char) 0x30c4); // XK_kana_TSU --> KATAKANA LETTER TU 
0483:                keysym2UCSHash.put((long) 0x4c3, (char) 0x30c6); // XK_kana_TE --> KATAKANA LETTER TE 
0484:                keysym2UCSHash.put((long) 0x4c4, (char) 0x30c8); // XK_kana_TO --> KATAKANA LETTER TO 
0485:                keysym2UCSHash.put((long) 0x4c5, (char) 0x30ca); // XK_kana_NA --> KATAKANA LETTER NA 
0486:                keysym2UCSHash.put((long) 0x4c6, (char) 0x30cb); // XK_kana_NI --> KATAKANA LETTER NI 
0487:                keysym2UCSHash.put((long) 0x4c7, (char) 0x30cc); // XK_kana_NU --> KATAKANA LETTER NU 
0488:                keysym2UCSHash.put((long) 0x4c8, (char) 0x30cd); // XK_kana_NE --> KATAKANA LETTER NE 
0489:                keysym2UCSHash.put((long) 0x4c9, (char) 0x30ce); // XK_kana_NO --> KATAKANA LETTER NO 
0490:                keysym2UCSHash.put((long) 0x4ca, (char) 0x30cf); // XK_kana_HA --> KATAKANA LETTER HA 
0491:                keysym2UCSHash.put((long) 0x4cb, (char) 0x30d2); // XK_kana_HI --> KATAKANA LETTER HI 
0492:                keysym2UCSHash.put((long) 0x4cc, (char) 0x30d5); // XK_kana_FU --> KATAKANA LETTER HU 
0493:                keysym2UCSHash.put((long) 0x4cd, (char) 0x30d8); // XK_kana_HE --> KATAKANA LETTER HE 
0494:                keysym2UCSHash.put((long) 0x4ce, (char) 0x30db); // XK_kana_HO --> KATAKANA LETTER HO 
0495:                keysym2UCSHash.put((long) 0x4cf, (char) 0x30de); // XK_kana_MA --> KATAKANA LETTER MA 
0496:                keysym2UCSHash.put((long) 0x4d0, (char) 0x30df); // XK_kana_MI --> KATAKANA LETTER MI 
0497:                keysym2UCSHash.put((long) 0x4d1, (char) 0x30e0); // XK_kana_MU --> KATAKANA LETTER MU 
0498:                keysym2UCSHash.put((long) 0x4d2, (char) 0x30e1); // XK_kana_ME --> KATAKANA LETTER ME 
0499:                keysym2UCSHash.put((long) 0x4d3, (char) 0x30e2); // XK_kana_MO --> KATAKANA LETTER MO 
0500:                keysym2UCSHash.put((long) 0x4d4, (char) 0x30e4); // XK_kana_YA --> KATAKANA LETTER YA 
0501:                keysym2UCSHash.put((long) 0x4d5, (char) 0x30e6); // XK_kana_YU --> KATAKANA LETTER YU 
0502:                keysym2UCSHash.put((long) 0x4d6, (char) 0x30e8); // XK_kana_YO --> KATAKANA LETTER YO 
0503:                keysym2UCSHash.put((long) 0x4d7, (char) 0x30e9); // XK_kana_RA --> KATAKANA LETTER RA 
0504:                keysym2UCSHash.put((long) 0x4d8, (char) 0x30ea); // XK_kana_RI --> KATAKANA LETTER RI 
0505:                keysym2UCSHash.put((long) 0x4d9, (char) 0x30eb); // XK_kana_RU --> KATAKANA LETTER RU 
0506:                keysym2UCSHash.put((long) 0x4da, (char) 0x30ec); // XK_kana_RE --> KATAKANA LETTER RE 
0507:                keysym2UCSHash.put((long) 0x4db, (char) 0x30ed); // XK_kana_RO --> KATAKANA LETTER RO 
0508:                keysym2UCSHash.put((long) 0x4dc, (char) 0x30ef); // XK_kana_WA --> KATAKANA LETTER WA 
0509:                keysym2UCSHash.put((long) 0x4dd, (char) 0x30f3); // XK_kana_N --> KATAKANA LETTER N 
0510:                keysym2UCSHash.put((long) 0x4de, (char) 0x309b); // XK_voicedsound --> KATAKANA-HIRAGANA VOICED SOUND MARK 
0511:                keysym2UCSHash.put((long) 0x4df, (char) 0x309c); // XK_semivoicedsound --> KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 
0512:                keysym2UCSHash.put((long) 0x590, (char) 0x0670); // XK_Farsi_0 --> ARABIC LETTER SUPERSCRIPT ALEF 
0513:                keysym2UCSHash.put((long) 0x591, (char) 0x06f1); // XK_Farsi_1 --> EXTENDED ARABIC-INDIC DIGIT ONE 
0514:                keysym2UCSHash.put((long) 0x592, (char) 0x06f2); // XK_Farsi_2 --> EXTENDED ARABIC-INDIC DIGIT TWO 
0515:                keysym2UCSHash.put((long) 0x593, (char) 0x06f3); // XK_Farsi_3 --> EXTENDED ARABIC-INDIC DIGIT THREE 
0516:                keysym2UCSHash.put((long) 0x594, (char) 0x06f4); // XK_Farsi_4 --> EXTENDED ARABIC-INDIC DIGIT FOUR 
0517:                keysym2UCSHash.put((long) 0x595, (char) 0x06f5); // XK_Farsi_5 --> EXTENDED ARABIC-INDIC DIGIT FIVE 
0518:                keysym2UCSHash.put((long) 0x596, (char) 0x06f6); // XK_Farsi_6 --> EXTENDED ARABIC-INDIC DIGIT SIX 
0519:                keysym2UCSHash.put((long) 0x597, (char) 0x06f7); // XK_Farsi_7 --> EXTENDED ARABIC-INDIC DIGIT SEVEN 
0520:                keysym2UCSHash.put((long) 0x598, (char) 0x06f8); // XK_Farsi_8 --> EXTENDED ARABIC-INDIC DIGIT EIGHT 
0521:                keysym2UCSHash.put((long) 0x599, (char) 0x06f9); // XK_Farsi_9 --> EXTENDED ARABIC-INDIC DIGIT NINE 
0522:                keysym2UCSHash.put((long) 0x5a5, (char) 0x066a); // XK_Arabic_percent --> ARABIC PERCENT SIGN 
0523:                keysym2UCSHash.put((long) 0x5a6, (char) 0x0670); // XK_Arabic_superscript_alef --> ARABIC LETTER SUPERSCRIPT ALEF 
0524:                keysym2UCSHash.put((long) 0x5a7, (char) 0x0679); // XK_Arabic_tteh --> ARABIC LETTER TTEH 
0525:                keysym2UCSHash.put((long) 0x5a8, (char) 0x067e); // XK_Arabic_peh --> ARABIC LETTER PEH 
0526:                keysym2UCSHash.put((long) 0x5a9, (char) 0x0686); // XK_Arabic_tcheh --> ARABIC LETTER TCHEH 
0527:                keysym2UCSHash.put((long) 0x5aa, (char) 0x0688); // XK_Arabic_ddal --> ARABIC LETTER DDAL 
0528:                keysym2UCSHash.put((long) 0x5ab, (char) 0x0691); // XK_Arabic_rreh --> ARABIC LETTER RREH 
0529:                keysym2UCSHash.put((long) 0x5ac, (char) 0x060c); // XK_Arabic_comma --> ARABIC COMMA 
0530:                keysym2UCSHash.put((long) 0x5ae, (char) 0x06d4); // XK_Arabic_fullstop --> ARABIC FULL STOP 
0531:                keysym2UCSHash.put((long) 0x5b0, (char) 0x0660); // XK_Arabic_0 --> ARABIC-INDIC DIGIT ZERO 
0532:                keysym2UCSHash.put((long) 0x5b1, (char) 0x0661); // XK_Arabic_1 --> ARABIC-INDIC DIGIT ONE 
0533:                keysym2UCSHash.put((long) 0x5b2, (char) 0x0662); // XK_Arabic_2 --> ARABIC-INDIC DIGIT TWO 
0534:                keysym2UCSHash.put((long) 0x5b3, (char) 0x0663); // XK_Arabic_3 --> ARABIC-INDIC DIGIT THREE 
0535:                keysym2UCSHash.put((long) 0x5b4, (char) 0x0664); // XK_Arabic_4 --> ARABIC-INDIC DIGIT FOUR 
0536:                keysym2UCSHash.put((long) 0x5b5, (char) 0x0665); // XK_Arabic_5 --> ARABIC-INDIC DIGIT FIVE 
0537:                keysym2UCSHash.put((long) 0x5b6, (char) 0x0666); // XK_Arabic_6 --> ARABIC-INDIC DIGIT SIX 
0538:                keysym2UCSHash.put((long) 0x5b7, (char) 0x0667); // XK_Arabic_7 --> ARABIC-INDIC DIGIT SEVEN 
0539:                keysym2UCSHash.put((long) 0x5b8, (char) 0x0668); // XK_Arabic_8 --> ARABIC-INDIC DIGIT EIGHT 
0540:                keysym2UCSHash.put((long) 0x5b9, (char) 0x0669); // XK_Arabic_9 --> ARABIC-INDIC DIGIT NINE 
0541:                keysym2UCSHash.put((long) 0x5bb, (char) 0x061b); // XK_Arabic_semicolon --> ARABIC SEMICOLON 
0542:                keysym2UCSHash.put((long) 0x5bf, (char) 0x061f); // XK_Arabic_question_mark --> ARABIC QUESTION MARK 
0543:                keysym2UCSHash.put((long) 0x5c1, (char) 0x0621); // XK_Arabic_hamza --> ARABIC LETTER HAMZA 
0544:                keysym2UCSHash.put((long) 0x5c2, (char) 0x0622); // XK_Arabic_maddaonalef --> ARABIC LETTER ALEF WITH MADDA ABOVE 
0545:                keysym2UCSHash.put((long) 0x5c3, (char) 0x0623); // XK_Arabic_hamzaonalef --> ARABIC LETTER ALEF WITH HAMZA ABOVE 
0546:                keysym2UCSHash.put((long) 0x5c4, (char) 0x0624); // XK_Arabic_hamzaonwaw --> ARABIC LETTER WAW WITH HAMZA ABOVE 
0547:                keysym2UCSHash.put((long) 0x5c5, (char) 0x0625); // XK_Arabic_hamzaunderalef --> ARABIC LETTER ALEF WITH HAMZA BELOW 
0548:                keysym2UCSHash.put((long) 0x5c6, (char) 0x0626); // XK_Arabic_hamzaonyeh --> ARABIC LETTER YEH WITH HAMZA ABOVE 
0549:                keysym2UCSHash.put((long) 0x5c7, (char) 0x0627); // XK_Arabic_alef --> ARABIC LETTER ALEF 
0550:                keysym2UCSHash.put((long) 0x5c8, (char) 0x0628); // XK_Arabic_beh --> ARABIC LETTER BEH 
0551:                keysym2UCSHash.put((long) 0x5c9, (char) 0x0629); // XK_Arabic_tehmarbuta --> ARABIC LETTER TEH MARBUTA 
0552:                keysym2UCSHash.put((long) 0x5ca, (char) 0x062a); // XK_Arabic_teh --> ARABIC LETTER TEH 
0553:                keysym2UCSHash.put((long) 0x5cb, (char) 0x062b); // XK_Arabic_theh --> ARABIC LETTER THEH 
0554:                keysym2UCSHash.put((long) 0x5cc, (char) 0x062c); // XK_Arabic_jeem --> ARABIC LETTER JEEM 
0555:                keysym2UCSHash.put((long) 0x5cd, (char) 0x062d); // XK_Arabic_hah --> ARABIC LETTER HAH 
0556:                keysym2UCSHash.put((long) 0x5ce, (char) 0x062e); // XK_Arabic_khah --> ARABIC LETTER KHAH 
0557:                keysym2UCSHash.put((long) 0x5cf, (char) 0x062f); // XK_Arabic_dal --> ARABIC LETTER DAL 
0558:                keysym2UCSHash.put((long) 0x5d0, (char) 0x0630); // XK_Arabic_thal --> ARABIC LETTER THAL 
0559:                keysym2UCSHash.put((long) 0x5d1, (char) 0x0631); // XK_Arabic_ra --> ARABIC LETTER REH 
0560:                keysym2UCSHash.put((long) 0x5d2, (char) 0x0632); // XK_Arabic_zain --> ARABIC LETTER ZAIN 
0561:                keysym2UCSHash.put((long) 0x5d3, (char) 0x0633); // XK_Arabic_seen --> ARABIC LETTER SEEN 
0562:                keysym2UCSHash.put((long) 0x5d4, (char) 0x0634); // XK_Arabic_sheen --> ARABIC LETTER SHEEN 
0563:                keysym2UCSHash.put((long) 0x5d5, (char) 0x0635); // XK_Arabic_sad --> ARABIC LETTER SAD 
0564:                keysym2UCSHash.put((long) 0x5d6, (char) 0x0636); // XK_Arabic_dad --> ARABIC LETTER DAD 
0565:                keysym2UCSHash.put((long) 0x5d7, (char) 0x0637); // XK_Arabic_tah --> ARABIC LETTER TAH 
0566:                keysym2UCSHash.put((long) 0x5d8, (char) 0x0638); // XK_Arabic_zah --> ARABIC LETTER ZAH 
0567:                keysym2UCSHash.put((long) 0x5d9, (char) 0x0639); // XK_Arabic_ain --> ARABIC LETTER AIN 
0568:                keysym2UCSHash.put((long) 0x5da, (char) 0x063a); // XK_Arabic_ghain --> ARABIC LETTER GHAIN 
0569:                keysym2UCSHash.put((long) 0x5e0, (char) 0x0640); // XK_Arabic_tatweel --> ARABIC TATWEEL 
0570:                keysym2UCSHash.put((long) 0x5e1, (char) 0x0641); // XK_Arabic_feh --> ARABIC LETTER FEH 
0571:                keysym2UCSHash.put((long) 0x5e2, (char) 0x0642); // XK_Arabic_qaf --> ARABIC LETTER QAF 
0572:                keysym2UCSHash.put((long) 0x5e3, (char) 0x0643); // XK_Arabic_kaf --> ARABIC LETTER KAF 
0573:                keysym2UCSHash.put((long) 0x5e4, (char) 0x0644); // XK_Arabic_lam --> ARABIC LETTER LAM 
0574:                keysym2UCSHash.put((long) 0x5e5, (char) 0x0645); // XK_Arabic_meem --> ARABIC LETTER MEEM 
0575:                keysym2UCSHash.put((long) 0x5e6, (char) 0x0646); // XK_Arabic_noon --> ARABIC LETTER NOON 
0576:                keysym2UCSHash.put((long) 0x5e7, (char) 0x0647); // XK_Arabic_ha --> ARABIC LETTER HEH 
0577:                keysym2UCSHash.put((long) 0x5e8, (char) 0x0648); // XK_Arabic_waw --> ARABIC LETTER WAW 
0578:                keysym2UCSHash.put((long) 0x5e9, (char) 0x0649); // XK_Arabic_alefmaksura --> ARABIC LETTER ALEF MAKSURA 
0579:                keysym2UCSHash.put((long) 0x5ea, (char) 0x064a); // XK_Arabic_yeh --> ARABIC LETTER YEH 
0580:                keysym2UCSHash.put((long) 0x5eb, (char) 0x064b); // XK_Arabic_fathatan --> ARABIC FATHATAN 
0581:                keysym2UCSHash.put((long) 0x5ec, (char) 0x064c); // XK_Arabic_dammatan --> ARABIC DAMMATAN 
0582:                keysym2UCSHash.put((long) 0x5ed, (char) 0x064d); // XK_Arabic_kasratan --> ARABIC KASRATAN 
0583:                keysym2UCSHash.put((long) 0x5ee, (char) 0x064e); // XK_Arabic_fatha --> ARABIC FATHA 
0584:                keysym2UCSHash.put((long) 0x5ef, (char) 0x064f); // XK_Arabic_damma --> ARABIC DAMMA 
0585:                keysym2UCSHash.put((long) 0x5f0, (char) 0x0650); // XK_Arabic_kasra --> ARABIC KASRA 
0586:                keysym2UCSHash.put((long) 0x5f1, (char) 0x0651); // XK_Arabic_shadda --> ARABIC SHADDA 
0587:                keysym2UCSHash.put((long) 0x5f2, (char) 0x0652); // XK_Arabic_sukun --> ARABIC SUKUN 
0588:                keysym2UCSHash.put((long) 0x5f3, (char) 0x0653); // XK_Arabic_madda_above --> ARABIC MADDAH ABOVE 
0589:                keysym2UCSHash.put((long) 0x5f4, (char) 0x0654); // XK_Arabic_hamza_above --> ARABIC HAMZA ABOVE 
0590:                keysym2UCSHash.put((long) 0x5f5, (char) 0x0655); // XK_Arabic_hamza_below --> ARABIC HAMZA BELOW 
0591:                keysym2UCSHash.put((long) 0x5f6, (char) 0x0698); // XK_Arabic_jeh --> ARABIC LETTER JEH 
0592:                keysym2UCSHash.put((long) 0x5f7, (char) 0x06a4); // XK_Arabic_veh --> ARABIC LETTER VEH 
0593:                keysym2UCSHash.put((long) 0x5f8, (char) 0x06a9); // XK_Arabic_keheh --> ARABIC LETTER KEHEH 
0594:                keysym2UCSHash.put((long) 0x5f9, (char) 0x06af); // XK_Arabic_gaf --> ARABIC LETTER GAF 
0595:                keysym2UCSHash.put((long) 0x5fa, (char) 0x06ba); // XK_Arabic_noon_ghunna --> ARABIC LETTER NOON GHUNNA 
0596:                keysym2UCSHash.put((long) 0x5fb, (char) 0x06be); // XK_Arabic_heh_doachashmee --> ARABIC LETTER HEH DOACHASHMEE 
0597:                keysym2UCSHash.put((long) 0x5fc, (char) 0x06cc); // XK_Farsi_yeh --> ARABIC LETTER FARSI YEH 
0598:                keysym2UCSHash.put((long) 0x5fd, (char) 0x06d2); // XK_Arabic_yeh_baree --> ARABIC LETTER YEH BARREE 
0599:                keysym2UCSHash.put((long) 0x5fe, (char) 0x06c1); // XK_Arabic_heh_goal --> ARABIC LETTER HEH GOAL 
0600:                keysym2UCSHash.put((long) 0x680, (char) 0x0492); // XK_Cyrillic_GHE_bar --> CYRILLIC CAPITAL LETTER GHE WITH STROKE 
0601:                keysym2UCSHash.put((long) 0x690, (char) 0x0493); // XK_Cyrillic_ghe_bar --> CYRILLIC SMALL LETTER GHE WITH STROKE 
0602:                keysym2UCSHash.put((long) 0x681, (char) 0x0496); // XK_Cyrillic_ZHE_descender --> CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER 
0603:                keysym2UCSHash.put((long) 0x691, (char) 0x0497); // XK_Cyrillic_zhe_descender --> CYRILLIC SMALL LETTER ZHE WITH DESCENDER 
0604:                keysym2UCSHash.put((long) 0x682, (char) 0x049a); // XK_Cyrillic_KA_descender --> CYRILLIC CAPITAL LETTER KA WITH DESCENDER 
0605:                keysym2UCSHash.put((long) 0x692, (char) 0x049b); // XK_Cyrillic_ka_descender --> CYRILLIC SMALL LETTER KA WITH DESCENDER 
0606:                keysym2UCSHash.put((long) 0x683, (char) 0x049c); // XK_Cyrillic_KA_vertstroke --> CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE 
0607:                keysym2UCSHash.put((long) 0x693, (char) 0x049d); // XK_Cyrillic_ka_vertstroke --> CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE 
0608:                keysym2UCSHash.put((long) 0x684, (char) 0x04a2); // XK_Cyrillic_EN_descender --> CYRILLIC CAPITAL LETTER EN WITH DESCENDER 
0609:                keysym2UCSHash.put((long) 0x694, (char) 0x04a3); // XK_Cyrillic_en_descender --> CYRILLIC SMALL LETTER EN WITH DESCENDER 
0610:                keysym2UCSHash.put((long) 0x685, (char) 0x04ae); // XK_Cyrillic_U_straight --> CYRILLIC CAPITAL LETTER STRAIGHT U 
0611:                keysym2UCSHash.put((long) 0x695, (char) 0x04af); // XK_Cyrillic_u_straight --> CYRILLIC SMALL LETTER STRAIGHT U 
0612:                keysym2UCSHash.put((long) 0x686, (char) 0x04b0); // XK_Cyrillic_U_straight_bar --> CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE 
0613:                keysym2UCSHash.put((long) 0x696, (char) 0x04b1); // XK_Cyrillic_u_straight_bar --> CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE 
0614:                keysym2UCSHash.put((long) 0x687, (char) 0x04b2); // XK_Cyrillic_HA_descender --> CYRILLIC CAPITAL LETTER HA WITH DESCENDER 
0615:                keysym2UCSHash.put((long) 0x697, (char) 0x04b3); // XK_Cyrillic_ha_descender --> CYRILLIC SMALL LETTER HA WITH DESCENDER 
0616:                keysym2UCSHash.put((long) 0x688, (char) 0x04b6); // XK_Cyrillic_CHE_descender --> CYRILLIC CAPITAL LETTER CHE WITH DESCENDER 
0617:                keysym2UCSHash.put((long) 0x698, (char) 0x04b7); // XK_Cyrillic_che_descender --> CYRILLIC SMALL LETTER CHE WITH DESCENDER 
0618:                keysym2UCSHash.put((long) 0x689, (char) 0x04b8); // XK_Cyrillic_CHE_vertstroke --> CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE 
0619:                keysym2UCSHash.put((long) 0x699, (char) 0x04b9); // XK_Cyrillic_che_vertstroke --> CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE 
0620:                keysym2UCSHash.put((long) 0x68a, (char) 0x04ba); // XK_Cyrillic_SHHA --> CYRILLIC CAPITAL LETTER SHHA 
0621:                keysym2UCSHash.put((long) 0x69a, (char) 0x04bb); // XK_Cyrillic_shha --> CYRILLIC SMALL LETTER SHHA 
0622:                keysym2UCSHash.put((long) 0x68c, (char) 0x04d8); // XK_Cyrillic_SCHWA --> CYRILLIC CAPITAL LETTER SCHWA 
0623:                keysym2UCSHash.put((long) 0x69c, (char) 0x04d9); // XK_Cyrillic_schwa --> CYRILLIC SMALL LETTER SCHWA 
0624:                keysym2UCSHash.put((long) 0x68d, (char) 0x04e2); // XK_Cyrillic_I_macron --> CYRILLIC CAPITAL LETTER I WITH MACRON 
0625:                keysym2UCSHash.put((long) 0x69d, (char) 0x04e3); // XK_Cyrillic_i_macron --> CYRILLIC SMALL LETTER I WITH MACRON 
0626:                keysym2UCSHash.put((long) 0x68e, (char) 0x04e8); // XK_Cyrillic_O_bar --> CYRILLIC CAPITAL LETTER BARRED O 
0627:                keysym2UCSHash.put((long) 0x69e, (char) 0x04e9); // XK_Cyrillic_o_bar --> CYRILLIC SMALL LETTER BARRED O 
0628:                keysym2UCSHash.put((long) 0x68f, (char) 0x04ee); // XK_Cyrillic_U_macron --> CYRILLIC CAPITAL LETTER U WITH MACRON 
0629:                keysym2UCSHash.put((long) 0x69f, (char) 0x04ef); // XK_Cyrillic_u_macron --> CYRILLIC SMALL LETTER U WITH MACRON 
0630:                keysym2UCSHash.put((long) 0x6a1, (char) 0x0452); // XK_Serbian_dje --> CYRILLIC SMALL LETTER DJE 
0631:                keysym2UCSHash.put((long) 0x6a2, (char) 0x0453); // XK_Macedonia_gje --> CYRILLIC SMALL LETTER GJE 
0632:                keysym2UCSHash.put((long) 0x6a3, (char) 0x0451); // XK_Cyrillic_io --> CYRILLIC SMALL LETTER IO 
0633:                keysym2UCSHash.put((long) 0x6a4, (char) 0x0454); // XK_Ukrainian_ie --> CYRILLIC SMALL LETTER UKRAINIAN IE 
0634:                keysym2UCSHash.put((long) 0x6a5, (char) 0x0455); // XK_Macedonia_dse --> CYRILLIC SMALL LETTER DZE 
0635:                keysym2UCSHash.put((long) 0x6a6, (char) 0x0456); // XK_Ukrainian_i --> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 
0636:                keysym2UCSHash.put((long) 0x6a7, (char) 0x0457); // XK_Ukrainian_yi --> CYRILLIC SMALL LETTER YI 
0637:                keysym2UCSHash.put((long) 0x6a8, (char) 0x0458); // XK_Cyrillic_je --> CYRILLIC SMALL LETTER JE 
0638:                keysym2UCSHash.put((long) 0x6a9, (char) 0x0459); // XK_Cyrillic_lje --> CYRILLIC SMALL LETTER LJE 
0639:                keysym2UCSHash.put((long) 0x6aa, (char) 0x045a); // XK_Cyrillic_nje --> CYRILLIC SMALL LETTER NJE 
0640:                keysym2UCSHash.put((long) 0x6ab, (char) 0x045b); // XK_Serbian_tshe --> CYRILLIC SMALL LETTER TSHE 
0641:                keysym2UCSHash.put((long) 0x6ac, (char) 0x045c); // XK_Macedonia_kje --> CYRILLIC SMALL LETTER KJE 
0642:                keysym2UCSHash.put((long) 0x6ad, (char) 0x0491); // XK_Ukrainian_ghe_with_upturn --> CYRILLIC SMALL LETTER GHE WITH UPTURN 
0643:                keysym2UCSHash.put((long) 0x6ae, (char) 0x045e); // XK_Byelorussian_shortu --> CYRILLIC SMALL LETTER SHORT U 
0644:                keysym2UCSHash.put((long) 0x6af, (char) 0x045f); // XK_Cyrillic_dzhe --> CYRILLIC SMALL LETTER DZHE 
0645:                keysym2UCSHash.put((long) 0x6b0, (char) 0x2116); // XK_numerosign --> NUMERO SIGN 
0646:                keysym2UCSHash.put((long) 0x6b1, (char) 0x0402); // XK_Serbian_DJE --> CYRILLIC CAPITAL LETTER DJE 
0647:                keysym2UCSHash.put((long) 0x6b2, (char) 0x0403); // XK_Macedonia_GJE --> CYRILLIC CAPITAL LETTER GJE 
0648:                keysym2UCSHash.put((long) 0x6b3, (char) 0x0401); // XK_Cyrillic_IO --> CYRILLIC CAPITAL LETTER IO 
0649:                keysym2UCSHash.put((long) 0x6b4, (char) 0x0404); // XK_Ukrainian_IE --> CYRILLIC CAPITAL LETTER UKRAINIAN IE 
0650:                keysym2UCSHash.put((long) 0x6b5, (char) 0x0405); // XK_Macedonia_DSE --> CYRILLIC CAPITAL LETTER DZE 
0651:                keysym2UCSHash.put((long) 0x6b6, (char) 0x0406); // XK_Ukrainian_I --> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 
0652:                keysym2UCSHash.put((long) 0x6b7, (char) 0x0407); // XK_Ukrainian_YI --> CYRILLIC CAPITAL LETTER YI 
0653:                keysym2UCSHash.put((long) 0x6b8, (char) 0x0408); // XK_Cyrillic_JE --> CYRILLIC CAPITAL LETTER JE 
0654:                keysym2UCSHash.put((long) 0x6b9, (char) 0x0409); // XK_Cyrillic_LJE --> CYRILLIC CAPITAL LETTER LJE 
0655:                keysym2UCSHash.put((long) 0x6ba, (char) 0x040a); // XK_Cyrillic_NJE --> CYRILLIC CAPITAL LETTER NJE 
0656:                keysym2UCSHash.put((long) 0x6bb, (char) 0x040b); // XK_Serbian_TSHE --> CYRILLIC CAPITAL LETTER TSHE 
0657:                keysym2UCSHash.put((long) 0x6bc, (char) 0x040c); // XK_Macedonia_KJE --> CYRILLIC CAPITAL LETTER KJE 
0658:                keysym2UCSHash.put((long) 0x6bd, (char) 0x0490); // XK_Ukrainian_GHE_WITH_UPTURN --> CYRILLIC CAPITAL LETTER GHE WITH UPTURN 
0659:                keysym2UCSHash.put((long) 0x6be, (char) 0x040e); // XK_Byelorussian_SHORTU --> CYRILLIC CAPITAL LETTER SHORT U 
0660:                keysym2UCSHash.put((long) 0x6bf, (char) 0x040f); // XK_Cyrillic_DZHE --> CYRILLIC CAPITAL LETTER DZHE 
0661:                keysym2UCSHash.put((long) 0x6c0, (char) 0x044e); // XK_Cyrillic_yu --> CYRILLIC SMALL LETTER YU 
0662:                keysym2UCSHash.put((long) 0x6c1, (char) 0x0430); // XK_Cyrillic_a --> CYRILLIC SMALL LETTER A 
0663:                keysym2UCSHash.put((long) 0x6c2, (char) 0x0431); // XK_Cyrillic_be --> CYRILLIC SMALL LETTER BE 
0664:                keysym2UCSHash.put((long) 0x6c3, (char) 0x0446); // XK_Cyrillic_tse --> CYRILLIC SMALL LETTER TSE 
0665:                keysym2UCSHash.put((long) 0x6c4, (char) 0x0434); // XK_Cyrillic_de --> CYRILLIC SMALL LETTER DE 
0666:                keysym2UCSHash.put((long) 0x6c5, (char) 0x0435); // XK_Cyrillic_ie --> CYRILLIC SMALL LETTER IE 
0667:                keysym2UCSHash.put((long) 0x6c6, (char) 0x0444); // XK_Cyrillic_ef --> CYRILLIC SMALL LETTER EF 
0668:                keysym2UCSHash.put((long) 0x6c7, (char) 0x0433); // XK_Cyrillic_ghe --> CYRILLIC SMALL LETTER GHE 
0669:                keysym2UCSHash.put((long) 0x6c8, (char) 0x0445); // XK_Cyrillic_ha --> CYRILLIC SMALL LETTER HA 
0670:                keysym2UCSHash.put((long) 0x6c9, (char) 0x0438); // XK_Cyrillic_i --> CYRILLIC SMALL LETTER I 
0671:                keysym2UCSHash.put((long) 0x6ca, (char) 0x0439); // XK_Cyrillic_shorti --> CYRILLIC SMALL LETTER SHORT I 
0672:                keysym2UCSHash.put((long) 0x6cb, (char) 0x043a); // XK_Cyrillic_ka --> CYRILLIC SMALL LETTER KA 
0673:                keysym2UCSHash.put((long) 0x6cc, (char) 0x043b); // XK_Cyrillic_el --> CYRILLIC SMALL LETTER EL 
0674:                keysym2UCSHash.put((long) 0x6cd, (char) 0x043c); // XK_Cyrillic_em --> CYRILLIC SMALL LETTER EM 
0675:                keysym2UCSHash.put((long) 0x6ce, (char) 0x043d); // XK_Cyrillic_en --> CYRILLIC SMALL LETTER EN 
0676:                keysym2UCSHash.put((long) 0x6cf, (char) 0x043e); // XK_Cyrillic_o --> CYRILLIC SMALL LETTER O 
0677:                keysym2UCSHash.put((long) 0x6d0, (char) 0x043f); // XK_Cyrillic_pe --> CYRILLIC SMALL LETTER PE 
0678:                keysym2UCSHash.put((long) 0x6d1, (char) 0x044f); // XK_Cyrillic_ya --> CYRILLIC SMALL LETTER YA 
0679:                keysym2UCSHash.put((long) 0x6d2, (char) 0x0440); // XK_Cyrillic_er --> CYRILLIC SMALL LETTER ER 
0680:                keysym2UCSHash.put((long) 0x6d3, (char) 0x0441); // XK_Cyrillic_es --> CYRILLIC SMALL LETTER ES 
0681:                keysym2UCSHash.put((long) 0x6d4, (char) 0x0442); // XK_Cyrillic_te --> CYRILLIC SMALL LETTER TE 
0682:                keysym2UCSHash.put((long) 0x6d5, (char) 0x0443); // XK_Cyrillic_u --> CYRILLIC SMALL LETTER U 
0683:                keysym2UCSHash.put((long) 0x6d6, (char) 0x0436); // XK_Cyrillic_zhe --> CYRILLIC SMALL LETTER ZHE 
0684:                keysym2UCSHash.put((long) 0x6d7, (char) 0x0432); // XK_Cyrillic_ve --> CYRILLIC SMALL LETTER VE 
0685:                keysym2UCSHash.put((long) 0x6d8, (char) 0x044c); // XK_Cyrillic_softsign --> CYRILLIC SMALL LETTER SOFT SIGN 
0686:                keysym2UCSHash.put((long) 0x6d9, (char) 0x044b); // XK_Cyrillic_yeru --> CYRILLIC SMALL LETTER YERU 
0687:                keysym2UCSHash.put((long) 0x6da, (char) 0x0437); // XK_Cyrillic_ze --> CYRILLIC SMALL LETTER ZE 
0688:                keysym2UCSHash.put((long) 0x6db, (char) 0x0448); // XK_Cyrillic_sha --> CYRILLIC SMALL LETTER SHA 
0689:                keysym2UCSHash.put((long) 0x6dc, (char) 0x044d); // XK_Cyrillic_e --> CYRILLIC SMALL LETTER E 
0690:                keysym2UCSHash.put((long) 0x6dd, (char) 0x0449); // XK_Cyrillic_shcha --> CYRILLIC SMALL LETTER SHCHA 
0691:                keysym2UCSHash.put((long) 0x6de, (char) 0x0447); // XK_Cyrillic_che --> CYRILLIC SMALL LETTER CHE 
0692:                keysym2UCSHash.put((long) 0x6df, (char) 0x044a); // XK_Cyrillic_hardsign --> CYRILLIC SMALL LETTER HARD SIGN 
0693:                keysym2UCSHash.put((long) 0x6e0, (char) 0x042e); // XK_Cyrillic_YU --> CYRILLIC CAPITAL LETTER YU 
0694:                keysym2UCSHash.put((long) 0x6e1, (char) 0x0410); // XK_Cyrillic_A --> CYRILLIC CAPITAL LETTER A 
0695:                keysym2UCSHash.put((long) 0x6e2, (char) 0x0411); // XK_Cyrillic_BE --> CYRILLIC CAPITAL LETTER BE 
0696:                keysym2UCSHash.put((long) 0x6e3, (char) 0x0426); // XK_Cyrillic_TSE --> CYRILLIC CAPITAL LETTER TSE 
0697:                keysym2UCSHash.put((long) 0x6e4, (char) 0x0414); // XK_Cyrillic_DE --> CYRILLIC CAPITAL LETTER DE 
0698:                keysym2UCSHash.put((long) 0x6e5, (char) 0x0415); // XK_Cyrillic_IE --> CYRILLIC CAPITAL LETTER IE 
0699:                keysym2UCSHash.put((long) 0x6e6, (char) 0x0424); // XK_Cyrillic_EF --> CYRILLIC CAPITAL LETTER EF 
0700:                keysym2UCSHash.put((long) 0x6e7, (char) 0x0413); // XK_Cyrillic_GHE --> CYRILLIC CAPITAL LETTER GHE 
0701:                keysym2UCSHash.put((long) 0x6e8, (char) 0x0425); // XK_Cyrillic_HA --> CYRILLIC CAPITAL LETTER HA 
0702:                keysym2UCSHash.put((long) 0x6e9, (char) 0x0418); // XK_Cyrillic_I --> CYRILLIC CAPITAL LETTER I 
0703:                keysym2UCSHash.put((long) 0x6ea, (char) 0x0419); // XK_Cyrillic_SHORTI --> CYRILLIC CAPITAL LETTER SHORT I 
0704:                keysym2UCSHash.put((long) 0x6eb, (char) 0x041a); // XK_Cyrillic_KA --> CYRILLIC CAPITAL LETTER KA 
0705:                keysym2UCSHash.put((long) 0x6ec, (char) 0x041b); // XK_Cyrillic_EL --> CYRILLIC CAPITAL LETTER EL 
0706:                keysym2UCSHash.put((long) 0x6ed, (char) 0x041c); // XK_Cyrillic_EM --> CYRILLIC CAPITAL LETTER EM 
0707:                keysym2UCSHash.put((long) 0x6ee, (char) 0x041d); // XK_Cyrillic_EN --> CYRILLIC CAPITAL LETTER EN 
0708:                keysym2UCSHash.put((long) 0x6ef, (char) 0x041e); // XK_Cyrillic_O --> CYRILLIC CAPITAL LETTER O 
0709:                keysym2UCSHash.put((long) 0x6f0, (char) 0x041f); // XK_Cyrillic_PE --> CYRILLIC CAPITAL LETTER PE 
0710:                keysym2UCSHash.put((long) 0x6f1, (char) 0x042f); // XK_Cyrillic_YA --> CYRILLIC CAPITAL LETTER YA 
0711:                keysym2UCSHash.put((long) 0x6f2, (char) 0x0420); // XK_Cyrillic_ER --> CYRILLIC CAPITAL LETTER ER 
0712:                keysym2UCSHash.put((long) 0x6f3, (char) 0x0421); // XK_Cyrillic_ES --> CYRILLIC CAPITAL LETTER ES 
0713:                keysym2UCSHash.put((long) 0x6f4, (char) 0x0422); // XK_Cyrillic_TE --> CYRILLIC CAPITAL LETTER TE 
0714:                keysym2UCSHash.put((long) 0x6f5, (char) 0x0423); // XK_Cyrillic_U --> CYRILLIC CAPITAL LETTER U 
0715:                keysym2UCSHash.put((long) 0x6f6, (char) 0x0416); // XK_Cyrillic_ZHE --> CYRILLIC CAPITAL LETTER ZHE 
0716:                keysym2UCSHash.put((long) 0x6f7, (char) 0x0412); // XK_Cyrillic_VE --> CYRILLIC CAPITAL LETTER VE 
0717:                keysym2UCSHash.put((long) 0x6f8, (char) 0x042c); // XK_Cyrillic_SOFTSIGN --> CYRILLIC CAPITAL LETTER SOFT SIGN 
0718:                keysym2UCSHash.put((long) 0x6f9, (char) 0x042b); // XK_Cyrillic_YERU --> CYRILLIC CAPITAL LETTER YERU 
0719:                keysym2UCSHash.put((long) 0x6fa, (char) 0x0417); // XK_Cyrillic_ZE --> CYRILLIC CAPITAL LETTER ZE 
0720:                keysym2UCSHash.put((long) 0x6fb, (char) 0x0428); // XK_Cyrillic_SHA --> CYRILLIC CAPITAL LETTER SHA 
0721:                keysym2UCSHash.put((long) 0x6fc, (char) 0x042d); // XK_Cyrillic_E --> CYRILLIC CAPITAL LETTER E 
0722:                keysym2UCSHash.put((long) 0x6fd, (char) 0x0429); // XK_Cyrillic_SHCHA --> CYRILLIC CAPITAL LETTER SHCHA 
0723:                keysym2UCSHash.put((long) 0x6fe, (char) 0x0427); // XK_Cyrillic_CHE --> CYRILLIC CAPITAL LETTER CHE 
0724:                keysym2UCSHash.put((long) 0x6ff, (char) 0x042a); // XK_Cyrillic_HARDSIGN --> CYRILLIC CAPITAL LETTER HARD SIGN 
0725:                keysym2UCSHash.put((long) 0x7a1, (char) 0x0386); // XK_Greek_ALPHAaccent --> GREEK CAPITAL LETTER ALPHA WITH TONOS 
0726:                keysym2UCSHash.put((long) 0x7a2, (char) 0x0388); // XK_Greek_EPSILONaccent --> GREEK CAPITAL LETTER EPSILON WITH TONOS 
0727:                keysym2UCSHash.put((long) 0x7a3, (char) 0x0389); // XK_Greek_ETAaccent --> GREEK CAPITAL LETTER ETA WITH TONOS 
0728:                keysym2UCSHash.put((long) 0x7a4, (char) 0x038a); // XK_Greek_IOTAaccent --> GREEK CAPITAL LETTER IOTA WITH TONOS 
0729:                keysym2UCSHash.put((long) 0x7a5, (char) 0x03aa); // XK_Greek_IOTAdieresis --> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 
0730:                keysym2UCSHash.put((long) 0x7a7, (char) 0x038c); // XK_Greek_OMICRONaccent --> GREEK CAPITAL LETTER OMICRON WITH TONOS 
0731:                keysym2UCSHash.put((long) 0x7a8, (char) 0x038e); // XK_Greek_UPSILONaccent --> GREEK CAPITAL LETTER UPSILON WITH TONOS 
0732:                keysym2UCSHash.put((long) 0x7a9, (char) 0x03ab); // XK_Greek_UPSILONdieresis --> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 
0733:                keysym2UCSHash.put((long) 0x7ab, (char) 0x038f); // XK_Greek_OMEGAaccent --> GREEK CAPITAL LETTER OMEGA WITH TONOS 
0734:                keysym2UCSHash.put((long) 0x7ae, (char) 0x0385); // XK_Greek_accentdieresis --> GREEK DIALYTIKA TONOS 
0735:                keysym2UCSHash.put((long) 0x7af, (char) 0x2015); // XK_Greek_horizbar --> HORIZONTAL BAR 
0736:                keysym2UCSHash.put((long) 0x7b1, (char) 0x03ac); // XK_Greek_alphaaccent --> GREEK SMALL LETTER ALPHA WITH TONOS 
0737:                keysym2UCSHash.put((long) 0x7b2, (char) 0x03ad); // XK_Greek_epsilonaccent --> GREEK SMALL LETTER EPSILON WITH TONOS 
0738:                keysym2UCSHash.put((long) 0x7b3, (char) 0x03ae); // XK_Greek_etaaccent --> GREEK SMALL LETTER ETA WITH TONOS 
0739:                keysym2UCSHash.put((long) 0x7b4, (char) 0x03af); // XK_Greek_iotaaccent --> GREEK SMALL LETTER IOTA WITH TONOS 
0740:                keysym2UCSHash.put((long) 0x7b5, (char) 0x03ca); // XK_Greek_iotadieresis --> GREEK SMALL LETTER IOTA WITH DIALYTIKA 
0741:                keysym2UCSHash.put((long) 0x7b6, (char) 0x0390); // XK_Greek_iotaaccentdieresis --> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 
0742:                keysym2UCSHash.put((long) 0x7b7, (char) 0x03cc); // XK_Greek_omicronaccent --> GREEK SMALL LETTER OMICRON WITH TONOS 
0743:                keysym2UCSHash.put((long) 0x7b8, (char) 0x03cd); // XK_Greek_upsilonaccent --> GREEK SMALL LETTER UPSILON WITH TONOS 
0744:                keysym2UCSHash.put((long) 0x7b9, (char) 0x03cb); // XK_Greek_upsilondieresis --> GREEK SMALL LETTER UPSILON WITH DIALYTIKA 
0745:                keysym2UCSHash.put((long) 0x7ba, (char) 0x03b0); // XK_Greek_upsilonaccentdieresis --> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS 
0746:                keysym2UCSHash.put((long) 0x7bb, (char) 0x03ce); // XK_Greek_omegaaccent --> GREEK SMALL LETTER OMEGA WITH TONOS 
0747:                keysym2UCSHash.put((long) 0x7c1, (char) 0x0391); // XK_Greek_ALPHA --> GREEK CAPITAL LETTER ALPHA 
0748:                keysym2UCSHash.put((long) 0x7c2, (char) 0x0392); // XK_Greek_BETA --> GREEK CAPITAL LETTER BETA 
0749:                keysym2UCSHash.put((long) 0x7c3, (char) 0x0393); // XK_Greek_GAMMA --> GREEK CAPITAL LETTER GAMMA 
0750:                keysym2UCSHash.put((long) 0x7c4, (char) 0x0394); // XK_Greek_DELTA --> GREEK CAPITAL LETTER DELTA 
0751:                keysym2UCSHash.put((long) 0x7c5, (char) 0x0395); // XK_Greek_EPSILON --> GREEK CAPITAL LETTER EPSILON 
0752:                keysym2UCSHash.put((long) 0x7c6, (char) 0x0396); // XK_Greek_ZETA --> GREEK CAPITAL LETTER ZETA 
0753:                keysym2UCSHash.put((long) 0x7c7, (char) 0x0397); // XK_Greek_ETA --> GREEK CAPITAL LETTER ETA 
0754:                keysym2UCSHash.put((long) 0x7c8, (char) 0x0398); // XK_Greek_THETA --> GREEK CAPITAL LETTER THETA 
0755:                keysym2UCSHash.put((long) 0x7c9, (char) 0x0399); // XK_Greek_IOTA --> GREEK CAPITAL LETTER IOTA 
0756:                keysym2UCSHash.put((long) 0x7ca, (char) 0x039a); // XK_Greek_KAPPA --> GREEK CAPITAL LETTER KAPPA 
0757:                keysym2UCSHash.put((long) 0x7cb, (char) 0x039b); // XK_Greek_LAMBDA --> GREEK CAPITAL LETTER LAMDA 
0758:                keysym2UCSHash.put((long) 0x7cc, (char) 0x039c); // XK_Greek_MU --> GREEK CAPITAL LETTER MU 
0759:                keysym2UCSHash.put((long) 0x7cd, (char) 0x039d); // XK_Greek_NU --> GREEK CAPITAL LETTER NU 
0760:                keysym2UCSHash.put((long) 0x7ce, (char) 0x039e); // XK_Greek_XI --> GREEK CAPITAL LETTER XI 
0761:                keysym2UCSHash.put((long) 0x7cf, (char) 0x039f); // XK_Greek_OMICRON --> GREEK CAPITAL LETTER OMICRON 
0762:                keysym2UCSHash.put((long) 0x7d0, (char) 0x03a0); // XK_Greek_PI --> GREEK CAPITAL LETTER PI 
0763:                keysym2UCSHash.put((long) 0x7d1, (char) 0x03a1); // XK_Greek_RHO --> GREEK CAPITAL LETTER RHO 
0764:                keysym2UCSHash.put((long) 0x7d2, (char) 0x03a3); // XK_Greek_SIGMA --> GREEK CAPITAL LETTER SIGMA 
0765:                keysym2UCSHash.put((long) 0x7d4, (char) 0x03a4); // XK_Greek_TAU --> GREEK CAPITAL LETTER TAU 
0766:                keysym2UCSHash.put((long) 0x7d5, (char) 0x03a5); // XK_Greek_UPSILON --> GREEK CAPITAL LETTER UPSILON 
0767:                keysym2UCSHash.put((long) 0x7d6, (char) 0x03a6); // XK_Greek_PHI --> GREEK CAPITAL LETTER PHI 
0768:                keysym2UCSHash.put((long) 0x7d7, (char) 0x03a7); // XK_Greek_CHI --> GREEK CAPITAL LETTER CHI 
0769:                keysym2UCSHash.put((long) 0x7d8, (char) 0x03a8); // XK_Greek_PSI --> GREEK CAPITAL LETTER PSI 
0770:                keysym2UCSHash.put((long) 0x7d9, (char) 0x03a9); // XK_Greek_OMEGA --> GREEK CAPITAL LETTER OMEGA 
0771:                keysym2UCSHash.put((long) 0x7e1, (char) 0x03b1); // XK_Greek_alpha --> GREEK SMALL LETTER ALPHA 
0772:                keysym2UCSHash.put((long) 0x7e2, (char) 0x03b2); // XK_Greek_beta --> GREEK SMALL LETTER BETA 
0773:                keysym2UCSHash.put((long) 0x7e3, (char) 0x03b3); // XK_Greek_gamma --> GREEK SMALL LETTER GAMMA 
0774:                keysym2UCSHash.put((long) 0x7e4, (char) 0x03b4); // XK_Greek_delta --> GREEK SMALL LETTER DELTA 
0775:                keysym2UCSHash.put((long) 0x7e5, (char) 0x03b5); // XK_Greek_epsilon --> GREEK SMALL LETTER EPSILON 
0776:                keysym2UCSHash.put((long) 0x7e6, (char) 0x03b6); // XK_Greek_zeta --> GREEK SMALL LETTER ZETA 
0777:                keysym2UCSHash.put((long) 0x7e7, (char) 0x03b7); // XK_Greek_eta --> GREEK SMALL LETTER ETA 
0778:                keysym2UCSHash.put((long) 0x7e8, (char) 0x03b8); // XK_Greek_theta --> GREEK SMALL LETTER THETA 
0779:                keysym2UCSHash.put((long) 0x7e9, (char) 0x03b9); // XK_Greek_iota --> GREEK SMALL LETTER IOTA 
0780:                keysym2UCSHash.put((long) 0x7ea, (char) 0x03ba); // XK_Greek_kappa --> GREEK SMALL LETTER KAPPA 
0781:                keysym2UCSHash.put((long) 0x7eb, (char) 0x03bb); // XK_Greek_lambda --> GREEK SMALL LETTER LAMDA 
0782:                keysym2UCSHash.put((long) 0x7ec, (char) 0x03bc); // XK_Greek_mu --> GREEK SMALL LETTER MU 
0783:                keysym2UCSHash.put((long) 0x7ed, (char) 0x03bd); // XK_Greek_nu --> GREEK SMALL LETTER NU 
0784:                keysym2UCSHash.put((long) 0x7ee, (char) 0x03be); // XK_Greek_xi --> GREEK SMALL LETTER XI 
0785:                keysym2UCSHash.put((long) 0x7ef, (char) 0x03bf); // XK_Greek_omicron --> GREEK SMALL LETTER OMICRON 
0786:                keysym2UCSHash.put((long) 0x7f0, (char) 0x03c0); // XK_Greek_pi --> GREEK SMALL LETTER PI 
0787:                keysym2UCSHash.put((long) 0x7f1, (char) 0x03c1); // XK_Greek_rho --> GREEK SMALL LETTER RHO 
0788:                keysym2UCSHash.put((long) 0x7f2, (char) 0x03c3); // XK_Greek_sigma --> GREEK SMALL LETTER SIGMA 
0789:                keysym2UCSHash.put((long) 0x7f3, (char) 0x03c2); // XK_Greek_finalsmallsigma --> GREEK SMALL LETTER FINAL SIGMA 
0790:                keysym2UCSHash.put((long) 0x7f4, (char) 0x03c4); // XK_Greek_tau --> GREEK SMALL LETTER TAU 
0791:                keysym2UCSHash.put((long) 0x7f5, (char) 0x03c5); // XK_Greek_upsilon --> GREEK SMALL LETTER UPSILON 
0792:                keysym2UCSHash.put((long) 0x7f6, (char) 0x03c6); // XK_Greek_phi --> GREEK SMALL LETTER PHI 
0793:                keysym2UCSHash.put((long) 0x7f7, (char) 0x03c7); // XK_Greek_chi --> GREEK SMALL LETTER CHI 
0794:                keysym2UCSHash.put((long) 0x7f8, (char) 0x03c8); // XK_Greek_psi --> GREEK SMALL LETTER PSI 
0795:                keysym2UCSHash.put((long) 0x7f9, (char) 0x03c9); // XK_Greek_omega --> GREEK SMALL LETTER OMEGA 
0796:                keysym2UCSHash.put((long) 0x8a1, (char) 0x23b7); // XK_leftradical --> RADICAL SYMBOL BOTTOM 
0797:                keysym2UCSHash.put((long) 0x8a2, (char) 0x250c); // XK_topleftradical --> BOX DRAWINGS LIGHT DOWN AND RIGHT 
0798:                keysym2UCSHash.put((long) 0x8a3, (char) 0x2500); // XK_horizconnector --> BOX DRAWINGS LIGHT HORIZONTAL 
0799:                keysym2UCSHash.put((long) 0x8a4, (char) 0x2320); // XK_topintegral --> TOP HALF INTEGRAL 
0800:                keysym2UCSHash.put((long) 0x8a5, (char) 0x2321); // XK_botintegral --> BOTTOM HALF INTEGRAL 
0801:                keysym2UCSHash.put((long) 0x8a6, (char) 0x2502); // XK_vertconnector --> BOX DRAWINGS LIGHT VERTICAL 
0802:                keysym2UCSHash.put((long) 0x8a7, (char) 0x23a1); // XK_topleftsqbracket --> LEFT SQUARE BRACKET UPPER CORNER 
0803:                keysym2UCSHash.put((long) 0x8a8, (char) 0x23a3); // XK_botleftsqbracket --> LEFT SQUARE BRACKET LOWER CORNER 
0804:                keysym2UCSHash.put((long) 0x8a9, (char) 0x23a4); // XK_toprightsqbracket --> RIGHT SQUARE BRACKET UPPER CORNER 
0805:                keysym2UCSHash.put((long) 0x8aa, (char) 0x23a6); // XK_botrightsqbracket --> RIGHT SQUARE BRACKET LOWER CORNER 
0806:                keysym2UCSHash.put((long) 0x8ab, (char) 0x239b); // XK_topleftparens --> LEFT PARENTHESIS UPPER HOOK 
0807:                keysym2UCSHash.put((long) 0x8ac, (char) 0x239d); // XK_botleftparens --> LEFT PARENTHESIS LOWER HOOK 
0808:                keysym2UCSHash.put((long) 0x8ad, (char) 0x239e); // XK_toprightparens --> RIGHT PARENTHESIS UPPER HOOK 
0809:                keysym2UCSHash.put((long) 0x8ae, (char) 0x23a0); // XK_botrightparens --> RIGHT PARENTHESIS LOWER HOOK 
0810:                keysym2UCSHash.put((long) 0x8af, (char) 0x23a8); // XK_leftmiddlecurlybrace --> LEFT CURLY BRACKET MIDDLE PIECE 
0811:                keysym2UCSHash.put((long) 0x8b0, (char) 0x23ac); // XK_rightmiddlecurlybrace --> RIGHT CURLY BRACKET MIDDLE PIECE 
0812:                keysym2UCSHash.put((long) 0x8bc, (char) 0x2264); // XK_lessthanequal --> LESS-THAN OR EQUAL TO 
0813:                keysym2UCSHash.put((long) 0x8bd, (char) 0x2260); // XK_notequal --> NOT EQUAL TO 
0814:                keysym2UCSHash.put((long) 0x8be, (char) 0x2265); // XK_greaterthanequal --> GREATER-THAN OR EQUAL TO 
0815:                keysym2UCSHash.put((long) 0x8bf, (char) 0x222b); // XK_integral --> INTEGRAL 
0816:                keysym2UCSHash.put((long) 0x8c0, (char) 0x2234); // XK_therefore --> THEREFORE 
0817:                keysym2UCSHash.put((long) 0x8c1, (char) 0x221d); // XK_variation --> PROPORTIONAL TO 
0818:                keysym2UCSHash.put((long) 0x8c2, (char) 0x221e); // XK_infinity --> INFINITY 
0819:                keysym2UCSHash.put((long) 0x8c5, (char) 0x2207); // XK_nabla --> NABLA 
0820:                keysym2UCSHash.put((long) 0x8c8, (char) 0x223c); // XK_approximate --> TILDE OPERATOR 
0821:                keysym2UCSHash.put((long) 0x8c9, (char) 0x2243); // XK_similarequal --> ASYMPTOTICALLY EQUAL TO 
0822:                keysym2UCSHash.put((long) 0x8cd, (char) 0x2104); // XK_ifonlyif --> CENTRE LINE SYMBOL 
0823:                keysym2UCSHash.put((long) 0x8ce, (char) 0x21d2); // XK_implies --> RIGHTWARDS DOUBLE ARROW 
0824:                keysym2UCSHash.put((long) 0x8cf, (char) 0x2261); // XK_identical --> IDENTICAL TO 
0825:                keysym2UCSHash.put((long) 0x8d6, (char) 0x221a); // XK_radical --> SQUARE ROOT 
0826:                keysym2UCSHash.put((long) 0x8da, (char) 0x2282); // XK_includedin --> SUBSET OF 
0827:                keysym2UCSHash.put((long) 0x8db, (char) 0x2283); // XK_includes --> SUPERSET OF 
0828:                keysym2UCSHash.put((long) 0x8dc, (char) 0x2229); // XK_intersection --> INTERSECTION 
0829:                keysym2UCSHash.put((long) 0x8dd, (char) 0x222a); // XK_union --> UNION 
0830:                keysym2UCSHash.put((long) 0x8de, (char) 0x2227); // XK_logicaland --> LOGICAL AND 
0831:                keysym2UCSHash.put((long) 0x8df, (char) 0x2228); // XK_logicalor --> LOGICAL OR 
0832:                keysym2UCSHash.put((long) 0x8ef, (char) 0x2202); // XK_partialderivative --> PARTIAL DIFFERENTIAL 
0833:                keysym2UCSHash.put((long) 0x8f6, (char) 0x0192); // XK_function --> LATIN SMALL LETTER F WITH HOOK 
0834:                keysym2UCSHash.put((long) 0x8fb, (char) 0x2190); // XK_leftarrow --> LEFTWARDS ARROW 
0835:                keysym2UCSHash.put((long) 0x8fc, (char) 0x2191); // XK_uparrow --> UPWARDS ARROW 
0836:                keysym2UCSHash.put((long) 0x8fd, (char) 0x2192); // XK_rightarrow --> RIGHTWARDS ARROW 
0837:                keysym2UCSHash.put((long) 0x8fe, (char) 0x2193); // XK_downarrow --> DOWNWARDS ARROW 
0838:                keysym2UCSHash.put((long) 0x9e0, (char) 0x25c6); // XK_soliddiamond --> BLACK DIAMOND 
0839:                keysym2UCSHash.put((long) 0x9e1, (char) 0x2592); // XK_checkerboard --> MEDIUM SHADE 
0840:                keysym2UCSHash.put((long) 0x9e2, (char) 0x2409); // XK_ht --> SYMBOL FOR HORIZONTAL TABULATION 
0841:                keysym2UCSHash.put((long) 0x9e3, (char) 0x240c); // XK_ff --> SYMBOL FOR FORM FEED 
0842:                keysym2UCSHash.put((long) 0x9e4, (char) 0x240d); // XK_cr --> SYMBOL FOR CARRIAGE RETURN 
0843:                keysym2UCSHash.put((long) 0x9e5, (char) 0x240a); // XK_lf --> SYMBOL FOR LINE FEED 
0844:                keysym2UCSHash.put((long) 0x9e8, (char) 0x2424); // XK_nl --> SYMBOL FOR NEWLINE 
0845:                keysym2UCSHash.put((long) 0x9e9, (char) 0x240b); // XK_vt --> SYMBOL FOR VERTICAL TABULATION 
0846:                keysym2UCSHash.put((long) 0x9ea, (char) 0x2518); // XK_lowrightcorner --> BOX DRAWINGS LIGHT UP AND LEFT 
0847:                keysym2UCSHash.put((long) 0x9eb, (char) 0x2510); // XK_uprightcorner --> BOX DRAWINGS LIGHT DOWN AND LEFT 
0848:                keysym2UCSHash.put((long) 0x9ec, (char) 0x250c); // XK_upleftcorner --> BOX DRAWINGS LIGHT DOWN AND RIGHT 
0849:                keysym2UCSHash.put((long) 0x9ed, (char) 0x2514); // XK_lowleftcorner --> BOX DRAWINGS LIGHT UP AND RIGHT 
0850:                keysym2UCSHash.put((long) 0x9ee, (char) 0x253c); // XK_crossinglines --> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 
0851:                keysym2UCSHash.put((long) 0x9ef, (char) 0x23ba); // XK_horizlinescan1 --> HORIZONTAL SCAN LINE-1 
0852:                keysym2UCSHash.put((long) 0x9f0, (char) 0x23bb); // XK_horizlinescan3 --> HORIZONTAL SCAN LINE-3 
0853:                keysym2UCSHash.put((long) 0x9f1, (char) 0x2500); // XK_horizlinescan5 --> BOX DRAWINGS LIGHT HORIZONTAL 
0854:                keysym2UCSHash.put((long) 0x9f2, (char) 0x23bc); // XK_horizlinescan7 --> HORIZONTAL SCAN LINE-7 
0855:                keysym2UCSHash.put((long) 0x9f3, (char) 0x23bd); // XK_horizlinescan9 --> HORIZONTAL SCAN LINE-9 
0856:                keysym2UCSHash.put((long) 0x9f4, (char) 0x251c); // XK_leftt --> BOX DRAWINGS LIGHT VERTICAL AND RIGHT 
0857:                keysym2UCSHash.put((long) 0x9f5, (char) 0x2524); // XK_rightt --> BOX DRAWINGS LIGHT VERTICAL AND LEFT 
0858:                keysym2UCSHash.put((long) 0x9f6, (char) 0x2534); // XK_bott --> BOX DRAWINGS LIGHT UP AND HORIZONTAL 
0859:                keysym2UCSHash.put((long) 0x9f7, (char) 0x242c); // XK_topt -->  
0860:                keysym2UCSHash.put((long) 0x9f8, (char) 0x2502); // XK_vertbar --> BOX DRAWINGS LIGHT VERTICAL 
0861:                keysym2UCSHash.put((long) 0xaa1, (char) 0x2003); // XK_emspace --> EM SPACE 
0862:                keysym2UCSHash.put((long) 0xaa2, (char) 0x2002); // XK_enspace --> EN SPACE 
0863:                keysym2UCSHash.put((long) 0xaa3, (char) 0x2004); // XK_em3space --> THREE-PER-EM SPACE 
0864:                keysym2UCSHash.put((long) 0xaa4, (char) 0x2005); // XK_em4space --> FOUR-PER-EM SPACE 
0865:                keysym2UCSHash.put((long) 0xaa5, (char) 0x2007); // XK_digitspace --> FIGURE SPACE 
0866:                keysym2UCSHash.put((long) 0xaa6, (char) 0x2008); // XK_punctspace --> PUNCTUATION SPACE 
0867:                keysym2UCSHash.put((long) 0xaa7, (char) 0x2009); // XK_thinspace --> THIN SPACE 
0868:                keysym2UCSHash.put((long) 0xaa8, (char) 0x200a); // XK_hairspace --> HAIR SPACE 
0869:                keysym2UCSHash.put((long) 0xaa9, (char) 0x2014); // XK_emdash --> EM DASH 
0870:                keysym2UCSHash.put((long) 0xaaa, (char) 0x2013); // XK_endash --> EN DASH 
0871:                keysym2UCSHash.put((long) 0xaac, (char) 0x2423); // XK_signifblank --> OPEN BOX 
0872:                keysym2UCSHash.put((long) 0xaae, (char) 0x2026); // XK_ellipsis --> HORIZONTAL ELLIPSIS 
0873:                keysym2UCSHash.put((long) 0xaaf, (char) 0x2025); // XK_doubbaselinedot --> TWO DOT LEADER 
0874:                keysym2UCSHash.put((long) 0xab0, (char) 0x2153); // XK_onethird --> VULGAR FRACTION ONE THIRD 
0875:                keysym2UCSHash.put((long) 0xab1, (char) 0x2154); // XK_twothirds --> VULGAR FRACTION TWO THIRDS 
0876:                keysym2UCSHash.put((long) 0xab2, (char) 0x2155); // XK_onefifth --> VULGAR FRACTION ONE FIFTH 
0877:                keysym2UCSHash.put((long) 0xab3, (char) 0x2156); // XK_twofifths --> VULGAR FRACTION TWO FIFTHS 
0878:                keysym2UCSHash.put((long) 0xab4, (char) 0x2157); // XK_threefifths --> VULGAR FRACTION THREE FIFTHS 
0879:                keysym2UCSHash.put((long) 0xab5, (char) 0x2158); // XK_fourfifths --> VULGAR FRACTION FOUR FIFTHS 
0880:                keysym2UCSHash.put((long) 0xab6, (char) 0x2159); // XK_onesixth --> VULGAR FRACTION ONE SIXTH 
0881:                keysym2UCSHash.put((long) 0xab7, (char) 0x215a); // XK_fivesixths --> VULGAR FRACTION FIVE SIXTHS 
0882:                keysym2UCSHash.put((long) 0xab8, (char) 0x2105); // XK_careof --> CARE OF 
0883:                keysym2UCSHash.put((long) 0xabb, (char) 0x2012); // XK_figdash --> FIGURE DASH 
0884:                keysym2UCSHash.put((long) 0xabc, (char) 0x27e8); // XK_leftanglebracket --> MATHEMATICAL LEFT ANGLE BRACKET 
0885:                keysym2UCSHash.put((long) 0xabd, (char) 0x002e); // XK_decimalpoint --> FULL STOP 
0886:                keysym2UCSHash.put((long) 0xabe, (char) 0x27e9); // XK_rightanglebracket --> MATHEMATICAL RIGHT ANGLE BRACKET 
0887:                keysym2UCSHash.put((long) 0xac3, (char) 0x215b); // XK_oneeighth --> VULGAR FRACTION ONE EIGHTH 
0888:                keysym2UCSHash.put((long) 0xac4, (char) 0x215c); // XK_threeeighths --> VULGAR FRACTION THREE EIGHTHS 
0889:                keysym2UCSHash.put((long) 0xac5, (char) 0x215d); // XK_fiveeighths --> VULGAR FRACTION FIVE EIGHTHS 
0890:                keysym2UCSHash.put((long) 0xac6, (char) 0x215e); // XK_seveneighths --> VULGAR FRACTION SEVEN EIGHTHS 
0891:                keysym2UCSHash.put((long) 0xac9, (char) 0x2122); // XK_trademark --> TRADE MARK SIGN 
0892:                keysym2UCSHash.put((long) 0xaca, (char) 0x2613); // XK_signaturemark --> SALTIRE 
0893:                keysym2UCSHash.put((long) 0xacc, (char) 0x25c1); // XK_leftopentriangle --> WHITE LEFT-POINTING TRIANGLE 
0894:                keysym2UCSHash.put((long) 0xacd, (char) 0x25b7); // XK_rightopentriangle --> WHITE RIGHT-POINTING TRIANGLE 
0895:                keysym2UCSHash.put((long) 0xace, (char) 0x25cb); // XK_emopencircle --> WHITE CIRCLE 
0896:                keysym2UCSHash.put((long) 0xacf, (char) 0x25af); // XK_emopenrectangle --> WHITE VERTICAL RECTANGLE 
0897:                keysym2UCSHash.put((long) 0xad0, (char) 0x2018); // XK_leftsinglequotemark --> LEFT SINGLE QUOTATION MARK 
0898:                keysym2UCSHash.put((long) 0xad1, (char) 0x2019); // XK_rightsinglequotemark --> RIGHT SINGLE QUOTATION MARK 
0899:                keysym2UCSHash.put((long) 0xad2, (char) 0x201c); // XK_leftdoublequotemark --> LEFT DOUBLE QUOTATION MARK 
0900:                keysym2UCSHash.put((long) 0xad3, (char) 0x201d); // XK_rightdoublequotemark --> RIGHT DOUBLE QUOTATION MARK 
0901:                keysym2UCSHash.put((long) 0xad4, (char) 0x211e); // XK_prescription --> PRESCRIPTION TAKE 
0902:                keysym2UCSHash.put((long) 0xad6, (char) 0x2032); // XK_minutes --> PRIME 
0903:                keysym2UCSHash.put((long) 0xad7, (char) 0x2033); // XK_seconds --> DOUBLE PRIME 
0904:                keysym2UCSHash.put((long) 0xad9, (char) 0x271d); // XK_latincross --> LATIN CROSS 
0905:                keysym2UCSHash.put((long) 0xadb, (char) 0x25ac); // XK_filledrectbullet --> BLACK RECTANGLE 
0906:                keysym2UCSHash.put((long) 0xadc, (char) 0x25c0); // XK_filledlefttribullet --> BLACK LEFT-POINTING TRIANGLE 
0907:                keysym2UCSHash.put((long) 0xadd, (char) 0x25b6); // XK_filledrighttribullet --> BLACK RIGHT-POINTING TRIANGLE 
0908:                keysym2UCSHash.put((long) 0xade, (char) 0x25cf); // XK_emfilledcircle --> BLACK CIRCLE 
0909:                keysym2UCSHash.put((long) 0xadf, (char) 0x25ae); // XK_emfilledrect --> BLACK VERTICAL RECTANGLE 
0910:                keysym2UCSHash.put((long) 0xae0, (char) 0x25e6); // XK_enopencircbullet --> WHITE BULLET 
0911:                keysym2UCSHash.put((long) 0xae1, (char) 0x25ab); // XK_enopensquarebullet --> WHITE SMALL SQUARE 
0912:                keysym2UCSHash.put((long) 0xae2, (char) 0x25ad); // XK_openrectbullet --> WHITE RECTANGLE 
0913:                keysym2UCSHash.put((long) 0xae3, (char) 0x25b3); // XK_opentribulletup --> WHITE UP-POINTING TRIANGLE 
0914:                keysym2UCSHash.put((long) 0xae4, (char) 0x25bd); // XK_opentribulletdown --> WHITE DOWN-POINTING TRIANGLE 
0915:                keysym2UCSHash.put((long) 0xae5, (char) 0x2606); // XK_openstar --> WHITE STAR 
0916:                keysym2UCSHash.put((long) 0xae6, (char) 0x2022); // XK_enfilledcircbullet --> BULLET 
0917:                keysym2UCSHash.put((long) 0xae7, (char) 0x25aa); // XK_enfilledsqbullet --> BLACK SMALL SQUARE 
0918:                keysym2UCSHash.put((long) 0xae8, (char) 0x25b2); // XK_filledtribulletup --> BLACK UP-POINTING TRIANGLE 
0919:                keysym2UCSHash.put((long) 0xae9, (char) 0x25bc); // XK_filledtribulletdown --> BLACK DOWN-POINTING TRIANGLE 
0920:                keysym2UCSHash.put((long) 0xaea, (char) 0x261c); // XK_leftpointer --> WHITE LEFT POINTING INDEX 
0921:                keysym2UCSHash.put((long) 0xaeb, (char) 0x261e); // XK_rightpointer --> WHITE RIGHT POINTING INDEX 
0922:                keysym2UCSHash.put((long) 0xaec, (char) 0x2663); // XK_club --> BLACK CLUB SUIT 
0923:                keysym2UCSHash.put((long) 0xaed, (char) 0x2666); // XK_diamond --> BLACK DIAMOND SUIT 
0924:                keysym2UCSHash.put((long) 0xaee, (char) 0x2665); // XK_heart --> BLACK HEART SUIT 
0925:                keysym2UCSHash.put((long) 0xaf0, (char) 0x2720); // XK_maltesecross --> MALTESE CROSS 
0926:                keysym2UCSHash.put((long) 0xaf1, (char) 0x2020); // XK_dagger --> DAGGER 
0927:                keysym2UCSHash.put((long) 0xaf2, (char) 0x2021); // XK_doubledagger --> DOUBLE DAGGER 
0928:                keysym2UCSHash.put((long) 0xaf3, (char) 0x2713); // XK_checkmark --> CHECK MARK 
0929:                keysym2UCSHash.put((long) 0xaf4, (char) 0x2717); // XK_ballotcross --> BALLOT X 
0930:                keysym2UCSHash.put((long) 0xaf5, (char) 0x266f); // XK_musicalsharp --> MUSIC SHARP SIGN 
0931:                keysym2UCSHash.put((long) 0xaf6, (char) 0x266d); // XK_musicalflat --> MUSIC FLAT SIGN 
0932:                keysym2UCSHash.put((long) 0xaf7, (char) 0x2642); // XK_malesymbol --> MALE SIGN 
0933:                keysym2UCSHash.put((long) 0xaf8, (char) 0x2640); // XK_femalesymbol --> FEMALE SIGN 
0934:                keysym2UCSHash.put((long) 0xaf9, (char) 0x260e); // XK_telephone --> BLACK TELEPHONE 
0935:                keysym2UCSHash.put((long) 0xafa, (char) 0x2315); // XK_telephonerecorder --> TELEPHONE RECORDER 
0936:                keysym2UCSHash.put((long) 0xafb, (char) 0x2117); // XK_phonographcopyright --> SOUND RECORDING COPYRIGHT 
0937:                keysym2UCSHash.put((long) 0xafc, (char) 0x2038); // XK_caret --> CARET 
0938:                keysym2UCSHash.put((long) 0xafd, (char) 0x201a); // XK_singlelowquotemark --> SINGLE LOW-9 QUOTATION MARK 
0939:                keysym2UCSHash.put((long) 0xafe, (char) 0x201e); // XK_doublelowquotemark --> DOUBLE LOW-9 QUOTATION MARK 
0940:                keysym2UCSHash.put((long) 0xba3, (char) 0x003c); // XK_leftcaret --> LESS-THAN SIGN 
0941:                keysym2UCSHash.put((long) 0xba6, (char) 0x003e); // XK_rightcaret --> GREATER-THAN SIGN 
0942:                keysym2UCSHash.put((long) 0xba8, (char) 0x2228); // XK_downcaret --> LOGICAL OR 
0943:                keysym2UCSHash.put((long) 0xba9, (char) 0x2227); // XK_upcaret --> LOGICAL AND 
0944:                keysym2UCSHash.put((long) 0xbc0, (char) 0x00af); // XK_overbar --> MACRON 
0945:                keysym2UCSHash.put((long) 0xbc2, (char) 0x22a5); // XK_downtack --> UP TACK 
0946:                keysym2UCSHash.put((long) 0xbc3, (char) 0x2229); // XK_upshoe --> INTERSECTION 
0947:                keysym2UCSHash.put((long) 0xbc4, (char) 0x230a); // XK_downstile --> LEFT FLOOR 
0948:                keysym2UCSHash.put((long) 0xbc6, (char) 0x005f); // XK_underbar --> LOW LINE 
0949:                keysym2UCSHash.put((long) 0xbca, (char) 0x2218); // XK_jot --> RING OPERATOR 
0950:                keysym2UCSHash.put((long) 0xbcc, (char) 0x2395); // XK_quad --> APL FUNCTIONAL SYMBOL QUAD 
0951:                keysym2UCSHash.put((long) 0xbce, (char) 0x22a4); // XK_uptack --> DOWN TACK 
0952:                keysym2UCSHash.put((long) 0xbcf, (char) 0x25cb); // XK_circle --> WHITE CIRCLE 
0953:                keysym2UCSHash.put((long) 0xbd3, (char) 0x2308); // XK_upstile --> LEFT CEILING 
0954:                keysym2UCSHash.put((long) 0xbd6, (char) 0x222a); // XK_downshoe --> UNION 
0955:                keysym2UCSHash.put((long) 0xbd8, (char) 0x2283); // XK_rightshoe --> SUPERSET OF 
0956:                keysym2UCSHash.put((long) 0xbda, (char) 0x2282); // XK_leftshoe --> SUBSET OF 
0957:                keysym2UCSHash.put((long) 0xbdc, (char) 0x22a2); // XK_lefttack --> RIGHT TACK 
0958:                keysym2UCSHash.put((long) 0xbfc, (char) 0x22a3); // XK_righttack --> LEFT TACK 
0959:                keysym2UCSHash.put((long) 0xcdf, (char) 0x2017); // XK_hebrew_doublelowline --> DOUBLE LOW LINE 
0960:                keysym2UCSHash.put((long) 0xce0, (char) 0x05d0); // XK_hebrew_aleph --> HEBREW LETTER ALEF 
0961:                keysym2UCSHash.put((long) 0xce1, (char) 0x05d1); // XK_hebrew_bet --> HEBREW LETTER BET 
0962:                keysym2UCSHash.put((long) 0xce2, (char) 0x05d2); // XK_hebrew_gimel --> HEBREW LETTER GIMEL 
0963:                keysym2UCSHash.put((long) 0xce3, (char) 0x05d3); // XK_hebrew_dalet --> HEBREW LETTER DALET 
0964:                keysym2UCSHash.put((long) 0xce4, (char) 0x05d4); // XK_hebrew_he --> HEBREW LETTER HE 
0965:                keysym2UCSHash.put((long) 0xce5, (char) 0x05d5); // XK_hebrew_waw --> HEBREW LETTER VAV 
0966:                keysym2UCSHash.put((long) 0xce6, (char) 0x05d6); // XK_hebrew_zain --> HEBREW LETTER ZAYIN 
0967:                keysym2UCSHash.put((long) 0xce7, (char) 0x05d7); // XK_hebrew_chet --> HEBREW LETTER HET 
0968:                keysym2UCSHash.put((long) 0xce8, (char) 0x05d8); // XK_hebrew_tet --> HEBREW LETTER TET 
0969:                keysym2UCSHash.put((long) 0xce9, (char) 0x05d9); // XK_hebrew_yod --> HEBREW LETTER YOD 
0970:                keysym2UCSHash.put((long) 0xcea, (char) 0x05da); // XK_hebrew_finalkaph --> HEBREW LETTER FINAL KAF 
0971:                keysym2UCSHash.put((long) 0xceb, (char) 0x05db); // XK_hebrew_kaph --> HEBREW LETTER KAF 
0972:                keysym2UCSHash.put((long) 0xcec, (char) 0x05dc); // XK_hebrew_lamed --> HEBREW LETTER LAMED 
0973:                keysym2UCSHash.put((long) 0xced, (char) 0x05dd); // XK_hebrew_finalmem --> HEBREW LETTER FINAL MEM 
0974:                keysym2UCSHash.put((long) 0xcee, (char) 0x05de); // XK_hebrew_mem --> HEBREW LETTER MEM 
0975:                keysym2UCSHash.put((long) 0xcef, (char) 0x05df); // XK_hebrew_finalnun --> HEBREW LETTER FINAL NUN 
0976:                keysym2UCSHash.put((long) 0xcf0, (char) 0x05e0); // XK_hebrew_nun --> HEBREW LETTER NUN 
0977:                keysym2UCSHash.put((long) 0xcf1, (char) 0x05e1); // XK_hebrew_samech --> HEBREW LETTER SAMEKH 
0978:                keysym2UCSHash.put((long) 0xcf2, (char) 0x05e2); // XK_hebrew_ayin --> HEBREW LETTER AYIN 
0979:                keysym2UCSHash.put((long) 0xcf3, (char) 0x05e3); // XK_hebrew_finalpe --> HEBREW LETTER FINAL PE 
0980:                keysym2UCSHash.put((long) 0xcf4, (char) 0x05e4); // XK_hebrew_pe --> HEBREW LETTER PE 
0981:                keysym2UCSHash.put((long) 0xcf5, (char) 0x05e5); // XK_hebrew_finalzade --> HEBREW LETTER FINAL TSADI 
0982:                keysym2UCSHash.put((long) 0xcf6, (char) 0x05e6); // XK_hebrew_zade --> HEBREW LETTER TSADI 
0983:                keysym2UCSHash.put((long) 0xcf7, (char) 0x05e7); // XK_hebrew_qoph --> HEBREW LETTER QOF 
0984:                keysym2UCSHash.put((long) 0xcf8, (char) 0x05e8); // XK_hebrew_resh --> HEBREW LETTER RESH 
0985:                keysym2UCSHash.put((long) 0xcf9, (char) 0x05e9); // XK_hebrew_shin --> HEBREW LETTER SHIN 
0986:                keysym2UCSHash.put((long) 0xcfa, (char) 0x05ea); // XK_hebrew_taw --> HEBREW LETTER TAV 
0987:                keysym2UCSHash.put((long) 0xda1, (char) 0x0e01); // XK_Thai_kokai --> THAI CHARACTER KO KAI 
0988:                keysym2UCSHash.put((long) 0xda2, (char) 0x0e02); // XK_Thai_khokhai --> THAI CHARACTER KHO KHAI 
0989:                keysym2UCSHash.put((long) 0xda3, (char) 0x0e03); // XK_Thai_khokhuat --> THAI CHARACTER KHO KHUAT 
0990:                keysym2UCSHash.put((long) 0xda4, (char) 0x0e04); // XK_Thai_khokhwai --> THAI CHARACTER KHO KHWAI 
0991:                keysym2UCSHash.put((long) 0xda5, (char) 0x0e05); // XK_Thai_khokhon --> THAI CHARACTER KHO KHON 
0992:                keysym2UCSHash.put((long) 0xda6, (char) 0x0e06); // XK_Thai_khorakhang --> THAI CHARACTER KHO RAKHANG 
0993:                keysym2UCSHash.put((long) 0xda7, (char) 0x0e07); // XK_Thai_ngongu --> THAI CHARACTER NGO NGU 
0994:                keysym2UCSHash.put((long) 0xda8, (char) 0x0e08); // XK_Thai_chochan --> THAI CHARACTER CHO CHAN 
0995:                keysym2UCSHash.put((long) 0xda9, (char) 0x0e09); // XK_Thai_choching --> THAI CHARACTER CHO CHING 
0996:                keysym2UCSHash.put((long) 0xdaa, (char) 0x0e0a); // XK_Thai_chochang --> THAI CHARACTER CHO CHANG 
0997:                keysym2UCSHash.put((long) 0xdab, (char) 0x0e0b); // XK_Thai_soso --> THAI CHARACTER SO SO 
0998:                keysym2UCSHash.put((long) 0xdac, (char) 0x0e0c); // XK_Thai_chochoe --> THAI CHARACTER CHO CHOE 
0999:                keysym2UCSHash.put((long) 0xdad, (char) 0x0e0d); // XK_Thai_yoying --> THAI CHARACTER YO YING 
1000:                keysym2UCSHash.put((long) 0xdae, (char) 0x0e0e); // XK_Thai_dochada --> THAI CHARACTER DO CHADA 
1001:                keysym2UCSHash.put((long) 0xdaf, (char) 0x0e0f); // XK_Thai_topatak --> THAI CHARACTER TO PATAK 
1002:                keysym2UCSHash.put((long) 0xdb0, (char) 0x0e10); // XK_Thai_thothan --> THAI CHARACTER THO THAN 
1003:                keysym2UCSHash.put((long) 0xdb1, (char) 0x0e11); // XK_Thai_thonangmontho --> THAI CHARACTER THO NANGMONTHO 
1004:                keysym2UCSHash.put((long) 0xdb2, (char) 0x0e12); // XK_Thai_thophuthao --> THAI CHARACTER THO PHUTHAO 
1005:                keysym2UCSHash.put((long) 0xdb3, (char) 0x0e13); // XK_Thai_nonen --> THAI CHARACTER NO NEN 
1006:                keysym2UCSHash.put((long) 0xdb4, (char) 0x0e14); // XK_Thai_dodek --> THAI CHARACTER DO DEK 
1007:                keysym2UCSHash.put((long) 0xdb5, (char) 0x0e15); // XK_Thai_totao --> THAI CHARACTER TO TAO 
1008:                keysym2UCSHash.put((long) 0xdb6, (char) 0x0e16); // XK_Thai_thothung --> THAI CHARACTER THO THUNG 
1009:                keysym2UCSHash.put((long) 0xdb7, (char) 0x0e17); // XK_Thai_thothahan --> THAI CHARACTER THO THAHAN 
1010:                keysym2UCSHash.put((long) 0xdb8, (char) 0x0e18); // XK_Thai_thothong --> THAI CHARACTER THO THONG 
1011:                keysym2UCSHash.put((long) 0xdb9, (char) 0x0e19); // XK_Thai_nonu --> THAI CHARACTER NO NU 
1012:                keysym2UCSHash.put((long) 0xdba, (char) 0x0e1a); // XK_Thai_bobaimai --> THAI CHARACTER BO BAIMAI 
1013:                keysym2UCSHash.put((long) 0xdbb, (char) 0x0e1b); // XK_Thai_popla --> THAI CHARACTER PO PLA 
1014:                keysym2UCSHash.put((long) 0xdbc, (char) 0x0e1c); // XK_Thai_phophung --> THAI CHARACTER PHO PHUNG 
1015:                keysym2UCSHash.put((long) 0xdbd, (char) 0x0e1d); // XK_Thai_fofa --> THAI CHARACTER FO FA 
1016:                keysym2UCSHash.put((long) 0xdbe, (char) 0x0e1e); // XK_Thai_phophan --> THAI CHARACTER PHO PHAN 
1017:                keysym2UCSHash.put((long) 0xdbf, (char) 0x0e1f); // XK_Thai_fofan --> THAI CHARACTER FO FAN 
1018:                keysym2UCSHash.put((long) 0xdc0, (char) 0x0e20); // XK_Thai_phosamphao --> THAI CHARACTER PHO SAMPHAO 
1019:                keysym2UCSHash.put((long) 0xdc1, (char) 0x0e21); // XK_Thai_moma --> THAI CHARACTER MO MA 
1020:                keysym2UCSHash.put((long) 0xdc2, (char) 0x0e22); // XK_Thai_yoyak --> THAI CHARACTER YO YAK 
1021:                keysym2UCSHash.put((long) 0xdc3, (char) 0x0e23); // XK_Thai_rorua --> THAI CHARACTER RO RUA 
1022:                keysym2UCSHash.put((long) 0xdc4, (char) 0x0e24); // XK_Thai_ru --> THAI CHARACTER RU 
1023:                keysym2UCSHash.put((long) 0xdc5, (char) 0x0e25); // XK_Thai_loling --> THAI CHARACTER LO LING 
1024:                keysym2UCSHash.put((long) 0xdc6, (char) 0x0e26); // XK_Thai_lu --> THAI CHARACTER LU 
1025:                keysym2UCSHash.put((long) 0xdc7, (char) 0x0e27); // XK_Thai_wowaen --> THAI CHARACTER WO WAEN 
1026:                keysym2UCSHash.put((long) 0xdc8, (char) 0x0e28); // XK_Thai_sosala --> THAI CHARACTER SO SALA 
1027:                keysym2UCSHash.put((long) 0xdc9, (char) 0x0e29); // XK_Thai_sorusi --> THAI CHARACTER SO RUSI 
1028:                keysym2UCSHash.put((long) 0xdca, (char) 0x0e2a); // XK_Thai_sosua --> THAI CHARACTER SO SUA 
1029:                keysym2UCSHash.put((long) 0xdcb, (char) 0x0e2b); // XK_Thai_hohip --> THAI CHARACTER HO HIP 
1030:                keysym2UCSHash.put((long) 0xdcc, (char) 0x0e2c); // XK_Thai_lochula --> THAI CHARACTER LO CHULA 
1031:                keysym2UCSHash.put((long) 0xdcd, (char) 0x0e2d); // XK_Thai_oang --> THAI CHARACTER O ANG 
1032:                keysym2UCSHash.put((long) 0xdce, (char) 0x0e2e); // XK_Thai_honokhuk --> THAI CHARACTER HO NOKHUK 
1033:                keysym2UCSHash.put((long) 0xdcf, (char) 0x0e2f); // XK_Thai_paiyannoi --> THAI CHARACTER PAIYANNOI 
1034:                keysym2UCSHash.put((long) 0xdd0, (char) 0x0e30); // XK_Thai_saraa --> THAI CHARACTER SARA A 
1035:                keysym2UCSHash.put((long) 0xdd1, (char) 0x0e31); // XK_Thai_maihanakat --> THAI CHARACTER MAI HAN-AKAT 
1036:                keysym2UCSHash.put((long) 0xdd2, (char) 0x0e32); // XK_Thai_saraaa --> THAI CHARACTER SARA AA 
1037:                keysym2UCSHash.put((long) 0xdd3, (char) 0x0e33); // XK_Thai_saraam --> THAI CHARACTER SARA AM 
1038:                keysym2UCSHash.put((long) 0xdd4, (char) 0x0e34); // XK_Thai_sarai --> THAI CHARACTER SARA I 
1039:                keysym2UCSHash.put((long) 0xdd5, (char) 0x0e35); // XK_Thai_saraii --> THAI CHARACTER SARA II 
1040:                keysym2UCSHash.put((long) 0xdd6, (char) 0x0e36); // XK_Thai_saraue --> THAI CHARACTER SARA UE 
1041:                keysym2UCSHash.put((long) 0xdd7, (char) 0x0e37); // XK_Thai_sarauee --> THAI CHARACTER SARA UEE 
1042:                keysym2UCSHash.put((long) 0xdd8, (char) 0x0e38); // XK_Thai_sarau --> THAI CHARACTER SARA U 
1043:                keysym2UCSHash.put((long) 0xdd9, (char) 0x0e39); // XK_Thai_sarauu --> THAI CHARACTER SARA UU 
1044:                keysym2UCSHash.put((long) 0xdda, (char) 0x0e3a); // XK_Thai_phinthu --> THAI CHARACTER PHINTHU 
1045:                keysym2UCSHash.put((long) 0xddf, (char) 0x0e3f); // XK_Thai_baht --> THAI CURRENCY SYMBOL BAHT 
1046:                keysym2UCSHash.put((long) 0xde0, (char) 0x0e40); // XK_Thai_sarae --> THAI CHARACTER SARA E 
1047:                keysym2UCSHash.put((long) 0xde1, (char) 0x0e41); // XK_Thai_saraae --> THAI CHARACTER SARA AE 
1048:                keysym2UCSHash.put((long) 0xde2, (char) 0x0e42); // XK_Thai_sarao --> THAI CHARACTER SARA O 
1049:                keysym2UCSHash.put((long) 0xde3, (char) 0x0e43); // XK_Thai_saraaimaimuan --> THAI CHARACTER SARA AI MAIMUAN 
1050:                keysym2UCSHash.put((long) 0xde4, (char) 0x0e44); // XK_Thai_saraaimaimalai --> THAI CHARACTER SARA AI MAIMALAI 
1051:                keysym2UCSHash.put((long) 0xde5, (char) 0x0e45); // XK_Thai_lakkhangyao --> THAI CHARACTER LAKKHANGYAO 
1052:                keysym2UCSHash.put((long) 0xde6, (char) 0x0e46); // XK_Thai_maiyamok --> THAI CHARACTER MAIYAMOK 
1053:                keysym2UCSHash.put((long) 0xde7, (char) 0x0e47); // XK_Thai_maitaikhu --> THAI CHARACTER MAITAIKHU 
1054:                keysym2UCSHash.put((long) 0xde8, (char) 0x0e48); // XK_Thai_maiek --> THAI CHARACTER MAI EK 
1055:                keysym2UCSHash.put((long) 0xde9, (char) 0x0e49); // XK_Thai_maitho --> THAI CHARACTER MAI THO 
1056:                keysym2UCSHash.put((long) 0xdea, (char) 0x0e4a); // XK_Thai_maitri --> THAI CHARACTER MAI TRI 
1057:                keysym2UCSHash.put((long) 0xdeb, (char) 0x0e4b); // XK_Thai_maichattawa --> THAI CHARACTER MAI CHATTAWA 
1058:                keysym2UCSHash.put((long) 0xdec, (char) 0x0e4c); // XK_Thai_thanthakhat --> THAI CHARACTER THANTHAKHAT 
1059:                keysym2UCSHash.put((long) 0xded, (char) 0x0e4d); // XK_Thai_nikhahit --> THAI CHARACTER NIKHAHIT 
1060:                keysym2UCSHash.put((long) 0xdf0, (char) 0x0e50); // XK_Thai_leksun --> THAI DIGIT ZERO 
1061:                keysym2UCSHash.put((long) 0xdf1, (char) 0x0e51); // XK_Thai_leknung --> THAI DIGIT ONE 
1062:                keysym2UCSHash.put((long) 0xdf2, (char) 0x0e52); // XK_Thai_leksong --> THAI DIGIT TWO 
1063:                keysym2UCSHash.put((long) 0xdf3, (char) 0x0e53); // XK_Thai_leksam --> THAI DIGIT THREE 
1064:                keysym2UCSHash.put((long) 0xdf4, (char) 0x0e54); // XK_Thai_leksi --> THAI DIGIT FOUR 
1065:                keysym2UCSHash.put((long) 0xdf5, (char) 0x0e55); // XK_Thai_lekha --> THAI DIGIT FIVE 
1066:                keysym2UCSHash.put((long) 0xdf6, (char) 0x0e56); // XK_Thai_lekhok --> THAI DIGIT SIX 
1067:                keysym2UCSHash.put((long) 0xdf7, (char) 0x0e57); // XK_Thai_lekchet --> THAI DIGIT SEVEN 
1068:                keysym2UCSHash.put((long) 0xdf8, (char) 0x0e58); // XK_Thai_lekpaet --> THAI DIGIT EIGHT 
1069:                keysym2UCSHash.put((long) 0xdf9, (char) 0x0e59); // XK_Thai_lekkao --> THAI DIGIT NINE 
1070:                keysym2UCSHash.put((long) 0xea1, (char) 0x3131); // XK_Hangul_Kiyeog --> HANGUL LETTER KIYEOK 
1071:                keysym2UCSHash.put((long) 0xea2, (char) 0x3132); // XK_Hangul_SsangKiyeog --> HANGUL LETTER SSANGKIYEOK 
1072:                keysym2UCSHash.put((long) 0xea3, (char) 0x3133); // XK_Hangul_KiyeogSios --> HANGUL LETTER KIYEOK-SIOS 
1073:                keysym2UCSHash.put((long) 0xea4, (char) 0x3134); // XK_Hangul_Nieun --> HANGUL LETTER NIEUN 
1074:                keysym2UCSHash.put((long) 0xea5, (char) 0x3135); // XK_Hangul_NieunJieuj --> HANGUL LETTER NIEUN-CIEUC 
1075:                keysym2UCSHash.put((long) 0xea6, (char) 0x3136); // XK_Hangul_NieunHieuh --> HANGUL LETTER NIEUN-HIEUH 
1076:                keysym2UCSHash.put((long) 0xea7, (char) 0x3137); // XK_Hangul_Dikeud --> HANGUL LETTER TIKEUT 
1077:                keysym2UCSHash.put((long) 0xea8, (char) 0x3138); // XK_Hangul_SsangDikeud --> HANGUL LETTER SSANGTIKEUT 
1078:                keysym2UCSHash.put((long) 0xea9, (char) 0x3139); // XK_Hangul_Rieul --> HANGUL LETTER RIEUL 
1079:                keysym2UCSHash.put((long) 0xeaa, (char) 0x313a); // XK_Hangul_RieulKiyeog --> HANGUL LETTER RIEUL-KIYEOK 
1080:                keysym2UCSHash.put((long) 0xeab, (char) 0x313b); // XK_Hangul_RieulMieum --> HANGUL LETTER RIEUL-MIEUM 
1081:                keysym2UCSHash.put((long) 0xeac, (char) 0x313c); // XK_Hangul_RieulPieub --> HANGUL LETTER RIEUL-PIEUP 
1082:                keysym2UCSHash.put((long) 0xead, (char) 0x313d); // XK_Hangul_RieulSios --> HANGUL LETTER RIEUL-SIOS 
1083:                keysym2UCSHash.put((long) 0xeae, (char) 0x313e); // XK_Hangul_RieulTieut --> HANGUL LETTER RIEUL-THIEUTH 
1084:                keysym2UCSHash.put((long) 0xeaf, (char) 0x313f); // XK_Hangul_RieulPhieuf --> HANGUL LETTER RIEUL-PHIEUPH 
1085:                keysym2UCSHash.put((long) 0xeb0, (char) 0x3140); // XK_Hangul_RieulHieuh --> HANGUL LETTER RIEUL-HIEUH 
1086:                keysym2UCSHash.put((long) 0xeb1, (char) 0x3141); // XK_Hangul_Mieum --> HANGUL LETTER MIEUM 
1087:                keysym2UCSHash.put((long) 0xeb2, (char) 0x3142); // XK_Hangul_Pieub --> HANGUL LETTER PIEUP 
1088:                keysym2UCSHash.put((long) 0xeb3, (char) 0x3143); // XK_Hangul_SsangPieub --> HANGUL LETTER SSANGPIEUP 
1089:                keysym2UCSHash.put((long) 0xeb4, (char) 0x3144); // XK_Hangul_PieubSios --> HANGUL LETTER PIEUP-SIOS 
1090:                keysym2UCSHash.put((long) 0xeb5, (char) 0x3145); // XK_Hangul_Sios --> HANGUL LETTER SIOS 
1091:                keysym2UCSHash.put((long) 0xeb6, (char) 0x3146); // XK_Hangul_SsangSios --> HANGUL LETTER SSANGSIOS 
1092:                keysym2UCSHash.put((long) 0xeb7, (char) 0x3147); // XK_Hangul_Ieung --> HANGUL LETTER IEUNG 
1093:                keysym2UCSHash.put((long) 0xeb8, (char) 0x3148); // XK_Hangul_Jieuj --> HANGUL LETTER CIEUC 
1094:                keysym2UCSHash.put((long) 0xeb9, (char) 0x3149); // XK_Hangul_SsangJieuj --> HANGUL LETTER SSANGCIEUC 
1095:                keysym2UCSHash.put((long) 0xeba, (char) 0x314a); // XK_Hangul_Cieuc --> HANGUL LETTER CHIEUCH 
1096:                keysym2UCSHash.put((long) 0xebb, (char) 0x314b); // XK_Hangul_Khieuq --> HANGUL LETTER KHIEUKH 
1097:                keysym2UCSHash.put((long) 0xebc, (char) 0x314c); // XK_Hangul_Tieut --> HANGUL LETTER THIEUTH 
1098:                keysym2UCSHash.put((long) 0xebd, (char) 0x314d); // XK_Hangul_Phieuf --> HANGUL LETTER PHIEUPH 
1099:                keysym2UCSHash.put((long) 0xebe, (char) 0x314e); // XK_Hangul_Hieuh --> HANGUL LETTER HIEUH 
1100:                keysym2UCSHash.put((long) 0xebf, (char) 0x314f); // XK_Hangul_A --> HANGUL LETTER A 
1101:                keysym2UCSHash.put((long) 0xec0, (char) 0x3150); // XK_Hangul_AE --> HANGUL LETTER AE 
1102:                keysym2UCSHash.put((long) 0xec1, (char) 0x3151); // XK_Hangul_YA --> HANGUL LETTER YA 
1103:                keysym2UCSHash.put((long) 0xec2, (char) 0x3152); // XK_Hangul_YAE --> HANGUL LETTER YAE 
1104:                keysym2UCSHash.put((long) 0xec3, (char) 0x3153); // XK_Hangul_EO --> HANGUL LETTER EO 
1105:                keysym2UCSHash.put((long) 0xec4, (char) 0x3154); // XK_Hangul_E --> HANGUL LETTER E 
1106:                keysym2UCSHash.put((long) 0xec5, (char) 0x3155); // XK_Hangul_YEO --> HANGUL LETTER YEO 
1107:                keysym2UCSHash.put((long) 0xec6, (char) 0x3156); // XK_Hangul_YE --> HANGUL LETTER YE 
1108:                keysym2UCSHash.put((long) 0xec7, (char) 0x3157); // XK_Hangul_O --> HANGUL LETTER O 
1109:                keysym2UCSHash.put((long) 0xec8, (char) 0x3158); // XK_Hangul_WA --> HANGUL LETTER WA 
1110:                keysym2UCSHash.put((long) 0xec9, (char) 0x3159); // XK_Hangul_WAE --> HANGUL LETTER WAE 
1111:                keysym2UCSHash.put((long) 0xeca, (char) 0x315a); // XK_Hangul_OE --> HANGUL LETTER OE 
1112:                keysym2UCSHash.put((long) 0xecb, (char) 0x315b); // XK_Hangul_YO --> HANGUL LETTER YO 
1113:                keysym2UCSHash.put((long) 0xecc, (char) 0x315c); // XK_Hangul_U --> HANGUL LETTER U 
1114:                keysym2UCSHash.put((long) 0xecd, (char) 0x315d); // XK_Hangul_WEO --> HANGUL LETTER WEO 
1115:                keysym2UCSHash.put((long) 0xece, (char) 0x315e); // XK_Hangul_WE --> HANGUL LETTER WE 
1116:                keysym2UCSHash.put((long) 0xecf, (char) 0x315f); // XK_Hangul_WI --> HANGUL LETTER WI 
1117:                keysym2UCSHash.put((long) 0xed0, (char) 0x3160); // XK_Hangul_YU --> HANGUL LETTER YU 
1118:                keysym2UCSHash.put((long) 0xed1, (char) 0x3161); // XK_Hangul_EU --> HANGUL LETTER EU 
1119:                keysym2UCSHash.put((long) 0xed2, (char) 0x3162); // XK_Hangul_YI --> HANGUL LETTER YI 
1120:                keysym2UCSHash.put((long) 0xed3, (char) 0x3163); // XK_Hangul_I --> HANGUL LETTER I 
1121:                keysym2UCSHash.put((long) 0xed4, (char) 0x11a8); // XK_Hangul_J_Kiyeog --> HANGUL JONGSEONG KIYEOK 
1122:                keysym2UCSHash.put((long) 0xed5, (char) 0x11a9); // XK_Hangul_J_SsangKiyeog --> HANGUL JONGSEONG SSANGKIYEOK 
1123:                keysym2UCSHash.put((long) 0xed6, (char) 0x11aa); // XK_Hangul_J_KiyeogSios --> HANGUL JONGSEONG KIYEOK-SIOS 
1124:                keysym2UCSHash.put((long) 0xed7, (char) 0x11ab); // XK_Hangul_J_Nieun --> HANGUL JONGSEONG NIEUN 
1125:                keysym2UCSHash.put((long) 0xed8, (char) 0x11ac); // XK_Hangul_J_NieunJieuj --> HANGUL JONGSEONG NIEUN-CIEUC 
1126:                keysym2UCSHash.put((long) 0xed9, (char) 0x11ad); // XK_Hangul_J_NieunHieuh --> HANGUL JONGSEONG NIEUN-HIEUH 
1127:                keysym2UCSHash.put((long) 0xeda, (char) 0x11ae); // XK_Hangul_J_Dikeud --> HANGUL JONGSEONG TIKEUT 
1128:                keysym2UCSHash.put((long) 0xedb, (char) 0x11af); // XK_Hangul_J_Rieul --> HANGUL JONGSEONG RIEUL 
1129:                keysym2UCSHash.put((long) 0xedc, (char) 0x11b0); // XK_Hangul_J_RieulKiyeog --> HANGUL JONGSEONG RIEUL-KIYEOK 
1130:                keysym2UCSHash.put((long) 0xedd, (char) 0x11b1); // XK_Hangul_J_RieulMieum --> HANGUL JONGSEONG RIEUL-MIEUM 
1131:                keysym2UCSHash.put((long) 0xede, (char) 0x11b2); // XK_Hangul_J_RieulPieub --> HANGUL JONGSEONG RIEUL-PIEUP 
1132:                keysym2UCSHash.put((long) 0xedf, (char) 0x11b3); // XK_Hangul_J_RieulSios --> HANGUL JONGSEONG RIEUL-SIOS 
1133:                keysym2UCSHash.put((long) 0xee0, (char) 0x11b4); // XK_Hangul_J_RieulTieut --> HANGUL JONGSEONG RIEUL-THIEUTH 
1134:                keysym2UCSHash.put((long) 0xee1, (char) 0x11b5); // XK_Hangul_J_RieulPhieuf --> HANGUL JONGSEONG RIEUL-PHIEUPH 
1135:                keysym2UCSHash.put((long) 0xee2, (char) 0x11b6); // XK_Hangul_J_RieulHieuh --> HANGUL JONGSEONG RIEUL-HIEUH 
1136:                keysym2UCSHash.put((long) 0xee3, (char) 0x11b7); // XK_Hangul_J_Mieum --> HANGUL JONGSEONG MIEUM 
1137:                keysym2UCSHash.put((long) 0xee4, (char) 0x11b8); // XK_Hangul_J_Pieub --> HANGUL JONGSEONG PIEUP 
1138:                keysym2UCSHash.put((long) 0xee5, (char) 0x11b9); // XK_Hangul_J_PieubSios --> HANGUL JONGSEONG PIEUP-SIOS 
1139:                keysym2UCSHash.put((long) 0xee6, (char) 0x11ba); // XK_Hangul_J_Sios --> HANGUL JONGSEONG SIOS 
1140:                keysym2UCSHash.put((long) 0xee7, (char) 0x11bb); // XK_Hangul_J_SsangSios --> HANGUL JONGSEONG SSANGSIOS 
1141:                keysym2UCSHash.put((long) 0xee8, (char) 0x11bc); // XK_Hangul_J_Ieung --> HANGUL JONGSEONG IEUNG 
1142:                keysym2UCSHash.put((long) 0xee9, (char) 0x11bd); // XK_Hangul_J_Jieuj --> HANGUL JONGSEONG CIEUC 
1143:                keysym2UCSHash.put((long) 0xeea, (char) 0x11be); // XK_Hangul_J_Cieuc --> HANGUL JONGSEONG CHIEUCH 
1144:                keysym2UCSHash.put((long) 0xeeb, (char) 0x11bf); // XK_Hangul_J_Khieuq --> HANGUL JONGSEONG KHIEUKH 
1145:                keysym2UCSHash.put((long) 0xeec, (char) 0x11c0); // XK_Hangul_J_Tieut --> HANGUL JONGSEONG THIEUTH 
1146:                keysym2UCSHash.put((long) 0xeed, (char) 0x11c1); // XK_Hangul_J_Phieuf --> HANGUL JONGSEONG PHIEUPH 
1147:                keysym2UCSHash.put((long) 0xeee, (char) 0x11c2); // XK_Hangul_J_Hieuh --> HANGUL JONGSEONG HIEUH 
1148:                keysym2UCSHash.put((long) 0xeef, (char) 0x316d); // XK_Hangul_RieulYeorinHieuh --> HANGUL LETTER RIEUL-YEORINHIEUH 
1149:                keysym2UCSHash.put((long) 0xef0, (char) 0x3171); // XK_Hangul_SunkyeongeumMieum --> HANGUL LETTER KAPYEOUNMIEUM 
1150:                keysym2UCSHash.put((long) 0xef1, (char) 0x3178); // XK_Hangul_SunkyeongeumPieub --> HANGUL LETTER KAPYEOUNPIEUP 
1151:                keysym2UCSHash.put((long) 0xef2, (char) 0x317f); // XK_Hangul_PanSios --> HANGUL LETTER PANSIOS 
1152:                keysym2UCSHash.put((long) 0xef3, (char) 0x3181); // XK_Hangul_KkogjiDalrinIeung --> HANGUL LETTER YESIEUNG 
1153:                keysym2UCSHash.put((long) 0xef4, (char) 0x3184); // XK_Hangul_SunkyeongeumPhieuf --> HANGUL LETTER KAPYEOUNPHIEUPH 
1154:                keysym2UCSHash.put((long) 0xef5, (char) 0x3186); // XK_Hangul_YeorinHieuh --> HANGUL LETTER YEORINHIEUH 
1155:                keysym2UCSHash.put((long) 0xef6, (char) 0x318d); // XK_Hangul_AraeA --> HANGUL LETTER ARAEA 
1156:                keysym2UCSHash.put((long) 0xef7, (char) 0x318e); // XK_Hangul_AraeAE --> HANGUL LETTER ARAEAE 
1157:                keysym2UCSHash.put((long) 0xef8, (char) 0x11eb); // XK_Hangul_J_PanSios --> HANGUL JONGSEONG PANSIOS 
1158:                keysym2UCSHash.put((long) 0xef9, (char) 0x11f0); // XK_Hangul_J_KkogjiDalrinIeung --> HANGUL JONGSEONG YESIEUNG 
1159:                keysym2UCSHash.put((long) 0xefa, (char) 0x11f9); // XK_Hangul_J_YeorinHieuh --> HANGUL JONGSEONG YEORINHIEUH 
1160:                keysym2UCSHash.put((long) 0xeff, (char) 0x20a9); // XK_Korean_Won --> WON SIGN 
1161:                keysym2UCSHash.put((long) 0x16a3, (char) 0x1e8a); // XK_Xabovedot --> LATIN CAPITAL LETTER X WITH DOT ABOVE 
1162:                keysym2UCSHash.put((long) 0x16a6, (char) 0x012c); // XK_Ibreve --> LATIN CAPITAL LETTER I WITH BREVE 
1163:                keysym2UCSHash.put((long) 0x16a9, (char) 0x01b5); // XK_Zstroke --> LATIN CAPITAL LETTER Z WITH STROKE 
1164:                keysym2UCSHash.put((long) 0x16aa, (char) 0x01e6); // XK_Gcaron --> LATIN CAPITAL LETTER G WITH CARON 
1165:                keysym2UCSHash.put((long) 0x16af, (char) 0x019f); // XK_Obarred --> LATIN CAPITAL LETTER O WITH MIDDLE TILDE 
1166:                keysym2UCSHash.put((long) 0x16b3, (char) 0x1e8b); // XK_xabovedot --> LATIN SMALL LETTER X WITH DOT ABOVE 
1167:                keysym2UCSHash.put((long) 0x16b6, (char) 0x012d); // XK_ibreve --> LATIN SMALL LETTER I WITH BREVE 
1168:                keysym2UCSHash.put((long) 0x16b9, (char) 0x01b6); // XK_zstroke --> LATIN SMALL LETTER Z WITH STROKE 
1169:                keysym2UCSHash.put((long) 0x16ba, (char) 0x01e7); // XK_gcaron --> LATIN SMALL LETTER G WITH CARON 
1170:                keysym2UCSHash.put((long) 0x16bd, (char) 0x01d2); // XK_ocaron --> LATIN SMALL LETTER O WITH CARON 
1171:                keysym2UCSHash.put((long) 0x16bf, (char) 0x0275); // XK_obarred --> LATIN SMALL LETTER BARRED O 
1172:                keysym2UCSHash.put((long) 0x16c6, (char) 0x018f); // XK_SCHWA --> LATIN CAPITAL LETTER SCHWA 
1173:                keysym2UCSHash.put((long) 0x16f6, (char) 0x0259); // XK_schwa --> LATIN SMALL LETTER SCHWA 
1174:                keysym2UCSHash.put((long) 0x1ea0, (char) 0x1ea0); // XK_Abelowdot --> LATIN CAPITAL LETTER A WITH DOT BELOW 
1175:                keysym2UCSHash.put((long) 0x1ea1, (char) 0x1ea1); // XK_abelowdot --> LATIN SMALL LETTER A WITH DOT BELOW 
1176:                keysym2UCSHash.put((long) 0x1ea2, (char) 0x1ea2); // XK_Ahook --> LATIN CAPITAL LETTER A WITH HOOK ABOVE 
1177:                keysym2UCSHash.put((long) 0x1ea3, (char) 0x1ea3); // XK_ahook --> LATIN SMALL LETTER A WITH HOOK ABOVE 
1178:                keysym2UCSHash.put((long) 0x1ea4, (char) 0x1ea4); // XK_Acircumflexacute --> LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE 
1179:                keysym2UCSHash.put((long) 0x1ea5, (char) 0x1ea5); // XK_acircumflexacute --> LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE 
1180:                keysym2UCSHash.put((long) 0x1ea6, (char) 0x1ea6); // XK_Acircumflexgrave --> LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE 
1181:                keysym2UCSHash.put((long) 0x1ea7, (char) 0x1ea7); // XK_acircumflexgrave --> LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE 
1182:                keysym2UCSHash.put((long) 0x1ea8, (char) 0x1ea8); // XK_Acircumflexhook --> LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 
1183:                keysym2UCSHash.put((long) 0x1ea9, (char) 0x1ea9); // XK_acircumflexhook --> LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 
1184:                keysym2UCSHash.put((long) 0x1eaa, (char) 0x1eaa); // XK_Acircumflextilde --> LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE 
1185:                keysym2UCSHash.put((long) 0x1eab, (char) 0x1eab); // XK_acircumflextilde --> LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE 
1186:                keysym2UCSHash.put((long) 0x1eac, (char) 0x1eac); // XK_Acircumflexbelowdot --> LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW 
1187:                keysym2UCSHash.put((long) 0x1ead, (char) 0x1ead); // XK_acircumflexbelowdot --> LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW 
1188:                keysym2UCSHash.put((long) 0x1eae, (char) 0x1eae); // XK_Abreveacute --> LATIN CAPITAL LETTER A WITH BREVE AND ACUTE 
1189:                keysym2UCSHash.put((long) 0x1eaf, (char) 0x1eaf); // XK_abreveacute --> LATIN SMALL LETTER A WITH BREVE AND ACUTE 
1190:                keysym2UCSHash.put((long) 0x1eb0, (char) 0x1eb0); // XK_Abrevegrave --> LATIN CAPITAL LETTER A WITH BREVE AND GRAVE 
1191:                keysym2UCSHash.put((long) 0x1eb1, (char) 0x1eb1); // XK_abrevegrave --> LATIN SMALL LETTER A WITH BREVE AND GRAVE 
1192:                keysym2UCSHash.put((long) 0x1eb2, (char) 0x1eb2); // XK_Abrevehook --> LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE 
1193:                keysym2UCSHash.put((long) 0x1eb3, (char) 0x1eb3); // XK_abrevehook --> LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE 
1194:                keysym2UCSHash.put((long) 0x1eb4, (char) 0x1eb4); // XK_Abrevetilde --> LATIN CAPITAL LETTER A WITH BREVE AND TILDE 
1195:                keysym2UCSHash.put((long) 0x1eb5, (char) 0x1eb5); // XK_abrevetilde --> LATIN SMALL LETTER A WITH BREVE AND TILDE 
1196:                keysym2UCSHash.put((long) 0x1eb6, (char) 0x1eb6); // XK_Abrevebelowdot --> LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW 
1197:                keysym2UCSHash.put((long) 0x1eb7, (char) 0x1eb7); // XK_abrevebelowdot --> LATIN SMALL LETTER A WITH BREVE AND DOT BELOW 
1198:                keysym2UCSHash.put((long) 0x1eb8, (char) 0x1eb8); // XK_Ebelowdot --> LATIN CAPITAL LETTER E WITH DOT BELOW 
1199:                keysym2UCSHash.put((long) 0x1eb9, (char) 0x1eb9); // XK_ebelowdot --> LATIN SMALL LETTER E WITH DOT BELOW 
1200:                keysym2UCSHash.put((long) 0x1eba, (char) 0x1eba); // XK_Ehook --> LATIN CAPITAL LETTER E WITH HOOK ABOVE 
1201:                keysym2UCSHash.put((long) 0x1ebb, (char) 0x1ebb); // XK_ehook --> LATIN SMALL LETTER E WITH HOOK ABOVE 
1202:                keysym2UCSHash.put((long) 0x1ebc, (char) 0x1ebc); // XK_Etilde --> LATIN CAPITAL LETTER E WITH TILDE 
1203:                keysym2UCSHash.put((long) 0x1ebd, (char) 0x1ebd); // XK_etilde --> LATIN SMALL LETTER E WITH TILDE 
1204:                keysym2UCSHash.put((long) 0x1ebe, (char) 0x1ebe); // XK_Ecircumflexacute --> LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE 
1205:                keysym2UCSHash.put((long) 0x1ebf, (char) 0x1ebf); // XK_ecircumflexacute --> LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE 
1206:                keysym2UCSHash.put((long) 0x1ec0, (char) 0x1ec0); // XK_Ecircumflexgrave --> LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE 
1207:                keysym2UCSHash.put((long) 0x1ec1, (char) 0x1ec1); // XK_ecircumflexgrave --> LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE 
1208:                keysym2UCSHash.put((long) 0x1ec2, (char) 0x1ec2); // XK_Ecircumflexhook --> LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 
1209:                keysym2UCSHash.put((long) 0x1ec3, (char) 0x1ec3); // XK_ecircumflexhook --> LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 
1210:                keysym2UCSHash.put((long) 0x1ec4, (char) 0x1ec4); // XK_Ecircumflextilde --> LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE 
1211:                keysym2UCSHash.put((long) 0x1ec5, (char) 0x1ec5); // XK_ecircumflextilde --> LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE 
1212:                keysym2UCSHash.put((long) 0x1ec6, (char) 0x1ec6); // XK_Ecircumflexbelowdot --> LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW 
1213:                keysym2UCSHash.put((long) 0x1ec7, (char) 0x1ec7); // XK_ecircumflexbelowdot --> LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW 
1214:                keysym2UCSHash.put((long) 0x1ec8, (char) 0x1ec8); // XK_Ihook --> LATIN CAPITAL LETTER I WITH HOOK ABOVE 
1215:                keysym2UCSHash.put((long) 0x1ec9, (char) 0x1ec9); // XK_ihook --> LATIN SMALL LETTER I WITH HOOK ABOVE 
1216:                keysym2UCSHash.put((long) 0x1eca, (char) 0x1eca); // XK_Ibelowdot --> LATIN CAPITAL LETTER I WITH DOT BELOW 
1217:                keysym2UCSHash.put((long) 0x1ecb, (char) 0x1ecb); // XK_ibelowdot --> LATIN SMALL LETTER I WITH DOT BELOW 
1218:                keysym2UCSHash.put((long) 0x1ecc, (char) 0x1ecc); // XK_Obelowdot --> LATIN CAPITAL LETTER O WITH DOT BELOW 
1219:                keysym2UCSHash.put((long) 0x1ecd, (char) 0x1ecd); // XK_obelowdot --> LATIN SMALL LETTER O WITH DOT BELOW 
1220:                keysym2UCSHash.put((long) 0x1ece, (char) 0x1ece); // XK_Ohook --> LATIN CAPITAL LETTER O WITH HOOK ABOVE 
1221:                keysym2UCSHash.put((long) 0x1ecf, (char) 0x1ecf); // XK_ohook --> LATIN SMALL LETTER O WITH HOOK ABOVE 
1222:                keysym2UCSHash.put((long) 0x1ed0, (char) 0x1ed0); // XK_Ocircumflexacute --> LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE 
1223:                keysym2UCSHash.put((long) 0x1ed1, (char) 0x1ed1); // XK_ocircumflexacute --> LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE 
1224:                keysym2UCSHash.put((long) 0x1ed2, (char) 0x1ed2); // XK_Ocircumflexgrave --> LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE 
1225:                keysym2UCSHash.put((long) 0x1ed3, (char) 0x1ed3); // XK_ocircumflexgrave --> LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE 
1226:                keysym2UCSHash.put((long) 0x1ed4, (char) 0x1ed4); // XK_Ocircumflexhook --> LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 
1227:                keysym2UCSHash.put((long) 0x1ed5, (char) 0x1ed5); // XK_ocircumflexhook --> LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 
1228:                keysym2UCSHash.put((long) 0x1ed6, (char) 0x1ed6); // XK_Ocircumflextilde --> LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE 
1229:                keysym2UCSHash.put((long) 0x1ed7, (char) 0x1ed7); // XK_ocircumflextilde --> LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE 
1230:                keysym2UCSHash.put((long) 0x1ed8, (char) 0x1ed8); // XK_Ocircumflexbelowdot --> LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW 
1231:                keysym2UCSHash.put((long) 0x1ed9, (char) 0x1ed9); // XK_ocircumflexbelowdot --> LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW 
1232:                keysym2UCSHash.put((long) 0x1eda, (char) 0x1eda); // XK_Ohornacute --> LATIN CAPITAL LETTER O WITH HORN AND ACUTE 
1233:                keysym2UCSHash.put((long) 0x1edb, (char) 0x1edb); // XK_ohornacute --> LATIN SMALL LETTER O WITH HORN AND ACUTE 
1234:                keysym2UCSHash.put((long) 0x1edc, (char) 0x1edc); // XK_Ohorngrave --> LATIN CAPITAL LETTER O WITH HORN AND GRAVE 
1235:                keysym2UCSHash.put((long) 0x1edd, (char) 0x1edd); // XK_ohorngrave --> LATIN SMALL LETTER O WITH HORN AND GRAVE 
1236:                keysym2UCSHash.put((long) 0x1ede, (char) 0x1ede); // XK_Ohornhook --> LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE 
1237:                keysym2UCSHash.put((long) 0x1edf, (char) 0x1edf); // XK_ohornhook --> LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE 
1238:                keysym2UCSHash.put((long) 0x1ee0, (char) 0x1ee0); // XK_Ohorntilde --> LATIN CAPITAL LETTER O WITH HORN AND TILDE 
1239:                keysym2UCSHash.put((long) 0x1ee1, (char) 0x1ee1); // XK_ohorntilde --> LATIN SMALL LETTER O WITH HORN AND TILDE 
1240:                keysym2UCSHash.put((long) 0x1ee2, (char) 0x1ee2); // XK_Ohornbelowdot --> LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW 
1241:                keysym2UCSHash.put((long) 0x1ee3, (char) 0x1ee3); // XK_ohornbelowdot --> LATIN SMALL LETTER O WITH HORN AND DOT BELOW 
1242:                keysym2UCSHash.put((long) 0x1ee4, (char) 0x1ee4); // XK_Ubelowdot --> LATIN CAPITAL LETTER U WITH DOT BELOW 
1243:                keysym2UCSHash.put((long) 0x1ee5, (char) 0x1ee5); // XK_ubelowdot --> LATIN SMALL LETTER U WITH DOT BELOW 
1244:                keysym2UCSHash.put((long) 0x1ee6, (char) 0x1ee6); // XK_Uhook --> LATIN CAPITAL LETTER U WITH HOOK ABOVE 
1245:                keysym2UCSHash.put((long) 0x1ee7, (char) 0x1ee7); // XK_uhook --> LATIN SMALL LETTER U WITH HOOK ABOVE 
1246:                keysym2UCSHash.put((long) 0x1ee8, (char) 0x1ee8); // XK_Uhornacute --> LATIN CAPITAL LETTER U WITH HORN AND ACUTE 
1247:                keysym2UCSHash.put((long) 0x1ee9, (char) 0x1ee9); // XK_uhornacute --> LATIN SMALL LETTER U WITH HORN AND ACUTE 
1248:                keysym2UCSHash.put((long) 0x1eea, (char) 0x1eea); // XK_Uhorngrave --> LATIN CAPITAL LETTER U WITH HORN AND GRAVE 
1249:                keysym2UCSHash.put((long) 0x1eeb, (char) 0x1eeb); // XK_uhorngrave --> LATIN SMALL LETTER U WITH HORN AND GRAVE 
1250:                keysym2UCSHash.put((long) 0x1eec, (char) 0x1eec); // XK_Uhornhook --> LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE 
1251:                keysym2UCSHash.put((long) 0x1eed, (char) 0x1eed); // XK_uhornhook --> LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE 
1252:                keysym2UCSHash.put((long) 0x1eee, (char) 0x1eee); // XK_Uhorntilde --> LATIN CAPITAL LETTER U WITH HORN AND TILDE 
1253:                keysym2UCSHash.put((long) 0x1eef, (char) 0x1eef); // XK_uhorntilde --> LATIN SMALL LETTER U WITH HORN AND TILDE 
1254:                keysym2UCSHash.put((long) 0x1ef0, (char) 0x1ef0); // XK_Uhornbelowdot --> LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW 
1255:                keysym2UCSHash.put((long) 0x1ef1, (char) 0x1ef1); // XK_uhornbelowdot --> LATIN SMALL LETTER U WITH HORN AND DOT BELOW 
1256:                keysym2UCSHash.put((long) 0x1ef4, (char) 0x1ef4); // XK_Ybelowdot --> LATIN CAPITAL LETTER Y WITH DOT BELOW 
1257:                keysym2UCSHash.put((long) 0x1ef5, (char) 0x1ef5); // XK_ybelowdot --> LATIN SMALL LETTER Y WITH DOT BELOW 
1258:                keysym2UCSHash.put((long) 0x1ef6, (char) 0x1ef6); // XK_Yhook --> LATIN CAPITAL LETTER Y WITH HOOK ABOVE 
1259:                keysym2UCSHash.put((long) 0x1ef7, (char) 0x1ef7); // XK_yhook --> LATIN SMALL LETTER Y WITH HOOK ABOVE 
1260:                keysym2UCSHash.put((long) 0x1ef8, (char) 0x1ef8); // XK_Ytilde --> LATIN CAPITAL LETTER Y WITH TILDE 
1261:                keysym2UCSHash.put((long) 0x1ef9, (char) 0x1ef9); // XK_ytilde --> LATIN SMALL LETTER Y WITH TILDE 
1262:                keysym2UCSHash.put((long) 0x1efa, (char) 0x01a0); // XK_Ohorn --> LATIN CAPITAL LETTER O WITH HORN 
1263:                keysym2UCSHash.put((long) 0x1efb, (char) 0x01a1); // XK_ohorn --> LATIN SMALL LETTER O WITH HORN 
1264:                keysym2UCSHash.put((long) 0x1efc, (char) 0x01af); // XK_Uhorn --> LATIN CAPITAL LETTER U WITH HORN 
1265:                keysym2UCSHash.put((long) 0x1efd, (char) 0x01b0); // XK_uhorn --> LATIN SMALL LETTER U WITH HORN 
1266:                keysym2UCSHash.put((long) 0x20a0, (char) 0x20a0); // XK_EcuSign --> EURO-CURRENCY SIGN 
1267:                keysym2UCSHash.put((long) 0x20a1, (char) 0x20a1); // XK_ColonSign --> COLON SIGN 
1268:                keysym2UCSHash.put((long) 0x20a2, (char) 0x20a2); // XK_CruzeiroSign --> CRUZEIRO SIGN 
1269:                keysym2UCSHash.put((long) 0x20a3, (char) 0x20a3); // XK_FFrancSign --> FRENCH FRANC SIGN 
1270:                keysym2UCSHash.put((long) 0x20a4, (char) 0x20a4); // XK_LiraSign --> LIRA SIGN 
1271:                keysym2UCSHash.put((long) 0x20a5, (char) 0x20a5); // XK_MillSign --> MILL SIGN 
1272:                keysym2UCSHash.put((long) 0x20a6, (char) 0x20a6); // XK_NairaSign --> NAIRA SIGN 
1273:                keysym2UCSHash.put((long) 0x20a7, (char) 0x20a7); // XK_PesetaSign --> PESETA SIGN 
1274:                keysym2UCSHash.put((long) 0x20a8, (char) 0x20a8); // XK_RupeeSign --> RUPEE SIGN 
1275:                keysym2UCSHash.put((long) 0x20a9, (char) 0x20a9); // XK_WonSign --> WON SIGN 
1276:                keysym2UCSHash.put((long) 0x20aa, (char) 0x20aa); // XK_NewSheqelSign --> NEW SHEQEL SIGN 
1277:                keysym2UCSHash.put((long) 0x20ab, (char) 0x20ab); // XK_DongSign --> DONG SIGN 
1278:                keysym2UCSHash.put((long) 0x20ac, (char) 0x20ac); // XK_EuroSign --> EURO SIGN 
1279:                keysym2UCSHash.put((long) 0x1004FF08, (char) 0x0008); // osfXK_BackSpace --> <control> 
1280:                keysym2UCSHash.put((long) 0x1004FF1B, (char) 0x001b); // osfXK_Escape --> <control> 
1281:                keysym2UCSHash.put((long) 0x1004FFFF, (char) 0x007f); // osfXK_Delete --> <control> 
1282:
1283:                //XXX fill keysym2JavaKeycodeHash.
1284:
1285:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_a),
1286:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_A,
1287:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1288:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_b),
1289:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_B,
1290:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1291:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_c),
1292:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_C,
1293:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1294:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_d),
1295:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_D,
1296:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1297:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_e),
1298:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_E,
1299:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1300:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_f),
1301:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F,
1302:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1303:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_g),
1304:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_G,
1305:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1306:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_h),
1307:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_H,
1308:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1309:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_i),
1310:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_I,
1311:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1312:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_j),
1313:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_J,
1314:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1315:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_k),
1316:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_K,
1317:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1318:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_l),
1319:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_L,
1320:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1321:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_m),
1322:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_M,
1323:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1324:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_n),
1325:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_N,
1326:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1327:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_o),
1328:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_O,
1329:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1330:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_p),
1331:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_P,
1332:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1333:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_q),
1334:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_Q,
1335:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1336:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_r),
1337:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_R,
1338:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1339:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_s),
1340:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_S,
1341:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1342:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_t),
1343:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_T,
1344:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1345:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_u),
1346:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_U,
1347:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1348:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_v),
1349:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_V,
1350:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1351:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_w),
1352:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_W,
1353:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1354:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_x),
1355:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_X,
1356:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1357:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_y),
1358:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_Y,
1359:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1360:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_z),
1361:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_Z,
1362:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1363:
1364:                /* TTY Function keys */
1365:                keysym2JavaKeycodeHash.put(Long
1366:                        .valueOf(XKeySymConstants.XK_BackSpace),
1367:                        new Keysym2JavaKeycode(
1368:                                java.awt.event.KeyEvent.VK_BACK_SPACE,
1369:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1370:                keysym2JavaKeycodeHash.put(Long
1371:                        .valueOf(XKeySymConstants.XK_Tab),
1372:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_TAB,
1373:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1374:                keysym2JavaKeycodeHash.put(Long
1375:                        .valueOf(XKeySymConstants.XK_ISO_Left_Tab),
1376:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_TAB,
1377:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1378:                keysym2JavaKeycodeHash.put(Long
1379:                        .valueOf(XKeySymConstants.XK_Clear),
1380:                        new Keysym2JavaKeycode(
1381:                                java.awt.event.KeyEvent.VK_CLEAR,
1382:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1383:                keysym2JavaKeycodeHash.put(Long
1384:                        .valueOf(XKeySymConstants.XK_Return),
1385:                        new Keysym2JavaKeycode(
1386:                                java.awt.event.KeyEvent.VK_ENTER,
1387:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1388:                keysym2JavaKeycodeHash.put(Long
1389:                        .valueOf(XKeySymConstants.XK_Linefeed),
1390:                        new Keysym2JavaKeycode(
1391:                                java.awt.event.KeyEvent.VK_ENTER,
1392:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1393:                keysym2JavaKeycodeHash.put(Long
1394:                        .valueOf(XKeySymConstants.XK_Pause),
1395:                        new Keysym2JavaKeycode(
1396:                                java.awt.event.KeyEvent.VK_PAUSE,
1397:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1398:                keysym2JavaKeycodeHash.put(Long
1399:                        .valueOf(XKeySymConstants.XK_F21),
1400:                        new Keysym2JavaKeycode(
1401:                                java.awt.event.KeyEvent.VK_PAUSE,
1402:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1403:                keysym2JavaKeycodeHash.put(
1404:                        Long.valueOf(XKeySymConstants.XK_R1),
1405:                        new Keysym2JavaKeycode(
1406:                                java.awt.event.KeyEvent.VK_PAUSE,
1407:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1408:                keysym2JavaKeycodeHash.put(Long
1409:                        .valueOf(XKeySymConstants.XK_Scroll_Lock),
1410:                        new Keysym2JavaKeycode(
1411:                                java.awt.event.KeyEvent.VK_SCROLL_LOCK,
1412:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1413:                keysym2JavaKeycodeHash.put(Long
1414:                        .valueOf(XKeySymConstants.XK_F23),
1415:                        new Keysym2JavaKeycode(
1416:                                java.awt.event.KeyEvent.VK_SCROLL_LOCK,
1417:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1418:                keysym2JavaKeycodeHash.put(
1419:                        Long.valueOf(XKeySymConstants.XK_R3),
1420:                        new Keysym2JavaKeycode(
1421:                                java.awt.event.KeyEvent.VK_SCROLL_LOCK,
1422:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1423:                keysym2JavaKeycodeHash.put(Long
1424:                        .valueOf(XKeySymConstants.XK_Escape),
1425:                        new Keysym2JavaKeycode(
1426:                                java.awt.event.KeyEvent.VK_ESCAPE,
1427:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1428:
1429:                /* Other vendor-specific versions of TTY Function keys */
1430:                keysym2JavaKeycodeHash.put(Long
1431:                        .valueOf(XKeySymConstants.osfXK_BackSpace),
1432:                        new Keysym2JavaKeycode(
1433:                                java.awt.event.KeyEvent.VK_BACK_SPACE,
1434:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1435:                keysym2JavaKeycodeHash.put(Long
1436:                        .valueOf(XKeySymConstants.osfXK_Clear),
1437:                        new Keysym2JavaKeycode(
1438:                                java.awt.event.KeyEvent.VK_CLEAR,
1439:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1440:                keysym2JavaKeycodeHash.put(Long
1441:                        .valueOf(XKeySymConstants.osfXK_Escape),
1442:                        new Keysym2JavaKeycode(
1443:                                java.awt.event.KeyEvent.VK_ESCAPE,
1444:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1445:
1446:                /* Modifier keys */
1447:                keysym2JavaKeycodeHash.put(Long
1448:                        .valueOf(XKeySymConstants.XK_Shift_L),
1449:                        new Keysym2JavaKeycode(
1450:                                java.awt.event.KeyEvent.VK_SHIFT,
1451:                                java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
1452:                keysym2JavaKeycodeHash.put(Long
1453:                        .valueOf(XKeySymConstants.XK_Shift_R),
1454:                        new Keysym2JavaKeycode(
1455:                                java.awt.event.KeyEvent.VK_SHIFT,
1456:                                java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
1457:                keysym2JavaKeycodeHash.put(Long
1458:                        .valueOf(XKeySymConstants.XK_Control_L),
1459:                        new Keysym2JavaKeycode(
1460:                                java.awt.event.KeyEvent.VK_CONTROL,
1461:                                java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
1462:                keysym2JavaKeycodeHash.put(Long
1463:                        .valueOf(XKeySymConstants.XK_Control_R),
1464:                        new Keysym2JavaKeycode(
1465:                                java.awt.event.KeyEvent.VK_CONTROL,
1466:                                java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
1467:                keysym2JavaKeycodeHash.put(Long
1468:                        .valueOf(XKeySymConstants.XK_Alt_L),
1469:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT,
1470:                                java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
1471:                keysym2JavaKeycodeHash.put(Long
1472:                        .valueOf(XKeySymConstants.XK_Alt_R),
1473:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT,
1474:                                java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
1475:                keysym2JavaKeycodeHash.put(Long
1476:                        .valueOf(XKeySymConstants.XK_Meta_L),
1477:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_META,
1478:                                java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
1479:                keysym2JavaKeycodeHash.put(Long
1480:                        .valueOf(XKeySymConstants.XK_Meta_R),
1481:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_META,
1482:                                java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
1483:                keysym2JavaKeycodeHash.put(Long
1484:                        .valueOf(XKeySymConstants.XK_Caps_Lock),
1485:                        new Keysym2JavaKeycode(
1486:                                java.awt.event.KeyEvent.VK_CAPS_LOCK,
1487:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1488:
1489:                /* Misc Functions */
1490:                keysym2JavaKeycodeHash.put(Long
1491:                        .valueOf(XKeySymConstants.XK_Print),
1492:                        new Keysym2JavaKeycode(
1493:                                java.awt.event.KeyEvent.VK_PRINTSCREEN,
1494:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1495:                keysym2JavaKeycodeHash.put(Long
1496:                        .valueOf(XKeySymConstants.XK_F22),
1497:                        new Keysym2JavaKeycode(
1498:                                java.awt.event.KeyEvent.VK_PRINTSCREEN,
1499:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1500:                keysym2JavaKeycodeHash.put(
1501:                        Long.valueOf(XKeySymConstants.XK_R2),
1502:                        new Keysym2JavaKeycode(
1503:                                java.awt.event.KeyEvent.VK_PRINTSCREEN,
1504:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1505:                keysym2JavaKeycodeHash.put(Long
1506:                        .valueOf(XKeySymConstants.XK_Cancel),
1507:                        new Keysym2JavaKeycode(
1508:                                java.awt.event.KeyEvent.VK_CANCEL,
1509:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1510:                keysym2JavaKeycodeHash.put(Long
1511:                        .valueOf(XKeySymConstants.XK_Help),
1512:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HELP,
1513:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1514:                keysym2JavaKeycodeHash.put(Long
1515:                        .valueOf(XKeySymConstants.XK_Num_Lock),
1516:                        new Keysym2JavaKeycode(
1517:                                java.awt.event.KeyEvent.VK_NUM_LOCK,
1518:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1519:
1520:                /* Other vendor-specific versions of Misc Functions */
1521:                keysym2JavaKeycodeHash.put(Long
1522:                        .valueOf(XKeySymConstants.osfXK_Cancel),
1523:                        new Keysym2JavaKeycode(
1524:                                java.awt.event.KeyEvent.VK_CANCEL,
1525:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1526:                keysym2JavaKeycodeHash.put(Long
1527:                        .valueOf(XKeySymConstants.osfXK_Help),
1528:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HELP,
1529:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1530:
1531:                /* Rectangular Navigation Block */
1532:                keysym2JavaKeycodeHash.put(Long
1533:                        .valueOf(XKeySymConstants.XK_Home),
1534:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HOME,
1535:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1536:                keysym2JavaKeycodeHash.put(
1537:                        Long.valueOf(XKeySymConstants.XK_R7),
1538:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HOME,
1539:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1540:                keysym2JavaKeycodeHash.put(Long
1541:                        .valueOf(XKeySymConstants.XK_Page_Up),
1542:                        new Keysym2JavaKeycode(
1543:                                java.awt.event.KeyEvent.VK_PAGE_UP,
1544:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1545:                keysym2JavaKeycodeHash.put(Long
1546:                        .valueOf(XKeySymConstants.XK_Prior),
1547:                        new Keysym2JavaKeycode(
1548:                                java.awt.event.KeyEvent.VK_PAGE_UP,
1549:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1550:                keysym2JavaKeycodeHash.put(
1551:                        Long.valueOf(XKeySymConstants.XK_R9),
1552:                        new Keysym2JavaKeycode(
1553:                                java.awt.event.KeyEvent.VK_PAGE_UP,
1554:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1555:                keysym2JavaKeycodeHash.put(Long
1556:                        .valueOf(XKeySymConstants.XK_Page_Down),
1557:                        new Keysym2JavaKeycode(
1558:                                java.awt.event.KeyEvent.VK_PAGE_DOWN,
1559:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1560:                keysym2JavaKeycodeHash.put(Long
1561:                        .valueOf(XKeySymConstants.XK_Next),
1562:                        new Keysym2JavaKeycode(
1563:                                java.awt.event.KeyEvent.VK_PAGE_DOWN,
1564:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1565:                keysym2JavaKeycodeHash.put(Long
1566:                        .valueOf(XKeySymConstants.XK_R15),
1567:                        new Keysym2JavaKeycode(
1568:                                java.awt.event.KeyEvent.VK_PAGE_DOWN,
1569:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1570:                keysym2JavaKeycodeHash.put(Long
1571:                        .valueOf(XKeySymConstants.XK_End),
1572:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END,
1573:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1574:                keysym2JavaKeycodeHash.put(Long
1575:                        .valueOf(XKeySymConstants.XK_R13),
1576:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END,
1577:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1578:                keysym2JavaKeycodeHash.put(Long
1579:                        .valueOf(XKeySymConstants.XK_Insert),
1580:                        new Keysym2JavaKeycode(
1581:                                java.awt.event.KeyEvent.VK_INSERT,
1582:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1583:                keysym2JavaKeycodeHash.put(Long
1584:                        .valueOf(XKeySymConstants.XK_Delete),
1585:                        new Keysym2JavaKeycode(
1586:                                java.awt.event.KeyEvent.VK_DELETE,
1587:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1588:
1589:                /* Keypad equivalents of Rectangular Navigation Block */
1590:                keysym2JavaKeycodeHash.put(Long
1591:                        .valueOf(XKeySymConstants.XK_KP_Home),
1592:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HOME,
1593:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1594:                keysym2JavaKeycodeHash.put(Long
1595:                        .valueOf(XKeySymConstants.XK_KP_Page_Up),
1596:                        new Keysym2JavaKeycode(
1597:                                java.awt.event.KeyEvent.VK_PAGE_UP,
1598:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1599:                keysym2JavaKeycodeHash.put(Long
1600:                        .valueOf(XKeySymConstants.XK_KP_Prior),
1601:                        new Keysym2JavaKeycode(
1602:                                java.awt.event.KeyEvent.VK_PAGE_UP,
1603:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1604:                keysym2JavaKeycodeHash.put(Long
1605:                        .valueOf(XKeySymConstants.XK_KP_Page_Down),
1606:                        new Keysym2JavaKeycode(
1607:                                java.awt.event.KeyEvent.VK_PAGE_DOWN,
1608:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1609:                keysym2JavaKeycodeHash.put(Long
1610:                        .valueOf(XKeySymConstants.XK_KP_Next),
1611:                        new Keysym2JavaKeycode(
1612:                                java.awt.event.KeyEvent.VK_PAGE_DOWN,
1613:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1614:                keysym2JavaKeycodeHash.put(Long
1615:                        .valueOf(XKeySymConstants.XK_KP_End),
1616:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END,
1617:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1618:                keysym2JavaKeycodeHash.put(Long
1619:                        .valueOf(XKeySymConstants.XK_KP_Insert),
1620:                        new Keysym2JavaKeycode(
1621:                                java.awt.event.KeyEvent.VK_INSERT,
1622:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1623:                keysym2JavaKeycodeHash.put(Long
1624:                        .valueOf(XKeySymConstants.XK_KP_Delete),
1625:                        new Keysym2JavaKeycode(
1626:                                java.awt.event.KeyEvent.VK_DELETE,
1627:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1628:
1629:                /* Other vendor-specific Rectangular Navigation Block */
1630:                keysym2JavaKeycodeHash.put(Long
1631:                        .valueOf(XKeySymConstants.osfXK_PageUp),
1632:                        new Keysym2JavaKeycode(
1633:                                java.awt.event.KeyEvent.VK_PAGE_UP,
1634:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1635:                keysym2JavaKeycodeHash.put(Long
1636:                        .valueOf(XKeySymConstants.osfXK_Prior),
1637:                        new Keysym2JavaKeycode(
1638:                                java.awt.event.KeyEvent.VK_PAGE_UP,
1639:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1640:                keysym2JavaKeycodeHash.put(Long
1641:                        .valueOf(XKeySymConstants.osfXK_PageDown),
1642:                        new Keysym2JavaKeycode(
1643:                                java.awt.event.KeyEvent.VK_PAGE_DOWN,
1644:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1645:                keysym2JavaKeycodeHash.put(Long
1646:                        .valueOf(XKeySymConstants.osfXK_Next),
1647:                        new Keysym2JavaKeycode(
1648:                                java.awt.event.KeyEvent.VK_PAGE_DOWN,
1649:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1650:                keysym2JavaKeycodeHash.put(Long
1651:                        .valueOf(XKeySymConstants.osfXK_EndLine),
1652:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END,
1653:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1654:                keysym2JavaKeycodeHash.put(Long
1655:                        .valueOf(XKeySymConstants.osfXK_Insert),
1656:                        new Keysym2JavaKeycode(
1657:                                java.awt.event.KeyEvent.VK_INSERT,
1658:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1659:                keysym2JavaKeycodeHash.put(Long
1660:                        .valueOf(XKeySymConstants.osfXK_Delete),
1661:                        new Keysym2JavaKeycode(
1662:                                java.awt.event.KeyEvent.VK_DELETE,
1663:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1664:
1665:                /* Triangular Navigation Block */
1666:                keysym2JavaKeycodeHash.put(Long
1667:                        .valueOf(XKeySymConstants.XK_Left),
1668:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_LEFT,
1669:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1670:                keysym2JavaKeycodeHash.put(
1671:                        Long.valueOf(XKeySymConstants.XK_Up),
1672:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UP,
1673:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1674:                keysym2JavaKeycodeHash.put(Long
1675:                        .valueOf(XKeySymConstants.XK_Right),
1676:                        new Keysym2JavaKeycode(
1677:                                java.awt.event.KeyEvent.VK_RIGHT,
1678:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1679:                keysym2JavaKeycodeHash.put(Long
1680:                        .valueOf(XKeySymConstants.XK_Down),
1681:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DOWN,
1682:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1683:
1684:                /* Keypad equivalents of Triangular Navigation Block */
1685:                keysym2JavaKeycodeHash.put(Long
1686:                        .valueOf(XKeySymConstants.XK_KP_Left),
1687:                        new Keysym2JavaKeycode(
1688:                                java.awt.event.KeyEvent.VK_KP_LEFT,
1689:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1690:                keysym2JavaKeycodeHash.put(Long
1691:                        .valueOf(XKeySymConstants.XK_KP_Up),
1692:                        new Keysym2JavaKeycode(
1693:                                java.awt.event.KeyEvent.VK_KP_UP,
1694:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1695:                keysym2JavaKeycodeHash.put(Long
1696:                        .valueOf(XKeySymConstants.XK_KP_Right),
1697:                        new Keysym2JavaKeycode(
1698:                                java.awt.event.KeyEvent.VK_KP_RIGHT,
1699:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1700:                keysym2JavaKeycodeHash.put(Long
1701:                        .valueOf(XKeySymConstants.XK_KP_Down),
1702:                        new Keysym2JavaKeycode(
1703:                                java.awt.event.KeyEvent.VK_KP_DOWN,
1704:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1705:
1706:                /* Other vendor-specific Triangular Navigation Block */
1707:                keysym2JavaKeycodeHash.put(Long
1708:                        .valueOf(XKeySymConstants.osfXK_Left),
1709:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_LEFT,
1710:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1711:                keysym2JavaKeycodeHash.put(Long
1712:                        .valueOf(XKeySymConstants.osfXK_Up),
1713:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UP,
1714:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1715:                keysym2JavaKeycodeHash.put(Long
1716:                        .valueOf(XKeySymConstants.osfXK_Right),
1717:                        new Keysym2JavaKeycode(
1718:                                java.awt.event.KeyEvent.VK_RIGHT,
1719:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1720:                keysym2JavaKeycodeHash.put(Long
1721:                        .valueOf(XKeySymConstants.osfXK_Down),
1722:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DOWN,
1723:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1724:
1725:                /* Remaining Cursor control & motion */
1726:                keysym2JavaKeycodeHash.put(Long
1727:                        .valueOf(XKeySymConstants.XK_Begin),
1728:                        new Keysym2JavaKeycode(
1729:                                java.awt.event.KeyEvent.VK_BEGIN,
1730:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1731:                keysym2JavaKeycodeHash.put(Long
1732:                        .valueOf(XKeySymConstants.XK_KP_Begin),
1733:                        new Keysym2JavaKeycode(
1734:                                java.awt.event.KeyEvent.VK_BEGIN,
1735:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1736:
1737:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_0),
1738:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_0,
1739:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1740:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_1),
1741:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_1,
1742:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1743:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_2),
1744:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_2,
1745:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1746:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_3),
1747:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_3,
1748:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1749:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_4),
1750:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_4,
1751:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1752:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_5),
1753:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_5,
1754:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1755:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_6),
1756:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_6,
1757:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1758:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_7),
1759:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_7,
1760:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1761:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_8),
1762:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_8,
1763:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1764:                keysym2JavaKeycodeHash.put(Long.valueOf(XKeySymConstants.XK_9),
1765:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_9,
1766:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1767:
1768:                keysym2JavaKeycodeHash.put(Long
1769:                        .valueOf(XKeySymConstants.XK_space),
1770:                        new Keysym2JavaKeycode(
1771:                                java.awt.event.KeyEvent.VK_SPACE,
1772:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1773:                keysym2JavaKeycodeHash.put(Long
1774:                        .valueOf(XKeySymConstants.XK_exclam),
1775:                        new Keysym2JavaKeycode(
1776:                                java.awt.event.KeyEvent.VK_EXCLAMATION_MARK,
1777:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1778:                keysym2JavaKeycodeHash.put(Long
1779:                        .valueOf(XKeySymConstants.XK_quotedbl),
1780:                        new Keysym2JavaKeycode(
1781:                                java.awt.event.KeyEvent.VK_QUOTEDBL,
1782:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1783:                keysym2JavaKeycodeHash.put(Long
1784:                        .valueOf(XKeySymConstants.XK_numbersign),
1785:                        new Keysym2JavaKeycode(
1786:                                java.awt.event.KeyEvent.VK_NUMBER_SIGN,
1787:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1788:                keysym2JavaKeycodeHash.put(Long
1789:                        .valueOf(XKeySymConstants.XK_dollar),
1790:                        new Keysym2JavaKeycode(
1791:                                java.awt.event.KeyEvent.VK_DOLLAR,
1792:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1793:                keysym2JavaKeycodeHash.put(Long
1794:                        .valueOf(XKeySymConstants.XK_ampersand),
1795:                        new Keysym2JavaKeycode(
1796:                                java.awt.event.KeyEvent.VK_AMPERSAND,
1797:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1798:                keysym2JavaKeycodeHash.put(Long
1799:                        .valueOf(XKeySymConstants.XK_apostrophe),
1800:                        new Keysym2JavaKeycode(
1801:                                java.awt.event.KeyEvent.VK_QUOTE,
1802:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1803:                keysym2JavaKeycodeHash.put(Long
1804:                        .valueOf(XKeySymConstants.XK_parenleft),
1805:                        new Keysym2JavaKeycode(
1806:                                java.awt.event.KeyEvent.VK_LEFT_PARENTHESIS,
1807:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1808:                keysym2JavaKeycodeHash.put(Long
1809:                        .valueOf(XKeySymConstants.XK_parenright),
1810:                        new Keysym2JavaKeycode(
1811:                                java.awt.event.KeyEvent.VK_RIGHT_PARENTHESIS,
1812:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1813:                keysym2JavaKeycodeHash.put(Long
1814:                        .valueOf(XKeySymConstants.XK_asterisk),
1815:                        new Keysym2JavaKeycode(
1816:                                java.awt.event.KeyEvent.VK_ASTERISK,
1817:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1818:                keysym2JavaKeycodeHash.put(Long
1819:                        .valueOf(XKeySymConstants.XK_plus),
1820:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PLUS,
1821:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1822:                keysym2JavaKeycodeHash.put(Long
1823:                        .valueOf(XKeySymConstants.XK_comma),
1824:                        new Keysym2JavaKeycode(
1825:                                java.awt.event.KeyEvent.VK_COMMA,
1826:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1827:                keysym2JavaKeycodeHash.put(Long
1828:                        .valueOf(XKeySymConstants.XK_minus),
1829:                        new Keysym2JavaKeycode(
1830:                                java.awt.event.KeyEvent.VK_MINUS,
1831:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1832:                keysym2JavaKeycodeHash.put(Long
1833:                        .valueOf(XKeySymConstants.XK_period),
1834:                        new Keysym2JavaKeycode(
1835:                                java.awt.event.KeyEvent.VK_PERIOD,
1836:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1837:                keysym2JavaKeycodeHash.put(Long
1838:                        .valueOf(XKeySymConstants.XK_slash),
1839:                        new Keysym2JavaKeycode(
1840:                                java.awt.event.KeyEvent.VK_SLASH,
1841:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1842:
1843:                keysym2JavaKeycodeHash.put(Long
1844:                        .valueOf(XKeySymConstants.XK_colon),
1845:                        new Keysym2JavaKeycode(
1846:                                java.awt.event.KeyEvent.VK_COLON,
1847:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1848:                keysym2JavaKeycodeHash.put(Long
1849:                        .valueOf(XKeySymConstants.XK_semicolon),
1850:                        new Keysym2JavaKeycode(
1851:                                java.awt.event.KeyEvent.VK_SEMICOLON,
1852:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1853:                keysym2JavaKeycodeHash.put(Long
1854:                        .valueOf(XKeySymConstants.XK_less),
1855:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_LESS,
1856:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1857:                keysym2JavaKeycodeHash.put(Long
1858:                        .valueOf(XKeySymConstants.XK_equal),
1859:                        new Keysym2JavaKeycode(
1860:                                java.awt.event.KeyEvent.VK_EQUALS,
1861:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1862:                keysym2JavaKeycodeHash.put(Long
1863:                        .valueOf(XKeySymConstants.XK_greater),
1864:                        new Keysym2JavaKeycode(
1865:                                java.awt.event.KeyEvent.VK_GREATER,
1866:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1867:
1868:                keysym2JavaKeycodeHash.put(
1869:                        Long.valueOf(XKeySymConstants.XK_at),
1870:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AT,
1871:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1872:
1873:                keysym2JavaKeycodeHash.put(Long
1874:                        .valueOf(XKeySymConstants.XK_bracketleft),
1875:                        new Keysym2JavaKeycode(
1876:                                java.awt.event.KeyEvent.VK_OPEN_BRACKET,
1877:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1878:                keysym2JavaKeycodeHash.put(Long
1879:                        .valueOf(XKeySymConstants.XK_backslash),
1880:                        new Keysym2JavaKeycode(
1881:                                java.awt.event.KeyEvent.VK_BACK_SLASH,
1882:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1883:                keysym2JavaKeycodeHash.put(Long
1884:                        .valueOf(XKeySymConstants.XK_bracketright),
1885:                        new Keysym2JavaKeycode(
1886:                                java.awt.event.KeyEvent.VK_CLOSE_BRACKET,
1887:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1888:                keysym2JavaKeycodeHash.put(Long
1889:                        .valueOf(XKeySymConstants.XK_asciicircum),
1890:                        new Keysym2JavaKeycode(
1891:                                java.awt.event.KeyEvent.VK_CIRCUMFLEX,
1892:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1893:                keysym2JavaKeycodeHash.put(Long
1894:                        .valueOf(XKeySymConstants.XK_underscore),
1895:                        new Keysym2JavaKeycode(
1896:                                java.awt.event.KeyEvent.VK_UNDERSCORE,
1897:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1898:                keysym2JavaKeycodeHash.put(Long
1899:                        .valueOf(XKeySymConstants.XK_Super_L),
1900:                        new Keysym2JavaKeycode(
1901:                                java.awt.event.KeyEvent.VK_WINDOWS,
1902:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1903:                keysym2JavaKeycodeHash.put(Long
1904:                        .valueOf(XKeySymConstants.XK_Super_R),
1905:                        new Keysym2JavaKeycode(
1906:                                java.awt.event.KeyEvent.VK_WINDOWS,
1907:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1908:                keysym2JavaKeycodeHash.put(Long
1909:                        .valueOf(XKeySymConstants.XK_Menu),
1910:                        new Keysym2JavaKeycode(
1911:                                java.awt.event.KeyEvent.VK_CONTEXT_MENU,
1912:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1913:                keysym2JavaKeycodeHash.put(Long
1914:                        .valueOf(XKeySymConstants.XK_grave),
1915:                        new Keysym2JavaKeycode(
1916:                                java.awt.event.KeyEvent.VK_BACK_QUOTE,
1917:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1918:
1919:                keysym2JavaKeycodeHash.put(Long
1920:                        .valueOf(XKeySymConstants.XK_braceleft),
1921:                        new Keysym2JavaKeycode(
1922:                                java.awt.event.KeyEvent.VK_BRACELEFT,
1923:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1924:                keysym2JavaKeycodeHash.put(Long
1925:                        .valueOf(XKeySymConstants.XK_braceright),
1926:                        new Keysym2JavaKeycode(
1927:                                java.awt.event.KeyEvent.VK_BRACERIGHT,
1928:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1929:
1930:                keysym2JavaKeycodeHash
1931:                        .put(
1932:                                Long.valueOf(XKeySymConstants.XK_exclamdown),
1933:                                new Keysym2JavaKeycode(
1934:                                        java.awt.event.KeyEvent.VK_INVERTED_EXCLAMATION_MARK,
1935:                                        java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
1936:
1937:                /* Remaining Numeric Keypad Keys */
1938:                keysym2JavaKeycodeHash.put(Long
1939:                        .valueOf(XKeySymConstants.XK_KP_0),
1940:                        new Keysym2JavaKeycode(
1941:                                java.awt.event.KeyEvent.VK_NUMPAD0,
1942:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1943:                keysym2JavaKeycodeHash.put(Long
1944:                        .valueOf(XKeySymConstants.XK_KP_1),
1945:                        new Keysym2JavaKeycode(
1946:                                java.awt.event.KeyEvent.VK_NUMPAD1,
1947:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1948:                keysym2JavaKeycodeHash.put(Long
1949:                        .valueOf(XKeySymConstants.XK_KP_2),
1950:                        new Keysym2JavaKeycode(
1951:                                java.awt.event.KeyEvent.VK_NUMPAD2,
1952:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1953:                keysym2JavaKeycodeHash.put(Long
1954:                        .valueOf(XKeySymConstants.XK_KP_3),
1955:                        new Keysym2JavaKeycode(
1956:                                java.awt.event.KeyEvent.VK_NUMPAD3,
1957:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1958:                keysym2JavaKeycodeHash.put(Long
1959:                        .valueOf(XKeySymConstants.XK_KP_4),
1960:                        new Keysym2JavaKeycode(
1961:                                java.awt.event.KeyEvent.VK_NUMPAD4,
1962:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1963:                keysym2JavaKeycodeHash.put(Long
1964:                        .valueOf(XKeySymConstants.XK_KP_5),
1965:                        new Keysym2JavaKeycode(
1966:                                java.awt.event.KeyEvent.VK_NUMPAD5,
1967:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1968:                keysym2JavaKeycodeHash.put(Long
1969:                        .valueOf(XKeySymConstants.XK_KP_6),
1970:                        new Keysym2JavaKeycode(
1971:                                java.awt.event.KeyEvent.VK_NUMPAD6,
1972:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1973:                keysym2JavaKeycodeHash.put(Long
1974:                        .valueOf(XKeySymConstants.XK_KP_7),
1975:                        new Keysym2JavaKeycode(
1976:                                java.awt.event.KeyEvent.VK_NUMPAD7,
1977:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1978:                keysym2JavaKeycodeHash.put(Long
1979:                        .valueOf(XKeySymConstants.XK_KP_8),
1980:                        new Keysym2JavaKeycode(
1981:                                java.awt.event.KeyEvent.VK_NUMPAD8,
1982:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1983:                keysym2JavaKeycodeHash.put(Long
1984:                        .valueOf(XKeySymConstants.XK_KP_9),
1985:                        new Keysym2JavaKeycode(
1986:                                java.awt.event.KeyEvent.VK_NUMPAD9,
1987:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1988:                keysym2JavaKeycodeHash.put(Long
1989:                        .valueOf(XKeySymConstants.XK_KP_Space),
1990:                        new Keysym2JavaKeycode(
1991:                                java.awt.event.KeyEvent.VK_SPACE,
1992:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1993:                keysym2JavaKeycodeHash.put(Long
1994:                        .valueOf(XKeySymConstants.XK_KP_Tab),
1995:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_TAB,
1996:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
1997:                keysym2JavaKeycodeHash.put(Long
1998:                        .valueOf(XKeySymConstants.XK_KP_Enter),
1999:                        new Keysym2JavaKeycode(
2000:                                java.awt.event.KeyEvent.VK_ENTER,
2001:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2002:                keysym2JavaKeycodeHash.put(Long
2003:                        .valueOf(XKeySymConstants.XK_KP_Equal),
2004:                        new Keysym2JavaKeycode(
2005:                                java.awt.event.KeyEvent.VK_EQUALS,
2006:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2007:                keysym2JavaKeycodeHash.put(
2008:                        Long.valueOf(XKeySymConstants.XK_R4),
2009:                        new Keysym2JavaKeycode(
2010:                                java.awt.event.KeyEvent.VK_EQUALS,
2011:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2012:                keysym2JavaKeycodeHash.put(Long
2013:                        .valueOf(XKeySymConstants.XK_KP_Multiply),
2014:                        new Keysym2JavaKeycode(
2015:                                java.awt.event.KeyEvent.VK_MULTIPLY,
2016:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2017:                keysym2JavaKeycodeHash.put(Long
2018:                        .valueOf(XKeySymConstants.XK_F26),
2019:                        new Keysym2JavaKeycode(
2020:                                java.awt.event.KeyEvent.VK_MULTIPLY,
2021:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2022:                keysym2JavaKeycodeHash.put(
2023:                        Long.valueOf(XKeySymConstants.XK_R6),
2024:                        new Keysym2JavaKeycode(
2025:                                java.awt.event.KeyEvent.VK_MULTIPLY,
2026:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2027:                keysym2JavaKeycodeHash.put(Long
2028:                        .valueOf(XKeySymConstants.XK_KP_Add),
2029:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ADD,
2030:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2031:                keysym2JavaKeycodeHash.put(Long
2032:                        .valueOf(XKeySymConstants.XK_KP_Separator),
2033:                        new Keysym2JavaKeycode(
2034:                                java.awt.event.KeyEvent.VK_SEPARATOR,
2035:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2036:                keysym2JavaKeycodeHash.put(Long
2037:                        .valueOf(XKeySymConstants.XK_KP_Subtract),
2038:                        new Keysym2JavaKeycode(
2039:                                java.awt.event.KeyEvent.VK_SUBTRACT,
2040:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2041:                keysym2JavaKeycodeHash.put(Long
2042:                        .valueOf(XKeySymConstants.XK_F24),
2043:                        new Keysym2JavaKeycode(
2044:                                java.awt.event.KeyEvent.VK_SUBTRACT,
2045:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2046:                keysym2JavaKeycodeHash.put(Long
2047:                        .valueOf(XKeySymConstants.XK_KP_Decimal),
2048:                        new Keysym2JavaKeycode(
2049:                                java.awt.event.KeyEvent.VK_DECIMAL,
2050:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2051:                keysym2JavaKeycodeHash.put(Long
2052:                        .valueOf(XKeySymConstants.XK_KP_Divide),
2053:                        new Keysym2JavaKeycode(
2054:                                java.awt.event.KeyEvent.VK_DIVIDE,
2055:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2056:                keysym2JavaKeycodeHash.put(Long
2057:                        .valueOf(XKeySymConstants.XK_F25),
2058:                        new Keysym2JavaKeycode(
2059:                                java.awt.event.KeyEvent.VK_DIVIDE,
2060:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2061:                keysym2JavaKeycodeHash.put(
2062:                        Long.valueOf(XKeySymConstants.XK_R5),
2063:                        new Keysym2JavaKeycode(
2064:                                java.awt.event.KeyEvent.VK_DIVIDE,
2065:                                java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
2066:
2067:                /* Function Keys */
2068:                keysym2JavaKeycodeHash.put(
2069:                        Long.valueOf(XKeySymConstants.XK_F1),
2070:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F1,
2071:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2072:                keysym2JavaKeycodeHash.put(
2073:                        Long.valueOf(XKeySymConstants.XK_F2),
2074:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F2,
2075:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2076:                keysym2JavaKeycodeHash.put(
2077:                        Long.valueOf(XKeySymConstants.XK_F3),
2078:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F3,
2079:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2080:                keysym2JavaKeycodeHash.put(
2081:                        Long.valueOf(XKeySymConstants.XK_F4),
2082:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F4,
2083:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2084:                keysym2JavaKeycodeHash.put(
2085:                        Long.valueOf(XKeySymConstants.XK_F5),
2086:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F5,
2087:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2088:                keysym2JavaKeycodeHash.put(
2089:                        Long.valueOf(XKeySymConstants.XK_F6),
2090:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F6,
2091:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2092:                keysym2JavaKeycodeHash.put(
2093:                        Long.valueOf(XKeySymConstants.XK_F7),
2094:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F7,
2095:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2096:                keysym2JavaKeycodeHash.put(
2097:                        Long.valueOf(XKeySymConstants.XK_F8),
2098:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F8,
2099:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2100:                keysym2JavaKeycodeHash.put(
2101:                        Long.valueOf(XKeySymConstants.XK_F9),
2102:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F9,
2103:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2104:                keysym2JavaKeycodeHash.put(Long
2105:                        .valueOf(XKeySymConstants.XK_F10),
2106:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F10,
2107:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2108:                keysym2JavaKeycodeHash.put(Long
2109:                        .valueOf(XKeySymConstants.XK_F11),
2110:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F11,
2111:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2112:                keysym2JavaKeycodeHash.put(Long
2113:                        .valueOf(XKeySymConstants.XK_F12),
2114:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F12,
2115:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2116:
2117:                /* Sun vendor-specific version of F11 and F12 */
2118:                keysym2JavaKeycodeHash.put(Long
2119:                        .valueOf(XKeySymConstants.SunXK_F36),
2120:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F11,
2121:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2122:                keysym2JavaKeycodeHash.put(Long
2123:                        .valueOf(XKeySymConstants.SunXK_F37),
2124:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F12,
2125:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2126:
2127:                /* X11 keysym names for input method related keys don't always
2128:                 * match keytop engravings or Java virtual key names, so here we
2129:                 * only map constants that we've found on real keyboards.
2130:                 */
2131:                /* Type 5c Japanese keyboard: kakutei */
2132:                keysym2JavaKeycodeHash.put(Long
2133:                        .valueOf(XKeySymConstants.XK_Execute),
2134:                        new Keysym2JavaKeycode(
2135:                                java.awt.event.KeyEvent.VK_ACCEPT,
2136:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2137:                /* Type 5c Japanese keyboard: henkan */
2138:                keysym2JavaKeycodeHash.put(Long
2139:                        .valueOf(XKeySymConstants.XK_Kanji),
2140:                        new Keysym2JavaKeycode(
2141:                                java.awt.event.KeyEvent.VK_CONVERT,
2142:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2143:                /* Type 5c Japanese keyboard: nihongo */
2144:                keysym2JavaKeycodeHash.put(Long
2145:                        .valueOf(XKeySymConstants.XK_Henkan_Mode),
2146:                        new Keysym2JavaKeycode(
2147:                                java.awt.event.KeyEvent.VK_INPUT_METHOD_ON_OFF,
2148:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2149:                /* VK_KANA_LOCK is handled separately because it generates the
2150:                 * same keysym as ALT_GRAPH in spite of its different behavior.
2151:                 */
2152:
2153:                keysym2JavaKeycodeHash.put(Long
2154:                        .valueOf(XKeySymConstants.XK_Multi_key),
2155:                        new Keysym2JavaKeycode(
2156:                                java.awt.event.KeyEvent.VK_COMPOSE,
2157:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2158:                keysym2JavaKeycodeHash.put(Long
2159:                        .valueOf(XKeySymConstants.XK_Mode_switch),
2160:                        new Keysym2JavaKeycode(
2161:                                java.awt.event.KeyEvent.VK_ALT_GRAPH,
2162:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2163:
2164:                /* Editing block */
2165:                keysym2JavaKeycodeHash.put(Long
2166:                        .valueOf(XKeySymConstants.XK_Redo),
2167:                        new Keysym2JavaKeycode(
2168:                                java.awt.event.KeyEvent.VK_AGAIN,
2169:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2170:                // XXX XK_L2 == F12; TODO: add code to use only one of them depending on the keyboard type. For now, restore
2171:                // good PC behavior and bad but old Sparc behavior. 
2172:                // keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L2),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AGAIN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2173:                keysym2JavaKeycodeHash.put(Long
2174:                        .valueOf(XKeySymConstants.XK_Undo),
2175:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO,
2176:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2177:                keysym2JavaKeycodeHash.put(
2178:                        Long.valueOf(XKeySymConstants.XK_L4),
2179:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO,
2180:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2181:                keysym2JavaKeycodeHash.put(
2182:                        Long.valueOf(XKeySymConstants.XK_L6),
2183:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY,
2184:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2185:                keysym2JavaKeycodeHash.put(
2186:                        Long.valueOf(XKeySymConstants.XK_L8),
2187:                        new Keysym2JavaKeycode(
2188:                                java.awt.event.KeyEvent.VK_PASTE,
2189:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2190:                keysym2JavaKeycodeHash.put(Long
2191:                        .valueOf(XKeySymConstants.XK_L10),
2192:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT,
2193:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2194:                keysym2JavaKeycodeHash.put(Long
2195:                        .valueOf(XKeySymConstants.XK_Find),
2196:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FIND,
2197:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2198:                keysym2JavaKeycodeHash.put(
2199:                        Long.valueOf(XKeySymConstants.XK_L9),
2200:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FIND,
2201:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2202:                keysym2JavaKeycodeHash.put(
2203:                        Long.valueOf(XKeySymConstants.XK_L3),
2204:                        new Keysym2JavaKeycode(
2205:                                java.awt.event.KeyEvent.VK_PROPS,
2206:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2207:                // XXX XK_L1 == F11; TODO: add code to use only one of them depending on the keyboard type. For now, restore
2208:                // good PC behavior and bad but old Sparc behavior. 
2209:                // keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L1),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_STOP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2210:
2211:                /* Sun vendor-specific versions for editing block */
2212:                keysym2JavaKeycodeHash.put(Long
2213:                        .valueOf(XKeySymConstants.SunXK_Again),
2214:                        new Keysym2JavaKeycode(
2215:                                java.awt.event.KeyEvent.VK_AGAIN,
2216:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2217:                keysym2JavaKeycodeHash.put(Long
2218:                        .valueOf(XKeySymConstants.SunXK_Undo),
2219:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO,
2220:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2221:                keysym2JavaKeycodeHash.put(Long
2222:                        .valueOf(XKeySymConstants.SunXK_Copy),
2223:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY,
2224:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2225:                keysym2JavaKeycodeHash.put(Long
2226:                        .valueOf(XKeySymConstants.SunXK_Paste),
2227:                        new Keysym2JavaKeycode(
2228:                                java.awt.event.KeyEvent.VK_PASTE,
2229:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2230:                keysym2JavaKeycodeHash.put(Long
2231:                        .valueOf(XKeySymConstants.SunXK_Cut),
2232:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT,
2233:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2234:                keysym2JavaKeycodeHash.put(Long
2235:                        .valueOf(XKeySymConstants.SunXK_Find),
2236:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FIND,
2237:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2238:                keysym2JavaKeycodeHash.put(Long
2239:                        .valueOf(XKeySymConstants.SunXK_Props),
2240:                        new Keysym2JavaKeycode(
2241:                                java.awt.event.KeyEvent.VK_PROPS,
2242:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2243:                keysym2JavaKeycodeHash.put(Long
2244:                        .valueOf(XKeySymConstants.SunXK_Stop),
2245:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_STOP,
2246:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2247:
2248:                /* Apollo (HP) vendor-specific versions for editing block */
2249:                keysym2JavaKeycodeHash.put(Long
2250:                        .valueOf(XKeySymConstants.apXK_Copy),
2251:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY,
2252:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2253:                keysym2JavaKeycodeHash.put(Long
2254:                        .valueOf(XKeySymConstants.apXK_Cut),
2255:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT,
2256:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2257:                keysym2JavaKeycodeHash.put(Long
2258:                        .valueOf(XKeySymConstants.apXK_Paste),
2259:                        new Keysym2JavaKeycode(
2260:                                java.awt.event.KeyEvent.VK_PASTE,
2261:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2262:
2263:                /* Other vendor-specific versions for editing block */
2264:                keysym2JavaKeycodeHash.put(Long
2265:                        .valueOf(XKeySymConstants.osfXK_Copy),
2266:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY,
2267:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2268:                keysym2JavaKeycodeHash.put(Long
2269:                        .valueOf(XKeySymConstants.osfXK_Cut),
2270:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT,
2271:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2272:                keysym2JavaKeycodeHash.put(Long
2273:                        .valueOf(XKeySymConstants.osfXK_Paste),
2274:                        new Keysym2JavaKeycode(
2275:                                java.awt.event.KeyEvent.VK_PASTE,
2276:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2277:                keysym2JavaKeycodeHash.put(Long
2278:                        .valueOf(XKeySymConstants.osfXK_Undo),
2279:                        new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO,
2280:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2281:
2282:                /* Dead key mappings (for European keyboards) */
2283:                keysym2JavaKeycodeHash.put(Long
2284:                        .valueOf(XKeySymConstants.XK_dead_grave),
2285:                        new Keysym2JavaKeycode(
2286:                                java.awt.event.KeyEvent.VK_DEAD_GRAVE,
2287:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2288:                keysym2JavaKeycodeHash.put(Long
2289:                        .valueOf(XKeySymConstants.XK_dead_acute),
2290:                        new Keysym2JavaKeycode(
2291:                                java.awt.event.KeyEvent.VK_DEAD_ACUTE,
2292:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2293:                keysym2JavaKeycodeHash.put(Long
2294:                        .valueOf(XKeySymConstants.XK_dead_circumflex),
2295:                        new Keysym2JavaKeycode(
2296:                                java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX,
2297:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2298:                keysym2JavaKeycodeHash.put(Long
2299:                        .valueOf(XKeySymConstants.XK_dead_tilde),
2300:                        new Keysym2JavaKeycode(
2301:                                java.awt.event.KeyEvent.VK_DEAD_TILDE,
2302:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2303:                keysym2JavaKeycodeHash.put(Long
2304:                        .valueOf(XKeySymConstants.XK_dead_macron),
2305:                        new Keysym2JavaKeycode(
2306:                                java.awt.event.KeyEvent.VK_DEAD_MACRON,
2307:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2308:                keysym2JavaKeycodeHash.put(Long
2309:                        .valueOf(XKeySymConstants.XK_dead_breve),
2310:                        new Keysym2JavaKeycode(
2311:                                java.awt.event.KeyEvent.VK_DEAD_BREVE,
2312:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2313:                keysym2JavaKeycodeHash.put(Long
2314:                        .valueOf(XKeySymConstants.XK_dead_abovedot),
2315:                        new Keysym2JavaKeycode(
2316:                                java.awt.event.KeyEvent.VK_DEAD_ABOVEDOT,
2317:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2318:                keysym2JavaKeycodeHash.put(Long
2319:                        .valueOf(XKeySymConstants.XK_dead_diaeresis),
2320:                        new Keysym2JavaKeycode(
2321:                                java.awt.event.KeyEvent.VK_DEAD_DIAERESIS,
2322:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2323:                keysym2JavaKeycodeHash.put(Long
2324:                        .valueOf(XKeySymConstants.XK_dead_abovering),
2325:                        new Keysym2JavaKeycode(
2326:                                java.awt.event.KeyEvent.VK_DEAD_ABOVERING,
2327:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2328:                keysym2JavaKeycodeHash.put(Long
2329:                        .valueOf(XKeySymConstants.XK_dead_doubleacute),
2330:                        new Keysym2JavaKeycode(
2331:                                java.awt.event.KeyEvent.VK_DEAD_DOUBLEACUTE,
2332:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2333:                keysym2JavaKeycodeHash.put(Long
2334:                        .valueOf(XKeySymConstants.XK_dead_caron),
2335:                        new Keysym2JavaKeycode(
2336:                                java.awt.event.KeyEvent.VK_DEAD_CARON,
2337:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2338:                keysym2JavaKeycodeHash.put(Long
2339:                        .valueOf(XKeySymConstants.XK_dead_cedilla),
2340:                        new Keysym2JavaKeycode(
2341:                                java.awt.event.KeyEvent.VK_DEAD_CEDILLA,
2342:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2343:                keysym2JavaKeycodeHash.put(Long
2344:                        .valueOf(XKeySymConstants.XK_dead_ogonek),
2345:                        new Keysym2JavaKeycode(
2346:                                java.awt.event.KeyEvent.VK_DEAD_OGONEK,
2347:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2348:                keysym2JavaKeycodeHash.put(Long
2349:                        .valueOf(XKeySymConstants.XK_dead_iota),
2350:                        new Keysym2JavaKeycode(
2351:                                java.awt.event.KeyEvent.VK_DEAD_IOTA,
2352:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2353:                keysym2JavaKeycodeHash.put(Long
2354:                        .valueOf(XKeySymConstants.XK_dead_voiced_sound),
2355:                        new Keysym2JavaKeycode(
2356:                                java.awt.event.KeyEvent.VK_DEAD_VOICED_SOUND,
2357:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2358:                keysym2JavaKeycodeHash
2359:                        .put(
2360:                                Long
2361:                                        .valueOf(XKeySymConstants.XK_dead_semivoiced_sound),
2362:                                new Keysym2JavaKeycode(
2363:                                        java.awt.event.KeyEvent.VK_DEAD_SEMIVOICED_SOUND,
2364:                                        java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2365:
2366:                /* Sun vendor-specific dead key mappings (for European keyboards) */
2367:                keysym2JavaKeycodeHash.put(Long
2368:                        .valueOf(XKeySymConstants.SunXK_FA_Grave),
2369:                        new Keysym2JavaKeycode(
2370:                                java.awt.event.KeyEvent.VK_DEAD_GRAVE,
2371:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2372:                keysym2JavaKeycodeHash.put(Long
2373:                        .valueOf(XKeySymConstants.SunXK_FA_Circum),
2374:                        new Keysym2JavaKeycode(
2375:                                java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX,
2376:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2377:                keysym2JavaKeycodeHash.put(Long
2378:                        .valueOf(XKeySymConstants.SunXK_FA_Tilde),
2379:                        new Keysym2JavaKeycode(
2380:                                java.awt.event.KeyEvent.VK_DEAD_TILDE,
2381:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2382:                keysym2JavaKeycodeHash.put(Long
2383:                        .valueOf(XKeySymConstants.SunXK_FA_Acute),
2384:                        new Keysym2JavaKeycode(
2385:                                java.awt.event.KeyEvent.VK_DEAD_ACUTE,
2386:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2387:                keysym2JavaKeycodeHash.put(Long
2388:                        .valueOf(XKeySymConstants.SunXK_FA_Diaeresis),
2389:                        new Keysym2JavaKeycode(
2390:                                java.awt.event.KeyEvent.VK_DEAD_DIAERESIS,
2391:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2392:                keysym2JavaKeycodeHash.put(Long
2393:                        .valueOf(XKeySymConstants.SunXK_FA_Cedilla),
2394:                        new Keysym2JavaKeycode(
2395:                                java.awt.event.KeyEvent.VK_DEAD_CEDILLA,
2396:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2397:
2398:                /* DEC vendor-specific dead key mappings (for European keyboards) */
2399:                keysym2JavaKeycodeHash.put(Long
2400:                        .valueOf(XKeySymConstants.DXK_ring_accent),
2401:                        new Keysym2JavaKeycode(
2402:                                java.awt.event.KeyEvent.VK_DEAD_ABOVERING,
2403:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2404:                keysym2JavaKeycodeHash.put(Long
2405:                        .valueOf(XKeySymConstants.DXK_circumflex_accent),
2406:                        new Keysym2JavaKeycode(
2407:                                java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX,
2408:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2409:                keysym2JavaKeycodeHash.put(Long
2410:                        .valueOf(XKeySymConstants.DXK_cedilla_accent),
2411:                        new Keysym2JavaKeycode(
2412:                                java.awt.event.KeyEvent.VK_DEAD_CEDILLA,
2413:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2414:                keysym2JavaKeycodeHash.put(Long
2415:                        .valueOf(XKeySymConstants.DXK_acute_accent),
2416:                        new Keysym2JavaKeycode(
2417:                                java.awt.event.KeyEvent.VK_DEAD_ACUTE,
2418:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2419:                keysym2JavaKeycodeHash.put(Long
2420:                        .valueOf(XKeySymConstants.DXK_grave_accent),
2421:                        new Keysym2JavaKeycode(
2422:                                java.awt.event.KeyEvent.VK_DEAD_GRAVE,
2423:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2424:                keysym2JavaKeycodeHash.put(Long
2425:                        .valueOf(XKeySymConstants.DXK_tilde),
2426:                        new Keysym2JavaKeycode(
2427:                                java.awt.event.KeyEvent.VK_DEAD_TILDE,
2428:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2429:                keysym2JavaKeycodeHash.put(Long
2430:                        .valueOf(XKeySymConstants.DXK_diaeresis),
2431:                        new Keysym2JavaKeycode(
2432:                                java.awt.event.KeyEvent.VK_DEAD_DIAERESIS,
2433:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2434:
2435:                /* Other vendor-specific dead key mappings (for European keyboards) */
2436:                keysym2JavaKeycodeHash.put(Long
2437:                        .valueOf(XKeySymConstants.hpXK_mute_acute),
2438:                        new Keysym2JavaKeycode(
2439:                                java.awt.event.KeyEvent.VK_DEAD_ACUTE,
2440:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2441:                keysym2JavaKeycodeHash.put(Long
2442:                        .valueOf(XKeySymConstants.hpXK_mute_grave),
2443:                        new Keysym2JavaKeycode(
2444:                                java.awt.event.KeyEvent.VK_DEAD_GRAVE,
2445:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2446:                keysym2JavaKeycodeHash.put(Long
2447:                        .valueOf(XKeySymConstants.hpXK_mute_asciicircum),
2448:                        new Keysym2JavaKeycode(
2449:                                java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX,
2450:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2451:                keysym2JavaKeycodeHash.put(Long
2452:                        .valueOf(XKeySymConstants.hpXK_mute_diaeresis),
2453:                        new Keysym2JavaKeycode(
2454:                                java.awt.event.KeyEvent.VK_DEAD_DIAERESIS,
2455:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2456:                keysym2JavaKeycodeHash.put(Long
2457:                        .valueOf(XKeySymConstants.hpXK_mute_asciitilde),
2458:                        new Keysym2JavaKeycode(
2459:                                java.awt.event.KeyEvent.VK_DEAD_TILDE,
2460:                                java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
2461:
2462:                keysym2JavaKeycodeHash.put(Long.valueOf(XConstants.NoSymbol),
2463:                        new Keysym2JavaKeycode(
2464:                                java.awt.event.KeyEvent.VK_UNDEFINED,
2465:                                java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN));
2466:            };
2467:
2468:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.