/*
* Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.awt;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.awt.event.KeyEvent;
public class ExtendedKeyCodes {
/**
* ATTN: These are the readonly hashes with load factor == 1;
* adding a value, please set the inital capacity to exact number of items
* or higher.
*/
// Keycodes declared in KeyEvent.java with corresponding Unicode values.
private static final HashMap<Integer, Integer> regularKeyCodesMap =
new HashMap<Integer,Integer>(98, 1.0f);
// Keycodes derived from Unicode values. Here should be collected codes
// for characters appearing on the primary layer of at least one
// known keyboard layout. For instance, sterling sign is on the primary layer
// of the Mac Italian layout.
private static final HashSet<Integer> extendedKeyCodesSet =
new HashSet<Integer>(501, 1.0f);
public static final int getExtendedKeyCodeForChar( int c ) {
int uc = Character.toUpperCase( c );
int lc = Character.toLowerCase( c );
if (regularKeyCodesMap.containsKey( c )) {
if(regularKeyCodesMap.containsKey(uc)) {
return regularKeyCodesMap.get( uc );
}
return regularKeyCodesMap.get( c );
}
uc += 0x01000000;
lc += 0x01000000;
if (extendedKeyCodesSet.contains( uc )) {
return uc;
}else if (extendedKeyCodesSet.contains( lc )) {
return lc;
}
return KeyEvent.VK_UNDEFINED;
}
static {
regularKeyCodesMap.put(0x08, KeyEvent.VK_BACK_SPACE);
regularKeyCodesMap.put(0x09, KeyEvent.VK_TAB);
regularKeyCodesMap.put(0x0a, KeyEvent.VK_ENTER);
regularKeyCodesMap.put(0x1B, KeyEvent.VK_ESCAPE);
regularKeyCodesMap.put(0x20AC, KeyEvent.VK_EURO_SIGN);
regularKeyCodesMap.put(0x20, KeyEvent.VK_SPACE);
regularKeyCodesMap.put(0x21, KeyEvent.VK_EXCLAMATION_MARK);
regularKeyCodesMap.put(0x22, KeyEvent.VK_QUOTEDBL);
regularKeyCodesMap.put(0x23, KeyEvent.VK_NUMBER_SIGN);
regularKeyCodesMap.put(0x24, KeyEvent.VK_DOLLAR);
regularKeyCodesMap.put(0x26, KeyEvent.VK_AMPERSAND);
regularKeyCodesMap.put(0x27, KeyEvent.VK_QUOTE);
regularKeyCodesMap.put(0x28, KeyEvent.VK_LEFT_PARENTHESIS);
regularKeyCodesMap.put(0x29, KeyEvent.VK_RIGHT_PARENTHESIS);
regularKeyCodesMap.put(0x2A, KeyEvent.VK_ASTERISK);
regularKeyCodesMap.put(0x2B, KeyEvent.VK_PLUS);
regularKeyCodesMap.put(0x2C, KeyEvent.VK_COMMA);
regularKeyCodesMap.put(0x2D, KeyEvent.VK_MINUS);
regularKeyCodesMap.put(0x2E, KeyEvent.VK_PERIOD);
regularKeyCodesMap.put(0x2F, KeyEvent.VK_SLASH);
regularKeyCodesMap.put(0x30, KeyEvent.VK_0);
regularKeyCodesMap.put(0x31, KeyEvent.VK_1);
regularKeyCodesMap.put(0x32, KeyEvent.VK_2);
regularKeyCodesMap.put(0x33, KeyEvent.VK_3);
regularKeyCodesMap.put(0x34, KeyEvent.VK_4);
regularKeyCodesMap.put(0x35, KeyEvent.VK_5);
regularKeyCodesMap.put(0x36, KeyEvent.VK_6);
regularKeyCodesMap.put(0x37, KeyEvent.VK_7);
regularKeyCodesMap.put(0x38, KeyEvent.VK_8);
regularKeyCodesMap.put(0x39, KeyEvent.VK_9);
regularKeyCodesMap.put(0x3A, KeyEvent.VK_COLON);
regularKeyCodesMap.put(0x3B, KeyEvent.VK_SEMICOLON);
regularKeyCodesMap.put(0x3C, KeyEvent.VK_LESS);
regularKeyCodesMap.put(0x3D, KeyEvent.VK_EQUALS);
regularKeyCodesMap.put(0x3E, KeyEvent.VK_GREATER);
regularKeyCodesMap.put(0x40, KeyEvent.VK_AT);
regularKeyCodesMap.put(0x41, KeyEvent.VK_A);
regularKeyCodesMap.put(0x42, KeyEvent.VK_B);
regularKeyCodesMap.put(0x43, KeyEvent.VK_C);
regularKeyCodesMap.put(0x44, KeyEvent.VK_D);
regularKeyCodesMap.put(0x45, KeyEvent.VK_E);
regularKeyCodesMap.put(0x46, KeyEvent.VK_F);
regularKeyCodesMap.put(0x47, KeyEvent.VK_G);
regularKeyCodesMap.put(0x48, KeyEvent.VK_H);
regularKeyCodesMap.put(0x49, KeyEvent.VK_I);
regularKeyCodesMap.put(0x4A, KeyEvent.VK_J);
regularKeyCodesMap.put(0x4B, KeyEvent.VK_K);
regularKeyCodesMap.put(0x4C, KeyEvent.VK_L);
regularKeyCodesMap.put(0x4D, KeyEvent.VK_M);
regularKeyCodesMap.put(0x4E, KeyEvent.VK_N);
regularKeyCodesMap.put(0x4F, KeyEvent.VK_O);
regularKeyCodesMap.put(0x50, KeyEvent.VK_P);
regularKeyCodesMap.put(0x51, KeyEvent.VK_Q);
regularKeyCodesMap.put(0x52, KeyEvent.VK_R);
regularKeyCodesMap.put(0x53, KeyEvent.VK_S);
regularKeyCodesMap.put(0x54, KeyEvent.VK_T);
regularKeyCodesMap.put(0x55, KeyEvent.VK_U);
regularKeyCodesMap.put(0x56, KeyEvent.VK_V);
regularKeyCodesMap.put(0x57, KeyEvent.VK_W);
regularKeyCodesMap.put(0x58, KeyEvent.VK_X);
regularKeyCodesMap.put(0x59, KeyEvent.VK_Y);
regularKeyCodesMap.put(0x5A, KeyEvent.VK_Z);
regularKeyCodesMap.put(0x5B, KeyEvent.VK_OPEN_BRACKET);
regularKeyCodesMap.put(0x5C, KeyEvent.VK_BACK_SLASH);
regularKeyCodesMap.put(0x5D, KeyEvent.VK_CLOSE_BRACKET);
regularKeyCodesMap.put(0x5E, KeyEvent.VK_CIRCUMFLEX);
regularKeyCodesMap.put(0x5F, KeyEvent.VK_UNDERSCORE);
regularKeyCodesMap.put(0x60, KeyEvent.VK_BACK_QUOTE);
regularKeyCodesMap.put(0x61, KeyEvent.VK_A);
regularKeyCodesMap.put(0x62, KeyEvent.VK_B);
regularKeyCodesMap.put(0x63, KeyEvent.VK_C);
regularKeyCodesMap.put(0x64, KeyEvent.VK_D);
regularKeyCodesMap.put(0x65, KeyEvent.VK_E);
regularKeyCodesMap.put(0x66, KeyEvent.VK_F);
regularKeyCodesMap.put(0x67, KeyEvent.VK_G);
regularKeyCodesMap.put(0x68, KeyEvent.VK_H);
regularKeyCodesMap.put(0x69, KeyEvent.VK_I);
regularKeyCodesMap.put(0x6A, KeyEvent.VK_J);
regularKeyCodesMap.put(0x6B, KeyEvent.VK_K);
regularKeyCodesMap.put(0x6C, KeyEvent.VK_L);
regularKeyCodesMap.put(0x6D, KeyEvent.VK_M);
regularKeyCodesMap.put(0x6E, KeyEvent.VK_N);
regularKeyCodesMap.put(0x6F, KeyEvent.VK_O);
regularKeyCodesMap.put(0x70, KeyEvent.VK_P);
regularKeyCodesMap.put(0x71, KeyEvent.VK_Q);
regularKeyCodesMap.put(0x72, KeyEvent.VK_R);
regularKeyCodesMap.put(0x73, KeyEvent.VK_S);
regularKeyCodesMap.put(0x74, KeyEvent.VK_T);
regularKeyCodesMap.put(0x75, KeyEvent.VK_U);
regularKeyCodesMap.put(0x76, KeyEvent.VK_V);
regularKeyCodesMap.put(0x77, KeyEvent.VK_W);
regularKeyCodesMap.put(0x78, KeyEvent.VK_X);
regularKeyCodesMap.put(0x79, KeyEvent.VK_Y);
regularKeyCodesMap.put(0x7A, KeyEvent.VK_Z);
regularKeyCodesMap.put(0x7B, KeyEvent.VK_BRACELEFT);
regularKeyCodesMap.put(0x7D, KeyEvent.VK_BRACERIGHT);
regularKeyCodesMap.put(0x7F, KeyEvent.VK_DELETE);
regularKeyCodesMap.put(0xA1, KeyEvent.VK_INVERTED_EXCLAMATION_MARK);
extendedKeyCodesSet.add(0x01000000+0x0060);
extendedKeyCodesSet.add(0x01000000+0x007C);
extendedKeyCodesSet.add(0x01000000+0x007E);
extendedKeyCodesSet.add(0x01000000+0x00A2);
extendedKeyCodesSet.add(0x01000000+0x00A3);
extendedKeyCodesSet.add(0x01000000+0x00A5);
extendedKeyCodesSet.add(0x01000000+0x00A7);
extendedKeyCodesSet.add(0x01000000+0x00A8);
extendedKeyCodesSet.add(0x01000000+0x00AB);
extendedKeyCodesSet.add(0x01000000+0x00B0);
extendedKeyCodesSet.add(0x01000000+0x00B1);
extendedKeyCodesSet.add(0x01000000+0x00B2);
extendedKeyCodesSet.add(0x01000000+0x00B3);
extendedKeyCodesSet.add(0x01000000+0x00B4);
extendedKeyCodesSet.add(0x01000000+0x00B5);
extendedKeyCodesSet.add(0x01000000+0x00B6);
extendedKeyCodesSet.add(0x01000000+0x00B7);
extendedKeyCodesSet.add(0x01000000+0x00B9);
extendedKeyCodesSet.add(0x01000000+0x00BA);
extendedKeyCodesSet.add(0x01000000+0x00BB);
extendedKeyCodesSet.add(0x01000000+0x00BC);
extendedKeyCodesSet.add(0x01000000+0x00BD);
extendedKeyCodesSet.add(0x01000000+0x00BE);
extendedKeyCodesSet.add(0x01000000+0x00BF);
extendedKeyCodesSet.add(0x01000000+0x00C4);
extendedKeyCodesSet.add(0x01000000+0x00C5);
extendedKeyCodesSet.add(0x01000000+0x00C6);
extendedKeyCodesSet.add(0x01000000+0x00C7);
extendedKeyCodesSet.add(0x01000000+0x00D1);
extendedKeyCodesSet.add(0x01000000+0x00D6);
extendedKeyCodesSet.add(0x01000000+0x00D7);
extendedKeyCodesSet.add(0x01000000+0x00D8);
extendedKeyCodesSet.add(0x01000000+0x00DF);
extendedKeyCodesSet.add(0x01000000+0x00E0);
extendedKeyCodesSet.add(0x01000000+0x00E1);
extendedKeyCodesSet.add(0x01000000+0x00E2);
extendedKeyCodesSet.add(0x01000000+0x00E4);
extendedKeyCodesSet.add(0x01000000+0x00E5);
extendedKeyCodesSet.add(0x01000000+0x00E6);
extendedKeyCodesSet.add(0x01000000+0x00E7);
extendedKeyCodesSet.add(0x01000000+0x00E8);
extendedKeyCodesSet.add(0x01000000+0x00E9);
extendedKeyCodesSet.add(0x01000000+0x00EA);
extendedKeyCodesSet.add(0x01000000+0x00EB);
extendedKeyCodesSet.add(0x01000000+0x00EC);
extendedKeyCodesSet.add(0x01000000+0x00ED);
extendedKeyCodesSet.add(0x01000000+0x00EE);
extendedKeyCodesSet.add(0x01000000+0x00F0);
extendedKeyCodesSet.add(0x01000000+0x00F1);
extendedKeyCodesSet.add(0x01000000+0x00F2);
extendedKeyCodesSet.add(0x01000000+0x00F3);
extendedKeyCodesSet.add(0x01000000+0x00F4);
extendedKeyCodesSet.add(0x01000000+0x00F5);
extendedKeyCodesSet.add(0x01000000+0x00F6);
extendedKeyCodesSet.add(0x01000000+0x00F7);
extendedKeyCodesSet.add(0x01000000+0x00F8);
extendedKeyCodesSet.add(0x01000000+0x00F9);
extendedKeyCodesSet.add(0x01000000+0x00FA);
extendedKeyCodesSet.add(0x01000000+0x00FB);
extendedKeyCodesSet.add(0x01000000+0x00FC);
extendedKeyCodesSet.add(0x01000000+0x00FD);
extendedKeyCodesSet.add(0x01000000+0x00FE);
extendedKeyCodesSet.add(0x01000000+0x0105);
extendedKeyCodesSet.add(0x01000000+0x02DB);
extendedKeyCodesSet.add(0x01000000+0x0142);
extendedKeyCodesSet.add(0x01000000+0x013E);
extendedKeyCodesSet.add(0x01000000+0x015B);
extendedKeyCodesSet.add(0x01000000+0x0161);
extendedKeyCodesSet.add(0x01000000+0x015F);
extendedKeyCodesSet.add(0x01000000+0x0165);
extendedKeyCodesSet.add(0x01000000+0x017E);
extendedKeyCodesSet.add(0x01000000+0x017C);
extendedKeyCodesSet.add(0x01000000+0x0103);
extendedKeyCodesSet.add(0x01000000+0x0107);
extendedKeyCodesSet.add(0x01000000+0x010D);
extendedKeyCodesSet.add(0x01000000+0x0119);
extendedKeyCodesSet.add(0x01000000+0x011B);
extendedKeyCodesSet.add(0x01000000+0x0111);
extendedKeyCodesSet.add(0x01000000+0x0148);
extendedKeyCodesSet.add(0x01000000+0x0151);
extendedKeyCodesSet.add(0x01000000+0x0171);
extendedKeyCodesSet.add(0x01000000+0x0159);
extendedKeyCodesSet.add(0x01000000+0x016F);
extendedKeyCodesSet.add(0x01000000+0x0163);
extendedKeyCodesSet.add(0x01000000+0x02D9);
extendedKeyCodesSet.add(0x01000000+0x0130);
extendedKeyCodesSet.add(0x01000000+0x0127);
extendedKeyCodesSet.add(0x01000000+0x0125);
extendedKeyCodesSet.add(0x01000000+0x0131);
extendedKeyCodesSet.add(0x01000000+0x011F);
extendedKeyCodesSet.add(0x01000000+0x0135);
extendedKeyCodesSet.add(0x01000000+0x010B);
extendedKeyCodesSet.add(0x01000000+0x0109);
extendedKeyCodesSet.add(0x01000000+0x0121);
extendedKeyCodesSet.add(0x01000000+0x011D);
extendedKeyCodesSet.add(0x01000000+0x016D);
extendedKeyCodesSet.add(0x01000000+0x015D);
extendedKeyCodesSet.add(0x01000000+0x0138);
extendedKeyCodesSet.add(0x01000000+0x0157);
extendedKeyCodesSet.add(0x01000000+0x013C);
extendedKeyCodesSet.add(0x01000000+0x0113);
extendedKeyCodesSet.add(0x01000000+0x0123);
extendedKeyCodesSet.add(0x01000000+0x0167);
extendedKeyCodesSet.add(0x01000000+0x014B);
extendedKeyCodesSet.add(0x01000000+0x0101);
extendedKeyCodesSet.add(0x01000000+0x012F);
extendedKeyCodesSet.add(0x01000000+0x0117);
extendedKeyCodesSet.add(0x01000000+0x012B);
extendedKeyCodesSet.add(0x01000000+0x0146);
extendedKeyCodesSet.add(0x01000000+0x014D);
extendedKeyCodesSet.add(0x01000000+0x0137);
extendedKeyCodesSet.add(0x01000000+0x0173);
extendedKeyCodesSet.add(0x01000000+0x016B);
extendedKeyCodesSet.add(0x01000000+0x0153);
extendedKeyCodesSet.add(0x01000000+0x30FC);
extendedKeyCodesSet.add(0x01000000+0x30A2);
extendedKeyCodesSet.add(0x01000000+0x30A4);
extendedKeyCodesSet.add(0x01000000+0x30A6);
extendedKeyCodesSet.add(0x01000000+0x30A8);
extendedKeyCodesSet.add(0x01000000+0x30AA);
extendedKeyCodesSet.add(0x01000000+0x30AB);
extendedKeyCodesSet.add(0x01000000+0x30AD);
extendedKeyCodesSet.add(0x01000000+0x30AF);
extendedKeyCodesSet.add(0x01000000+0x30B1);
extendedKeyCodesSet.add(0x01000000+0x30B3);
extendedKeyCodesSet.add(0x01000000+0x30B5);
extendedKeyCodesSet.add(0x01000000+0x30B7);
extendedKeyCodesSet.add(0x01000000+0x30B9);
extendedKeyCodesSet.add(0x01000000+0x30BB);
extendedKeyCodesSet.add(0x01000000+0x30BD);
extendedKeyCodesSet.add(0x01000000+0x30BF);
extendedKeyCodesSet.add(0x01000000+0x30C1);
extendedKeyCodesSet.add(0x01000000+0x30C4);
extendedKeyCodesSet.add(0x01000000+0x30C6);
extendedKeyCodesSet.add(0x01000000+0x30C8);
extendedKeyCodesSet.add(0x01000000+0x30CA);
extendedKeyCodesSet.add(0x01000000+0x30CB);
extendedKeyCodesSet.add(0x01000000+0x30CC);
extendedKeyCodesSet.add(0x01000000+0x30CD);
extendedKeyCodesSet.add(0x01000000+0x30CE);
extendedKeyCodesSet.add(0x01000000+0x30CF);
extendedKeyCodesSet.add(0x01000000+0x30D2);
extendedKeyCodesSet.add(0x01000000+0x30D5);
extendedKeyCodesSet.add(0x01000000+0x30D8);
extendedKeyCodesSet.add(0x01000000+0x30DB);
extendedKeyCodesSet.add(0x01000000+0x30DE);
extendedKeyCodesSet.add(0x01000000+0x30DF);
extendedKeyCodesSet.add(0x01000000+0x30E0);
extendedKeyCodesSet.add(0x01000000+0x30E1);
extendedKeyCodesSet.add(0x01000000+0x30E2);
extendedKeyCodesSet.add(0x01000000+0x30E4);
extendedKeyCodesSet.add(0x01000000+0x30E6);
extendedKeyCodesSet.add(0x01000000+0x30E8);
extendedKeyCodesSet.add(0x01000000+0x30E9);
extendedKeyCodesSet.add(0x01000000+0x30EA);
extendedKeyCodesSet.add(0x01000000+0x30EB);
extendedKeyCodesSet.add(0x01000000+0x30EC);
extendedKeyCodesSet.add(0x01000000+0x30ED);
extendedKeyCodesSet.add(0x01000000+0x30EF);
extendedKeyCodesSet.add(0x01000000+0x30F3);
extendedKeyCodesSet.add(0x01000000+0x309B);
extendedKeyCodesSet.add(0x01000000+0x309C);
extendedKeyCodesSet.add(0x01000000+0x06F0);
extendedKeyCodesSet.add(0x01000000+0x06F1);
extendedKeyCodesSet.add(0x01000000+0x06F2);
extendedKeyCodesSet.add(0x01000000+0x06F3);
extendedKeyCodesSet.add(0x01000000+0x06F4);
extendedKeyCodesSet.add(0x01000000+0x06F5);
extendedKeyCodesSet.add(0x01000000+0x06F6);
extendedKeyCodesSet.add(0x01000000+0x06F7);
extendedKeyCodesSet.add(0x01000000+0x06F8);
extendedKeyCodesSet.add(0x01000000+0x06F9);
extendedKeyCodesSet.add(0x01000000+0x0670);
extendedKeyCodesSet.add(0x01000000+0x067E);
extendedKeyCodesSet.add(0x01000000+0x0686);
extendedKeyCodesSet.add(0x01000000+0x060C);
extendedKeyCodesSet.add(0x01000000+0x06D4);
extendedKeyCodesSet.add(0x01000000+0x0660);
extendedKeyCodesSet.add(0x01000000+0x0661);
extendedKeyCodesSet.add(0x01000000+0x0662);
extendedKeyCodesSet.add(0x01000000+0x0663);
extendedKeyCodesSet.add(0x01000000+0x0664);
extendedKeyCodesSet.add(0x01000000+0x0665);
extendedKeyCodesSet.add(0x01000000+0x0666);
extendedKeyCodesSet.add(0x01000000+0x0667);
extendedKeyCodesSet.add(0x01000000+0x0668);
extendedKeyCodesSet.add(0x01000000+0x0669);
extendedKeyCodesSet.add(0x01000000+0x061B);
extendedKeyCodesSet.add(0x01000000+0x0621);
extendedKeyCodesSet.add(0x01000000+0x0624);
extendedKeyCodesSet.add(0x01000000+0x0626);
extendedKeyCodesSet.add(0x01000000+0x0627);
extendedKeyCodesSet.add(0x01000000+0x0628);
extendedKeyCodesSet.add(0x01000000+0x0629);
extendedKeyCodesSet.add(0x01000000+0x062A);
extendedKeyCodesSet.add(0x01000000+0x062B);
extendedKeyCodesSet.add(0x01000000+0x062C);
extendedKeyCodesSet.add(0x01000000+0x062D);
extendedKeyCodesSet.add(0x01000000+0x062E);
extendedKeyCodesSet.add(0x01000000+0x062F);
extendedKeyCodesSet.add(0x01000000+0x0630);
extendedKeyCodesSet.add(0x01000000+0x0631);
extendedKeyCodesSet.add(0x01000000+0x0632);
extendedKeyCodesSet.add(0x01000000+0x0633);
extendedKeyCodesSet.add(0x01000000+0x0634);
extendedKeyCodesSet.add(0x01000000+0x0635);
extendedKeyCodesSet.add(0x01000000+0x0636);
extendedKeyCodesSet.add(0x01000000+0x0637);
extendedKeyCodesSet.add(0x01000000+0x0638);
extendedKeyCodesSet.add(0x01000000+0x0639);
extendedKeyCodesSet.add(0x01000000+0x063A);
extendedKeyCodesSet.add(0x01000000+0x0641);
extendedKeyCodesSet.add(0x01000000+0x0642);
extendedKeyCodesSet.add(0x01000000+0x0643);
extendedKeyCodesSet.add(0x01000000+0x0644);
extendedKeyCodesSet.add(0x01000000+0x0645);
extendedKeyCodesSet.add(0x01000000+0x0646);
extendedKeyCodesSet.add(0x01000000+0x0647);
extendedKeyCodesSet.add(0x01000000+0x0648);
extendedKeyCodesSet.add(0x01000000+0x0649);
extendedKeyCodesSet.add(0x01000000+0x064A);
extendedKeyCodesSet.add(0x01000000+0x064E);
extendedKeyCodesSet.add(0x01000000+0x064F);
extendedKeyCodesSet.add(0x01000000+0x0650);
extendedKeyCodesSet.add(0x01000000+0x0652);
extendedKeyCodesSet.add(0x01000000+0x0698);
extendedKeyCodesSet.add(0x01000000+0x06A4);
extendedKeyCodesSet.add(0x01000000+0x06A9);
extendedKeyCodesSet.add(0x01000000+0x06AF);
extendedKeyCodesSet.add(0x01000000+0x06BE);
extendedKeyCodesSet.add(0x01000000+0x06CC);
extendedKeyCodesSet.add(0x01000000+0x06CC);
extendedKeyCodesSet.add(0x01000000+0x06D2);
extendedKeyCodesSet.add(0x01000000+0x0493);
extendedKeyCodesSet.add(0x01000000+0x0497);
extendedKeyCodesSet.add(0x01000000+0x049B);
extendedKeyCodesSet.add(0x01000000+0x049D);
extendedKeyCodesSet.add(0x01000000+0x04A3);
extendedKeyCodesSet.add(0x01000000+0x04AF);
extendedKeyCodesSet.add(0x01000000+0x04B1);
extendedKeyCodesSet.add(0x01000000+0x04B3);
extendedKeyCodesSet.add(0x01000000+0x04B9);
extendedKeyCodesSet.add(0x01000000+0x04BB);
extendedKeyCodesSet.add(0x01000000+0x04D9);
extendedKeyCodesSet.add(0x01000000+0x04E9);
extendedKeyCodesSet.add(0x01000000+0x0452);
extendedKeyCodesSet.add(0x01000000+0x0453);
extendedKeyCodesSet.add(0x01000000+0x0451);
extendedKeyCodesSet.add(0x01000000+0x0454);
extendedKeyCodesSet.add(0x01000000+0x0455);
extendedKeyCodesSet.add(0x01000000+0x0456);
extendedKeyCodesSet.add(0x01000000+0x0457);
extendedKeyCodesSet.add(0x01000000+0x0458);
extendedKeyCodesSet.add(0x01000000+0x0459);
extendedKeyCodesSet.add(0x01000000+0x045A);
extendedKeyCodesSet.add(0x01000000+0x045B);
extendedKeyCodesSet.add(0x01000000+0x045C);
extendedKeyCodesSet.add(0x01000000+0x0491);
extendedKeyCodesSet.add(0x01000000+0x045E);
extendedKeyCodesSet.add(0x01000000+0x045F);
extendedKeyCodesSet.add(0x01000000+0x2116);
extendedKeyCodesSet.add(0x01000000+0x044E);
extendedKeyCodesSet.add(0x01000000+0x0430);
extendedKeyCodesSet.add(0x01000000+0x0431);
extendedKeyCodesSet.add(0x01000000+0x0446);
extendedKeyCodesSet.add(0x01000000+0x0434);
extendedKeyCodesSet.add(0x01000000+0x0435);
extendedKeyCodesSet.add(0x01000000+0x0444);
extendedKeyCodesSet.add(0x01000000+0x0433);
extendedKeyCodesSet.add(0x01000000+0x0445);
extendedKeyCodesSet.add(0x01000000+0x0438);
extendedKeyCodesSet.add(0x01000000+0x0439);
extendedKeyCodesSet.add(0x01000000+0x043A);
extendedKeyCodesSet.add(0x01000000+0x043B);
extendedKeyCodesSet.add(0x01000000+0x043C);
extendedKeyCodesSet.add(0x01000000+0x043D);
extendedKeyCodesSet.add(0x01000000+0x043E);
extendedKeyCodesSet.add(0x01000000+0x043F);
extendedKeyCodesSet.add(0x01000000+0x044F);
extendedKeyCodesSet.add(0x01000000+0x0440);
extendedKeyCodesSet.add(0x01000000+0x0441);
extendedKeyCodesSet.add(0x01000000+0x0442);
extendedKeyCodesSet.add(0x01000000+0x0443);
extendedKeyCodesSet.add(0x01000000+0x0436);
extendedKeyCodesSet.add(0x01000000+0x0432);
extendedKeyCodesSet.add(0x01000000+0x044C);
extendedKeyCodesSet.add(0x01000000+0x044B);
extendedKeyCodesSet.add(0x01000000+0x0437);
extendedKeyCodesSet.add(0x01000000+0x0448);
extendedKeyCodesSet.add(0x01000000+0x044D);
extendedKeyCodesSet.add(0x01000000+0x0449);
extendedKeyCodesSet.add(0x01000000+0x0447);
extendedKeyCodesSet.add(0x01000000+0x044A);
extendedKeyCodesSet.add(0x01000000+0x2015);
extendedKeyCodesSet.add(0x01000000+0x03B1);
extendedKeyCodesSet.add(0x01000000+0x03B2);
extendedKeyCodesSet.add(0x01000000+0x03B3);
extendedKeyCodesSet.add(0x01000000+0x03B4);
extendedKeyCodesSet.add(0x01000000+0x03B5);
extendedKeyCodesSet.add(0x01000000+0x03B6);
extendedKeyCodesSet.add(0x01000000+0x03B7);
extendedKeyCodesSet.add(0x01000000+0x03B8);
extendedKeyCodesSet.add(0x01000000+0x03B9);
extendedKeyCodesSet.add(0x01000000+0x03BA);
extendedKeyCodesSet.add(0x01000000+0x03BB);
extendedKeyCodesSet.add(0x01000000+0x03BC);
extendedKeyCodesSet.add(0x01000000+0x03BD);
extendedKeyCodesSet.add(0x01000000+0x03BE);
extendedKeyCodesSet.add(0x01000000+0x03BF);
extendedKeyCodesSet.add(0x01000000+0x03C0);
extendedKeyCodesSet.add(0x01000000+0x03C1);
extendedKeyCodesSet.add(0x01000000+0x03C3);
extendedKeyCodesSet.add(0x01000000+0x03C2);
extendedKeyCodesSet.add(0x01000000+0x03C4);
extendedKeyCodesSet.add(0x01000000+0x03C5);
extendedKeyCodesSet.add(0x01000000+0x03C6);
extendedKeyCodesSet.add(0x01000000+0x03C7);
extendedKeyCodesSet.add(0x01000000+0x03C8);
extendedKeyCodesSet.add(0x01000000+0x03C9);
extendedKeyCodesSet.add(0x01000000+0x2190);
extendedKeyCodesSet.add(0x01000000+0x2192);
extendedKeyCodesSet.add(0x01000000+0x2193);
extendedKeyCodesSet.add(0x01000000+0x2013);
extendedKeyCodesSet.add(0x01000000+0x201C);
extendedKeyCodesSet.add(0x01000000+0x201D);
extendedKeyCodesSet.add(0x01000000+0x201E);
extendedKeyCodesSet.add(0x01000000+0x05D0);
extendedKeyCodesSet.add(0x01000000+0x05D1);
extendedKeyCodesSet.add(0x01000000+0x05D2);
extendedKeyCodesSet.add(0x01000000+0x05D3);
extendedKeyCodesSet.add(0x01000000+0x05D4);
extendedKeyCodesSet.add(0x01000000+0x05D5);
extendedKeyCodesSet.add(0x01000000+0x05D6);
extendedKeyCodesSet.add(0x01000000+0x05D7);
extendedKeyCodesSet.add(0x01000000+0x05D8);
extendedKeyCodesSet.add(0x01000000+0x05D9);
extendedKeyCodesSet.add(0x01000000+0x05DA);
extendedKeyCodesSet.add(0x01000000+0x05DB);
extendedKeyCodesSet.add(0x01000000+0x05DC);
extendedKeyCodesSet.add(0x01000000+0x05DD);
extendedKeyCodesSet.add(0x01000000+0x05DE);
extendedKeyCodesSet.add(0x01000000+0x05DF);
extendedKeyCodesSet.add(0x01000000+0x05E0);
extendedKeyCodesSet.add(0x01000000+0x05E1);
extendedKeyCodesSet.add(0x01000000+0x05E2);
extendedKeyCodesSet.add(0x01000000+0x05E3);
extendedKeyCodesSet.add(0x01000000+0x05E4);
extendedKeyCodesSet.add(0x01000000+0x05E5);
extendedKeyCodesSet.add(0x01000000+0x05E6);
extendedKeyCodesSet.add(0x01000000+0x05E7);
extendedKeyCodesSet.add(0x01000000+0x05E8);
extendedKeyCodesSet.add(0x01000000+0x05E9);
extendedKeyCodesSet.add(0x01000000+0x05EA);
extendedKeyCodesSet.add(0x01000000+0x0E01);
extendedKeyCodesSet.add(0x01000000+0x0E02);
extendedKeyCodesSet.add(0x01000000+0x0E03);
extendedKeyCodesSet.add(0x01000000+0x0E04);
extendedKeyCodesSet.add(0x01000000+0x0E05);
extendedKeyCodesSet.add(0x01000000+0x0E07);
extendedKeyCodesSet.add(0x01000000+0x0E08);
extendedKeyCodesSet.add(0x01000000+0x0E0A);
extendedKeyCodesSet.add(0x01000000+0x0E0C);
extendedKeyCodesSet.add(0x01000000+0x0E14);
extendedKeyCodesSet.add(0x01000000+0x0E15);
extendedKeyCodesSet.add(0x01000000+0x0E16);
extendedKeyCodesSet.add(0x01000000+0x0E17);
extendedKeyCodesSet.add(0x01000000+0x0E19);
extendedKeyCodesSet.add(0x01000000+0x0E1A);
extendedKeyCodesSet.add(0x01000000+0x0E1B);
extendedKeyCodesSet.add(0x01000000+0x0E1C);
extendedKeyCodesSet.add(0x01000000+0x0E1D);
extendedKeyCodesSet.add(0x01000000+0x0E1E);
extendedKeyCodesSet.add(0x01000000+0x0E1F);
extendedKeyCodesSet.add(0x01000000+0x0E20);
extendedKeyCodesSet.add(0x01000000+0x0E21);
extendedKeyCodesSet.add(0x01000000+0x0E22);
extendedKeyCodesSet.add(0x01000000+0x0E23);
extendedKeyCodesSet.add(0x01000000+0x0E25);
extendedKeyCodesSet.add(0x01000000+0x0E27);
extendedKeyCodesSet.add(0x01000000+0x0E2A);
extendedKeyCodesSet.add(0x01000000+0x0E2B);
extendedKeyCodesSet.add(0x01000000+0x0E2D);
extendedKeyCodesSet.add(0x01000000+0x0E30);
extendedKeyCodesSet.add(0x01000000+0x0E31);
extendedKeyCodesSet.add(0x01000000+0x0E32);
extendedKeyCodesSet.add(0x01000000+0x0E33);
extendedKeyCodesSet.add(0x01000000+0x0E34);
extendedKeyCodesSet.add(0x01000000+0x0E35);
extendedKeyCodesSet.add(0x01000000+0x0E36);
extendedKeyCodesSet.add(0x01000000+0x0E37);
extendedKeyCodesSet.add(0x01000000+0x0E38);
extendedKeyCodesSet.add(0x01000000+0x0E39);
extendedKeyCodesSet.add(0x01000000+0x0E3F);
extendedKeyCodesSet.add(0x01000000+0x0E40);
extendedKeyCodesSet.add(0x01000000+0x0E41);
extendedKeyCodesSet.add(0x01000000+0x0E43);
extendedKeyCodesSet.add(0x01000000+0x0E44);
extendedKeyCodesSet.add(0x01000000+0x0E45);
extendedKeyCodesSet.add(0x01000000+0x0E46);
extendedKeyCodesSet.add(0x01000000+0x0E47);
extendedKeyCodesSet.add(0x01000000+0x0E48);
extendedKeyCodesSet.add(0x01000000+0x0E49);
extendedKeyCodesSet.add(0x01000000+0x0E50);
extendedKeyCodesSet.add(0x01000000+0x0E51);
extendedKeyCodesSet.add(0x01000000+0x0E52);
extendedKeyCodesSet.add(0x01000000+0x0E53);
extendedKeyCodesSet.add(0x01000000+0x0E54);
extendedKeyCodesSet.add(0x01000000+0x0E55);
extendedKeyCodesSet.add(0x01000000+0x0E56);
extendedKeyCodesSet.add(0x01000000+0x0E57);
extendedKeyCodesSet.add(0x01000000+0x0E58);
extendedKeyCodesSet.add(0x01000000+0x0E59);
extendedKeyCodesSet.add(0x01000000+0x0587);
extendedKeyCodesSet.add(0x01000000+0x0589);
extendedKeyCodesSet.add(0x01000000+0x0589);
extendedKeyCodesSet.add(0x01000000+0x055D);
extendedKeyCodesSet.add(0x01000000+0x055D);
extendedKeyCodesSet.add(0x01000000+0x055B);
extendedKeyCodesSet.add(0x01000000+0x055B);
extendedKeyCodesSet.add(0x01000000+0x055E);
extendedKeyCodesSet.add(0x01000000+0x055E);
extendedKeyCodesSet.add(0x01000000+0x0561);
extendedKeyCodesSet.add(0x01000000+0x0562);
extendedKeyCodesSet.add(0x01000000+0x0563);
extendedKeyCodesSet.add(0x01000000+0x0564);
extendedKeyCodesSet.add(0x01000000+0x0565);
extendedKeyCodesSet.add(0x01000000+0x0566);
extendedKeyCodesSet.add(0x01000000+0x0567);
extendedKeyCodesSet.add(0x01000000+0x0568);
extendedKeyCodesSet.add(0x01000000+0x0569);
extendedKeyCodesSet.add(0x01000000+0x056A);
extendedKeyCodesSet.add(0x01000000+0x056B);
extendedKeyCodesSet.add(0x01000000+0x056C);
extendedKeyCodesSet.add(0x01000000+0x056D);
extendedKeyCodesSet.add(0x01000000+0x056E);
/**代码未完, 请加载全部代码(NowJava.com).**/