src/java.desktop/unix/classes/sun/awt/X11/keysym2ucs.h
changeset 52535 45a5c4d812d9
parent 52534 356e75119d31
child 52536 d09e1ab4bd1d
equal deleted inserted replaced
52534:356e75119d31 52535:45a5c4d812d9
     1 /*
       
     2  * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 /*
       
    27  * yan:
       
    28  * This table looks like C header because
       
    29  * (1) I use actual headers to make it;
       
    30  * (2) syntax is nicely highlighted in my editor.
       
    31  * Processed will be all lines started with 0x; 0x0000-started lines will
       
    32  * be skipped though.
       
    33  * Also java code will be copied to a resulting file.
       
    34  *
       
    35  * 0x0000 unicode means here either there's no equivalent to a keysym
       
    36  * or we just skip it from the table for now because i.e. we'll never use
       
    37  * the conversion in our workflow.
       
    38  *
       
    39  */
       
    40 
       
    41 tojava /*
       
    42 tojava  * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
       
    43 tojava  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
    44 tojava  *
       
    45 tojava  * This code is free software; you can redistribute it and/or modify it
       
    46 tojava  * under the terms of the GNU General Public License version 2 only, as
       
    47 tojava  * published by the Free Software Foundation.  Oracle designates this
       
    48 tojava  * particular file as subject to the "Classpath" exception as provided
       
    49 tojava  * by Oracle in the LICENSE file that accompanied this code.
       
    50 tojava  *
       
    51 tojava  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    52 tojava  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    53 tojava  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    54 tojava  * version 2 for more details (a copy is included in the LICENSE file that
       
    55 tojava  * accompanied this code).
       
    56 tojava  *
       
    57 tojava  * You should have received a copy of the GNU General Public License version
       
    58 tojava  * 2 along with this work; if not, write to the Free Software Foundation,
       
    59 tojava  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    60 tojava  *
       
    61 tojava  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    62 tojava  * or visit www.oracle.com if you need additional information or have any
       
    63 tojava  * questions.
       
    64 tojava  */
       
    65 tojava
       
    66 tojava package sun.awt.X11;
       
    67 tojava import java.util.Hashtable;
       
    68 tojava import jdk.internal.misc.Unsafe;
       
    69 tojava
       
    70 tojava import sun.util.logging.PlatformLogger;
       
    71 tojava
       
    72 tojava public class XKeysym {
       
    73 tojava
       
    74 tojava     public static void main( String args[] ) {
       
    75 tojava        System.out.println( "Cyrillc zhe:"+convertKeysym(0x06d6, 0));
       
    76 tojava        System.out.println( "Arabic sheen:"+convertKeysym(0x05d4, 0));
       
    77 tojava        System.out.println( "Latin a breve:"+convertKeysym(0x01e3, 0));
       
    78 tojava        System.out.println( "Latin f:"+convertKeysym(0x066, 0));
       
    79 tojava        System.out.println( "Backspace:"+Integer.toHexString(convertKeysym(0xff08, 0)));
       
    80 tojava        System.out.println( "Ctrl+f:"+Integer.toHexString(convertKeysym(0x066, XConstants.ControlMask)));
       
    81 tojava     }
       
    82 tojava
       
    83 tojava     private XKeysym() {}
       
    84 tojava
       
    85 tojava     static class Keysym2JavaKeycode  {
       
    86 tojava         int jkeycode;
       
    87 tojava         int keyLocation;
       
    88 tojava         int getJavaKeycode() {
       
    89 tojava             return jkeycode;
       
    90 tojava         }
       
    91 tojava         int getKeyLocation() {
       
    92 tojava             return keyLocation;
       
    93 tojava         }
       
    94 tojava         Keysym2JavaKeycode(int jk, int loc) {
       
    95 tojava             jkeycode = jk;
       
    96 tojava             keyLocation = loc;
       
    97 tojava         }
       
    98 tojava     };
       
    99 tojava     private static Unsafe unsafe = XlibWrapper.unsafe;
       
   100 tojava     static Hashtable<Long, Keysym2JavaKeycode>  keysym2JavaKeycodeHash = new Hashtable<Long, Keysym2JavaKeycode>();
       
   101 tojava     static Hashtable<Long, Character> keysym2UCSHash = new Hashtable<Long, Character>();
       
   102 tojava     static Hashtable<Long, Long> uppercaseHash = new Hashtable<Long, Long>();
       
   103 tojava     // TODO: or not to do: add reverse lookup javakeycode2keysym,
       
   104 tojava     // for robot only it seems to me. After that, we can remove lookup table
       
   105 tojava     // from XWindow.c altogether.
       
   106 tojava     // Another use for reverse lookup: query keyboard state, for some keys.
       
   107 tojava     static Hashtable<Integer, Long> javaKeycode2KeysymHash = new Hashtable<Integer, Long>();
       
   108 tojava     static long keysym_lowercase = unsafe.allocateMemory(Native.getLongSize());
       
   109 tojava     static long keysym_uppercase = unsafe.allocateMemory(Native.getLongSize());
       
   110 tojava     static Keysym2JavaKeycode kanaLock = new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KANA_LOCK,
       
   111 tojava                                                                 java.awt.event.KeyEvent.KEY_LOCATION_STANDARD);
       
   112 tojava     private static PlatformLogger keyEventLog = PlatformLogger.getLogger("sun.awt.X11.kye.XKeysym");
       
   113 tojava     public static char convertKeysym( long ks, int state ) {
       
   114 tojava
       
   115 tojava         /* First check for Latin-1 characters (1:1 mapping) */
       
   116 tojava         if ((ks >= 0x0020 && ks <= 0x007e) ||
       
   117 tojava             (ks >= 0x00a0 && ks <= 0x00ff)) {
       
   118 tojava             if( (state & XConstants.ControlMask) != 0 ) {
       
   119 tojava                 if ((ks >= 'A' && ks <= ']') || (ks == '_') ||
       
   120 tojava                     (ks >= 'a' && ks <='z')) {
       
   121 tojava                     ks &= 0x1F;
       
   122 tojava                 }
       
   123 tojava             }
       
   124 tojava             return (char)ks;
       
   125 tojava         }
       
   126 tojava
       
   127 tojava         /* XXX: Also check for directly encoded 24-bit UCS characters:
       
   128 tojava          */
       
   129 tojava         if ((ks & 0xff000000) == 0x01000000)
       
   130 tojava           return (char)(ks & 0x00ffffff);
       
   131 tojava
       
   132 tojava         Character ch = keysym2UCSHash.get(ks);
       
   133 tojava         return ch == null ? (char)0 : ch.charValue();
       
   134 tojava     }
       
   135 tojava     static long xkeycode2keysym_noxkb(XKeyEvent ev, int ndx) {
       
   136 tojava         XToolkit.awtLock();
       
   137 tojava         try {
       
   138 tojava             return XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev.get_keycode(), ndx);
       
   139 tojava         } finally {
       
   140 tojava             XToolkit.awtUnlock();
       
   141 tojava         }
       
   142 tojava     }
       
   143 tojava     static long xkeycode2keysym_xkb(XKeyEvent ev, int ndx) {
       
   144 tojava         XToolkit.awtLock();
       
   145 tojava         try {
       
   146 tojava             int mods = ev.get_state();
       
   147 tojava             if ((ndx == 0) && ((mods & XConstants.ShiftMask) != 0)) {
       
   148 tojava                 // I don't know all possible meanings of 'ndx' in case of XKB
       
   149 tojava                 // and don't want to speculate. But this particular case
       
   150 tojava                 // clearly means that caller needs a so called primary keysym.
       
   151 tojava                 mods ^= XConstants.ShiftMask;
       
   152 tojava             }
       
   153 tojava             long kbdDesc = XToolkit.getXKBKbdDesc();
       
   154 tojava             if( kbdDesc != 0 ) {
       
   155 tojava                 XlibWrapper.XkbTranslateKeyCode(kbdDesc, ev.get_keycode(),
       
   156 tojava                        mods, XlibWrapper.iarg1, XlibWrapper.larg3);
       
   157 tojava             }else{
       
   158 tojava                 // xkb resources already gone
       
   159 tojava                 keyEventLog.fine("Thread race: Toolkit shutdown before the end of a key event processing.");
       
   160 tojava                 return 0;
       
   161 tojava             }
       
   162 tojava             //XXX unconsumed modifiers?
       
   163 tojava             return Native.getLong(XlibWrapper.larg3);
       
   164 tojava         } finally {
       
   165 tojava             XToolkit.awtUnlock();
       
   166 tojava         }
       
   167 tojava     }
       
   168 tojava     static long xkeycode2keysym(XKeyEvent ev, int ndx) {
       
   169 tojava         XToolkit.awtLock();
       
   170 tojava         try {
       
   171 tojava             if (XToolkit.canUseXKBCalls()) {
       
   172 tojava                 return xkeycode2keysym_xkb(ev, ndx);
       
   173 tojava             }else{
       
   174 tojava                 return xkeycode2keysym_noxkb(ev, ndx);
       
   175 tojava             }
       
   176 tojava         } finally {
       
   177 tojava             XToolkit.awtUnlock();
       
   178 tojava         }
       
   179 tojava     }
       
   180 tojava     static long xkeycode2primary_keysym(XKeyEvent ev) {
       
   181 tojava         return xkeycode2keysym(ev, 0);
       
   182 tojava     }
       
   183 tojava     public static boolean isKPEvent( XKeyEvent ev )
       
   184 tojava     {
       
   185 tojava         // Xsun without XKB uses keysymarray[2] keysym to determine if it is KP event.
       
   186 tojava         // Otherwise, it is [1].
       
   187 tojava         int ndx = XToolkit.isXsunKPBehavior() &&
       
   188 tojava                   ! XToolkit.isXKBenabled() ? 2 : 1;
       
   189 tojava         // Even if XKB is enabled, we have another problem: some symbol tables (e.g. cz) force
       
   190 tojava         // a regular comma instead of KP_comma for a decimal separator. Result is,
       
   191 tojava         // bugs like 6454041. So, we will try for keypadness  a keysym with ndx==0 as well.
       
   192 tojava         XToolkit.awtLock();
       
   193 tojava         try {
       
   194 tojava             return (XlibWrapper.IsKeypadKey(
       
   195 tojava                 XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev.get_keycode(), ndx ) ) ||
       
   196 tojava                    XlibWrapper.IsKeypadKey(
       
   197 tojava                 XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev.get_keycode(), 0 ) ));
       
   198 tojava         } finally {
       
   199 tojava             XToolkit.awtUnlock();
       
   200 tojava         }
       
   201 tojava     }
       
   202 tojava     /**
       
   203 tojava         Return uppercase keysym correspondent to a given keysym.
       
   204 tojava         If input keysym does not belong to any lower/uppercase pair, return -1.
       
   205 tojava     */
       
   206 tojava     public static long getUppercaseAlphabetic( long keysym ) {
       
   207 tojava         long lc = -1;
       
   208 tojava         long uc = -1;
       
   209 tojava         Long stored =  uppercaseHash.get(keysym);
       
   210 tojava         if (stored != null ) {
       
   211 tojava             return stored.longValue();
       
   212 tojava         }
       
   213 tojava         XToolkit.awtLock();
       
   214 tojava         try {
       
   215 tojava             XlibWrapper.XConvertCase(keysym, keysym_lowercase, keysym_uppercase);
       
   216 tojava             lc = Native.getLong(keysym_lowercase);
       
   217 tojava             uc = Native.getLong(keysym_uppercase);
       
   218 tojava             if (lc == uc) {
       
   219 tojava                 //not applicable
       
   220 tojava                 uc = -1;
       
   221 tojava             }
       
   222 tojava             uppercaseHash.put(keysym, uc);
       
   223 tojava         } finally {
       
   224 tojava             XToolkit.awtUnlock();
       
   225 tojava         }
       
   226 tojava         return uc;
       
   227 tojava     }
       
   228 tojava     /**
       
   229 tojava         Get a keypad keysym derived from a keycode.
       
   230 tojava         I do not check if this is a keypad event, I just presume it.
       
   231 tojava     */
       
   232 tojava     private static long getKeypadKeysym( XKeyEvent ev ) {
       
   233 tojava         int ndx = 0;
       
   234 tojava         long keysym = XConstants.NoSymbol;
       
   235 tojava         if( XToolkit.isXsunKPBehavior() &&
       
   236 tojava             ! XToolkit.isXKBenabled() ) {
       
   237 tojava             if( (ev.get_state() & XConstants.ShiftMask) != 0 ) { // shift modifier is on
       
   238 tojava                 ndx = 3;
       
   239 tojava                 keysym = xkeycode2keysym(ev, ndx);
       
   240 tojava             } else {
       
   241 tojava                 ndx = 2;
       
   242 tojava                 keysym = xkeycode2keysym(ev, ndx);
       
   243 tojava             }
       
   244 tojava         } else {
       
   245 tojava             if( (ev.get_state() & XConstants.ShiftMask) != 0 || // shift modifier is on
       
   246 tojava                 ((ev.get_state() & XConstants.LockMask) != 0 && // lock modifier is on
       
   247 tojava                  (XToolkit.modLockIsShiftLock != 0)) ) {     // it is interpreted as ShiftLock
       
   248 tojava                 ndx = 0;
       
   249 tojava                 keysym = xkeycode2keysym(ev, ndx);
       
   250 tojava             } else {
       
   251 tojava                 ndx = 1;
       
   252 tojava                 keysym = xkeycode2keysym(ev, ndx);
       
   253 tojava             }
       
   254 tojava         }
       
   255 tojava         return keysym;
       
   256 tojava     }
       
   257 tojava
       
   258 tojava     /**
       
   259 tojava         Return java.awt.KeyEvent constant meaning (Java) keycode, derived from X keysym.
       
   260 tojava         Some keysyms maps to more than one keycode, these would require extra processing.
       
   261 tojava     */
       
   262 tojava     static Keysym2JavaKeycode getJavaKeycode( long keysym ) {
       
   263 tojava         if(keysym == XKeySymConstants.XK_Mode_switch){
       
   264 tojava            /* XK_Mode_switch on solaris maps either to VK_ALT_GRAPH (default) or VK_KANA_LOCK */
       
   265 tojava            if( XToolkit.isKanaKeyboard() ) {
       
   266 tojava                return kanaLock;
       
   267 tojava            }
       
   268 tojava         }else if(keysym == XKeySymConstants.XK_L1){
       
   269 tojava            /* if it is Sun keyboard, trick hash to return VK_STOP else VK_F11 (default) */
       
   270 tojava            if( XToolkit.isSunKeyboard() ) {
       
   271 tojava                keysym = XKeySymConstants.SunXK_Stop;
       
   272 tojava            }
       
   273 tojava         }else if(keysym == XKeySymConstants.XK_L2) {
       
   274 tojava            /* if it is Sun keyboard, trick hash to return VK_AGAIN else VK_F12 (default) */
       
   275 tojava            if( XToolkit.isSunKeyboard() ) {
       
   276 tojava                keysym = XKeySymConstants.SunXK_Again;
       
   277 tojava            }
       
   278 tojava         }
       
   279 tojava
       
   280 tojava         return  keysym2JavaKeycodeHash.get( keysym );
       
   281 tojava     }
       
   282 tojava     /**
       
   283 tojava         Return java.awt.KeyEvent constant meaning (Java) keycode, derived from X Window KeyEvent.
       
   284 tojava         Algorithm is, extract via XKeycodeToKeysym  a proper keysym according to Xlib spec rules and
       
   285 tojava         err exceptions, then search a java keycode in a table.
       
   286 tojava     */
       
   287 tojava     static Keysym2JavaKeycode getJavaKeycode( XKeyEvent ev ) {
       
   288 tojava         // get from keysym2JavaKeycodeHash.
       
   289 tojava         long keysym = XConstants.NoSymbol;
       
   290 tojava         int ndx = 0;
       
   291 tojava         if( (ev.get_state() & XToolkit.numLockMask) != 0 &&
       
   292 tojava              isKPEvent(ev)) {
       
   293 tojava             keysym = getKeypadKeysym( ev );
       
   294 tojava         } else {
       
   295 tojava             // we only need primary-layer keysym to derive a java keycode.
       
   296 tojava             ndx = 0;
       
   297 tojava             keysym = xkeycode2keysym(ev, ndx);
       
   298 tojava         }
       
   299 tojava
       
   300 tojava         Keysym2JavaKeycode jkc = getJavaKeycode( keysym );
       
   301 tojava         return jkc;
       
   302 tojava     }
       
   303 tojava     static int getJavaKeycodeOnly( XKeyEvent ev ) {
       
   304 tojava         Keysym2JavaKeycode jkc = getJavaKeycode( ev );
       
   305 tojava         return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode();
       
   306 tojava     }
       
   307 tojava     /**
       
   308 tojava      * Return an integer java keycode apprx as it was before extending keycodes range.
       
   309 tojava      * This call would ignore for instance XKB and process whatever is on the bottom
       
   310 tojava      * of keysym stack. Result will not depend on actual locale, will differ between
       
   311 tojava      * dual/multiple keyboard setup systems (e.g. English+Russian vs French+Russian)
       
   312 tojava      * but will be someway compatible with old releases.
       
   313 tojava      */
       
   314 tojava     static int getLegacyJavaKeycodeOnly( XKeyEvent ev ) {
       
   315 tojava         long keysym = XConstants.NoSymbol;
       
   316 tojava         int ndx = 0;
       
   317 tojava         if( (ev.get_state() & XToolkit.numLockMask) != 0 &&
       
   318 tojava              isKPEvent(ev)) {
       
   319 tojava             keysym = getKeypadKeysym( ev );
       
   320 tojava         } else {
       
   321 tojava             // we only need primary-layer keysym to derive a java keycode.
       
   322 tojava             ndx = 0;
       
   323 tojava             keysym = xkeycode2keysym_noxkb(ev, ndx);
       
   324 tojava         }
       
   325 tojava         Keysym2JavaKeycode jkc = getJavaKeycode( keysym );
       
   326 tojava         return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode();
       
   327 tojava     }
       
   328 tojava     static long javaKeycode2Keysym( int jkey ) {
       
   329 tojava         Long ks = javaKeycode2KeysymHash.get( jkey );
       
   330 tojava         return  (ks == null ? 0 : ks.longValue());
       
   331 tojava     }
       
   332 tojava     /**
       
   333 tojava         Return keysym derived from a keycode and modifiers.
       
   334 tojava         Usually an input method does this. However non-system input methods (e.g. Java IMs) do not.
       
   335 tojava         For rules, see "Xlib - C Language X Interface",
       
   336 tojava                         MIT X Consortium Standard
       
   337 tojava                         X Version 11, Release 6
       
   338 tojava                         Ch. 12.7
       
   339 tojava         XXX TODO: or maybe not to do: process Mode Lock and therefore
       
   340 tojava         not only 0-th and 1-st but 2-nd and 3-rd keysyms for a keystroke.
       
   341 tojava     */
       
   342 tojava     static long getKeysym( XKeyEvent ev ) {
       
   343 tojava         long keysym = XConstants.NoSymbol;
       
   344 tojava         long uppercaseKeysym = XConstants.NoSymbol;
       
   345 tojava         int  ndx = 0;
       
   346 tojava         boolean getUppercase = false;
       
   347 tojava         if ((ev.get_state() & XToolkit.numLockMask) != 0 &&
       
   348 tojava              isKPEvent(ev)) {
       
   349 tojava             keysym = getKeypadKeysym( ev );
       
   350 tojava         } else {
       
   351 tojava             // XXX: at this point, anything in keysym[23] is ignored.
       
   352 tojava             //
       
   353 tojava             // Shift & Lock are off ===> ndx = 0;
       
   354 tojava             // Shift off & Lock on & Lock is CapsLock ===> ndx = 0;
       
   355 tojava             //       if keysym[ndx] is lowecase alphabetic, then corresp. uppercase used.
       
   356 tojava             // Shift on & Lock on & Lock is CapsLock ===> ndx == 1;
       
   357 tojava             //       if keysym[ndx] is lowecase alphabetic, then corresp. uppercase used.
       
   358 tojava             // Shift on || (Lock on & Lock is ShiftLock) ===> ndx = 1.
       
   359 tojava             if ((ev.get_state() & XConstants.ShiftMask) == 0) {     // shift is off
       
   360 tojava                 if ((ev.get_state() & XConstants.LockMask) == 0 ) {  // lock is off
       
   361 tojava                     ndx = 0;
       
   362 tojava                     getUppercase = false;
       
   363 tojava                 } else if ((ev.get_state() & XConstants.LockMask) != 0 && // lock is on
       
   364 tojava                      (XToolkit.modLockIsShiftLock == 0)) { // lock is capslock
       
   365 tojava                     ndx = 0;
       
   366 tojava                     getUppercase = true;
       
   367 tojava                 } else if ((ev.get_state() & XConstants.LockMask) != 0 && // lock is on
       
   368 tojava                      (XToolkit.modLockIsShiftLock != 0)) { // lock is shift lock
       
   369 tojava                     ndx = 1;
       
   370 tojava                     getUppercase = false;
       
   371 tojava                 }
       
   372 tojava             } else { // shift on
       
   373 tojava                 if ((ev.get_state() & XConstants.LockMask) != 0 && // lock is on
       
   374 tojava                      (XToolkit.modLockIsShiftLock == 0)) { // lock is capslock
       
   375 tojava                     ndx = 1;
       
   376 tojava                     getUppercase = true;
       
   377 tojava                 } else {
       
   378 tojava                     ndx = 1;
       
   379 tojava                     getUppercase = false;
       
   380 tojava                 }
       
   381 tojava             }
       
   382 tojava             keysym = xkeycode2keysym(ev, ndx);
       
   383 tojava             if (getUppercase && (uppercaseKeysym =  getUppercaseAlphabetic( keysym )) != -1) {
       
   384 tojava                 keysym = uppercaseKeysym;
       
   385 tojava             }
       
   386 tojava         }
       
   387 tojava         return keysym;
       
   388 tojava     }
       
   389 tojava
       
   390 tojava     static {
       
   391 
       
   392 /***********************************************************
       
   393 Copyright 1987, 1994, 1998  The Open Group
       
   394 
       
   395 Permission to use, copy, modify, distribute, and sell this software and its
       
   396 documentation for any purpose is hereby granted without fee, provided that
       
   397 the above copyright notice appear in all copies and that both that
       
   398 copyright notice and this permission notice appear in supporting
       
   399 documentation.
       
   400 
       
   401 The above copyright notice and this permission notice shall be included
       
   402 in all copies or substantial portions of the Software.
       
   403 
       
   404 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       
   405 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       
   406 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       
   407 IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
       
   408 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
       
   409 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
       
   410 OTHER DEALINGS IN THE SOFTWARE.
       
   411 
       
   412 Except as contained in this notice, the name of The Open Group shall
       
   413 not be used in advertising or otherwise to promote the sale, use or
       
   414 other dealings in this Software without prior written authorization
       
   415 from The Open Group.
       
   416 
       
   417 
       
   418 Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts
       
   419 
       
   420                         All Rights Reserved
       
   421 
       
   422 Permission to use, copy, modify, and distribute this software and its
       
   423 documentation for any purpose and without fee is hereby granted,
       
   424 provided that the above copyright notice appear in all copies and that
       
   425 both that copyright notice and this permission notice appear in
       
   426 supporting documentation, and that the name of Digital not be
       
   427 used in advertising or publicity pertaining to distribution of the
       
   428 software without specific, written prior permission.
       
   429 
       
   430 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
       
   431 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
       
   432 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
       
   433 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
       
   434 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
       
   435 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
       
   436 SOFTWARE.
       
   437 
       
   438 ******************************************************************/
       
   439 
       
   440 /*
       
   441  * TTY Functions, cleverly chosen to map to ascii, for convenience of
       
   442  * programming, but could have been arbitrary (at the cost of lookup
       
   443  * tables in client code.
       
   444  */
       
   445 
       
   446 0x0008 #define XK_BackSpace        0xFF08    /* back space, back char */
       
   447 0x0009 #define XK_Tab            0xFF09
       
   448 0x000a #define XK_Linefeed        0xFF0A    /* Linefeed, LF */
       
   449 0x000b #define XK_Clear        0xFF0B
       
   450 /*XXX map to 0a instead of 0d - why? for some good reason I hope */
       
   451 0x000a #define XK_Return        0xFF0D    /* Return, enter */
       
   452 0x0000 #define XK_Pause        0xFF13    /* Pause, hold */
       
   453 0x0000 #define XK_Scroll_Lock        0xFF14
       
   454 0x0000 #define XK_Sys_Req        0xFF15
       
   455 0x001B #define XK_Escape        0xFF1B
       
   456 0x007F #define XK_Delete        0xFFFF    /* Delete, rubout */
       
   457 
       
   458 
       
   459 
       
   460 /* International & multi-key character composition */
       
   461 
       
   462 0x0000 #define XK_Multi_key        0xFF20  /* Multi-key character compose */
       
   463 0x0000 #define XK_Codeinput        0xFF37
       
   464 0x0000 #define XK_SingleCandidate    0xFF3C
       
   465 0x0000 #define XK_MultipleCandidate    0xFF3D
       
   466 0x0000 #define XK_PreviousCandidate    0xFF3E
       
   467 
       
   468 /* Japanese keyboard support */
       
   469 
       
   470 0x0000 #define XK_Kanji        0xFF21    /* Kanji, Kanji convert */
       
   471 0x0000 #define XK_Muhenkan        0xFF22  /* Cancel Conversion */
       
   472 0x0000 #define XK_Henkan_Mode        0xFF23  /* Start/Stop Conversion */
       
   473 0x0000 #define XK_Henkan        0xFF23  /* Alias for Henkan_Mode */
       
   474 0x0000 #define XK_Romaji        0xFF24  /* to Romaji */
       
   475 0x0000 #define XK_Hiragana        0xFF25  /* to Hiragana */
       
   476 0x0000 #define XK_Katakana        0xFF26  /* to Katakana */
       
   477 0x0000 #define XK_Hiragana_Katakana    0xFF27  /* Hiragana/Katakana toggle */
       
   478 0x0000 #define XK_Zenkaku        0xFF28  /* to Zenkaku */
       
   479 0x0000 #define XK_Hankaku        0xFF29  /* to Hankaku */
       
   480 0x0000 #define XK_Zenkaku_Hankaku    0xFF2A  /* Zenkaku/Hankaku toggle */
       
   481 0x0000 #define XK_Touroku        0xFF2B  /* Add to Dictionary */
       
   482 0x0000 #define XK_Massyo        0xFF2C  /* Delete from Dictionary */
       
   483 0x0000 #define XK_Kana_Lock        0xFF2D  /* Kana Lock */
       
   484 0x0000 #define XK_Kana_Shift        0xFF2E  /* Kana Shift */
       
   485 0x0000 #define XK_Eisu_Shift        0xFF2F  /* Alphanumeric Shift */
       
   486 0x0000 #define XK_Eisu_toggle        0xFF30  /* Alphanumeric toggle */
       
   487 0x0000 #define XK_Kanji_Bangou        0xFF37  /* Codeinput */
       
   488 0x0000 #define XK_Zen_Koho        0xFF3D    /* Multiple/All Candidate(s) */
       
   489 0x0000 #define XK_Mae_Koho        0xFF3E    /* Previous Candidate */
       
   490 
       
   491 /* Cursor control & motion */
       
   492 
       
   493 0x0000 #define XK_Home            0xFF50
       
   494 0x0000 #define XK_Left            0xFF51    /* Move left, left arrow */
       
   495 0x0000 #define XK_Up            0xFF52    /* Move up, up arrow */
       
   496 0x0000 #define XK_Right        0xFF53    /* Move right, right arrow */
       
   497 0x0000 #define XK_Down            0xFF54    /* Move down, down arrow */
       
   498 0x0000 #define XK_Prior        0xFF55    /* Prior, previous */
       
   499 0x0000 #define XK_Page_Up        0xFF55
       
   500 0x0000 #define XK_Next            0xFF56    /* Next */
       
   501 0x0000 #define XK_Page_Down        0xFF56
       
   502 0x0000 #define XK_End            0xFF57    /* EOL */
       
   503 0x0000 #define XK_Begin        0xFF58    /* BOL */
       
   504 
       
   505 
       
   506 /* Misc Functions */
       
   507 
       
   508 0x0000 #define XK_Select        0xFF60    /* Select, mark */
       
   509 0x0000 #define XK_Print        0xFF61
       
   510 0x0000 #define XK_Execute        0xFF62    /* Execute, run, do */
       
   511 0x0000 #define XK_Insert        0xFF63    /* Insert, insert here */
       
   512 0x0000 #define XK_Undo            0xFF65    /* Undo, oops */
       
   513 0x0000 #define XK_Redo            0xFF66    /* redo, again */
       
   514 0x0000 #define XK_Menu            0xFF67
       
   515 0x0000 #define XK_Find            0xFF68    /* Find, search */
       
   516 0x0000 #define XK_Cancel        0xFF69    /* Cancel, stop, abort, exit */
       
   517 0x0000 #define XK_Help            0xFF6A    /* Help */
       
   518 0x0000 #define XK_Break        0xFF6B
       
   519 0x0000 #define XK_Mode_switch        0xFF7E    /* Character set switch */
       
   520 0x0000 #define XK_script_switch        0xFF7E  /* Alias for mode_switch */
       
   521 0x0000 #define XK_Num_Lock        0xFF7F
       
   522 
       
   523 /* Keypad Functions, keypad numbers cleverly chosen to map to ascii */
       
   524 
       
   525 0x0020 #define XK_KP_Space        0xFF80    /* space */
       
   526 0x0009 #define XK_KP_Tab        0xFF89
       
   527 0x000A #define XK_KP_Enter        0xFF8D    /* enter: note that it is again 0A */
       
   528 0x0000 #define XK_KP_F1        0xFF91    /* PF1, KP_A, ... */
       
   529 0x0000 #define XK_KP_F2        0xFF92
       
   530 0x0000 #define XK_KP_F3        0xFF93
       
   531 0x0000 #define XK_KP_F4        0xFF94
       
   532 0x0000 #define XK_KP_Home        0xFF95
       
   533 0x0000 #define XK_KP_Left        0xFF96
       
   534 0x0000 #define XK_KP_Up        0xFF97
       
   535 0x0000 #define XK_KP_Right        0xFF98
       
   536 0x0000 #define XK_KP_Down        0xFF99
       
   537 0x0000 #define XK_KP_Prior        0xFF9A
       
   538 0x0000 #define XK_KP_Page_Up        0xFF9A
       
   539 0x0000 #define XK_KP_Next        0xFF9B
       
   540 0x0000 #define XK_KP_Page_Down        0xFF9B
       
   541 0x0000 #define XK_KP_End        0xFF9C
       
   542 0x0000 #define XK_KP_Begin        0xFF9D
       
   543 0x0000 #define XK_KP_Insert        0xFF9E
       
   544 0x007F #define XK_KP_Delete        0xFF9F
       
   545 0x003d #define XK_KP_Equal        0xFFBD    /* equals */
       
   546 0x002a #define XK_KP_Multiply        0xFFAA
       
   547 0x002b #define XK_KP_Add        0xFFAB
       
   548 0x002c #define XK_KP_Separator        0xFFAC    /* separator, often comma */
       
   549 0x002d #define XK_KP_Subtract        0xFFAD
       
   550 0x002e #define XK_KP_Decimal        0xFFAE
       
   551 0x002f #define XK_KP_Divide        0xFFAF
       
   552 
       
   553 0x0030 #define XK_KP_0            0xFFB0
       
   554 0x0031 #define XK_KP_1            0xFFB1
       
   555 0x0032 #define XK_KP_2            0xFFB2
       
   556 0x0033 #define XK_KP_3            0xFFB3
       
   557 0x0034 #define XK_KP_4            0xFFB4
       
   558 0x0035 #define XK_KP_5            0xFFB5
       
   559 0x0036 #define XK_KP_6            0xFFB6
       
   560 0x0037 #define XK_KP_7            0xFFB7
       
   561 0x0038 #define XK_KP_8            0xFFB8
       
   562 0x0039 #define XK_KP_9            0xFFB9
       
   563 
       
   564 
       
   565 
       
   566 /*
       
   567  * Auxilliary Functions; note the duplicate definitions for left and right
       
   568  * function keys;  Sun keyboards and a few other manufactures have such
       
   569  * function key groups on the left and/or right sides of the keyboard.
       
   570  * We've not found a keyboard with more than 35 function keys total.
       
   571  */
       
   572 
       
   573 0x0000 #define XK_F1            0xFFBE
       
   574 0x0000 #define XK_F2            0xFFBF
       
   575 0x0000 #define XK_F3            0xFFC0
       
   576 0x0000 #define XK_F4            0xFFC1
       
   577 0x0000 #define XK_F5            0xFFC2
       
   578 0x0000 #define XK_F6            0xFFC3
       
   579 0x0000 #define XK_F7            0xFFC4
       
   580 0x0000 #define XK_F8            0xFFC5
       
   581 0x0000 #define XK_F9            0xFFC6
       
   582 0x0000 #define XK_F10            0xFFC7
       
   583 0x0000 #define XK_F11            0xFFC8
       
   584 0x0000 #define XK_L1            0xFFC8
       
   585 0x0000 #define XK_F12            0xFFC9
       
   586 0x0000 #define XK_L2            0xFFC9
       
   587 0x0000 #define XK_F13            0xFFCA
       
   588 0x0000 #define XK_L3            0xFFCA
       
   589 0x0000 #define XK_F14            0xFFCB
       
   590 0x0000 #define XK_L4            0xFFCB
       
   591 0x0000 #define XK_F15            0xFFCC
       
   592 0x0000 #define XK_L5            0xFFCC
       
   593 0x0000 #define XK_F16            0xFFCD
       
   594 0x0000 #define XK_L6            0xFFCD
       
   595 0x0000 #define XK_F17            0xFFCE
       
   596 0x0000 #define XK_L7            0xFFCE
       
   597 0x0000 #define XK_F18            0xFFCF
       
   598 0x0000 #define XK_L8            0xFFCF
       
   599 0x0000 #define XK_F19            0xFFD0
       
   600 0x0000 #define XK_L9            0xFFD0
       
   601 0x0000 #define XK_F20            0xFFD1
       
   602 0x0000 #define XK_L10            0xFFD1
       
   603 0x0000 #define XK_F21            0xFFD2
       
   604 0x0000 #define XK_R1            0xFFD2
       
   605 0x0000 #define XK_F22            0xFFD3
       
   606 0x0000 #define XK_R2            0xFFD3
       
   607 0x0000 #define XK_F23            0xFFD4
       
   608 0x0000 #define XK_R3            0xFFD4
       
   609 0x0000 #define XK_F24            0xFFD5
       
   610 0x0000 #define XK_R4            0xFFD5
       
   611 0x0000 #define XK_F25            0xFFD6
       
   612 0x0000 #define XK_R5            0xFFD6
       
   613 0x0000 #define XK_F26            0xFFD7
       
   614 0x0000 #define XK_R6            0xFFD7
       
   615 0x0000 #define XK_F27            0xFFD8
       
   616 0x0000 #define XK_R7            0xFFD8
       
   617 0x0000 #define XK_F28            0xFFD9
       
   618 0x0000 #define XK_R8            0xFFD9
       
   619 0x0000 #define XK_F29            0xFFDA
       
   620 0x0000 #define XK_R9            0xFFDA
       
   621 0x0000 #define XK_F30            0xFFDB
       
   622 0x0000 #define XK_R10            0xFFDB
       
   623 0x0000 #define XK_F31            0xFFDC
       
   624 0x0000 #define XK_R11            0xFFDC
       
   625 0x0000 #define XK_F32            0xFFDD
       
   626 0x0000 #define XK_R12            0xFFDD
       
   627 0x0000 #define XK_F33            0xFFDE
       
   628 0x0000 #define XK_R13            0xFFDE
       
   629 0x0000 #define XK_F34            0xFFDF
       
   630 0x0000 #define XK_R14            0xFFDF
       
   631 0x0000 #define XK_F35            0xFFE0
       
   632 0x0000 #define XK_R15            0xFFE0
       
   633 
       
   634 /* Modifiers */
       
   635 
       
   636 0x0000 #define XK_Shift_L        0xFFE1    /* Left shift */
       
   637 0x0000 #define XK_Shift_R        0xFFE2    /* Right shift */
       
   638 0x0000 #define XK_Control_L        0xFFE3    /* Left control */
       
   639 0x0000 #define XK_Control_R        0xFFE4    /* Right control */
       
   640 0x0000 #define XK_Caps_Lock        0xFFE5    /* Caps lock */
       
   641 0x0000 #define XK_Shift_Lock        0xFFE6    /* Shift lock */
       
   642 
       
   643 0x0000 #define XK_Meta_L        0xFFE7    /* Left meta */
       
   644 0x0000 #define XK_Meta_R        0xFFE8    /* Right meta */
       
   645 0x0000 #define XK_Alt_L        0xFFE9    /* Left alt */
       
   646 0x0000 #define XK_Alt_R        0xFFEA    /* Right alt */
       
   647 0x0000 #define XK_Super_L        0xFFEB    /* Left super */
       
   648 0x0000 #define XK_Super_R        0xFFEC    /* Right super */
       
   649 0x0000 #define XK_Hyper_L        0xFFED    /* Left hyper */
       
   650 0x0000 #define XK_Hyper_R        0xFFEE    /* Right hyper */
       
   651 #endif /* XK_MISCELLANY */
       
   652 
       
   653 /*
       
   654  * ISO 9995 Function and Modifier Keys
       
   655  * Byte 3 = 0xFE
       
   656  */
       
   657 
       
   658 #ifdef XK_XKB_KEYS
       
   659 0x0000 #define    XK_ISO_Lock                    0xFE01
       
   660 0x0000 #define    XK_ISO_Level2_Latch                0xFE02
       
   661 0x0000 #define    XK_ISO_Level3_Shift                0xFE03
       
   662 0x0000 #define    XK_ISO_Level3_Latch                0xFE04
       
   663 0x0000 #define    XK_ISO_Level3_Lock                0xFE05
       
   664 0x0000 #define    XK_ISO_Group_Shift        0xFF7E    /* Alias for mode_switch */
       
   665 0x0000 #define    XK_ISO_Group_Latch                0xFE06
       
   666 0x0000 #define    XK_ISO_Group_Lock                0xFE07
       
   667 0x0000 #define    XK_ISO_Next_Group                0xFE08
       
   668 0x0000 #define    XK_ISO_Next_Group_Lock                0xFE09
       
   669 0x0000 #define    XK_ISO_Prev_Group                0xFE0A
       
   670 0x0000 #define    XK_ISO_Prev_Group_Lock                0xFE0B
       
   671 0x0000 #define    XK_ISO_First_Group                0xFE0C
       
   672 0x0000 #define    XK_ISO_First_Group_Lock                0xFE0D
       
   673 0x0000 #define    XK_ISO_Last_Group                0xFE0E
       
   674 0x0000 #define    XK_ISO_Last_Group_Lock                0xFE0F
       
   675 
       
   676 0x0009 #define    XK_ISO_Left_Tab                    0xFE20
       
   677 0x0000 #define    XK_ISO_Move_Line_Up                0xFE21
       
   678 0x0000 #define    XK_ISO_Move_Line_Down                0xFE22
       
   679 0x0000 #define    XK_ISO_Partial_Line_Up                0xFE23
       
   680 0x0000 #define    XK_ISO_Partial_Line_Down            0xFE24
       
   681 0x0000 #define    XK_ISO_Partial_Space_Left            0xFE25
       
   682 0x0000 #define    XK_ISO_Partial_Space_Right            0xFE26
       
   683 0x0000 #define    XK_ISO_Set_Margin_Left                0xFE27
       
   684 0x0000 #define    XK_ISO_Set_Margin_Right                0xFE28
       
   685 0x0000 #define    XK_ISO_Release_Margin_Left            0xFE29
       
   686 0x0000 #define    XK_ISO_Release_Margin_Right            0xFE2A
       
   687 0x0000 #define    XK_ISO_Release_Both_Margins            0xFE2B
       
   688 0x0000 #define    XK_ISO_Fast_Cursor_Left                0xFE2C
       
   689 0x0000 #define    XK_ISO_Fast_Cursor_Right            0xFE2D
       
   690 0x0000 #define    XK_ISO_Fast_Cursor_Up                0xFE2E
       
   691 0x0000 #define    XK_ISO_Fast_Cursor_Down                0xFE2F
       
   692 0x0000 #define    XK_ISO_Continuous_Underline            0xFE30
       
   693 0x0000 #define    XK_ISO_Discontinuous_Underline            0xFE31
       
   694 0x0000 #define    XK_ISO_Emphasize                0xFE32
       
   695 0x0000 #define    XK_ISO_Center_Object                0xFE33
       
   696 0x0000 #define    XK_ISO_Enter                    0xFE34
       
   697 
       
   698 0x02CB #define    XK_dead_grave                    0xFE50
       
   699 0x02CA #define    XK_dead_acute                    0xFE51
       
   700 0x02C6 #define    XK_dead_circumflex                0xFE52
       
   701 0x02DC #define    XK_dead_tilde                    0xFE53
       
   702 0x02C9 #define    XK_dead_macron                    0xFE54
       
   703 0x02D8 #define    XK_dead_breve                    0xFE55
       
   704 0x02D9 #define    XK_dead_abovedot                0xFE56
       
   705 0x00A8 #define    XK_dead_diaeresis                0xFE57
       
   706 0x02DA #define    XK_dead_abovering                0xFE58
       
   707 0x02DD #define    XK_dead_doubleacute                0xFE59
       
   708 0x02C7 #define    XK_dead_caron                    0xFE5A
       
   709 0x00B8 #define    XK_dead_cedilla                    0xFE5B
       
   710 0x02DB #define    XK_dead_ogonek                    0xFE5C
       
   711 0x0269 #define    XK_dead_iota                    0xFE5D
       
   712 0x3099 #define    XK_dead_voiced_sound                0xFE5E
       
   713 0x309A #define    XK_dead_semivoiced_sound            0xFE5F
       
   714 0x0323 #define    XK_dead_belowdot                0xFE60
       
   715 0x0321 #define XK_dead_hook                    0xFE61
       
   716 0x031B #define XK_dead_horn                    0xFE62
       
   717 
       
   718 0x0000 #define    XK_First_Virtual_Screen                0xFED0
       
   719 0x0000 #define    XK_Prev_Virtual_Screen                0xFED1
       
   720 0x0000 #define    XK_Next_Virtual_Screen                0xFED2
       
   721 0x0000 #define    XK_Last_Virtual_Screen                0xFED4
       
   722 0x0000 #define    XK_Terminate_Server                0xFED5
       
   723 
       
   724 0x0000 #define    XK_AccessX_Enable                0xFE70
       
   725 0x0000 #define    XK_AccessX_Feedback_Enable            0xFE71
       
   726 0x0000 #define    XK_RepeatKeys_Enable                0xFE72
       
   727 0x0000 #define    XK_SlowKeys_Enable                0xFE73
       
   728 0x0000 #define    XK_BounceKeys_Enable                0xFE74
       
   729 0x0000 #define    XK_StickyKeys_Enable                0xFE75
       
   730 0x0000 #define    XK_MouseKeys_Enable                0xFE76
       
   731 0x0000 #define    XK_MouseKeys_Accel_Enable            0xFE77
       
   732 0x0000 #define    XK_Overlay1_Enable                0xFE78
       
   733 0x0000 #define    XK_Overlay2_Enable                0xFE79
       
   734 0x0000 #define    XK_AudibleBell_Enable                0xFE7A
       
   735 
       
   736 0x0000 #define    XK_Pointer_Left                    0xFEE0
       
   737 0x0000 #define    XK_Pointer_Right                0xFEE1
       
   738 0x0000 #define    XK_Pointer_Up                    0xFEE2
       
   739 0x0000 #define    XK_Pointer_Down                    0xFEE3
       
   740 0x0000 #define    XK_Pointer_UpLeft                0xFEE4
       
   741 0x0000 #define    XK_Pointer_UpRight                0xFEE5
       
   742 0x0000 #define    XK_Pointer_DownLeft                0xFEE6
       
   743 0x0000 #define    XK_Pointer_DownRight                0xFEE7
       
   744 0x0000 #define    XK_Pointer_Button_Dflt                0xFEE8
       
   745 0x0000 #define    XK_Pointer_Button1                0xFEE9
       
   746 0x0000 #define    XK_Pointer_Button2                0xFEEA
       
   747 0x0000 #define    XK_Pointer_Button3                0xFEEB
       
   748 0x0000 #define    XK_Pointer_Button4                0xFEEC
       
   749 0x0000 #define    XK_Pointer_Button5                0xFEED
       
   750 0x0000 #define    XK_Pointer_DblClick_Dflt            0xFEEE
       
   751 0x0000 #define    XK_Pointer_DblClick1                0xFEEF
       
   752 0x0000 #define    XK_Pointer_DblClick2                0xFEF0
       
   753 0x0000 #define    XK_Pointer_DblClick3                0xFEF1
       
   754 0x0000 #define    XK_Pointer_DblClick4                0xFEF2
       
   755 0x0000 #define    XK_Pointer_DblClick5                0xFEF3
       
   756 0x0000 #define    XK_Pointer_Drag_Dflt                0xFEF4
       
   757 0x0000 #define    XK_Pointer_Drag1                0xFEF5
       
   758 0x0000 #define    XK_Pointer_Drag2                0xFEF6
       
   759 0x0000 #define    XK_Pointer_Drag3                0xFEF7
       
   760 0x0000 #define    XK_Pointer_Drag4                0xFEF8
       
   761 0x0000 #define    XK_Pointer_Drag5                0xFEFD
       
   762 
       
   763 0x0000 #define    XK_Pointer_EnableKeys                0xFEF9
       
   764 0x0000 #define    XK_Pointer_Accelerate                0xFEFA
       
   765 0x0000 #define    XK_Pointer_DfltBtnNext                0xFEFB
       
   766 0x0000 #define    XK_Pointer_DfltBtnPrev                0xFEFC
       
   767 
       
   768 #endif
       
   769 
       
   770 /*
       
   771  * 3270 Terminal Keys
       
   772  * Byte 3 = 0xFD
       
   773  */
       
   774 
       
   775 #ifdef XK_3270
       
   776 0x0000 #define XK_3270_Duplicate      0xFD01
       
   777 0x0000 #define XK_3270_FieldMark      0xFD02
       
   778 0x0000 #define XK_3270_Right2         0xFD03
       
   779 0x0000 #define XK_3270_Left2          0xFD04
       
   780 0x0000 #define XK_3270_BackTab        0xFD05
       
   781 0x0000 #define XK_3270_EraseEOF       0xFD06
       
   782 0x0000 #define XK_3270_EraseInput     0xFD07
       
   783 0x0000 #define XK_3270_Reset          0xFD08
       
   784 0x0000 #define XK_3270_Quit           0xFD09
       
   785 0x0000 #define XK_3270_PA1            0xFD0A
       
   786 0x0000 #define XK_3270_PA2            0xFD0B
       
   787 0x0000 #define XK_3270_PA3            0xFD0C
       
   788 0x0000 #define XK_3270_Test           0xFD0D
       
   789 0x0000 #define XK_3270_Attn           0xFD0E
       
   790 0x0000 #define XK_3270_CursorBlink    0xFD0F
       
   791 0x0000 #define XK_3270_AltCursor      0xFD10
       
   792 0x0000 #define XK_3270_KeyClick       0xFD11
       
   793 0x0000 #define XK_3270_Jump           0xFD12
       
   794 0x0000 #define XK_3270_Ident          0xFD13
       
   795 0x0000 #define XK_3270_Rule           0xFD14
       
   796 0x0000 #define XK_3270_Copy           0xFD15
       
   797 0x0000 #define XK_3270_Play           0xFD16
       
   798 0x0000 #define XK_3270_Setup          0xFD17
       
   799 0x0000 #define XK_3270_Record         0xFD18
       
   800 0x0000 #define XK_3270_ChangeScreen   0xFD19
       
   801 0x0000 #define XK_3270_DeleteWord     0xFD1A
       
   802 0x0000 #define XK_3270_ExSelect       0xFD1B
       
   803 0x0000 #define XK_3270_CursorSelect   0xFD1C
       
   804 0x0000 #define XK_3270_PrintScreen    0xFD1D
       
   805 0x0000 #define XK_3270_Enter          0xFD1E
       
   806 #endif
       
   807 
       
   808 /*
       
   809  *  Latin 1
       
   810  *  Byte 3 = 0
       
   811  */
       
   812 // yan: skip Latin1 as it is mapped to Unicode 1:1
       
   813 #ifdef XK_LATIN1
       
   814 0x0000 #define XK_space               0x020
       
   815 0x0000 #define XK_exclam              0x021
       
   816 0x0000 #define XK_quotedbl            0x022
       
   817 0x0000 #define XK_numbersign          0x023
       
   818 0x0000 #define XK_dollar              0x024
       
   819 0x0000 #define XK_percent             0x025
       
   820 0x0000 #define XK_ampersand           0x026
       
   821 0x0000 #define XK_apostrophe          0x027
       
   822 0x0000 #define XK_quoteright          0x027    /* deprecated */
       
   823 0x0000 #define XK_parenleft           0x028
       
   824 0x0000 #define XK_parenright          0x029
       
   825 0x0000 #define XK_asterisk            0x02a
       
   826 0x0000 #define XK_plus                0x02b
       
   827 0x0000 #define XK_comma               0x02c
       
   828 0x0000 #define XK_minus               0x02d
       
   829 0x0000 #define XK_period              0x02e
       
   830 0x0000 #define XK_slash               0x02f
       
   831 0x0000 #define XK_0                   0x030
       
   832 0x0000 #define XK_1                   0x031
       
   833 0x0000 #define XK_2                   0x032
       
   834 0x0000 #define XK_3                   0x033
       
   835 0x0000 #define XK_4                   0x034
       
   836 0x0000 #define XK_5                   0x035
       
   837 0x0000 #define XK_6                   0x036
       
   838 0x0000 #define XK_7                   0x037
       
   839 0x0000 #define XK_8                   0x038
       
   840 0x0000 #define XK_9                   0x039
       
   841 0x0000 #define XK_colon               0x03a
       
   842 0x0000 #define XK_semicolon           0x03b
       
   843 0x0000 #define XK_less                0x03c
       
   844 0x0000 #define XK_equal               0x03d
       
   845 0x0000 #define XK_greater             0x03e
       
   846 0x0000 #define XK_question            0x03f
       
   847 0x0000 #define XK_at                  0x040
       
   848 0x0000 #define XK_A                   0x041
       
   849 0x0000 #define XK_B                   0x042
       
   850 0x0000 #define XK_C                   0x043
       
   851 0x0000 #define XK_D                   0x044
       
   852 0x0000 #define XK_E                   0x045
       
   853 0x0000 #define XK_F                   0x046
       
   854 0x0000 #define XK_G                   0x047
       
   855 0x0000 #define XK_H                   0x048
       
   856 0x0000 #define XK_I                   0x049
       
   857 0x0000 #define XK_J                   0x04a
       
   858 0x0000 #define XK_K                   0x04b
       
   859 0x0000 #define XK_L                   0x04c
       
   860 0x0000 #define XK_M                   0x04d
       
   861 0x0000 #define XK_N                   0x04e
       
   862 0x0000 #define XK_O                   0x04f
       
   863 0x0000 #define XK_P                   0x050
       
   864 0x0000 #define XK_Q                   0x051
       
   865 0x0000 #define XK_R                   0x052
       
   866 0x0000 #define XK_S                   0x053
       
   867 0x0000 #define XK_T                   0x054
       
   868 0x0000 #define XK_U                   0x055
       
   869 0x0000 #define XK_V                   0x056
       
   870 0x0000 #define XK_W                   0x057
       
   871 0x0000 #define XK_X                   0x058
       
   872 0x0000 #define XK_Y                   0x059
       
   873 0x0000 #define XK_Z                   0x05a
       
   874 0x0000 #define XK_bracketleft         0x05b
       
   875 0x0000 #define XK_backslash           0x05c
       
   876 0x0000 #define XK_bracketright        0x05d
       
   877 0x0000 #define XK_asciicircum         0x05e
       
   878 0x0000 #define XK_underscore          0x05f
       
   879 0x0000 #define XK_grave               0x060
       
   880 0x0000 #define XK_quoteleft           0x060    /* deprecated */
       
   881 0x0000 #define XK_a                   0x061
       
   882 0x0000 #define XK_b                   0x062
       
   883 0x0000 #define XK_c                   0x063
       
   884 0x0000 #define XK_d                   0x064
       
   885 0x0000 #define XK_e                   0x065
       
   886 0x0000 #define XK_f                   0x066
       
   887 0x0000 #define XK_g                   0x067
       
   888 0x0000 #define XK_h                   0x068
       
   889 0x0000 #define XK_i                   0x069
       
   890 0x0000 #define XK_j                   0x06a
       
   891 0x0000 #define XK_k                   0x06b
       
   892 0x0000 #define XK_l                   0x06c
       
   893 0x0000 #define XK_m                   0x06d
       
   894 0x0000 #define XK_n                   0x06e
       
   895 0x0000 #define XK_o                   0x06f
       
   896 0x0000 #define XK_p                   0x070
       
   897 0x0000 #define XK_q                   0x071
       
   898 0x0000 #define XK_r                   0x072
       
   899 0x0000 #define XK_s                   0x073
       
   900 0x0000 #define XK_t                   0x074
       
   901 0x0000 #define XK_u                   0x075
       
   902 0x0000 #define XK_v                   0x076
       
   903 0x0000 #define XK_w                   0x077
       
   904 0x0000 #define XK_x                   0x078
       
   905 0x0000 #define XK_y                   0x079
       
   906 0x0000 #define XK_z                   0x07a
       
   907 0x0000 #define XK_braceleft           0x07b
       
   908 0x0000 #define XK_bar                 0x07c
       
   909 0x0000 #define XK_braceright          0x07d
       
   910 0x0000 #define XK_asciitilde          0x07e
       
   911 
       
   912 0x0000 #define XK_nobreakspace        0x0a0
       
   913 0x0000 #define XK_exclamdown          0x0a1
       
   914 0x0000 #define XK_cent                   0x0a2
       
   915 0x0000 #define XK_sterling            0x0a3
       
   916 0x0000 #define XK_currency            0x0a4
       
   917 0x0000 #define XK_yen                 0x0a5
       
   918 0x0000 #define XK_brokenbar           0x0a6
       
   919 0x0000 #define XK_section             0x0a7
       
   920 0x0000 #define XK_diaeresis           0x0a8
       
   921 0x0000 #define XK_copyright           0x0a9
       
   922 0x0000 #define XK_ordfeminine         0x0aa
       
   923 0x0000 #define XK_guillemotleft       0x0ab    /* left angle quotation mark */
       
   924 0x0000 #define XK_notsign             0x0ac
       
   925 0x0000 #define XK_hyphen              0x0ad
       
   926 0x0000 #define XK_registered          0x0ae
       
   927 0x0000 #define XK_macron              0x0af
       
   928 0x0000 #define XK_degree              0x0b0
       
   929 0x0000 #define XK_plusminus           0x0b1
       
   930 0x0000 #define XK_twosuperior         0x0b2
       
   931 0x0000 #define XK_threesuperior       0x0b3
       
   932 0x0000 #define XK_acute               0x0b4
       
   933 0x0000 #define XK_mu                  0x0b5
       
   934 0x0000 #define XK_paragraph           0x0b6
       
   935 0x0000 #define XK_periodcentered      0x0b7
       
   936 0x0000 #define XK_cedilla             0x0b8
       
   937 0x0000 #define XK_onesuperior         0x0b9
       
   938 0x0000 #define XK_masculine           0x0ba
       
   939 0x0000 #define XK_guillemotright      0x0bb    /* right angle quotation mark */
       
   940 0x0000 #define XK_onequarter          0x0bc
       
   941 0x0000 #define XK_onehalf             0x0bd
       
   942 0x0000 #define XK_threequarters       0x0be
       
   943 0x0000 #define XK_questiondown        0x0bf
       
   944 0x0000 #define XK_Agrave              0x0c0
       
   945 0x0000 #define XK_Aacute              0x0c1
       
   946 0x0000 #define XK_Acircumflex         0x0c2
       
   947 0x0000 #define XK_Atilde              0x0c3
       
   948 0x0000 #define XK_Adiaeresis          0x0c4
       
   949 0x0000 #define XK_Aring               0x0c5
       
   950 0x0000 #define XK_AE                  0x0c6
       
   951 0x0000 #define XK_Ccedilla            0x0c7
       
   952 0x0000 #define XK_Egrave              0x0c8
       
   953 0x0000 #define XK_Eacute              0x0c9
       
   954 0x0000 #define XK_Ecircumflex         0x0ca
       
   955 0x0000 #define XK_Ediaeresis          0x0cb
       
   956 0x0000 #define XK_Igrave              0x0cc
       
   957 0x0000 #define XK_Iacute              0x0cd
       
   958 0x0000 #define XK_Icircumflex         0x0ce
       
   959 0x0000 #define XK_Idiaeresis          0x0cf
       
   960 0x0000 #define XK_ETH                 0x0d0
       
   961 0x0000 #define XK_Eth                 0x0d0    /* deprecated */
       
   962 0x0000 #define XK_Ntilde              0x0d1
       
   963 0x0000 #define XK_Ograve              0x0d2
       
   964 0x0000 #define XK_Oacute              0x0d3
       
   965 0x0000 #define XK_Ocircumflex         0x0d4
       
   966 0x0000 #define XK_Otilde              0x0d5
       
   967 0x0000 #define XK_Odiaeresis          0x0d6
       
   968 0x0000 #define XK_multiply            0x0d7
       
   969 0x0000 #define XK_Ooblique            0x0d8
       
   970 0x0000 #define XK_Ugrave              0x0d9
       
   971 0x0000 #define XK_Uacute              0x0da
       
   972 0x0000 #define XK_Ucircumflex         0x0db
       
   973 0x0000 #define XK_Udiaeresis          0x0dc
       
   974 0x0000 #define XK_Yacute              0x0dd
       
   975 0x0000 #define XK_THORN               0x0de
       
   976 0x0000 #define XK_Thorn               0x0de    /* deprecated */
       
   977 0x0000 #define XK_ssharp              0x0df
       
   978 0x0000 #define XK_agrave              0x0e0
       
   979 0x0000 #define XK_aacute              0x0e1
       
   980 0x0000 #define XK_acircumflex         0x0e2
       
   981 0x0000 #define XK_atilde              0x0e3
       
   982 0x0000 #define XK_adiaeresis          0x0e4
       
   983 0x0000 #define XK_aring               0x0e5
       
   984 0x0000 #define XK_ae                  0x0e6
       
   985 0x0000 #define XK_ccedilla            0x0e7
       
   986 0x0000 #define XK_egrave              0x0e8
       
   987 0x0000 #define XK_eacute              0x0e9
       
   988 0x0000 #define XK_ecircumflex         0x0ea
       
   989 0x0000 #define XK_ediaeresis          0x0eb
       
   990 0x0000 #define XK_igrave              0x0ec
       
   991 0x0000 #define XK_iacute              0x0ed
       
   992 0x0000 #define XK_icircumflex         0x0ee
       
   993 0x0000 #define XK_idiaeresis          0x0ef
       
   994 0x0000 #define XK_eth                 0x0f0
       
   995 0x0000 #define XK_ntilde              0x0f1
       
   996 0x0000 #define XK_ograve              0x0f2
       
   997 0x0000 #define XK_oacute              0x0f3
       
   998 0x0000 #define XK_ocircumflex         0x0f4
       
   999 0x0000 #define XK_otilde              0x0f5
       
  1000 0x0000 #define XK_odiaeresis          0x0f6
       
  1001 0x0000 #define XK_division            0x0f7
       
  1002 0x0000 #define XK_oslash              0x0f8
       
  1003 0x0000 #define XK_ugrave              0x0f9
       
  1004 0x0000 #define XK_uacute              0x0fa
       
  1005 0x0000 #define XK_ucircumflex         0x0fb
       
  1006 0x0000 #define XK_udiaeresis          0x0fc
       
  1007 0x0000 #define XK_yacute              0x0fd
       
  1008 0x0000 #define XK_thorn               0x0fe
       
  1009 0x0000 #define XK_ydiaeresis          0x0ff
       
  1010 #endif /* XK_LATIN1 */
       
  1011 
       
  1012 /*
       
  1013  *   Latin 2
       
  1014  *   Byte 3 = 1
       
  1015  */
       
  1016 
       
  1017 #ifdef XK_LATIN2
       
  1018 0x0104 #define XK_Aogonek             0x1a1
       
  1019 0x02d8 #define XK_breve               0x1a2
       
  1020 0x0141 #define XK_Lstroke             0x1a3
       
  1021 0x013d #define XK_Lcaron              0x1a5
       
  1022 0x015a #define XK_Sacute              0x1a6
       
  1023 0x0160 #define XK_Scaron              0x1a9
       
  1024 0x015e #define XK_Scedilla            0x1aa
       
  1025 0x0164 #define XK_Tcaron              0x1ab
       
  1026 0x0179 #define XK_Zacute              0x1ac
       
  1027 0x017d #define XK_Zcaron              0x1ae
       
  1028 0x017b #define XK_Zabovedot           0x1af
       
  1029 0x0105 #define XK_aogonek             0x1b1
       
  1030 0x02db #define XK_ogonek              0x1b2
       
  1031 0x0142 #define XK_lstroke             0x1b3
       
  1032 0x013e #define XK_lcaron              0x1b5
       
  1033 0x015b #define XK_sacute              0x1b6
       
  1034 0x02c7 #define XK_caron               0x1b7
       
  1035 0x0161 #define XK_scaron              0x1b9
       
  1036 0x015f #define XK_scedilla            0x1ba
       
  1037 0x0165 #define XK_tcaron              0x1bb
       
  1038 0x017a #define XK_zacute              0x1bc
       
  1039 0x02dd #define XK_doubleacute         0x1bd
       
  1040 0x017e #define XK_zcaron              0x1be
       
  1041 0x017c #define XK_zabovedot           0x1bf
       
  1042 0x0154 #define XK_Racute              0x1c0
       
  1043 0x0102 #define XK_Abreve              0x1c3
       
  1044 0x0139 #define XK_Lacute              0x1c5
       
  1045 0x0106 #define XK_Cacute              0x1c6
       
  1046 0x010c #define XK_Ccaron              0x1c8
       
  1047 0x0118 #define XK_Eogonek             0x1ca
       
  1048 0x011a #define XK_Ecaron              0x1cc
       
  1049 0x010e #define XK_Dcaron              0x1cf
       
  1050 0x0110 #define XK_Dstroke             0x1d0
       
  1051 0x0143 #define XK_Nacute              0x1d1
       
  1052 0x0147 #define XK_Ncaron              0x1d2
       
  1053 0x0150 #define XK_Odoubleacute        0x1d5
       
  1054 0x0158 #define XK_Rcaron              0x1d8
       
  1055 0x016e #define XK_Uring               0x1d9
       
  1056 0x0170 #define XK_Udoubleacute        0x1db
       
  1057 0x0162 #define XK_Tcedilla            0x1de
       
  1058 0x0155 #define XK_racute              0x1e0
       
  1059 0x0103 #define XK_abreve              0x1e3
       
  1060 0x013a #define XK_lacute              0x1e5
       
  1061 0x0107 #define XK_cacute              0x1e6
       
  1062 0x010d #define XK_ccaron              0x1e8
       
  1063 0x0119 #define XK_eogonek             0x1ea
       
  1064 0x011b #define XK_ecaron              0x1ec
       
  1065 0x010f #define XK_dcaron              0x1ef
       
  1066 0x0111 #define XK_dstroke             0x1f0
       
  1067 0x0144 #define XK_nacute              0x1f1
       
  1068 0x0148 #define XK_ncaron              0x1f2
       
  1069 0x0151 #define XK_odoubleacute        0x1f5
       
  1070 0x0171 #define XK_udoubleacute        0x1fb
       
  1071 0x0159 #define XK_rcaron              0x1f8
       
  1072 0x016f #define XK_uring               0x1f9
       
  1073 0x0163 #define XK_tcedilla            0x1fe
       
  1074 0x02d9 #define XK_abovedot            0x1ff
       
  1075 #endif /* XK_LATIN2 */
       
  1076 
       
  1077 /*
       
  1078  *   Latin 3
       
  1079  *   Byte 3 = 2
       
  1080  */
       
  1081 
       
  1082 #ifdef XK_LATIN3
       
  1083 0x0126 #define XK_Hstroke             0x2a1
       
  1084 0x0124 #define XK_Hcircumflex         0x2a6
       
  1085 0x0130 #define XK_Iabovedot           0x2a9
       
  1086 0x011e #define XK_Gbreve              0x2ab
       
  1087 0x0134 #define XK_Jcircumflex         0x2ac
       
  1088 0x0127 #define XK_hstroke             0x2b1
       
  1089 0x0125 #define XK_hcircumflex         0x2b6
       
  1090 0x0131 #define XK_idotless            0x2b9
       
  1091 0x011f #define XK_gbreve              0x2bb
       
  1092 0x0135 #define XK_jcircumflex         0x2bc
       
  1093 0x010a #define XK_Cabovedot           0x2c5
       
  1094 0x0108 #define XK_Ccircumflex         0x2c6
       
  1095 0x0120 #define XK_Gabovedot           0x2d5
       
  1096 0x011c #define XK_Gcircumflex         0x2d8
       
  1097 0x016c #define XK_Ubreve              0x2dd
       
  1098 0x015c #define XK_Scircumflex         0x2de
       
  1099 0x010b #define XK_cabovedot           0x2e5
       
  1100 0x0109 #define XK_ccircumflex         0x2e6
       
  1101 0x0121 #define XK_gabovedot           0x2f5
       
  1102 0x011d #define XK_gcircumflex         0x2f8
       
  1103 0x016d #define XK_ubreve              0x2fd
       
  1104 0x015d #define XK_scircumflex         0x2fe
       
  1105 #endif /* XK_LATIN3 */
       
  1106 
       
  1107 
       
  1108 /*
       
  1109  *   Latin 4
       
  1110  *   Byte 3 = 3
       
  1111  */
       
  1112 
       
  1113 #ifdef XK_LATIN4
       
  1114 0x0138 #define XK_kra                 0x3a2
       
  1115 0x0000 #define XK_kappa               0x3a2    /* deprecated */
       
  1116 0x0156 #define XK_Rcedilla            0x3a3
       
  1117 0x0128 #define XK_Itilde              0x3a5
       
  1118 0x013b #define XK_Lcedilla            0x3a6
       
  1119 0x0112 #define XK_Emacron             0x3aa
       
  1120 0x0122 #define XK_Gcedilla            0x3ab
       
  1121 0x0166 #define XK_Tslash              0x3ac
       
  1122 0x0157 #define XK_rcedilla            0x3b3
       
  1123 0x0129 #define XK_itilde              0x3b5
       
  1124 0x013c #define XK_lcedilla            0x3b6
       
  1125 0x0113 #define XK_emacron             0x3ba
       
  1126 0x0123 #define XK_gcedilla            0x3bb
       
  1127 0x0167 #define XK_tslash              0x3bc
       
  1128 0x014a #define XK_ENG                 0x3bd
       
  1129 0x014b #define XK_eng                 0x3bf
       
  1130 0x0100 #define XK_Amacron             0x3c0
       
  1131 0x012e #define XK_Iogonek             0x3c7
       
  1132 0x0116 #define XK_Eabovedot           0x3cc
       
  1133 0x012a #define XK_Imacron             0x3cf
       
  1134 0x0145 #define XK_Ncedilla            0x3d1
       
  1135 0x014c #define XK_Omacron             0x3d2
       
  1136 0x0136 #define XK_Kcedilla            0x3d3
       
  1137 0x0172 #define XK_Uogonek             0x3d9
       
  1138 0x0168 #define XK_Utilde              0x3dd
       
  1139 0x016a #define XK_Umacron             0x3de
       
  1140 0x0101 #define XK_amacron             0x3e0
       
  1141 0x012f #define XK_iogonek             0x3e7
       
  1142 0x0117 #define XK_eabovedot           0x3ec
       
  1143 0x012b #define XK_imacron             0x3ef
       
  1144 0x0146 #define XK_ncedilla            0x3f1
       
  1145 0x014d #define XK_omacron             0x3f2
       
  1146 0x0137 #define XK_kcedilla            0x3f3
       
  1147 0x0173 #define XK_uogonek             0x3f9
       
  1148 0x0169 #define XK_utilde              0x3fd
       
  1149 0x016b #define XK_umacron             0x3fe
       
  1150 #endif /* XK_LATIN4 */
       
  1151 
       
  1152 /*
       
  1153  * Latin-8
       
  1154  * Byte 3 = 18
       
  1155  */
       
  1156 #ifdef XK_LATIN8
       
  1157 0x1e02 #define XK_Babovedot           0x12a1
       
  1158 0x1e03 #define XK_babovedot           0x12a2
       
  1159 0x1e0a #define XK_Dabovedot           0x12a6
       
  1160 0x1e80 #define XK_Wgrave              0x12a8
       
  1161 0x1e82 #define XK_Wacute              0x12aa
       
  1162 0x1e0b #define XK_dabovedot           0x12ab
       
  1163 0x1ef2 #define XK_Ygrave              0x12ac
       
  1164 0x1e1e #define XK_Fabovedot           0x12b0
       
  1165 0x1e1f #define XK_fabovedot           0x12b1
       
  1166 0x1e40 #define XK_Mabovedot           0x12b4
       
  1167 0x1e41 #define XK_mabovedot           0x12b5
       
  1168 0x1e56 #define XK_Pabovedot           0x12b7
       
  1169 0x1e81 #define XK_wgrave              0x12b8
       
  1170 0x1e57 #define XK_pabovedot           0x12b9
       
  1171 0x1e83 #define XK_wacute              0x12ba
       
  1172 0x1e60 #define XK_Sabovedot           0x12bb
       
  1173 0x1ef3 #define XK_ygrave              0x12bc
       
  1174 0x1e84 #define XK_Wdiaeresis          0x12bd
       
  1175 0x1e85 #define XK_wdiaeresis          0x12be
       
  1176 0x1e61 #define XK_sabovedot           0x12bf
       
  1177 0x017 4#define XK_Wcircumflex         0x12d0
       
  1178 0x1e6a #define XK_Tabovedot           0x12d7
       
  1179 0x0176 #define XK_Ycircumflex         0x12de
       
  1180 0x0175 #define XK_wcircumflex         0x12f0
       
  1181 0x1e6b #define XK_tabovedot           0x12f7
       
  1182 0x0177 #define XK_ycircumflex         0x12fe
       
  1183 #endif /* XK_LATIN8 */
       
  1184 
       
  1185 /*
       
  1186  * Latin-9 (a.k.a. Latin-0)
       
  1187  * Byte 3 = 19
       
  1188  */
       
  1189 
       
  1190 #ifdef XK_LATIN9
       
  1191 0x0152 #define XK_OE                  0x13bc
       
  1192 0x0153 #define XK_oe                  0x13bd
       
  1193 0x0178 #define XK_Ydiaeresis          0x13be
       
  1194 #endif /* XK_LATIN9 */
       
  1195 
       
  1196 /*
       
  1197  * Katakana
       
  1198  * Byte 3 = 4
       
  1199  */
       
  1200 
       
  1201 #ifdef XK_KATAKANA
       
  1202 0x203e #define XK_overline                       0x47e
       
  1203 0x3002 #define XK_kana_fullstop                               0x4a1
       
  1204 0x300c #define XK_kana_openingbracket                         0x4a2
       
  1205 0x300d #define XK_kana_closingbracket                         0x4a3
       
  1206 0x3001 #define XK_kana_comma                                  0x4a4
       
  1207 0x30fb #define XK_kana_conjunctive                            0x4a5
       
  1208 0x0000 #define XK_kana_middledot                              0x4a5  /* deprecated */
       
  1209 0x30f2 #define XK_kana_WO                                     0x4a6
       
  1210 0x30a1 #define XK_kana_a                                      0x4a7
       
  1211 0x30a3 #define XK_kana_i                                      0x4a8
       
  1212 0x30a5 #define XK_kana_u                                      0x4a9
       
  1213 0x30a7 #define XK_kana_e                                      0x4aa
       
  1214 0x30a9 #define XK_kana_o                                      0x4ab
       
  1215 0x30e3 #define XK_kana_ya                                     0x4ac
       
  1216 0x30e5 #define XK_kana_yu                                     0x4ad
       
  1217 0x30e7 #define XK_kana_yo                                     0x4ae
       
  1218 0x30c3 #define XK_kana_tsu                                    0x4af
       
  1219 0x0000 #define XK_kana_tu                                     0x4af  /* deprecated */
       
  1220 0x30fc #define XK_prolongedsound                              0x4b0
       
  1221 0x30a2 #define XK_kana_A                                      0x4b1
       
  1222 0x30a4 #define XK_kana_I                                      0x4b2
       
  1223 0x30a6 #define XK_kana_U                                      0x4b3
       
  1224 0x30a8 #define XK_kana_E                                      0x4b4
       
  1225 0x30aa #define XK_kana_O                                      0x4b5
       
  1226 0x30ab #define XK_kana_KA                                     0x4b6
       
  1227 0x30ad #define XK_kana_KI                                     0x4b7
       
  1228 0x30af #define XK_kana_KU                                     0x4b8
       
  1229 0x30b1 #define XK_kana_KE                                     0x4b9
       
  1230 0x30b3 #define XK_kana_KO                                     0x4ba
       
  1231 0x30b5 #define XK_kana_SA                                     0x4bb
       
  1232 0x30b7 #define XK_kana_SHI                                    0x4bc
       
  1233 0x30b9 #define XK_kana_SU                                     0x4bd
       
  1234 0x30bb #define XK_kana_SE                                     0x4be
       
  1235 0x30bd #define XK_kana_SO                                     0x4bf
       
  1236 0x30bf #define XK_kana_TA                                     0x4c0
       
  1237 0x30c1 #define XK_kana_CHI                                    0x4c1
       
  1238 0x0000 #define XK_kana_TI                                     0x4c1  /* deprecated */
       
  1239 0x30c4 #define XK_kana_TSU                                    0x4c2
       
  1240 0x0000 #define XK_kana_TU                                     0x4c2  /* deprecated */
       
  1241 0x30c6 #define XK_kana_TE                                     0x4c3
       
  1242 0x30c8 #define XK_kana_TO                                     0x4c4
       
  1243 0x30ca #define XK_kana_NA                                     0x4c5
       
  1244 0x30cb #define XK_kana_NI                                     0x4c6
       
  1245 0x30cc #define XK_kana_NU                                     0x4c7
       
  1246 0x30cd #define XK_kana_NE                                     0x4c8
       
  1247 0x30ce #define XK_kana_NO                                     0x4c9
       
  1248 0x30cf #define XK_kana_HA                                     0x4ca
       
  1249 0x30d2 #define XK_kana_HI                                     0x4cb
       
  1250 0x30d5 #define XK_kana_FU                                     0x4cc
       
  1251 0x0000 #define XK_kana_HU                                     0x4cc  /* deprecated */
       
  1252 0x30d8 #define XK_kana_HE                                     0x4cd
       
  1253 0x30db #define XK_kana_HO                                     0x4ce
       
  1254 0x30de #define XK_kana_MA                                     0x4cf
       
  1255 0x30df #define XK_kana_MI                                     0x4d0
       
  1256 0x30e0 #define XK_kana_MU                                     0x4d1
       
  1257 0x30e1 #define XK_kana_ME                                     0x4d2
       
  1258 0x30e2 #define XK_kana_MO                                     0x4d3
       
  1259 0x30e4 #define XK_kana_YA                                     0x4d4
       
  1260 0x30e6 #define XK_kana_YU                                     0x4d5
       
  1261 0x30e8 #define XK_kana_YO                                     0x4d6
       
  1262 0x30e9 #define XK_kana_RA                                     0x4d7
       
  1263 0x30ea #define XK_kana_RI                                     0x4d8
       
  1264 0x30eb #define XK_kana_RU                                     0x4d9
       
  1265 0x30ec #define XK_kana_RE                                     0x4da
       
  1266 0x30ed #define XK_kana_RO                                     0x4db
       
  1267 0x30ef #define XK_kana_WA                                     0x4dc
       
  1268 0x30f3 #define XK_kana_N                                      0x4dd
       
  1269 0x309b #define XK_voicedsound                                 0x4de
       
  1270 0x309c #define XK_semivoicedsound                             0x4df
       
  1271 0x0000 #define XK_kana_switch          0xFF7E  /* Alias for mode_switch */
       
  1272 #endif /* XK_KATAKANA */
       
  1273 
       
  1274 /*
       
  1275  *  Arabic
       
  1276  *  Byte 3 = 5
       
  1277  */
       
  1278 
       
  1279 #ifdef XK_ARABIC
       
  1280 0x0670 #define XK_Farsi_0                                     0x590
       
  1281 0x06f1 #define XK_Farsi_1                                     0x591
       
  1282 0x06f2 #define XK_Farsi_2                                     0x592
       
  1283 0x06f3 #define XK_Farsi_3                                     0x593
       
  1284 0x06f4 #define XK_Farsi_4                                     0x594
       
  1285 0x06f5 #define XK_Farsi_5                                     0x595
       
  1286 0x06f6 #define XK_Farsi_6                                     0x596
       
  1287 0x06f7 #define XK_Farsi_7                                     0x597
       
  1288 0x06f8 #define XK_Farsi_8                                     0x598
       
  1289 0x06f9 #define XK_Farsi_9                                     0x599
       
  1290 0x066a #define XK_Arabic_percent                              0x5a5
       
  1291 0x0670 #define XK_Arabic_superscript_alef                     0x5a6
       
  1292 0x0679 #define XK_Arabic_tteh                                 0x5a7
       
  1293 0x067e #define XK_Arabic_peh                                  0x5a8
       
  1294 0x0686 #define XK_Arabic_tcheh                                0x5a9
       
  1295 0x0688 #define XK_Arabic_ddal                                 0x5aa
       
  1296 0x0691 #define XK_Arabic_rreh                                 0x5ab
       
  1297 0x060c #define XK_Arabic_comma                                0x5ac
       
  1298 0x06d4 #define XK_Arabic_fullstop                             0x5ae
       
  1299 0x0660 #define XK_Arabic_0                                    0x5b0
       
  1300 0x0661 #define XK_Arabic_1                                    0x5b1
       
  1301 0x0662 #define XK_Arabic_2                                    0x5b2
       
  1302 0x0663 #define XK_Arabic_3                                    0x5b3
       
  1303 0x0664 #define XK_Arabic_4                                    0x5b4
       
  1304 0x0665 #define XK_Arabic_5                                    0x5b5
       
  1305 0x0666 #define XK_Arabic_6                                    0x5b6
       
  1306 0x0667 #define XK_Arabic_7                                    0x5b7
       
  1307 0x0668 #define XK_Arabic_8                                    0x5b8
       
  1308 0x0669 #define XK_Arabic_9                                    0x5b9
       
  1309 0x061b #define XK_Arabic_semicolon                            0x5bb
       
  1310 0x061f #define XK_Arabic_question_mark                        0x5bf
       
  1311 0x0621 #define XK_Arabic_hamza                                0x5c1
       
  1312 0x0622 #define XK_Arabic_maddaonalef                          0x5c2
       
  1313 0x0623 #define XK_Arabic_hamzaonalef                          0x5c3
       
  1314 0x0624 #define XK_Arabic_hamzaonwaw                           0x5c4
       
  1315 0x0625 #define XK_Arabic_hamzaunderalef                       0x5c5
       
  1316 0x0626 #define XK_Arabic_hamzaonyeh                           0x5c6
       
  1317 0x0627 #define XK_Arabic_alef                                 0x5c7
       
  1318 0x0628 #define XK_Arabic_beh                                  0x5c8
       
  1319 0x0629 #define XK_Arabic_tehmarbuta                           0x5c9
       
  1320 0x062a #define XK_Arabic_teh                                  0x5ca
       
  1321 0x062b #define XK_Arabic_theh                                 0x5cb
       
  1322 0x062c #define XK_Arabic_jeem                                 0x5cc
       
  1323 0x062d #define XK_Arabic_hah                                  0x5cd
       
  1324 0x062e #define XK_Arabic_khah                                 0x5ce
       
  1325 0x062f #define XK_Arabic_dal                                  0x5cf
       
  1326 0x0630 #define XK_Arabic_thal                                 0x5d0
       
  1327 0x0631 #define XK_Arabic_ra                                   0x5d1
       
  1328 0x0632 #define XK_Arabic_zain                                 0x5d2
       
  1329 0x0633 #define XK_Arabic_seen                                 0x5d3
       
  1330 0x0634 #define XK_Arabic_sheen                                0x5d4
       
  1331 0x0635 #define XK_Arabic_sad                                  0x5d5
       
  1332 0x0636 #define XK_Arabic_dad                                  0x5d6
       
  1333 0x0637 #define XK_Arabic_tah                                  0x5d7
       
  1334 0x0638 #define XK_Arabic_zah                                  0x5d8
       
  1335 0x0639 #define XK_Arabic_ain                                  0x5d9
       
  1336 0x063a #define XK_Arabic_ghain                                0x5da
       
  1337 0x0640 #define XK_Arabic_tatweel                              0x5e0
       
  1338 0x0641 #define XK_Arabic_feh                                  0x5e1
       
  1339 0x0642 #define XK_Arabic_qaf                                  0x5e2
       
  1340 0x0643 #define XK_Arabic_kaf                                  0x5e3
       
  1341 0x0644 #define XK_Arabic_lam                                  0x5e4
       
  1342 0x0645 #define XK_Arabic_meem                                 0x5e5
       
  1343 0x0646 #define XK_Arabic_noon                                 0x5e6
       
  1344 0x0647 #define XK_Arabic_ha                                   0x5e7
       
  1345 0x0000 #define XK_Arabic_heh                                  0x5e7  /* deprecated */
       
  1346 0x0648 #define XK_Arabic_waw                                  0x5e8
       
  1347 0x0649 #define XK_Arabic_alefmaksura                          0x5e9
       
  1348 0x064a #define XK_Arabic_yeh                                  0x5ea
       
  1349 0x064b #define XK_Arabic_fathatan                             0x5eb
       
  1350 0x064c #define XK_Arabic_dammatan                             0x5ec
       
  1351 0x064d #define XK_Arabic_kasratan                             0x5ed
       
  1352 0x064e #define XK_Arabic_fatha                                0x5ee
       
  1353 0x064f #define XK_Arabic_damma                                0x5ef
       
  1354 0x0650 #define XK_Arabic_kasra                                0x5f0
       
  1355 0x0651 #define XK_Arabic_shadda                               0x5f1
       
  1356 0x0652 #define XK_Arabic_sukun                                0x5f2
       
  1357 0x0653 #define XK_Arabic_madda_above                          0x5f3
       
  1358 0x0654 #define XK_Arabic_hamza_above                          0x5f4
       
  1359 0x0655 #define XK_Arabic_hamza_below                          0x5f5
       
  1360 0x0698 #define XK_Arabic_jeh                                  0x5f6
       
  1361 0x06a4 #define XK_Arabic_veh                                  0x5f7
       
  1362 0x06a9 #define XK_Arabic_keheh                                0x5f8
       
  1363 0x06af #define XK_Arabic_gaf                                  0x5f9
       
  1364 0x06ba #define XK_Arabic_noon_ghunna                          0x5fa
       
  1365 0x06be #define XK_Arabic_heh_doachashmee                      0x5fb
       
  1366 0x06cc #define XK_Farsi_yeh                                   0x5fc
       
  1367 0x06d2 #define XK_Arabic_yeh_baree                            0x5fd
       
  1368 0x06c1 #define XK_Arabic_heh_goal                             0x5fe
       
  1369 0x0000 #define XK_Arabic_switch        0xFF7E  /* Alias for mode_switch */
       
  1370 #endif /* XK_ARABIC */
       
  1371 
       
  1372 /*
       
  1373  * Cyrillic
       
  1374  * Byte 3 = 6
       
  1375  */
       
  1376 #ifdef XK_CYRILLIC
       
  1377 0x0492 #define XK_Cyrillic_GHE_bar                               0x680
       
  1378 0x0493 #define XK_Cyrillic_ghe_bar                               0x690
       
  1379 0x0496 #define XK_Cyrillic_ZHE_descender                       0x681
       
  1380 0x0497 #define XK_Cyrillic_zhe_descender                       0x691
       
  1381 0x049a #define XK_Cyrillic_KA_descender                   0x682
       
  1382 0x049b #define XK_Cyrillic_ka_descender                       0x692
       
  1383 0x049c #define XK_Cyrillic_KA_vertstroke                   0x683
       
  1384 0x049d #define XK_Cyrillic_ka_vertstroke                   0x693
       
  1385 0x04a2 #define XK_Cyrillic_EN_descender                   0x684
       
  1386 0x04a3 #define XK_Cyrillic_en_descender                   0x694
       
  1387 0x04ae #define XK_Cyrillic_U_straight                       0x685
       
  1388 0x04af #define XK_Cyrillic_u_straight                       0x695
       
  1389 0x04b0 #define XK_Cyrillic_U_straight_bar                   0x686
       
  1390 0x04b1 #define XK_Cyrillic_u_straight_bar                   0x696
       
  1391 0x04b2 #define XK_Cyrillic_HA_descender                       0x687
       
  1392 0x04b3 #define XK_Cyrillic_ha_descender                       0x697
       
  1393 0x04b6 #define XK_Cyrillic_CHE_descender                       0x688
       
  1394 0x04b7 #define XK_Cyrillic_che_descender                       0x698
       
  1395 0x04b8 #define XK_Cyrillic_CHE_vertstroke                       0x689
       
  1396 0x04b9 #define XK_Cyrillic_che_vertstroke                       0x699
       
  1397 0x04ba #define XK_Cyrillic_SHHA                               0x68a
       
  1398 0x04bb #define XK_Cyrillic_shha                               0x69a
       
  1399 
       
  1400 0x04d8 #define XK_Cyrillic_SCHWA                               0x68c
       
  1401 0x04d9 #define XK_Cyrillic_schwa                               0x69c
       
  1402 0x04e2 #define XK_Cyrillic_I_macron                           0x68d
       
  1403 0x04e3 #define XK_Cyrillic_i_macron                           0x69d
       
  1404 0x04e8 #define XK_Cyrillic_O_bar                               0x68e
       
  1405 0x04e9 #define XK_Cyrillic_o_bar                               0x69e
       
  1406 0x04ee #define XK_Cyrillic_U_macron                           0x68f
       
  1407 0x04ef #define XK_Cyrillic_u_macron                           0x69f
       
  1408 
       
  1409 0x0452 #define XK_Serbian_dje                                 0x6a1
       
  1410 0x0453 #define XK_Macedonia_gje                               0x6a2
       
  1411 0x0451 #define XK_Cyrillic_io                                 0x6a3
       
  1412 0x0454 #define XK_Ukrainian_ie                                0x6a4
       
  1413 0x0000 #define XK_Ukranian_je                                 0x6a4  /* deprecated */
       
  1414 0x0455 #define XK_Macedonia_dse                               0x6a5
       
  1415 0x0456 #define XK_Ukrainian_i                                 0x6a6
       
  1416 0x0000 #define XK_Ukranian_i                                  0x6a6  /* deprecated */
       
  1417 0x0457 #define XK_Ukrainian_yi                                0x6a7
       
  1418 0x0000 #define XK_Ukranian_yi                                 0x6a7  /* deprecated */
       
  1419 0x0458 #define XK_Cyrillic_je                                 0x6a8
       
  1420 0x0000 #define XK_Serbian_je                                  0x6a8  /* deprecated */
       
  1421 0x0459 #define XK_Cyrillic_lje                                0x6a9
       
  1422 0x0000 #define XK_Serbian_lje                                 0x6a9  /* deprecated */
       
  1423 0x045a #define XK_Cyrillic_nje                                0x6aa
       
  1424 0x0000 #define XK_Serbian_nje                                 0x6aa  /* deprecated */
       
  1425 0x045b #define XK_Serbian_tshe                                0x6ab
       
  1426 0x045c #define XK_Macedonia_kje                               0x6ac
       
  1427 0x0491 #define XK_Ukrainian_ghe_with_upturn                   0x6ad
       
  1428 0x045e #define XK_Byelorussian_shortu                         0x6ae
       
  1429 0x045f #define XK_Cyrillic_dzhe                               0x6af
       
  1430 0x0000 #define XK_Serbian_dze                                 0x6af  /* deprecated */
       
  1431 0x2116 #define XK_numerosign                                  0x6b0
       
  1432 0x0402 #define XK_Serbian_DJE                                 0x6b1
       
  1433 0x0403 #define XK_Macedonia_GJE                               0x6b2
       
  1434 0x0401 #define XK_Cyrillic_IO                                 0x6b3
       
  1435 0x0404 #define XK_Ukrainian_IE                                0x6b4
       
  1436 0x0000 #define XK_Ukranian_JE                                 0x6b4  /* deprecated */
       
  1437 0x0405 #define XK_Macedonia_DSE                               0x6b5
       
  1438 0x0406 #define XK_Ukrainian_I                                 0x6b6
       
  1439 0x0000 #define XK_Ukranian_I                                  0x6b6  /* deprecated */
       
  1440 0x0407 #define XK_Ukrainian_YI                                0x6b7
       
  1441 0x0000 #define XK_Ukranian_YI                                 0x6b7  /* deprecated */
       
  1442 0x0408 #define XK_Cyrillic_JE                                 0x6b8
       
  1443 0x0000 #define XK_Serbian_JE                                  0x6b8  /* deprecated */
       
  1444 0x0409 #define XK_Cyrillic_LJE                                0x6b9
       
  1445 0x0000 #define XK_Serbian_LJE                                 0x6b9  /* deprecated */
       
  1446 0x040a #define XK_Cyrillic_NJE                                0x6ba
       
  1447 0x0000 #define XK_Serbian_NJE                                 0x6ba  /* deprecated */
       
  1448 0x040b #define XK_Serbian_TSHE                                0x6bb
       
  1449 0x040c #define XK_Macedonia_KJE                               0x6bc
       
  1450 0x0490 #define XK_Ukrainian_GHE_WITH_UPTURN                   0x6bd
       
  1451 0x040e #define XK_Byelorussian_SHORTU                         0x6be
       
  1452 0x040f #define XK_Cyrillic_DZHE                               0x6bf
       
  1453 0x0000 #define XK_Serbian_DZE                                 0x6bf  /* deprecated */
       
  1454 0x044e #define XK_Cyrillic_yu                                 0x6c0
       
  1455 0x0430 #define XK_Cyrillic_a                                  0x6c1
       
  1456 0x0431 #define XK_Cyrillic_be                                 0x6c2
       
  1457 0x0446 #define XK_Cyrillic_tse                                0x6c3
       
  1458 0x0434 #define XK_Cyrillic_de                                 0x6c4
       
  1459 0x0435 #define XK_Cyrillic_ie                                 0x6c5
       
  1460 0x0444 #define XK_Cyrillic_ef                                 0x6c6
       
  1461 0x0433 #define XK_Cyrillic_ghe                                0x6c7
       
  1462 0x0445 #define XK_Cyrillic_ha                                 0x6c8
       
  1463 0x0438 #define XK_Cyrillic_i                                  0x6c9
       
  1464 0x0439 #define XK_Cyrillic_shorti                             0x6ca
       
  1465 0x043a #define XK_Cyrillic_ka                                 0x6cb
       
  1466 0x043b #define XK_Cyrillic_el                                 0x6cc
       
  1467 0x043c #define XK_Cyrillic_em                                 0x6cd
       
  1468 0x043d #define XK_Cyrillic_en                                 0x6ce
       
  1469 0x043e #define XK_Cyrillic_o                                  0x6cf
       
  1470 0x043f #define XK_Cyrillic_pe                                 0x6d0
       
  1471 0x044f #define XK_Cyrillic_ya                                 0x6d1
       
  1472 0x0440 #define XK_Cyrillic_er                                 0x6d2
       
  1473 0x0441 #define XK_Cyrillic_es                                 0x6d3
       
  1474 0x0442 #define XK_Cyrillic_te                                 0x6d4
       
  1475 0x0443 #define XK_Cyrillic_u                                  0x6d5
       
  1476 0x0436 #define XK_Cyrillic_zhe                                0x6d6
       
  1477 0x0432 #define XK_Cyrillic_ve                                 0x6d7
       
  1478 0x044c #define XK_Cyrillic_softsign                           0x6d8
       
  1479 0x044b #define XK_Cyrillic_yeru                               0x6d9
       
  1480 0x0437 #define XK_Cyrillic_ze                                 0x6da
       
  1481 0x0448 #define XK_Cyrillic_sha                                0x6db
       
  1482 0x044d #define XK_Cyrillic_e                                  0x6dc
       
  1483 0x0449 #define XK_Cyrillic_shcha                              0x6dd
       
  1484 0x0447 #define XK_Cyrillic_che                                0x6de
       
  1485 0x044a #define XK_Cyrillic_hardsign                           0x6df
       
  1486 0x042e #define XK_Cyrillic_YU                                 0x6e0
       
  1487 0x0410 #define XK_Cyrillic_A                                  0x6e1
       
  1488 0x0411 #define XK_Cyrillic_BE                                 0x6e2
       
  1489 0x0426 #define XK_Cyrillic_TSE                                0x6e3
       
  1490 0x0414 #define XK_Cyrillic_DE                                 0x6e4
       
  1491 0x0415 #define XK_Cyrillic_IE                                 0x6e5
       
  1492 0x0424 #define XK_Cyrillic_EF                                 0x6e6
       
  1493 0x0413 #define XK_Cyrillic_GHE                                0x6e7
       
  1494 0x0425 #define XK_Cyrillic_HA                                 0x6e8
       
  1495 0x0418 #define XK_Cyrillic_I                                  0x6e9
       
  1496 0x0419 #define XK_Cyrillic_SHORTI                             0x6ea
       
  1497 0x041a #define XK_Cyrillic_KA                                 0x6eb
       
  1498 0x041b #define XK_Cyrillic_EL                                 0x6ec
       
  1499 0x041c #define XK_Cyrillic_EM                                 0x6ed
       
  1500 0x041d #define XK_Cyrillic_EN                                 0x6ee
       
  1501 0x041e #define XK_Cyrillic_O                                  0x6ef
       
  1502 0x041f #define XK_Cyrillic_PE                                 0x6f0
       
  1503 0x042f #define XK_Cyrillic_YA                                 0x6f1
       
  1504 0x0420 #define XK_Cyrillic_ER                                 0x6f2
       
  1505 0x0421 #define XK_Cyrillic_ES                                 0x6f3
       
  1506 0x0422 #define XK_Cyrillic_TE                                 0x6f4
       
  1507 0x0423 #define XK_Cyrillic_U                                  0x6f5
       
  1508 0x0416 #define XK_Cyrillic_ZHE                                0x6f6
       
  1509 0x0412 #define XK_Cyrillic_VE                                 0x6f7
       
  1510 0x042c #define XK_Cyrillic_SOFTSIGN                           0x6f8
       
  1511 0x042b #define XK_Cyrillic_YERU                               0x6f9
       
  1512 0x0417 #define XK_Cyrillic_ZE                                 0x6fa
       
  1513 0x0428 #define XK_Cyrillic_SHA                                0x6fb
       
  1514 0x042d #define XK_Cyrillic_E                                  0x6fc
       
  1515 0x0429 #define XK_Cyrillic_SHCHA                              0x6fd
       
  1516 0x0427 #define XK_Cyrillic_CHE                                0x6fe
       
  1517 0x042a #define XK_Cyrillic_HARDSIGN                           0x6ff
       
  1518 #endif /* XK_CYRILLIC */
       
  1519 
       
  1520 /*
       
  1521  * Greek
       
  1522  * Byte 3 = 7
       
  1523  */
       
  1524 
       
  1525 #ifdef XK_GREEK
       
  1526 0x0386 #define XK_Greek_ALPHAaccent                           0x7a1
       
  1527 0x0388 #define XK_Greek_EPSILONaccent                         0x7a2
       
  1528 0x0389 #define XK_Greek_ETAaccent                             0x7a3
       
  1529 0x038a #define XK_Greek_IOTAaccent                            0x7a4
       
  1530 0x03aa #define XK_Greek_IOTAdieresis                          0x7a5
       
  1531 0x0000 #define XK_Greek_IOTAdiaeresis         XK_Greek_IOTAdieresis /* old typo */
       
  1532 0x038c #define XK_Greek_OMICRONaccent                         0x7a7
       
  1533 0x038e #define XK_Greek_UPSILONaccent                         0x7a8
       
  1534 0x03ab  #define XK_Greek_UPSILONdieresis                       0x7a9
       
  1535 0x038f #define XK_Greek_OMEGAaccent                           0x7ab
       
  1536 0x0385 #define XK_Greek_accentdieresis                        0x7ae
       
  1537 0x2015 #define XK_Greek_horizbar                              0x7af
       
  1538 0x03ac #define XK_Greek_alphaaccent                           0x7b1
       
  1539 0x03ad #define XK_Greek_epsilonaccent                         0x7b2
       
  1540 0x03ae #define XK_Greek_etaaccent                             0x7b3
       
  1541 0x03af #define XK_Greek_iotaaccent                            0x7b4
       
  1542 0x03ca #define XK_Greek_iotadieresis                          0x7b5
       
  1543 0x0390 #define XK_Greek_iotaaccentdieresis                    0x7b6
       
  1544 0x03cc #define XK_Greek_omicronaccent                         0x7b7
       
  1545 0x03cd #define XK_Greek_upsilonaccent                         0x7b8
       
  1546 0x03cb #define XK_Greek_upsilondieresis                       0x7b9
       
  1547 0x03b0 #define XK_Greek_upsilonaccentdieresis                 0x7ba
       
  1548 0x03ce #define XK_Greek_omegaaccent                           0x7bb
       
  1549 0x0391 #define XK_Greek_ALPHA                                 0x7c1
       
  1550 0x0392 #define XK_Greek_BETA                                  0x7c2
       
  1551 0x0393 #define XK_Greek_GAMMA                                 0x7c3
       
  1552 0x0394 #define XK_Greek_DELTA                                 0x7c4
       
  1553 0x0395 #define XK_Greek_EPSILON                               0x7c5
       
  1554 0x0396 #define XK_Greek_ZETA                                  0x7c6
       
  1555 0x0397 #define XK_Greek_ETA                                   0x7c7
       
  1556 0x0398 #define XK_Greek_THETA                                 0x7c8
       
  1557 0x0399 #define XK_Greek_IOTA                                  0x7c9
       
  1558 0x039a #define XK_Greek_KAPPA                                 0x7ca
       
  1559 0x0000 #define XK_Greek_LAMDA                                 0x7cb
       
  1560 0x039b #define XK_Greek_LAMBDA                                0x7cb
       
  1561 0x039c #define XK_Greek_MU                                    0x7cc
       
  1562 0x039d #define XK_Greek_NU                                    0x7cd
       
  1563 0x039e #define XK_Greek_XI                                    0x7ce
       
  1564 0x039f #define XK_Greek_OMICRON                               0x7cf
       
  1565 0x03a0 #define XK_Greek_PI                                    0x7d0
       
  1566 0x03a1 #define XK_Greek_RHO                                   0x7d1
       
  1567 0x03a3 #define XK_Greek_SIGMA                                 0x7d2
       
  1568 0x03a4 #define XK_Greek_TAU                                   0x7d4
       
  1569 0x03a5 #define XK_Greek_UPSILON                               0x7d5
       
  1570 0x03a6 #define XK_Greek_PHI                                   0x7d6
       
  1571 0x03a7 #define XK_Greek_CHI                                   0x7d7
       
  1572 0x03a8 #define XK_Greek_PSI                                   0x7d8
       
  1573 0x03a9 #define XK_Greek_OMEGA                                 0x7d9
       
  1574 0x03b1 #define XK_Greek_alpha                                 0x7e1
       
  1575 0x03b2 #define XK_Greek_beta                                  0x7e2
       
  1576 0x03b3 #define XK_Greek_gamma                                 0x7e3
       
  1577 0x03b4 #define XK_Greek_delta                                 0x7e4
       
  1578 0x03b5 #define XK_Greek_epsilon                               0x7e5
       
  1579 0x03b6 #define XK_Greek_zeta                                  0x7e6
       
  1580 0x03b7 #define XK_Greek_eta                                   0x7e7
       
  1581 0x03b8 #define XK_Greek_theta                                 0x7e8
       
  1582 0x03b9 #define XK_Greek_iota                                  0x7e9
       
  1583 0x03ba #define XK_Greek_kappa                                 0x7ea
       
  1584 0x0000 #define XK_Greek_lamda                                 0x7eb
       
  1585 0x03bb #define XK_Greek_lambda                                0x7eb
       
  1586 0x03bc #define XK_Greek_mu                                    0x7ec
       
  1587 0x03bd #define XK_Greek_nu                                    0x7ed
       
  1588 0x03be #define XK_Greek_xi                                    0x7ee
       
  1589 0x03bf #define XK_Greek_omicron                               0x7ef
       
  1590 0x03c0 #define XK_Greek_pi                                    0x7f0
       
  1591 0x03c1 #define XK_Greek_rho                                   0x7f1
       
  1592 0x03c3 #define XK_Greek_sigma                                 0x7f2
       
  1593 0x03c2 #define XK_Greek_finalsmallsigma                       0x7f3
       
  1594 0x03c4 #define XK_Greek_tau                                   0x7f4
       
  1595 0x03c5 #define XK_Greek_upsilon                               0x7f5
       
  1596 0x03c6 #define XK_Greek_phi                                   0x7f6
       
  1597 0x03c7 #define XK_Greek_chi                                   0x7f7
       
  1598 0x03c8 #define XK_Greek_psi                                   0x7f8
       
  1599 0x03c9 #define XK_Greek_omega                                 0x7f9
       
  1600 0x0000 #define XK_Greek_switch         0xFF7E  /* Alias for mode_switch */
       
  1601 #endif /* XK_GREEK */
       
  1602 
       
  1603 /*
       
  1604  * Technical
       
  1605  * Byte 3 = 8
       
  1606  */
       
  1607 
       
  1608 #ifdef XK_TECHNICAL
       
  1609 0x23b7 #define XK_leftradical                                 0x8a1
       
  1610 0x250c #define XK_topleftradical                              0x8a2
       
  1611 0x2500 #define XK_horizconnector                              0x8a3
       
  1612 0x2320 #define XK_topintegral                                 0x8a4
       
  1613 0x2321 #define XK_botintegral                                 0x8a5
       
  1614 0x2502 #define XK_vertconnector                               0x8a6
       
  1615 0x23a1 #define XK_topleftsqbracket                            0x8a7
       
  1616 0x23a3 #define XK_botleftsqbracket                            0x8a8
       
  1617 0x23a4 #define XK_toprightsqbracket                           0x8a9
       
  1618 0x23a6 #define XK_botrightsqbracket                           0x8aa
       
  1619 0x239b #define XK_topleftparens                               0x8ab
       
  1620 0x239d #define XK_botleftparens                               0x8ac
       
  1621 0x239e #define XK_toprightparens                              0x8ad
       
  1622 0x23a0 #define XK_botrightparens                              0x8ae
       
  1623 0x23a8 #define XK_leftmiddlecurlybrace                        0x8af
       
  1624 0x23ac #define XK_rightmiddlecurlybrace                       0x8b0
       
  1625 0x0000 #define XK_topleftsummation                            0x8b1
       
  1626 0x0000 #define XK_botleftsummation                            0x8b2
       
  1627 0x0000 #define XK_topvertsummationconnector                   0x8b3
       
  1628 0x0000 #define XK_botvertsummationconnector                   0x8b4
       
  1629 0x0000 #define XK_toprightsummation                           0x8b5
       
  1630 0x0000 #define XK_botrightsummation                           0x8b6
       
  1631 0x0000 #define XK_rightmiddlesummation                        0x8b7
       
  1632 0x2264 #define XK_lessthanequal                               0x8bc
       
  1633 0x2260 #define XK_notequal                                    0x8bd
       
  1634 0x2265 #define XK_greaterthanequal                            0x8be
       
  1635 0x222b #define XK_integral                                    0x8bf
       
  1636 0x2234 #define XK_therefore                                   0x8c0
       
  1637 0x221d #define XK_variation                                   0x8c1
       
  1638 0x221e #define XK_infinity                                    0x8c2
       
  1639 0x2207 #define XK_nabla                                       0x8c5
       
  1640 0x223c #define XK_approximate                                 0x8c8
       
  1641 0x2243 #define XK_similarequal                                0x8c9
       
  1642 0x2104 #define XK_ifonlyif                                    0x8cd
       
  1643 0x21d2 #define XK_implies                                     0x8ce
       
  1644 0x2261 #define XK_identical                                   0x8cf
       
  1645 0x221a #define XK_radical                                     0x8d6
       
  1646 0x2282 #define XK_includedin                                  0x8da
       
  1647 0x2283 #define XK_includes                                    0x8db
       
  1648 0x2229 #define XK_intersection                                0x8dc
       
  1649 0x222a #define XK_union                                       0x8dd
       
  1650 0x2227 #define XK_logicaland                                  0x8de
       
  1651 0x2228 #define XK_logicalor                                   0x8df
       
  1652 0x2202 #define XK_partialderivative                           0x8ef
       
  1653 0x0192 #define XK_function                                    0x8f6
       
  1654 0x2190 #define XK_leftarrow                                   0x8fb
       
  1655 0x2191 #define XK_uparrow                                     0x8fc
       
  1656 0x2192 #define XK_rightarrow                                  0x8fd
       
  1657 0x2193 #define XK_downarrow                                   0x8fe
       
  1658 #endif /* XK_TECHNICAL */
       
  1659 
       
  1660 /*
       
  1661  *  Special
       
  1662  *  Byte 3 = 9
       
  1663  */
       
  1664 
       
  1665 #ifdef XK_SPECIAL
       
  1666 0x0000 #define XK_blank                                       0x9df
       
  1667 0x25c6 #define XK_soliddiamond                                0x9e0
       
  1668 0x2592 #define XK_checkerboard                                0x9e1
       
  1669 0x2409 #define XK_ht                                          0x9e2
       
  1670 0x240c #define XK_ff                                          0x9e3
       
  1671 0x240d #define XK_cr                                          0x9e4
       
  1672 0x240a #define XK_lf                                          0x9e5
       
  1673 0x2424 #define XK_nl                                          0x9e8
       
  1674 0x240b #define XK_vt                                          0x9e9
       
  1675 0x2518 #define XK_lowrightcorner                              0x9ea
       
  1676 0x2510 #define XK_uprightcorner                               0x9eb
       
  1677 0x250c #define XK_upleftcorner                                0x9ec
       
  1678 0x2514 #define XK_lowleftcorner                               0x9ed
       
  1679 0x253c #define XK_crossinglines                               0x9ee
       
  1680 0x23ba #define XK_horizlinescan1                              0x9ef
       
  1681 0x23bb #define XK_horizlinescan3                              0x9f0
       
  1682 0x2500 #define XK_horizlinescan5                              0x9f1
       
  1683 0x23bc #define XK_horizlinescan7                              0x9f2
       
  1684 0x23bd #define XK_horizlinescan9                              0x9f3
       
  1685 0x251c #define XK_leftt                                       0x9f4
       
  1686 0x2524 #define XK_rightt                                      0x9f5
       
  1687 0x2534 #define XK_bott                                        0x9f6
       
  1688 0x252c #define XK_topt                                        0x9f7
       
  1689 0x2502 #define XK_vertbar                                     0x9f8
       
  1690 #endif /* XK_SPECIAL */
       
  1691 
       
  1692 /*
       
  1693  *  Publishing
       
  1694  *  Byte 3 = a
       
  1695  */
       
  1696 
       
  1697 #ifdef XK_PUBLISHING
       
  1698 0x2003 #define XK_emspace                                     0xaa1
       
  1699 0x2002 #define XK_enspace                                     0xaa2
       
  1700 0x2004 #define XK_em3space                                    0xaa3
       
  1701 0x2005 #define XK_em4space                                    0xaa4
       
  1702 0x2007 #define XK_digitspace                                  0xaa5
       
  1703 0x2008 #define XK_punctspace                                  0xaa6
       
  1704 0x2009 #define XK_thinspace                                   0xaa7
       
  1705 0x200a #define XK_hairspace                                   0xaa8
       
  1706 0x2014 #define XK_emdash                                      0xaa9
       
  1707 0x2013 #define XK_endash                                      0xaaa
       
  1708 0x2423 #define XK_signifblank                                 0xaac
       
  1709 0x2026 #define XK_ellipsis                                    0xaae
       
  1710 0x2025 #define XK_doubbaselinedot                             0xaaf
       
  1711 0x2153 #define XK_onethird                                    0xab0
       
  1712 0x2154 #define XK_twothirds                                   0xab1
       
  1713 0x2155 #define XK_onefifth                                    0xab2
       
  1714 0x2156 #define XK_twofifths                                   0xab3
       
  1715 0x2157 #define XK_threefifths                                 0xab4
       
  1716 0x2158 #define XK_fourfifths                                  0xab5
       
  1717 0x2159 #define XK_onesixth                                    0xab6
       
  1718 0x215a #define XK_fivesixths                                  0xab7
       
  1719 0x2105 #define XK_careof                                      0xab8
       
  1720 0x2012 #define XK_figdash                                     0xabb
       
  1721 0x27e8 #define XK_leftanglebracket                            0xabc
       
  1722 0x002e #define XK_decimalpoint                                0xabd
       
  1723 0x27e9 #define XK_rightanglebracket                           0xabe
       
  1724 0x0000 #define XK_marker                                      0xabf
       
  1725 0x215b #define XK_oneeighth                                   0xac3
       
  1726 0x215c #define XK_threeeighths                                0xac4
       
  1727 0x215d #define XK_fiveeighths                                 0xac5
       
  1728 0x215e #define XK_seveneighths                                0xac6
       
  1729 0x2122 #define XK_trademark                                   0xac9
       
  1730 0x2613 #define XK_signaturemark                               0xaca
       
  1731 0x0000 #define XK_trademarkincircle                           0xacb
       
  1732 0x25c1 #define XK_leftopentriangle                            0xacc
       
  1733 0x25b7 #define XK_rightopentriangle                           0xacd
       
  1734 0x25cb #define XK_emopencircle                                0xace
       
  1735 0x25af #define XK_emopenrectangle                             0xacf
       
  1736 0x2018 #define XK_leftsinglequotemark                         0xad0
       
  1737 0x2019 #define XK_rightsinglequotemark                        0xad1
       
  1738 0x201c #define XK_leftdoublequotemark                         0xad2
       
  1739 0x201d #define XK_rightdoublequotemark                        0xad3
       
  1740 0x211e #define XK_prescription                                0xad4
       
  1741 0x2032 #define XK_minutes                                     0xad6
       
  1742 0x2033 #define XK_seconds                                     0xad7
       
  1743 0x271d #define XK_latincross                                  0xad9
       
  1744 0x0000 #define XK_hexagram                                    0xada
       
  1745 0x25ac #define XK_filledrectbullet                            0xadb
       
  1746 0x25c0 #define XK_filledlefttribullet                         0xadc
       
  1747 0x25b6 #define XK_filledrighttribullet                        0xadd
       
  1748 0x25cf #define XK_emfilledcircle                              0xade
       
  1749 0x25ae #define XK_emfilledrect                                0xadf
       
  1750 0x25e6 #define XK_enopencircbullet                            0xae0
       
  1751 0x25ab #define XK_enopensquarebullet                          0xae1
       
  1752 0x25ad #define XK_openrectbullet                              0xae2
       
  1753 0x25b3 #define XK_opentribulletup                             0xae3
       
  1754 0x25bd #define XK_opentribulletdown                           0xae4
       
  1755 0x2606 #define XK_openstar                                    0xae5
       
  1756 0x2022 #define XK_enfilledcircbullet                          0xae6
       
  1757 0x25aa #define XK_enfilledsqbullet                            0xae7
       
  1758 0x25b2 #define XK_filledtribulletup                           0xae8
       
  1759 0x25bc #define XK_filledtribulletdown                         0xae9
       
  1760 0x261c #define XK_leftpointer                                 0xaea
       
  1761 0x261e #define XK_rightpointer                                0xaeb
       
  1762 0x2663 #define XK_club                                        0xaec
       
  1763 0x2666 #define XK_diamond                                     0xaed
       
  1764 0x2665 #define XK_heart                                       0xaee
       
  1765 0x2720 #define XK_maltesecross                                0xaf0
       
  1766 0x2020 #define XK_dagger                                      0xaf1
       
  1767 0x2021 #define XK_doubledagger                                0xaf2
       
  1768 0x2713 #define XK_checkmark                                   0xaf3
       
  1769 0x2717 #define XK_ballotcross                                 0xaf4
       
  1770 0x266f #define XK_musicalsharp                                0xaf5
       
  1771 0x266d #define XK_musicalflat                                 0xaf6
       
  1772 0x2642 #define XK_malesymbol                                  0xaf7
       
  1773 0x2640 #define XK_femalesymbol                                0xaf8
       
  1774 0x260e #define XK_telephone                                   0xaf9
       
  1775 0x2315 #define XK_telephonerecorder                           0xafa
       
  1776 0x2117 #define XK_phonographcopyright                         0xafb
       
  1777 0x2038 #define XK_caret                                       0xafc
       
  1778 0x201a #define XK_singlelowquotemark                          0xafd
       
  1779 0x201e #define XK_doublelowquotemark                          0xafe
       
  1780 0x0000 #define XK_cursor                                      0xaff
       
  1781 #endif /* XK_PUBLISHING */
       
  1782 
       
  1783 /*
       
  1784  *  APL
       
  1785  *  Byte 3 = b
       
  1786  */
       
  1787 
       
  1788 #ifdef XK_APL
       
  1789 0x003c #define XK_leftcaret                                   0xba3
       
  1790 0x003e #define XK_rightcaret                                  0xba6
       
  1791 0x2228 #define XK_downcaret                                   0xba8
       
  1792 0x2227 #define XK_upcaret                                     0xba9
       
  1793 0x00af #define XK_overbar                                     0xbc0
       
  1794 0x22a5 #define XK_downtack                                    0xbc2
       
  1795 0x2229 #define XK_upshoe                                      0xbc3
       
  1796 0x230a #define XK_downstile                                   0xbc4
       
  1797 0x005f #define XK_underbar                                    0xbc6
       
  1798 0x2218 #define XK_jot                                         0xbca
       
  1799 0x2395 #define XK_quad                                        0xbcc
       
  1800 0x22a4 #define XK_uptack                                      0xbce
       
  1801 0x25cb #define XK_circle                                      0xbcf
       
  1802 0x2308 #define XK_upstile                                     0xbd3
       
  1803 0x222a #define XK_downshoe                                    0xbd6
       
  1804 0x2283 #define XK_rightshoe                                   0xbd8
       
  1805 0x2282 #define XK_leftshoe                                    0xbda
       
  1806 0x22a2 #define XK_lefttack                                    0xbdc
       
  1807 0x22a3 #define XK_righttack                                   0xbfc
       
  1808 #endif /* XK_APL */
       
  1809 
       
  1810 /*
       
  1811  * Hebrew
       
  1812  * Byte 3 = c
       
  1813  */
       
  1814 
       
  1815 #ifdef XK_HEBREW
       
  1816 0x2017 #define XK_hebrew_doublelowline                        0xcdf
       
  1817 0x05d0 #define XK_hebrew_aleph                                0xce0
       
  1818 0x05d1 #define XK_hebrew_bet                                  0xce1
       
  1819 0x0000 #define XK_hebrew_beth                                 0xce1  /* deprecated */
       
  1820 0x05d2 #define XK_hebrew_gimel                                0xce2
       
  1821 0x0000 #define XK_hebrew_gimmel                               0xce2  /* deprecated */
       
  1822 0x05d3 #define XK_hebrew_dalet                                0xce3
       
  1823 0x0000 #define XK_hebrew_daleth                               0xce3  /* deprecated */
       
  1824 0x05d4 #define XK_hebrew_he                                   0xce4
       
  1825 0x05d5 #define XK_hebrew_waw                                  0xce5
       
  1826 0x05d6 #define XK_hebrew_zain                                 0xce6
       
  1827 0x0000 #define XK_hebrew_zayin                                0xce6  /* deprecated */
       
  1828 0x05d7 #define XK_hebrew_chet                                 0xce7
       
  1829 0x0000 #define XK_hebrew_het                                  0xce7  /* deprecated */
       
  1830 0x05d8 #define XK_hebrew_tet                                  0xce8
       
  1831 0x0000 #define XK_hebrew_teth                                 0xce8  /* deprecated */
       
  1832 0x05d9 #define XK_hebrew_yod                                  0xce9
       
  1833 0x05da #define XK_hebrew_finalkaph                            0xcea
       
  1834 0x05db #define XK_hebrew_kaph                                 0xceb
       
  1835 0x05dc #define XK_hebrew_lamed                                0xcec
       
  1836 0x05dd #define XK_hebrew_finalmem                             0xced
       
  1837 0x05de #define XK_hebrew_mem                                  0xcee
       
  1838 0x05df #define XK_hebrew_finalnun                             0xcef
       
  1839 0x05e0 #define XK_hebrew_nun                                  0xcf0
       
  1840 0x05e1 #define XK_hebrew_samech                               0xcf1
       
  1841 0x0000 #define XK_hebrew_samekh                               0xcf1  /* deprecated */
       
  1842 0x05e2 #define XK_hebrew_ayin                                 0xcf2
       
  1843 0x05e3 #define XK_hebrew_finalpe                              0xcf3
       
  1844 0x05e4 #define XK_hebrew_pe                                   0xcf4
       
  1845 0x05e5 #define XK_hebrew_finalzade                            0xcf5
       
  1846 0x0000 #define XK_hebrew_finalzadi                            0xcf5  /* deprecated */
       
  1847 0x05e6 #define XK_hebrew_zade                                 0xcf6
       
  1848 0x0000 #define XK_hebrew_zadi                                 0xcf6  /* deprecated */
       
  1849 0x05e7 #define XK_hebrew_qoph                                 0xcf7
       
  1850 0x0000 #define XK_hebrew_kuf                                  0xcf7  /* deprecated */
       
  1851 0x05e8 #define XK_hebrew_resh                                 0xcf8
       
  1852 0x05e9 #define XK_hebrew_shin                                 0xcf9
       
  1853 0x05ea #define XK_hebrew_taw                                  0xcfa
       
  1854 0x0000 #define XK_hebrew_taf                                  0xcfa  /* deprecated */
       
  1855 0x0000 #define XK_Hebrew_switch        0xFF7E  /* Alias for mode_switch */
       
  1856 #endif /* XK_HEBREW */
       
  1857 
       
  1858 /*
       
  1859  * Thai
       
  1860  * Byte 3 = d
       
  1861  */
       
  1862 
       
  1863 #ifdef XK_THAI
       
  1864 0x0e01 #define XK_Thai_kokai                    0xda1
       
  1865 0x0e02 #define XK_Thai_khokhai                    0xda2
       
  1866 0x0e03 #define XK_Thai_khokhuat                0xda3
       
  1867 0x0e04 #define XK_Thai_khokhwai                0xda4
       
  1868 0x0e05 #define XK_Thai_khokhon                    0xda5
       
  1869 0x0e06 #define XK_Thai_khorakhang                    0xda6
       
  1870 0x0e07 #define XK_Thai_ngongu                    0xda7
       
  1871 0x0e08 #define XK_Thai_chochan                    0xda8
       
  1872 0x0e09 #define XK_Thai_choching                0xda9
       
  1873 0x0e0a #define XK_Thai_chochang                0xdaa
       
  1874 0x0e0b #define XK_Thai_soso                    0xdab
       
  1875 0x0e0c #define XK_Thai_chochoe                    0xdac
       
  1876 0x0e0d #define XK_Thai_yoying                    0xdad
       
  1877 0x0e0e #define XK_Thai_dochada                    0xdae
       
  1878 0x0e0f #define XK_Thai_topatak                    0xdaf
       
  1879 0x0e10 #define XK_Thai_thothan                    0xdb0
       
  1880 0x0e11 #define XK_Thai_thonangmontho                    0xdb1
       
  1881 0x0e12 #define XK_Thai_thophuthao                    0xdb2
       
  1882 0x0e13 #define XK_Thai_nonen                    0xdb3
       
  1883 0x0e14 #define XK_Thai_dodek                    0xdb4
       
  1884 0x0e15 #define XK_Thai_totao                    0xdb5
       
  1885 0x0e16 #define XK_Thai_thothung                0xdb6
       
  1886 0x0e17 #define XK_Thai_thothahan                0xdb7
       
  1887 0x0e18 #define XK_Thai_thothong                 0xdb8
       
  1888 0x0e19 #define XK_Thai_nonu                    0xdb9
       
  1889 0x0e1a #define XK_Thai_bobaimai                0xdba
       
  1890 0x0e1b #define XK_Thai_popla                    0xdbb
       
  1891 0x0e1c #define XK_Thai_phophung                0xdbc
       
  1892 0x0e1d #define XK_Thai_fofa                    0xdbd
       
  1893 0x0e1e #define XK_Thai_phophan                    0xdbe
       
  1894 0x0e1f #define XK_Thai_fofan                    0xdbf
       
  1895 0x0e20 #define XK_Thai_phosamphao                    0xdc0
       
  1896 0x0e21 #define XK_Thai_moma                    0xdc1
       
  1897 0x0e22 #define XK_Thai_yoyak                    0xdc2
       
  1898 0x0e23 #define XK_Thai_rorua                    0xdc3
       
  1899 0x0e24 #define XK_Thai_ru                    0xdc4
       
  1900 0x0e25 #define XK_Thai_loling                    0xdc5
       
  1901 0x0e26 #define XK_Thai_lu                    0xdc6
       
  1902 0x0e27 #define XK_Thai_wowaen                    0xdc7
       
  1903 0x0e28 #define XK_Thai_sosala                    0xdc8
       
  1904 0x0e29 #define XK_Thai_sorusi                    0xdc9
       
  1905 0x0e2a #define XK_Thai_sosua                    0xdca
       
  1906 0x0e2b #define XK_Thai_hohip                    0xdcb
       
  1907 0x0e2c #define XK_Thai_lochula                    0xdcc
       
  1908 0x0e2d #define XK_Thai_oang                    0xdcd
       
  1909 0x0e2e #define XK_Thai_honokhuk                0xdce
       
  1910 0x0e2f #define XK_Thai_paiyannoi                0xdcf
       
  1911 0x0e30 #define XK_Thai_saraa                    0xdd0
       
  1912 0x0e31 #define XK_Thai_maihanakat                0xdd1
       
  1913 0x0e32 #define XK_Thai_saraaa                    0xdd2
       
  1914 0x0e33 #define XK_Thai_saraam                    0xdd3
       
  1915 0x0e34 #define XK_Thai_sarai                    0xdd4
       
  1916 0x0e35 #define XK_Thai_saraii                    0xdd5
       
  1917 0x0e36 #define XK_Thai_saraue                    0xdd6
       
  1918 0x0e37 #define XK_Thai_sarauee                    0xdd7
       
  1919 0x0e38 #define XK_Thai_sarau                    0xdd8
       
  1920 0x0e39 #define XK_Thai_sarauu                    0xdd9
       
  1921 0x0e3a #define XK_Thai_phinthu                    0xdda
       
  1922 0x0000 #define XK_Thai_maihanakat_maitho               0xdde
       
  1923 0x0e3f #define XK_Thai_baht                    0xddf
       
  1924 0x0e40 #define XK_Thai_sarae                    0xde0
       
  1925 0x0e41 #define XK_Thai_saraae                    0xde1
       
  1926 0x0e42 #define XK_Thai_sarao                    0xde2
       
  1927 0x0e43 #define XK_Thai_saraaimaimuan                0xde3
       
  1928 0x0e44 #define XK_Thai_saraaimaimalai                0xde4
       
  1929 0x0e45 #define XK_Thai_lakkhangyao                0xde5
       
  1930 0x0e46 #define XK_Thai_maiyamok                0xde6
       
  1931 0x0e47 #define XK_Thai_maitaikhu                0xde7
       
  1932 0x0e48 #define XK_Thai_maiek                    0xde8
       
  1933 0x0e49 #define XK_Thai_maitho                    0xde9
       
  1934 0x0e4a #define XK_Thai_maitri                    0xdea
       
  1935 0x0e4b #define XK_Thai_maichattawa                0xdeb
       
  1936 0x0e4c #define XK_Thai_thanthakhat                0xdec
       
  1937 0x0e4d #define XK_Thai_nikhahit                0xded
       
  1938 0x0e50 #define XK_Thai_leksun                    0xdf0
       
  1939 0x0e51 #define XK_Thai_leknung                    0xdf1
       
  1940 0x0e52 #define XK_Thai_leksong                    0xdf2
       
  1941 0x0e53 #define XK_Thai_leksam                    0xdf3
       
  1942 0x0e54 #define XK_Thai_leksi                    0xdf4
       
  1943 0x0e55 #define XK_Thai_lekha                    0xdf5
       
  1944 0x0e56 #define XK_Thai_lekhok                    0xdf6
       
  1945 0x0e57 #define XK_Thai_lekchet                    0xdf7
       
  1946 0x0e58 #define XK_Thai_lekpaet                    0xdf8
       
  1947 0x0e59 #define XK_Thai_lekkao                    0xdf9
       
  1948 #endif /* XK_THAI */
       
  1949 
       
  1950 /*
       
  1951  *   Korean
       
  1952  *   Byte 3 = e
       
  1953  */
       
  1954 
       
  1955 #ifdef XK_KOREAN
       
  1956 
       
  1957 0x0000 #define XK_Hangul        0xff31    /* Hangul start/stop(toggle) */
       
  1958 0x0000 #define XK_Hangul_Start        0xff32    /* Hangul start */
       
  1959 0x0000 #define XK_Hangul_End        0xff33    /* Hangul end, English start */
       
  1960 0x0000 #define XK_Hangul_Hanja        0xff34    /* Start Hangul->Hanja Conversion */
       
  1961 0x0000 #define XK_Hangul_Jamo        0xff35    /* Hangul Jamo mode */
       
  1962 0x0000 #define XK_Hangul_Romaja    0xff36    /* Hangul Romaja mode */
       
  1963 0x0000 #define XK_Hangul_Codeinput    0xff37    /* Hangul code input mode */
       
  1964 0x0000 #define XK_Hangul_Jeonja    0xff38    /* Jeonja mode */
       
  1965 0x0000 #define XK_Hangul_Banja        0xff39    /* Banja mode */
       
  1966 0x0000 #define XK_Hangul_PreHanja    0xff3a    /* Pre Hanja conversion */
       
  1967 0x0000 #define XK_Hangul_PostHanja    0xff3b    /* Post Hanja conversion */
       
  1968 0x0000 #define XK_Hangul_SingleCandidate    0xff3c    /* Single candidate */
       
  1969 0x0000 #define XK_Hangul_MultipleCandidate    0xff3d    /* Multiple candidate */
       
  1970 0x0000 #define XK_Hangul_PreviousCandidate    0xff3e    /* Previous candidate */
       
  1971 0x0000 #define XK_Hangul_Special    0xff3f    /* Special symbols */
       
  1972 0x0000 #define XK_Hangul_switch    0xFF7E    /* Alias for mode_switch */
       
  1973 
       
  1974 /* Hangul Consonant Characters */
       
  1975 0x3131 #define XK_Hangul_Kiyeog                0xea1
       
  1976 0x3132 #define XK_Hangul_SsangKiyeog                0xea2
       
  1977 0x3133 #define XK_Hangul_KiyeogSios                0xea3
       
  1978 0x3134 #define XK_Hangul_Nieun                    0xea4
       
  1979 0x3135 #define XK_Hangul_NieunJieuj                0xea5
       
  1980 0x3136 #define XK_Hangul_NieunHieuh                0xea6
       
  1981 0x3137 #define XK_Hangul_Dikeud                0xea7
       
  1982 0x3138 #define XK_Hangul_SsangDikeud                0xea8
       
  1983 0x3139 #define XK_Hangul_Rieul                    0xea9
       
  1984 0x313a #define XK_Hangul_RieulKiyeog                0xeaa
       
  1985 0x313b #define XK_Hangul_RieulMieum                0xeab
       
  1986 0x313c #define XK_Hangul_RieulPieub                0xeac
       
  1987 0x313d #define XK_Hangul_RieulSios                0xead
       
  1988 0x313e #define XK_Hangul_RieulTieut                0xeae
       
  1989 0x313f #define XK_Hangul_RieulPhieuf                0xeaf
       
  1990 0x3140 #define XK_Hangul_RieulHieuh                0xeb0
       
  1991 0x3141 #define XK_Hangul_Mieum                    0xeb1
       
  1992 0x3142 #define XK_Hangul_Pieub                    0xeb2
       
  1993 0x3143 #define XK_Hangul_SsangPieub                0xeb3
       
  1994 0x3144 #define XK_Hangul_PieubSios                0xeb4
       
  1995 0x3145 #define XK_Hangul_Sios                    0xeb5
       
  1996 0x3146 #define XK_Hangul_SsangSios                0xeb6
       
  1997 0x3147 #define XK_Hangul_Ieung                    0xeb7
       
  1998 0x3148 #define XK_Hangul_Jieuj                    0xeb8
       
  1999 0x3149 #define XK_Hangul_SsangJieuj                0xeb9
       
  2000 0x314a #define XK_Hangul_Cieuc                    0xeba
       
  2001 0x314b #define XK_Hangul_Khieuq                0xebb
       
  2002 0x314c #define XK_Hangul_Tieut                    0xebc
       
  2003 0x314d #define XK_Hangul_Phieuf                0xebd
       
  2004 0x314e #define XK_Hangul_Hieuh                    0xebe
       
  2005 
       
  2006  /* Hangul Vowel Characters */
       
  2007 0x314f #define XK_Hangul_A                    0xebf
       
  2008 0x3150 #define XK_Hangul_AE                    0xec0
       
  2009 0x3151 #define XK_Hangul_YA                    0xec1
       
  2010 0x3152 #define XK_Hangul_YAE                    0xec2
       
  2011 0x3153 #define XK_Hangul_EO                    0xec3
       
  2012 0x3154 #define XK_Hangul_E                    0xec4
       
  2013 0x3155 #define XK_Hangul_YEO                    0xec5
       
  2014 0x3156 #define XK_Hangul_YE                    0xec6
       
  2015 0x3157 #define XK_Hangul_O                    0xec7
       
  2016 0x3158 #define XK_Hangul_WA                    0xec8
       
  2017 0x3159 #define XK_Hangul_WAE                    0xec9
       
  2018 0x315a #define XK_Hangul_OE                    0xeca
       
  2019 0x315b #define XK_Hangul_YO                    0xecb
       
  2020 0x315c #define XK_Hangul_U                    0xecc
       
  2021 0x315d #define XK_Hangul_WEO                    0xecd
       
  2022 0x315e #define XK_Hangul_WE                    0xece
       
  2023 0x315f #define XK_Hangul_WI                    0xecf
       
  2024 0x3160 #define XK_Hangul_YU                    0xed0
       
  2025 0x3161 #define XK_Hangul_EU                    0xed1
       
  2026 0x3162 #define XK_Hangul_YI                    0xed2
       
  2027 0x3163 #define XK_Hangul_I                    0xed3
       
  2028 
       
  2029 /* Hangul syllable-final (JongSeong) Characters */
       
  2030 0x11a8 #define XK_Hangul_J_Kiyeog                0xed4
       
  2031 0x11a9 #define XK_Hangul_J_SsangKiyeog                0xed5
       
  2032 0x11aa #define XK_Hangul_J_KiyeogSios                0xed6
       
  2033 0x11ab #define XK_Hangul_J_Nieun                0xed7
       
  2034 0x11ac #define XK_Hangul_J_NieunJieuj                0xed8
       
  2035 0x11ad #define XK_Hangul_J_NieunHieuh                0xed9
       
  2036 0x11ae #define XK_Hangul_J_Dikeud                0xeda
       
  2037 0x11af #define XK_Hangul_J_Rieul                0xedb
       
  2038 0x11b0 #define XK_Hangul_J_RieulKiyeog                0xedc
       
  2039 0x11b1 #define XK_Hangul_J_RieulMieum                0xedd
       
  2040 0x11b2 #define XK_Hangul_J_RieulPieub                0xede
       
  2041 0x11b3 #define XK_Hangul_J_RieulSios                0xedf
       
  2042 0x11b4 #define XK_Hangul_J_RieulTieut                0xee0
       
  2043 0x11b5 #define XK_Hangul_J_RieulPhieuf                0xee1
       
  2044 0x11b6 #define XK_Hangul_J_RieulHieuh                0xee2
       
  2045 0x11b7 #define XK_Hangul_J_Mieum                0xee3
       
  2046 0x11b8 #define XK_Hangul_J_Pieub                0xee4
       
  2047 0x11b9 #define XK_Hangul_J_PieubSios                0xee5
       
  2048 0x11ba #define XK_Hangul_J_Sios                0xee6
       
  2049 0x11bb #define XK_Hangul_J_SsangSios                0xee7
       
  2050 0x11bc #define XK_Hangul_J_Ieung                0xee8
       
  2051 0x11bd #define XK_Hangul_J_Jieuj                0xee9
       
  2052 0x11be #define XK_Hangul_J_Cieuc                0xeea
       
  2053 0x11bf #define XK_Hangul_J_Khieuq                0xeeb
       
  2054 0x11c0 #define XK_Hangul_J_Tieut                0xeec
       
  2055 0x11c1 #define XK_Hangul_J_Phieuf                0xeed
       
  2056 0x11c2 #define XK_Hangul_J_Hieuh                0xeee
       
  2057 
       
  2058 /* Ancient Hangul Consonant Characters */
       
  2059 0x316d #define XK_Hangul_RieulYeorinHieuh            0xeef
       
  2060 0x3171 #define XK_Hangul_SunkyeongeumMieum            0xef0
       
  2061 0x3178 #define XK_Hangul_SunkyeongeumPieub            0xef1
       
  2062 0x317f #define XK_Hangul_PanSios                0xef2
       
  2063 0x3181 #define XK_Hangul_KkogjiDalrinIeung            0xef3
       
  2064 0x3184 #define XK_Hangul_SunkyeongeumPhieuf            0xef4
       
  2065 0x3186 #define XK_Hangul_YeorinHieuh                0xef5
       
  2066 
       
  2067 /* Ancient Hangul Vowel Characters */
       
  2068 0x318d #define XK_Hangul_AraeA                    0xef6
       
  2069 0x318e #define XK_Hangul_AraeAE                0xef7
       
  2070 
       
  2071 /* Ancient Hangul syllable-final (JongSeong) Characters */
       
  2072 0x11eb #define XK_Hangul_J_PanSios                0xef8
       
  2073 0x11f0 #define XK_Hangul_J_KkogjiDalrinIeung            0xef9
       
  2074 0x11f9 #define XK_Hangul_J_YeorinHieuh                0xefa
       
  2075 
       
  2076 /* Korean currency symbol */
       
  2077 0x20a9 #define XK_Korean_Won                    0xeff
       
  2078 
       
  2079 #endif /* XK_KOREAN */
       
  2080 
       
  2081 /*
       
  2082  *   Armenian
       
  2083  *   Byte 3 = 0x14
       
  2084  */
       
  2085 // yan: skip Armenian for the time being
       
  2086 #ifdef XK_ARMENIAN
       
  2087 0x0000 #define XK_Armenian_eternity                0x14a1
       
  2088 0x0000 #define XK_Armenian_ligature_ew                0x14a2
       
  2089 0x0000 #define XK_Armenian_full_stop                0x14a3
       
  2090 0x0000 #define XK_Armenian_verjaket                0x14a3
       
  2091 0x0000 #define XK_Armenian_parenright                0x14a4
       
  2092 0x0000 #define XK_Armenian_parenleft                0x14a5
       
  2093 0x0000 #define XK_Armenian_guillemotright            0x14a6
       
  2094 0x0000 #define XK_Armenian_guillemotleft            0x14a7
       
  2095 0x0000 #define XK_Armenian_em_dash                0x14a8
       
  2096 0x0000 #define XK_Armenian_dot                    0x14a9
       
  2097 0x0000 #define XK_Armenian_mijaket                0x14a9
       
  2098 0x0000 #define XK_Armenian_separation_mark            0x14aa
       
  2099 0x0000 #define XK_Armenian_but                    0x14aa
       
  2100 0x0000 #define XK_Armenian_comma                0x14ab
       
  2101 0x0000 #define XK_Armenian_en_dash                0x14ac
       
  2102 0x0000 #define XK_Armenian_hyphen                0x14ad
       
  2103 0x0000 #define XK_Armenian_yentamna                0x14ad
       
  2104 0x0000 #define XK_Armenian_ellipsis                0x14ae
       
  2105 0x0000 #define XK_Armenian_exclam                0x14af
       
  2106 0x0000 #define XK_Armenian_amanak                0x14af
       
  2107 0x0000 #define XK_Armenian_accent                0x14b0
       
  2108 0x0000 #define XK_Armenian_shesht                0x14b0
       
  2109 0x0000 #define XK_Armenian_question                0x14b1
       
  2110 0x0000 #define XK_Armenian_paruyk                0x14b1
       
  2111 0x0000 #define XK_Armenian_AYB                    0x14b2
       
  2112 0x0000 #define XK_Armenian_ayb                    0x14b3
       
  2113 0x0000 #define XK_Armenian_BEN                    0x14b4
       
  2114 0x0000 #define XK_Armenian_ben                    0x14b5
       
  2115 0x0000 #define XK_Armenian_GIM                    0x14b6
       
  2116 0x0000 #define XK_Armenian_gim                    0x14b7
       
  2117 0x0000 #define XK_Armenian_DA                    0x14b8
       
  2118 0x0000 #define XK_Armenian_da                    0x14b9
       
  2119 0x0000 #define XK_Armenian_YECH                0x14ba
       
  2120 0x0000 #define XK_Armenian_yech                0x14bb
       
  2121 0x0000 #define XK_Armenian_ZA                    0x14bc
       
  2122 0x0000 #define XK_Armenian_za                    0x14bd
       
  2123 0x0000 #define XK_Armenian_E                    0x14be
       
  2124 0x0000 #define XK_Armenian_e                    0x14bf
       
  2125 0x0000 #define XK_Armenian_AT                    0x14c0
       
  2126 0x0000 #define XK_Armenian_at                    0x14c1
       
  2127 0x0000 #define XK_Armenian_TO                    0x14c2
       
  2128 0x0000 #define XK_Armenian_to                    0x14c3
       
  2129 0x0000 #define XK_Armenian_ZHE                    0x14c4
       
  2130 0x0000 #define XK_Armenian_zhe                    0x14c5
       
  2131 0x0000 #define XK_Armenian_INI                    0x14c6
       
  2132 0x0000 #define XK_Armenian_ini                    0x14c7
       
  2133 0x0000 #define XK_Armenian_LYUN                0x14c8
       
  2134 0x0000 #define XK_Armenian_lyun                0x14c9
       
  2135 0x0000 #define XK_Armenian_KHE                    0x14ca
       
  2136 0x0000 #define XK_Armenian_khe                    0x14cb
       
  2137 0x0000 #define XK_Armenian_TSA                    0x14cc
       
  2138 0x0000 #define XK_Armenian_tsa                    0x14cd
       
  2139 0x0000 #define XK_Armenian_KEN                    0x14ce
       
  2140 0x0000 #define XK_Armenian_ken                    0x14cf
       
  2141 0x0000 #define XK_Armenian_HO                    0x14d0
       
  2142 0x0000 #define XK_Armenian_ho                    0x14d1
       
  2143 0x0000 #define XK_Armenian_DZA                    0x14d2
       
  2144 0x0000 #define XK_Armenian_dza                    0x14d3
       
  2145 0x0000 #define XK_Armenian_GHAT                0x14d4
       
  2146 0x0000 #define XK_Armenian_ghat                0x14d5
       
  2147 0x0000 #define XK_Armenian_TCHE                0x14d6
       
  2148 0x0000 #define XK_Armenian_tche                0x14d7
       
  2149 0x0000 #define XK_Armenian_MEN                    0x14d8
       
  2150 0x0000 #define XK_Armenian_men                    0x14d9
       
  2151 0x0000 #define XK_Armenian_HI                    0x14da
       
  2152 0x0000 #define XK_Armenian_hi                    0x14db
       
  2153 0x0000 #define XK_Armenian_NU                    0x14dc
       
  2154 0x0000 #define XK_Armenian_nu                    0x14dd
       
  2155 0x0000 #define XK_Armenian_SHA                    0x14de
       
  2156 0x0000 #define XK_Armenian_sha                    0x14df
       
  2157 0x0000 #define XK_Armenian_VO                    0x14e0
       
  2158 0x0000 #define XK_Armenian_vo                    0x14e1
       
  2159 0x0000 #define XK_Armenian_CHA                    0x14e2
       
  2160 0x0000 #define XK_Armenian_cha                    0x14e3
       
  2161 0x0000 #define XK_Armenian_PE                    0x14e4
       
  2162 0x0000 #define XK_Armenian_pe                    0x14e5
       
  2163 0x0000 #define XK_Armenian_JE                    0x14e6
       
  2164 0x0000 #define XK_Armenian_je                    0x14e7
       
  2165 0x0000 #define XK_Armenian_RA                    0x14e8
       
  2166 0x0000 #define XK_Armenian_ra                    0x14e9
       
  2167 0x0000 #define XK_Armenian_SE                    0x14ea
       
  2168 0x0000 #define XK_Armenian_se                    0x14eb
       
  2169 0x0000 #define XK_Armenian_VEV                    0x14ec
       
  2170 0x0000 #define XK_Armenian_vev                    0x14ed
       
  2171 0x0000 #define XK_Armenian_TYUN                0x14ee
       
  2172 0x0000 #define XK_Armenian_tyun                0x14ef
       
  2173 0x0000 #define XK_Armenian_RE                    0x14f0
       
  2174 0x0000 #define XK_Armenian_re                    0x14f1
       
  2175 0x0000 #define XK_Armenian_TSO                    0x14f2
       
  2176 0x0000 #define XK_Armenian_tso                    0x14f3
       
  2177 0x0000 #define XK_Armenian_VYUN                0x14f4
       
  2178 0x0000 #define XK_Armenian_vyun                0x14f5
       
  2179 0x0000 #define XK_Armenian_PYUR                0x14f6
       
  2180 0x0000 #define XK_Armenian_pyur                0x14f7
       
  2181 0x0000 #define XK_Armenian_KE                    0x14f8
       
  2182 0x0000 #define XK_Armenian_ke                    0x14f9
       
  2183 0x0000 #define XK_Armenian_O                    0x14fa
       
  2184 0x0000 #define XK_Armenian_o                    0x14fb
       
  2185 0x0000 #define XK_Armenian_FE                    0x14fc
       
  2186 0x0000 #define XK_Armenian_fe                    0x14fd
       
  2187 0x0000 #define XK_Armenian_apostrophe                0x14fe
       
  2188 0x0000 #define XK_Armenian_section_sign            0x14ff
       
  2189 #endif /* XK_ARMENIAN */
       
  2190 
       
  2191 /*
       
  2192  *   Georgian
       
  2193  *   Byte 3 = 0x15
       
  2194  */
       
  2195 //yan: skip Georgian for now;
       
  2196 #ifdef XK_GEORGIAN
       
  2197 0x0000 #define XK_Georgian_an                    0x15d0
       
  2198 0x0000 #define XK_Georgian_ban                    0x15d1
       
  2199 0x0000 #define XK_Georgian_gan                    0x15d2
       
  2200 0x0000 #define XK_Georgian_don                    0x15d3
       
  2201 0x0000 #define XK_Georgian_en                    0x15d4
       
  2202 0x0000 #define XK_Georgian_vin                    0x15d5
       
  2203 0x0000 #define XK_Georgian_zen                    0x15d6
       
  2204 0x0000 #define XK_Georgian_tan                    0x15d7
       
  2205 0x0000 #define XK_Georgian_in                    0x15d8
       
  2206 0x0000 #define XK_Georgian_kan                    0x15d9
       
  2207 0x0000 #define XK_Georgian_las                    0x15da
       
  2208 0x0000 #define XK_Georgian_man                    0x15db
       
  2209 0x0000 #define XK_Georgian_nar                    0x15dc
       
  2210 0x0000 #define XK_Georgian_on                    0x15dd
       
  2211 0x0000 #define XK_Georgian_par                    0x15de
       
  2212 0x0000 #define XK_Georgian_zhar                0x15df
       
  2213 0x0000 #define XK_Georgian_rae                    0x15e0
       
  2214 0x0000 #define XK_Georgian_san                    0x15e1
       
  2215 0x0000 #define XK_Georgian_tar                    0x15e2
       
  2216 0x0000 #define XK_Georgian_un                    0x15e3
       
  2217 0x0000 #define XK_Georgian_phar                0x15e4
       
  2218 0x0000 #define XK_Georgian_khar                0x15e5
       
  2219 0x0000 #define XK_Georgian_ghan                0x15e6
       
  2220 0x0000 #define XK_Georgian_qar                    0x15e7
       
  2221 0x0000 #define XK_Georgian_shin                0x15e8
       
  2222 0x0000 #define XK_Georgian_chin                0x15e9
       
  2223 0x0000 #define XK_Georgian_can                    0x15ea
       
  2224 0x0000 #define XK_Georgian_jil                    0x15eb
       
  2225 0x0000 #define XK_Georgian_cil                    0x15ec
       
  2226 0x0000 #define XK_Georgian_char                0x15ed
       
  2227 0x0000 #define XK_Georgian_xan                    0x15ee
       
  2228 0x0000 #define XK_Georgian_jhan                0x15ef
       
  2229 0x0000 #define XK_Georgian_hae                    0x15f0
       
  2230 0x0000 #define XK_Georgian_he                    0x15f1
       
  2231 0x0000 #define XK_Georgian_hie                    0x15f2
       
  2232 0x0000 #define XK_Georgian_we                    0x15f3
       
  2233 0x0000 #define XK_Georgian_har                    0x15f4
       
  2234 0x0000 #define XK_Georgian_hoe                    0x15f5
       
  2235 0x0000 #define XK_Georgian_fi                    0x15f6
       
  2236 #endif /* XK_GEORGIAN */
       
  2237 
       
  2238 /*
       
  2239  * Azeri (and other Turkic or Caucasian languages of ex-USSR)
       
  2240  * Byte 3 = 0x16
       
  2241  */
       
  2242 
       
  2243 #ifdef XK_CAUCASUS
       
  2244 /* latin */
       
  2245 0x0000 #define XK_Ccedillaabovedot    0x16a2
       
  2246 0x1e8a #define XK_Xabovedot        0x16a3
       
  2247 0x0000 #define XK_Qabovedot        0x16a5
       
  2248 0x012c #define    XK_Ibreve        0x16a6
       
  2249 0x0000 #define XK_IE            0x16a7
       
  2250 0x0000 #define XK_UO            0x16a8
       
  2251 0x01b5 #define XK_Zstroke        0x16a9
       
  2252 0x01e6 #define    XK_Gcaron        0x16aa
       
  2253 0x019f #define    XK_Obarred        0x16af
       
  2254 0x0000 #define XK_ccedillaabovedot    0x16b2
       
  2255 0x1e8b #define XK_xabovedot        0x16b3
       
  2256 0x0000 #define    XK_Ocaron        0x16b4
       
  2257 0x0000 #define XK_qabovedot        0x16b5
       
  2258 0x012d #define    XK_ibreve        0x16b6
       
  2259 0x0000 #define XK_ie            0x16b7
       
  2260 0x0000 #define XK_uo            0x16b8
       
  2261 0x01b6 #define XK_zstroke        0x16b9
       
  2262 0x01e7 #define    XK_gcaron        0x16ba
       
  2263 0x01d2 #define    XK_ocaron        0x16bd
       
  2264 0x0275 #define    XK_obarred        0x16bf
       
  2265 0x018f #define XK_SCHWA        0x16c6
       
  2266 0x0259 #define XK_schwa        0x16f6
       
  2267 /* those are not really Caucasus, but I put them here for now */
       
  2268 /* For Inupiak */
       
  2269 // yan: is there unicode for Inupiak or Guarani at all?
       
  2270 0x0000 #define XK_Lbelowdot        0x16d1
       
  2271 0x0000 #define XK_Lstrokebelowdot    0x16d2
       
  2272 0x0000 #define XK_lbelowdot        0x16e1
       
  2273 0x0000 #define XK_lstrokebelowdot    0x16e2
       
  2274 /* For Guarani */
       
  2275 0x0000 #define XK_Gtilde        0x16d3
       
  2276 0x0000 #define XK_gtilde        0x16e3
       
  2277 #endif /* XK_CAUCASUS */
       
  2278 
       
  2279 /*
       
  2280  *   Vietnamese
       
  2281  *   Byte 3 = 0x1e
       
  2282  */
       
  2283 
       
  2284 #ifdef XK_VIETNAMESE
       
  2285 0x1ea0 #define XK_Abelowdot                    0x1ea0
       
  2286 0x1ea1 #define XK_abelowdot                    0x1ea1
       
  2287 0x1ea2 #define XK_Ahook                    0x1ea2
       
  2288 0x1ea3 #define XK_ahook                    0x1ea3
       
  2289 0x1ea4 #define XK_Acircumflexacute                0x1ea4
       
  2290 0x1ea5 #define XK_acircumflexacute                0x1ea5
       
  2291 0x1ea6 #define XK_Acircumflexgrave                0x1ea6
       
  2292 0x1ea7 #define XK_acircumflexgrave                0x1ea7
       
  2293 0x1ea8 #define XK_Acircumflexhook                0x1ea8
       
  2294 0x1ea9 #define XK_acircumflexhook                0x1ea9
       
  2295 0x1eaa #define XK_Acircumflextilde                0x1eaa
       
  2296 0x1eab #define XK_acircumflextilde                0x1eab
       
  2297 0x1eac #define XK_Acircumflexbelowdot                0x1eac
       
  2298 0x1ead #define XK_acircumflexbelowdot                0x1ead
       
  2299 0x1eae #define XK_Abreveacute                    0x1eae
       
  2300 0x1eaf #define XK_abreveacute                    0x1eaf
       
  2301 0x1eb0 #define XK_Abrevegrave                    0x1eb0
       
  2302 0x1eb1 #define XK_abrevegrave                    0x1eb1
       
  2303 0x1eb2 #define XK_Abrevehook                    0x1eb2
       
  2304 0x1eb3 #define XK_abrevehook                    0x1eb3
       
  2305 0x1eb4 #define XK_Abrevetilde                    0x1eb4
       
  2306 0x1eb5 #define XK_abrevetilde                    0x1eb5
       
  2307 0x1eb6 #define XK_Abrevebelowdot                0x1eb6
       
  2308 0x1eb7 #define XK_abrevebelowdot                0x1eb7
       
  2309 0x1eb8 #define XK_Ebelowdot                    0x1eb8
       
  2310 0x1eb9 #define XK_ebelowdot                    0x1eb9
       
  2311 0x1eba #define XK_Ehook                    0x1eba
       
  2312 0x1ebb #define XK_ehook                    0x1ebb
       
  2313 0x1ebc #define XK_Etilde                    0x1ebc
       
  2314 0x1ebd #define XK_etilde                    0x1ebd
       
  2315 0x1ebe #define XK_Ecircumflexacute                0x1ebe
       
  2316 0x1ebf #define XK_ecircumflexacute                0x1ebf
       
  2317 0x1ec0 #define XK_Ecircumflexgrave                0x1ec0
       
  2318 0x1ec1 #define XK_ecircumflexgrave                0x1ec1
       
  2319 0x1ec2 #define XK_Ecircumflexhook                0x1ec2
       
  2320 0x1ec3 #define XK_ecircumflexhook                0x1ec3
       
  2321 0x1ec4 #define XK_Ecircumflextilde                0x1ec4
       
  2322 0x1ec5 #define XK_ecircumflextilde                0x1ec5
       
  2323 0x1ec6 #define XK_Ecircumflexbelowdot                0x1ec6
       
  2324 0x1ec7 #define XK_ecircumflexbelowdot                0x1ec7
       
  2325 0x1ec8 #define XK_Ihook                    0x1ec8
       
  2326 0x1ec9 #define XK_ihook                    0x1ec9
       
  2327 0x1eca #define XK_Ibelowdot                    0x1eca
       
  2328 0x1ecb #define XK_ibelowdot                    0x1ecb
       
  2329 0x1ecc #define XK_Obelowdot                    0x1ecc
       
  2330 0x1ecd #define XK_obelowdot                    0x1ecd
       
  2331 0x1ece #define XK_Ohook                    0x1ece
       
  2332 0x1ecf #define XK_ohook                    0x1ecf
       
  2333 0x1ed0 #define XK_Ocircumflexacute                0x1ed0
       
  2334 0x1ed1 #define XK_ocircumflexacute                0x1ed1
       
  2335 0x1ed2 #define XK_Ocircumflexgrave                0x1ed2
       
  2336 0x1ed3 #define XK_ocircumflexgrave                0x1ed3
       
  2337 0x1ed4 #define XK_Ocircumflexhook                0x1ed4
       
  2338 0x1ed5 #define XK_ocircumflexhook                0x1ed5
       
  2339 0x1ed6 #define XK_Ocircumflextilde                0x1ed6
       
  2340 0x1ed7 #define XK_ocircumflextilde                0x1ed7
       
  2341 0x1ed8 #define XK_Ocircumflexbelowdot                0x1ed8
       
  2342 0x1ed9 #define XK_ocircumflexbelowdot                0x1ed9
       
  2343 0x1eda #define XK_Ohornacute                    0x1eda
       
  2344 0x1edb #define XK_ohornacute                    0x1edb
       
  2345 0x1edc #define XK_Ohorngrave                    0x1edc
       
  2346 0x1edd #define XK_ohorngrave                    0x1edd
       
  2347 0x1ede #define XK_Ohornhook                    0x1ede
       
  2348 0x1edf #define XK_ohornhook                    0x1edf
       
  2349 0x1ee0 #define XK_Ohorntilde                    0x1ee0
       
  2350 0x1ee1 #define XK_ohorntilde                    0x1ee1
       
  2351 0x1ee2 #define XK_Ohornbelowdot                0x1ee2
       
  2352 0x1ee3 #define XK_ohornbelowdot                0x1ee3
       
  2353 0x1ee4 #define XK_Ubelowdot                    0x1ee4
       
  2354 0x1ee5 #define XK_ubelowdot                    0x1ee5
       
  2355 0x1ee6 #define XK_Uhook                    0x1ee6
       
  2356 0x1ee7 #define XK_uhook                    0x1ee7
       
  2357 0x1ee8 #define XK_Uhornacute                    0x1ee8
       
  2358 0x1ee9 #define XK_uhornacute                    0x1ee9
       
  2359 0x1eea #define XK_Uhorngrave                    0x1eea
       
  2360 0x1eeb #define XK_uhorngrave                    0x1eeb
       
  2361 0x1eec #define XK_Uhornhook                    0x1eec
       
  2362 0x1eed #define XK_uhornhook                    0x1eed
       
  2363 0x1eee #define XK_Uhorntilde                    0x1eee
       
  2364 0x1eef #define XK_uhorntilde                    0x1eef
       
  2365 0x1ef0 #define XK_Uhornbelowdot                0x1ef0
       
  2366 0x1ef1 #define XK_uhornbelowdot                0x1ef1
       
  2367 0x1ef4 #define XK_Ybelowdot                    0x1ef4
       
  2368 0x1ef5 #define XK_ybelowdot                    0x1ef5
       
  2369 0x1ef6 #define XK_Yhook                    0x1ef6
       
  2370 0x1ef7 #define XK_yhook                    0x1ef7
       
  2371 0x1ef8 #define XK_Ytilde                    0x1ef8
       
  2372 0x1ef9 #define XK_ytilde                    0x1ef9
       
  2373 0x01a0 #define XK_Ohorn                    0x1efa /* U+01a0 */
       
  2374 0x01a1 #define XK_ohorn                    0x1efb /* U+01a1 */
       
  2375 0x01af #define XK_Uhorn                    0x1efc /* U+01af */
       
  2376 0x01b0 #define XK_uhorn                    0x1efd /* U+01b0 */
       
  2377 
       
  2378 0x0000 #define XK_combining_tilde                0x1e9f /* U+0303 */
       
  2379 0x0000 #define XK_combining_grave                0x1ef2 /* U+0300 */
       
  2380 0x0000 #define XK_combining_acute                0x1ef3 /* U+0301 */
       
  2381 0x0000 #define XK_combining_hook                0x1efe /* U+0309 */
       
  2382 0x0000 #define XK_combining_belowdot                0x1eff /* U+0323 */
       
  2383 #endif /* XK_VIETNAMESE */
       
  2384 
       
  2385 #ifdef XK_CURRENCY
       
  2386 0x20a0 #define XK_EcuSign                    0x20a0
       
  2387 0x20a1 #define XK_ColonSign                    0x20a1
       
  2388 0x20a2 #define XK_CruzeiroSign                    0x20a2
       
  2389 0x20a3 #define XK_FFrancSign                    0x20a3
       
  2390 0x20a4 #define XK_LiraSign                    0x20a4
       
  2391 0x20a5 #define XK_MillSign                    0x20a5
       
  2392 0x20a6 #define XK_NairaSign                    0x20a6
       
  2393 0x20a7 #define XK_PesetaSign                    0x20a7
       
  2394 0x20a8 #define XK_RupeeSign                    0x20a8
       
  2395 0x20a9 #define XK_WonSign                    0x20a9
       
  2396 0x20aa #define XK_NewSheqelSign                0x20aa
       
  2397 0x20ab #define XK_DongSign                    0x20ab
       
  2398 0x20ac #define XK_EuroSign                    0x20ac
       
  2399 #endif
       
  2400 
       
  2401 //yan: keysyms from vendor headers go here. I don't know  many though.
       
  2402 
       
  2403 0x0008  #define  osfXK_BackSpace 0x1004FF08
       
  2404 0x001b  #define  osfXK_Escape   0x1004FF1B
       
  2405 //XXX ? Esc on Solaris?, to check
       
  2406 0x0000  #define  osfXK_Cancel   0x1004FF69
       
  2407 0x007f  #define  osfXK_Delete   0x1004FFFF
       
  2408 
       
  2409 tojava
       
  2410 tojava         //XXX fill keysym2JavaKeycodeHash.
       
  2411 tojava
       
  2412 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_a),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_A, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2413 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_b),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_B, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2414 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_c),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_C, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2415 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_d),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_D, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2416 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_e),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_E, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2417 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_f),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2418 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_g),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_G, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2419 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_h),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_H, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2420 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_i),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_I, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2421 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_j),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_J, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2422 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_k),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_K, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2423 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_l),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_L, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2424 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_m),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_M, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2425 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_n),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_N, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2426 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_o),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_O, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2427 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_p),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_P, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2428 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_q),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_Q, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2429 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_r),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_R, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2430 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_s),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_S, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2431 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_t),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_T, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2432 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_u),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_U, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2433 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_v),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_V, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2434 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_w),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_W, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2435 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_x),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_X, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2436 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_y),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_Y, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2437 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_z),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_Z, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2438 tojava
       
  2439 tojava             /* TTY Function keys */
       
  2440 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_BackSpace),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BACK_SPACE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2441 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Tab),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_TAB, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2442 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_ISO_Left_Tab),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_TAB, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2443 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Clear),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CLEAR, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2444 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Return),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ENTER, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2445 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Linefeed),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ENTER, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2446 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Pause),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAUSE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2447 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F21),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAUSE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2448 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R1),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAUSE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2449 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Scroll_Lock),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SCROLL_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2450 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F23),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SCROLL_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2451 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R3),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SCROLL_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2452 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Escape),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ESCAPE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2453 tojava
       
  2454 tojava             /* Other vendor-specific versions of TTY Function keys */
       
  2455 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_BackSpace),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BACK_SPACE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2456 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Clear),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CLEAR, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2457 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Escape),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ESCAPE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2458 tojava
       
  2459 tojava             /* Modifier keys */
       
  2460 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Shift_L),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SHIFT, java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
       
  2461 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Shift_R),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SHIFT, java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
       
  2462 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Control_L),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CONTROL, java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
       
  2463 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Control_R),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CONTROL, java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
       
  2464 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Alt_L),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT, java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
       
  2465 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Alt_R),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT, java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
       
  2466 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Meta_L),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_META, java.awt.event.KeyEvent.KEY_LOCATION_LEFT));
       
  2467 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Meta_R),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_META, java.awt.event.KeyEvent.KEY_LOCATION_RIGHT));
       
  2468 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Caps_Lock),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CAPS_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2469 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Shift_Lock),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CAPS_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2470 tojava
       
  2471 tojava             /* Misc Functions */
       
  2472 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Print),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PRINTSCREEN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2473 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F22),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PRINTSCREEN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2474 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R2),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PRINTSCREEN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2475 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Cancel),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CANCEL, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2476 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Help),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HELP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2477 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Num_Lock),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUM_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2478 tojava
       
  2479 tojava             /* Other vendor-specific versions of Misc Functions */
       
  2480 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Cancel),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CANCEL, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2481 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Help),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HELP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2482 tojava
       
  2483 tojava             /* Rectangular Navigation Block */
       
  2484 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Home),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HOME, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2485 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R7),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HOME, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2486 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Page_Up),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_UP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2487 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Prior),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_UP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2488 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R9),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_UP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2489 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Page_Down),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2490 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Next),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2491 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R15),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2492 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_End),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2493 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R13),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2494 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Insert),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_INSERT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2495 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Delete),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DELETE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2496 tojava
       
  2497 tojava             /* Keypad equivalents of Rectangular Navigation Block */
       
  2498 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Home),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HOME, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2499 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Page_Up),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_UP, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2500 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Prior),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_UP, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2501 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Page_Down),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2502 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Next),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2503 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_End),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2504 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Insert),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_INSERT, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2505 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Delete),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DELETE, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2506 tojava
       
  2507 tojava             /* Other vendor-specific Rectangular Navigation Block */
       
  2508 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_PageUp),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_UP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2509 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Prior),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_UP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2510 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_PageDown),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2511 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Next),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PAGE_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2512 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_EndLine),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_END, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2513 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Insert),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_INSERT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2514 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Delete),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DELETE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2515 tojava
       
  2516 tojava             /* Triangular Navigation Block */
       
  2517 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Left),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_LEFT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2518 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Up),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2519 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Right),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_RIGHT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2520 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Down),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2521 tojava
       
  2522 tojava             /* Keypad equivalents of Triangular Navigation Block */
       
  2523 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Left),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KP_LEFT, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2524 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Up),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KP_UP, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2525 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Right),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KP_RIGHT, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2526 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Down),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KP_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2527 tojava
       
  2528 tojava             /* Other vendor-specific Triangular Navigation Block */
       
  2529 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Left),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_LEFT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2530 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Up),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2531 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Right),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_RIGHT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2532 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Down),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DOWN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2533 tojava
       
  2534 tojava             /* Remaining Cursor control & motion */
       
  2535 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Begin),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BEGIN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2536 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Begin),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BEGIN, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2537 tojava
       
  2538 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_0),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_0, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2539 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_1),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_1, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2540 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_2),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_2, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2541 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_3),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_3, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2542 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_4),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_4, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2543 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_5),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_5, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2544 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_6),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_6, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2545 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_7),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_7, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2546 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_8),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_8, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2547 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_9),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_9, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2548 tojava
       
  2549 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_space),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SPACE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2550 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_exclam),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_EXCLAMATION_MARK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2551 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_quotedbl),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_QUOTEDBL, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2552 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_numbersign),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMBER_SIGN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2553 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dollar),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DOLLAR, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2554 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_ampersand),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AMPERSAND, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2555 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_apostrophe),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_QUOTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2556 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_parenleft),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_LEFT_PARENTHESIS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2557 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_parenright),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_RIGHT_PARENTHESIS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2558 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_asterisk),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ASTERISK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2559 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_plus),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PLUS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2560 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_comma),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COMMA, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2561 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_minus),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_MINUS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2562 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_period),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PERIOD, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2563 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_slash),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SLASH, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2564 tojava
       
  2565 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_colon),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COLON, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2566 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_semicolon),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SEMICOLON, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2567 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_less),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_LESS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2568 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_equal),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_EQUALS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2569 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_greater),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_GREATER, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2570 tojava
       
  2571 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_at),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2572 tojava
       
  2573 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_bracketleft),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_OPEN_BRACKET, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2574 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_backslash),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BACK_SLASH, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2575 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_bracketright),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CLOSE_BRACKET, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2576 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_asciicircum),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CIRCUMFLEX, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2577 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_underscore),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDERSCORE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2578 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Super_L),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_WINDOWS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2579 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Super_R),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_WINDOWS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2580 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Menu),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CONTEXT_MENU, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2581 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_grave),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BACK_QUOTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2582 tojava
       
  2583 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_braceleft),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BRACELEFT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2584 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_braceright),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_BRACERIGHT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2585 tojava
       
  2586 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_exclamdown),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_INVERTED_EXCLAMATION_MARK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2587 tojava
       
  2588 tojava             /* Remaining Numeric Keypad Keys */
       
  2589 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_0),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD0, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2590 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_1),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD1, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2591 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_2),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD2, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2592 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_3),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD3, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2593 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_4),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD4, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2594 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_5),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD5, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2595 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_6),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD6, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2596 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_7),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD7, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2597 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_8),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD8, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2598 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_9),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NUMPAD9, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2599 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Space),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SPACE, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2600 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Tab),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_TAB, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2601 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Enter),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ENTER, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2602 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Equal),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_EQUALS, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2603 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R4),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_EQUALS, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2604 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Multiply),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_MULTIPLY, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2605 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F26),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_MULTIPLY, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2606 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R6),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_MULTIPLY, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2607 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Add),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ADD, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2608 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Separator),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SEPARATOR, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2609 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Subtract),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2610 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F24),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2611 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Decimal),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DECIMAL, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2612 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_KP_Divide),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DIVIDE, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2613 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F25),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DIVIDE, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2614 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R5),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DIVIDE, java.awt.event.KeyEvent.KEY_LOCATION_NUMPAD));
       
  2615 tojava
       
  2616 tojava             /* Function Keys */
       
  2617 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F1),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F1, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2618 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F2),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F2, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2619 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F3),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F3, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2620 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F4),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F4, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2621 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F5),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F5, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2622 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F6),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F6, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2623 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F7),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F7, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2624 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F8),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F8, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2625 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F9),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F9, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2626 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F10),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F10, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2627 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F11),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F11, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2628 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F12),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F12, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2629 tojava
       
  2630 tojava             /* Sun vendor-specific version of F11 and F12 */
       
  2631 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_F36),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F11, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2632 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_F37),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_F12, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2633 tojava
       
  2634 tojava             /* X11 keysym names for input method related keys don't always
       
  2635 tojava              * match keytop engravings or Java virtual key names, so here we
       
  2636 tojava              * only map constants that we've found on real keyboards.
       
  2637 tojava              */
       
  2638 tojava             /* Type 5c Japanese keyboard: kakutei */
       
  2639 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Execute),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ACCEPT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2640 tojava             /* Type 5c Japanese keyboard: henkan */
       
  2641 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kanji),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CONVERT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2642 tojava             /* Type 5c Japanese keyboard: nihongo */
       
  2643 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Henkan_Mode),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_INPUT_METHOD_ON_OFF, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2644 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Eisu_Shift   ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALPHANUMERIC       , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2645 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Eisu_toggle  ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALPHANUMERIC       , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2646 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Zenkaku      ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FULL_WIDTH         , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2647 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Hankaku      ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HALF_WIDTH         , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2648 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Hiragana     ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HIRAGANA           , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2649 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Katakana     ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KATAKANA           , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2650 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Romaji       ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_JAPANESE_ROMAN     , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2651 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kana_Shift   ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KANA               , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2652 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kana_Lock    ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KANA_LOCK          , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2653 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Muhenkan     ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NONCONVERT         , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2654 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Zen_Koho     ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALL_CANDIDATES     , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2655 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kanji_Bangou ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CODE_INPUT         , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2656 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Mae_Koho     ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PREVIOUS_CANDIDATE , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2657 tojava
       
  2658 tojava
       
  2659 tojava             /* VK_KANA_LOCK is handled separately because it generates the
       
  2660 tojava              * same keysym as ALT_GRAPH in spite of its different behavior.
       
  2661 tojava              */
       
  2662 tojava
       
  2663 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Multi_key),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COMPOSE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2664 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Mode_switch),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT_GRAPH, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2665 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_ISO_Level3_Shift),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT_GRAPH, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2666 tojava
       
  2667 tojava             /* Editing block */
       
  2668 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Redo),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AGAIN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2669 tojava         // XXX XK_L2 == F12; TODO: add code to use only one of them depending on the keyboard type. For now, restore
       
  2670 tojava         // good PC behavior and bad but old Sparc behavior.
       
  2671 tojava         // keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L2),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AGAIN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2672 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Undo),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2673 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L4),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2674 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L6),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2675 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L8),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PASTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2676 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L10),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2677 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Find),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FIND, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2678 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L9),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FIND, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2679 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L3),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PROPS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2680 tojava         // XXX XK_L1 == F11; TODO: add code to use only one of them depending on the keyboard type. For now, restore
       
  2681 tojava         // good PC behavior and bad but old Sparc behavior.
       
  2682 tojava         // keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_L1),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_STOP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2683 tojava
       
  2684 tojava             /* Sun vendor-specific versions for editing block */
       
  2685 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Again),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AGAIN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2686 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Undo),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2687 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Copy),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2688 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Paste),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PASTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2689 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Cut),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2690 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Find),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FIND, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2691 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Props),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PROPS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2692 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_Stop),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_STOP, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2693 tojava
       
  2694 tojava             /* Apollo (HP) vendor-specific versions for editing block */
       
  2695 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.apXK_Copy),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2696 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.apXK_Cut),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2697 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.apXK_Paste),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PASTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2698 tojava
       
  2699 tojava             /* Other vendor-specific versions for editing block */
       
  2700 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Copy),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COPY, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2701 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Cut),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CUT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2702 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Paste),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PASTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2703 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.osfXK_Undo),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDO, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2704 tojava
       
  2705 tojava             /* Dead key mappings (for European keyboards) */
       
  2706 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_grave),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_GRAVE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2707 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_acute),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_ACUTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2708 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_circumflex),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2709 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_tilde),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2710 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_macron),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_MACRON, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2711 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_breve),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_BREVE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2712 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_abovedot),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_ABOVEDOT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2713 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_diaeresis),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_DIAERESIS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2714 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_abovering),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_ABOVERING, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2715 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_doubleacute),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_DOUBLEACUTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2716 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_caron),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CARON, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2717 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_cedilla),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CEDILLA, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2718 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_ogonek),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_OGONEK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2719 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_iota),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_IOTA, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2720 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_voiced_sound),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_VOICED_SOUND, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2721 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_dead_semivoiced_sound),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_SEMIVOICED_SOUND, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2722 tojava
       
  2723 tojava             /* Sun vendor-specific dead key mappings (for European keyboards) */
       
  2724 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_FA_Grave),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_GRAVE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2725 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_FA_Circum),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2726 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_FA_Tilde),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2727 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_FA_Acute),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_ACUTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2728 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_FA_Diaeresis),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_DIAERESIS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2729 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.SunXK_FA_Cedilla),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CEDILLA, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2730 tojava
       
  2731 tojava             /* DEC vendor-specific dead key mappings (for European keyboards) */
       
  2732 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.DXK_ring_accent),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_ABOVERING, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2733 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.DXK_circumflex_accent),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2734 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.DXK_cedilla_accent),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CEDILLA, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2735 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.DXK_acute_accent),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_ACUTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2736 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.DXK_grave_accent),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_GRAVE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2737 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.DXK_tilde),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2738 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.DXK_diaeresis),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_DIAERESIS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2739 tojava
       
  2740 tojava             /* Other vendor-specific dead key mappings (for European keyboards) */
       
  2741 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_acute),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_ACUTE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2742 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_grave),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_GRAVE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2743 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_asciicircum),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2744 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_diaeresis),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_DIAERESIS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2745 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_asciitilde),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
       
  2746 tojava
       
  2747 tojava         keysym2JavaKeycodeHash.put( Long.valueOf(XConstants.NoSymbol),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDEFINED, java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN));
       
  2748 tojava
       
  2749 tojava         /* Reverse search of keysym by keycode. */
       
  2750 tojava
       
  2751 tojava         /* Add keyboard locking codes. */
       
  2752 tojava         javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_CAPS_LOCK, XKeySymConstants.XK_Caps_Lock);
       
  2753 tojava         javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_NUM_LOCK, XKeySymConstants.XK_Num_Lock);
       
  2754 tojava         javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_SCROLL_LOCK, XKeySymConstants.XK_Scroll_Lock);
       
  2755 tojava         javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_KANA_LOCK, XKeySymConstants.XK_Kana_Lock);
       
  2756 tojava     };
       
  2757 tojava
       
  2758 tojava }