add src files decompiled via jad
[rsa2client.git] / src / mcsClient / KeyMap.java
diff --git a/src/mcsClient/KeyMap.java b/src/mcsClient/KeyMap.java
new file mode 100644 (file)
index 0000000..ce39682
--- /dev/null
@@ -0,0 +1,848 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3) fieldsfirst nonlb space 
+
+package mcsClient;
+
+import java.awt.event.KeyEvent;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public class KeyMap {
+
+    public static final int US_104_KEY = 0;
+    public static final int BELGIAN_105_KEY = 1;
+    public static final int FRENCH_105_KEY = 2;
+    public static final int GERMAN_105_KEY = 3;
+    public static final int ITALIAN_105_KEY = 4;
+    public static final int JAPAN_109_KEY = 5;
+    public static final int SPANISH_105_KEY = 6;
+    public static final int UK_105_KEY = 7;
+    public static final int TILDE_ICON = 1;
+    public static final int CIRCUMFLEX_ICON = 2;
+    public static final int DIAERESIS_ICON = 3;
+    public static final int GRAVE_ICON = 4;
+    public static final int ACUTE_ICON = 5;
+    public static final int LEFT_SQUARE_BRACKET_ICON = 6;
+    public static final int RIGHT_SQUARE_BRACKET_ICON = 7;
+    public static final int LEFT_CURLY_BRACKET_ICON = 8;
+    public static final int RIGHT_CURLY_BRACKET_ICON = 9;
+    public static final int BACKSLASH_ICON = 10;
+    public static final int AT_ICON = 11;
+    public static final int A_KEY = 4;
+    public static final int B_KEY = 5;
+    public static final int C_KEY = 6;
+    public static final int D_KEY = 7;
+    public static final int E_KEY = 8;
+    public static final int F_KEY = 9;
+    public static final int G_KEY = 10;
+    public static final int H_KEY = 11;
+    public static final int I_KEY = 12;
+    public static final int J_KEY = 13;
+    public static final int K_KEY = 14;
+    public static final int L_KEY = 15;
+    public static final int M_KEY = 16;
+    public static final int N_KEY = 17;
+    public static final int O_KEY = 18;
+    public static final int P_KEY = 19;
+    public static final int Q_KEY = 20;
+    public static final int R_KEY = 21;
+    public static final int S_KEY = 22;
+    public static final int T_KEY = 23;
+    public static final int U_KEY = 24;
+    public static final int V_KEY = 25;
+    public static final int W_KEY = 26;
+    public static final int X_KEY = 27;
+    public static final int Y_KEY = 28;
+    public static final int Z_KEY = 29;
+    public static final int NUM_1_KEY = 30;
+    public static final int NUM_2_KEY = 31;
+    public static final int NUM_3_KEY = 32;
+    public static final int NUM_4_KEY = 33;
+    public static final int NUM_5_KEY = 34;
+    public static final int NUM_6_KEY = 35;
+    public static final int NUM_7_KEY = 36;
+    public static final int NUM_8_KEY = 37;
+    public static final int NUM_9_KEY = 38;
+    public static final int NUM_0_KEY = 39;
+    public static final int RETURN_KEY = 40;
+    public static final int ESCAPE_KEY = 41;
+    public static final int BACKSPACE_KEY = 42;
+    public static final int TAB_KEY = 43;
+    public static final int SPACE_KEY = 44;
+    public static final int MINUS_UNDERSCORE_KEY = 45;
+    public static final int EQUALS_PLUS_KEY = 46;
+    public static final int LEFT_BRACKETS_KEY = 47;
+    public static final int RIGHT_BRACKETS_KEY = 48;
+    public static final int BACKSLASH_BAR_KEY = 49;
+    public static final int EUROPE1_KEY = 50;
+    public static final int COLONS_KEY = 51;
+    public static final int QUOTES_KEY = 52;
+    public static final int GRAVE_TILDE_KEY = 53;
+    public static final int COMMA_LESS_KEY = 54;
+    public static final int PERIOD_GREATER_KEY = 55;
+    public static final int SLASH_QUESTION_KEY = 56;
+    public static final int CAPS_KEY = 57;
+    public static final int F1_KEY = 58;
+    public static final int F2_KEY = 59;
+    public static final int F3_KEY = 60;
+    public static final int F4_KEY = 61;
+    public static final int F5_KEY = 62;
+    public static final int F6_KEY = 63;
+    public static final int F7_KEY = 64;
+    public static final int F8_KEY = 65;
+    public static final int F9_KEY = 66;
+    public static final int F10_KEY = 67;
+    public static final int F11_KEY = 68;
+    public static final int F12_KEY = 69;
+    public static final int PRINT_SCREEN_KEY = 70;
+    public static final int SCROLL_KEY = 71;
+    public static final int BREAK_KEY = 72;
+    public static final int INSERT_KEY = 73;
+    public static final int HOME_KEY = 74;
+    public static final int PAGE_UP_KEY = 75;
+    public static final int DELETE_KEY = 76;
+    public static final int END_KEY = 77;
+    public static final int PAGE_DOWN_KEY = 78;
+    public static final int RIGHT_KEY = 79;
+    public static final int LEFT_KEY = 80;
+    public static final int DOWN_KEY = 81;
+    public static final int UP_KEY = 82;
+    public static final int NUM_KEY = 83;
+    public static final int KP_DIV_KEY = 84;
+    public static final int KP_MULT_KEY = 85;
+    public static final int KP_SUB_KEY = 86;
+    public static final int KP_ADD_KEY = 87;
+    public static final int KP_ENTER_KEY = 88;
+    public static final int KP_1_KEY = 89;
+    public static final int KP_2_KEY = 90;
+    public static final int KP_3_KEY = 91;
+    public static final int KP_4_KEY = 92;
+    public static final int KP_5_KEY = 93;
+    public static final int KP_6_KEY = 94;
+    public static final int KP_7_KEY = 95;
+    public static final int KP_8_KEY = 96;
+    public static final int KP_9_KEY = 97;
+    public static final int KP_0_KEY = 98;
+    public static final int KP_DEL_KEY = 99;
+    public static final int EUROPE2_KEY = 100;
+    public static final int KP_EQUALS_KEY = 103;
+    public static final int INTL_1_KEY = 135;
+    public static final int INTL_2_KEY = 136;
+    public static final int INTL_3_KEY = 137;
+    public static final int INTL_4_KEY = 138;
+    public static final int INTL_5_KEY = 139;
+    public static final int L_CTRL_KEY = 224;
+    public static final int L_SHIFT_KEY = 225;
+    public static final int L_ALT_KEY = 226;
+    public static final int R_CTRL_KEY = 228;
+    public static final int R_SHIFT_KEY = 229;
+    public static final int R_ALT_KEY = 230;
+    public static final int ALTGR_KEY = 230;
+    public static final int JAPAN1_KEY = 53;
+    public static final int JAPAN30_KEY = 57;
+    public static final int JAPAN131_KEY = 139;
+    public static final int JAPAN132_KEY = 138;
+    public static final int JAPAN133_KEY = 136;
+    private HashMap countryMap;
+    private final int keyCodeMap[];
+    private final HashMap japanKeyCharMap;
+    private final HashMap ukKeyCharMap;
+    private final HashMap spanishKeyCharMap;
+    private final HashMap italianKeyCharMap;
+    private final HashMap germanKeyCharMap;
+    private final HashMap frenchKeyCharMap;
+    private final HashMap belgianKeyCharMap;
+    private static Logger logger = Logger.getAnonymousLogger();
+
+    public KeyMap() {
+        this(0);
+    }
+
+    public KeyMap(int i) {
+        keyCodeMap = new int[0x10000];
+        japanKeyCharMap = new HashMap(22, 1.0F);
+        ukKeyCharMap = new HashMap(20, 1.0F);
+        spanishKeyCharMap = new HashMap(39, 1.0F);
+        italianKeyCharMap = new HashMap(35, 1.0F);
+        germanKeyCharMap = new HashMap(50, 1.0F);
+        frenchKeyCharMap = new HashMap(55, 1.0F);
+        belgianKeyCharMap = new HashMap(55, 1.0F);
+        logger.setLevel(Level.WARNING);
+        String s = System.getProperty("mcs.debug");
+        if (s != null && s.equalsIgnoreCase("true"))
+            logger.setLevel(Level.ALL);
+        buildKeyMaps();
+        setKeyboardType(i);
+    }
+
+    public void setKeyboardType(int i) {
+        switch (i) {
+        case 0: // '\0'
+            countryMap = new HashMap(0);
+            break;
+
+        case 5: // '\005'
+            countryMap = japanKeyCharMap;
+            break;
+
+        case 7: // '\007'
+            countryMap = ukKeyCharMap;
+            break;
+
+        case 6: // '\006'
+            countryMap = spanishKeyCharMap;
+            break;
+
+        case 4: // '\004'
+            countryMap = italianKeyCharMap;
+            break;
+
+        case 3: // '\003'
+            countryMap = germanKeyCharMap;
+            break;
+
+        case 2: // '\002'
+            countryMap = frenchKeyCharMap;
+            break;
+
+        case 1: // '\001'
+            countryMap = belgianKeyCharMap;
+            break;
+
+        default:
+            logger.warning("Invalid country keyboard selected.");
+            break;
+        }
+    }
+
+    public int getButtonCode(int i) {
+        switch (i) {
+        default:
+            break;
+
+        case 1: // '\001'
+            if (countryMap == spanishKeyCharMap)
+                return 33;
+            if (countryMap == frenchKeyCharMap)
+                return 31;
+            if (countryMap == italianKeyCharMap)
+                return 48;
+            if (countryMap == belgianKeyCharMap)
+                return 56;
+            break;
+
+        case 2: // '\002'
+            if (countryMap == spanishKeyCharMap || countryMap == frenchKeyCharMap || countryMap == belgianKeyCharMap)
+                return 47;
+            if (countryMap == germanKeyCharMap)
+                return 53;
+            break;
+
+        case 3: // '\003'
+            if (countryMap == frenchKeyCharMap || countryMap == belgianKeyCharMap)
+                return 47;
+            if (countryMap == spanishKeyCharMap)
+                return 52;
+            break;
+
+        case 4: // '\004'
+            if (countryMap == frenchKeyCharMap)
+                return 36;
+            if (countryMap == spanishKeyCharMap)
+                return 47;
+            if (countryMap == italianKeyCharMap || countryMap == belgianKeyCharMap)
+                return 50;
+            if (countryMap == germanKeyCharMap)
+                return 46;
+            break;
+
+        case 5: // '\005'
+            if (countryMap == spanishKeyCharMap || countryMap == belgianKeyCharMap)
+                return 52;
+            if (countryMap == germanKeyCharMap)
+                return 46;
+            break;
+
+        case 10: // '\n'
+            if (countryMap == spanishKeyCharMap)
+                return 53;
+            if (countryMap == germanKeyCharMap)
+                return 45;
+            // fall through
+
+        case 6: // '\006'
+            return 47;
+
+        case 7: // '\007'
+            return 48;
+
+        case 8: // '\b'
+            return 52;
+
+        case 9: // '\t'
+            return 50;
+
+        case 11: // '\013'
+            return 51;
+        }
+        return 0;
+    }
+
+    public int getButtonModifierCode(int i) {
+        switch (i) {
+        default:
+            break;
+
+        case 1: // '\001'
+            if (countryMap == spanishKeyCharMap || countryMap == frenchKeyCharMap || countryMap == italianKeyCharMap || countryMap == belgianKeyCharMap)
+                return 230;
+            break;
+
+        case 2: // '\002'
+            if (countryMap == spanishKeyCharMap)
+                return 225;
+            break;
+
+        case 3: // '\003'
+            if (countryMap == spanishKeyCharMap || countryMap == frenchKeyCharMap || countryMap == belgianKeyCharMap)
+                return 225;
+            break;
+
+        case 4: // '\004'
+            if (countryMap == frenchKeyCharMap || countryMap == italianKeyCharMap || countryMap == belgianKeyCharMap)
+                return 230;
+            if (countryMap == germanKeyCharMap)
+                return 225;
+            break;
+
+        case 5: // '\005'
+            if (countryMap == belgianKeyCharMap)
+                return 230;
+            break;
+
+        case 6: // '\006'
+        case 7: // '\007'
+        case 8: // '\b'
+        case 9: // '\t'
+        case 10: // '\n'
+            return 230;
+
+        case 11: // '\013'
+            return 230;
+        }
+        return 0;
+    }
+
+    public int getKey(KeyEvent keyevent) {
+        char c = keyevent.getKeyChar();
+        int i = keyevent.getKeyCode();
+        switch (keyevent.getKeyLocation()) {
+        case 4: // '\004'
+            switch (i) {
+            case 10: // '\n'
+                return 88;
+
+            case 109: // 'm'
+                return 86;
+
+            case 107: // 'k'
+                return 87;
+
+            case 106: // 'j'
+                return 85;
+
+            case 111: // 'o'
+                return 84;
+
+            case 155: 
+                return 98;
+
+            case 36: // '$'
+                return 95;
+
+            case 33: // '!'
+                return 97;
+
+            case 44: // ','
+            case 46: // '.'
+            case 110: // 'n'
+            case 127: // '\177'
+                return 99;
+
+            case 35: // '#'
+                return 89;
+
+            case 34: // '"'
+                return 91;
+
+            case 39: // '\''
+                return 94;
+
+            case 37: // '%'
+                return 92;
+
+            case 40: // '('
+                return 90;
+
+            case 38: // '&'
+                return 96;
+
+            case 12: // '\f'
+                return 93;
+            }
+            // fall through
+
+        case 2: // '\002'
+            switch (i) {
+            case 17: // '\021'
+                return 224;
+
+            case 16: // '\020'
+                return 225;
+
+            case 18: // '\022'
+                return 226;
+            }
+            // fall through
+
+        case 3: // '\003'
+            switch (i) {
+            case 17: // '\021'
+                return 228;
+
+            case 16: // '\020'
+                return 229;
+
+            case 18: // '\022'
+                return 230;
+            }
+            break;
+        }
+        if (i == 69)
+            return 8;
+        if (countryMap == frenchKeyCharMap) {
+            if (i == 522 && c == '\uFFFF')
+                return 45;
+            if (i == 515)
+                return 48;
+        }
+        if (countryMap == belgianKeyCharMap) {
+            if (i == 130)
+                return 47;
+            if (i == 515)
+                return 48;
+            if (i == 54)
+                return 35;
+            if (i == 153)
+                return 100;
+        }
+        if ((countryMap == germanKeyCharMap || countryMap == italianKeyCharMap) && i == 521)
+            return 48;
+        Integer integer = (Integer)countryMap.get(new Integer(c));
+        if (integer != null)
+            return integer.intValue();
+        if (countryMap == germanKeyCharMap)
+            switch (i) {
+            case 81: // 'Q'
+                return 20;
+
+            case 153: 
+                return 100;
+
+            case 77: // 'M'
+                return 16;
+            }
+        return keyCodeMap[i];
+    }
+
+    private void buildKeyMaps() {
+        keyCodeMap[65] = 4;
+        keyCodeMap[66] = 5;
+        keyCodeMap[67] = 6;
+        keyCodeMap[68] = 7;
+        keyCodeMap[69] = 8;
+        keyCodeMap[70] = 9;
+        keyCodeMap[71] = 10;
+        keyCodeMap[72] = 11;
+        keyCodeMap[73] = 12;
+        keyCodeMap[74] = 13;
+        keyCodeMap[75] = 14;
+        keyCodeMap[76] = 15;
+        keyCodeMap[77] = 16;
+        keyCodeMap[78] = 17;
+        keyCodeMap[79] = 18;
+        keyCodeMap[80] = 19;
+        keyCodeMap[81] = 20;
+        keyCodeMap[82] = 21;
+        keyCodeMap[83] = 22;
+        keyCodeMap[84] = 23;
+        keyCodeMap[85] = 24;
+        keyCodeMap[86] = 25;
+        keyCodeMap[87] = 26;
+        keyCodeMap[88] = 27;
+        keyCodeMap[89] = 28;
+        keyCodeMap[90] = 29;
+        keyCodeMap[49] = 30;
+        keyCodeMap[517] = 30;
+        keyCodeMap[50] = 31;
+        keyCodeMap[512] = 31;
+        keyCodeMap[51] = 32;
+        keyCodeMap[520] = 32;
+        keyCodeMap[52] = 33;
+        keyCodeMap[515] = 33;
+        keyCodeMap[53] = 34;
+        keyCodeMap[54] = 35;
+        keyCodeMap[514] = 35;
+        keyCodeMap[55] = 36;
+        keyCodeMap[150] = 36;
+        keyCodeMap[56] = 37;
+        keyCodeMap[151] = 37;
+        keyCodeMap[57] = 38;
+        keyCodeMap[519] = 38;
+        keyCodeMap[48] = 39;
+        keyCodeMap[522] = 39;
+        keyCodeMap[10] = 40;
+        keyCodeMap[27] = 41;
+        keyCodeMap[8] = 42;
+        keyCodeMap[9] = 43;
+        keyCodeMap[32] = 44;
+        keyCodeMap[45] = 45;
+        keyCodeMap[523] = 45;
+        keyCodeMap[521] = 46;
+        keyCodeMap[61] = 46;
+        keyCodeMap[91] = 47;
+        keyCodeMap[161] = 47;
+        keyCodeMap[93] = 48;
+        keyCodeMap[162] = 48;
+        keyCodeMap[92] = 49;
+        keyCodeMap[59] = 51;
+        keyCodeMap[513] = 51;
+        keyCodeMap[222] = 52;
+        keyCodeMap[152] = 52;
+        keyCodeMap[192] = 53;
+        keyCodeMap[44] = 54;
+        keyCodeMap[153] = 54;
+        keyCodeMap[46] = 55;
+        keyCodeMap[160] = 55;
+        keyCodeMap[47] = 56;
+        keyCodeMap[20] = 57;
+        keyCodeMap[112] = 58;
+        keyCodeMap[113] = 59;
+        keyCodeMap[114] = 60;
+        keyCodeMap[115] = 61;
+        keyCodeMap[116] = 62;
+        keyCodeMap[117] = 63;
+        keyCodeMap[118] = 64;
+        keyCodeMap[119] = 65;
+        keyCodeMap[120] = 66;
+        keyCodeMap[121] = 67;
+        keyCodeMap[122] = 68;
+        keyCodeMap[123] = 69;
+        keyCodeMap[154] = 70;
+        keyCodeMap[145] = 71;
+        keyCodeMap[19] = 72;
+        keyCodeMap[155] = 73;
+        keyCodeMap[36] = 74;
+        keyCodeMap[33] = 75;
+        keyCodeMap[127] = 76;
+        keyCodeMap[35] = 77;
+        keyCodeMap[34] = 78;
+        keyCodeMap[39] = 79;
+        keyCodeMap[37] = 80;
+        keyCodeMap[40] = 81;
+        keyCodeMap[38] = 82;
+        keyCodeMap[144] = 83;
+        keyCodeMap[97] = 89;
+        keyCodeMap[98] = 90;
+        keyCodeMap[99] = 91;
+        keyCodeMap[100] = 92;
+        keyCodeMap[101] = 93;
+        keyCodeMap[12] = 93;
+        keyCodeMap[102] = 94;
+        keyCodeMap[103] = 95;
+        keyCodeMap[104] = 96;
+        keyCodeMap[105] = 97;
+        keyCodeMap[96] = 98;
+        keyCodeMap[28] = 138;
+        keyCodeMap[29] = 139;
+        keyCodeMap[241] = 136;
+        keyCodeMap[245] = 136;
+        keyCodeMap[243] = 53;
+        keyCodeMap[244] = 53;
+        keyCodeMap[263] = 53;
+        keyCodeMap[65406] = 230;
+        japanKeyCharMap.put(new Integer(34), new Integer(31));
+        japanKeyCharMap.put(new Integer(37), new Integer(34));
+        japanKeyCharMap.put(new Integer(38), new Integer(35));
+        japanKeyCharMap.put(new Integer(39), new Integer(36));
+        japanKeyCharMap.put(new Integer(40), new Integer(37));
+        japanKeyCharMap.put(new Integer(41), new Integer(38));
+        japanKeyCharMap.put(new Integer(42), new Integer(52));
+        japanKeyCharMap.put(new Integer(43), new Integer(51));
+        japanKeyCharMap.put(new Integer(58), new Integer(52));
+        japanKeyCharMap.put(new Integer(61), new Integer(45));
+        japanKeyCharMap.put(new Integer(64), new Integer(47));
+        japanKeyCharMap.put(new Integer(91), new Integer(48));
+        japanKeyCharMap.put(new Integer(92), new Integer(135));
+        japanKeyCharMap.put(new Integer(93), new Integer(50));
+        japanKeyCharMap.put(new Integer(94), new Integer(46));
+        japanKeyCharMap.put(new Integer(95), new Integer(135));
+        japanKeyCharMap.put(new Integer(96), new Integer(47));
+        japanKeyCharMap.put(new Integer(123), new Integer(48));
+        japanKeyCharMap.put(new Integer(124), new Integer(137));
+        japanKeyCharMap.put(new Integer(125), new Integer(50));
+        japanKeyCharMap.put(new Integer(126), new Integer(46));
+        ukKeyCharMap.put(new Integer(201), new Integer(8));
+        ukKeyCharMap.put(new Integer(233), new Integer(8));
+        ukKeyCharMap.put(new Integer(205), new Integer(12));
+        ukKeyCharMap.put(new Integer(237), new Integer(12));
+        ukKeyCharMap.put(new Integer(211), new Integer(18));
+        ukKeyCharMap.put(new Integer(243), new Integer(18));
+        ukKeyCharMap.put(new Integer(218), new Integer(24));
+        ukKeyCharMap.put(new Integer(250), new Integer(24));
+        ukKeyCharMap.put(new Integer(8364), new Integer(33));
+        ukKeyCharMap.put(new Integer(166), new Integer(53));
+        ukKeyCharMap.put(new Integer(172), new Integer(53));
+        ukKeyCharMap.put(new Integer(34), new Integer(31));
+        ukKeyCharMap.put(new Integer(163), new Integer(32));
+        ukKeyCharMap.put(new Integer(35), new Integer(50));
+        ukKeyCharMap.put(new Integer(126), new Integer(50));
+        ukKeyCharMap.put(new Integer(64), new Integer(52));
+        ukKeyCharMap.put(new Integer(215), new Integer(85));
+        ukKeyCharMap.put(new Integer(124), new Integer(100));
+        ukKeyCharMap.put(new Integer(92), new Integer(100));
+        spanishKeyCharMap.put(new Integer(8364), new Integer(8));
+        spanishKeyCharMap.put(new Integer(124), new Integer(30));
+        spanishKeyCharMap.put(new Integer(64), new Integer(31));
+        spanishKeyCharMap.put(new Integer(34), new Integer(31));
+        spanishKeyCharMap.put(new Integer(35), new Integer(32));
+        spanishKeyCharMap.put(new Integer(183), new Integer(32));
+        spanishKeyCharMap.put(new Integer(126), new Integer(33));
+        spanishKeyCharMap.put(new Integer(38), new Integer(35));
+        spanishKeyCharMap.put(new Integer(172), new Integer(35));
+        spanishKeyCharMap.put(new Integer(47), new Integer(36));
+        spanishKeyCharMap.put(new Integer(40), new Integer(37));
+        spanishKeyCharMap.put(new Integer(41), new Integer(38));
+        spanishKeyCharMap.put(new Integer(61), new Integer(39));
+        spanishKeyCharMap.put(new Integer(39), new Integer(45));
+        spanishKeyCharMap.put(new Integer(63), new Integer(45));
+        spanishKeyCharMap.put(new Integer(161), new Integer(46));
+        spanishKeyCharMap.put(new Integer(191), new Integer(46));
+        spanishKeyCharMap.put(new Integer(96), new Integer(47));
+        spanishKeyCharMap.put(new Integer(94), new Integer(47));
+        spanishKeyCharMap.put(new Integer(43), new Integer(48));
+        spanishKeyCharMap.put(new Integer(42), new Integer(48));
+        spanishKeyCharMap.put(new Integer(231), new Integer(50));
+        spanishKeyCharMap.put(new Integer(199), new Integer(50));
+        spanishKeyCharMap.put(new Integer(125), new Integer(50));
+        spanishKeyCharMap.put(new Integer(209), new Integer(51));
+        spanishKeyCharMap.put(new Integer(241), new Integer(51));
+        spanishKeyCharMap.put(new Integer(168), new Integer(52));
+        spanishKeyCharMap.put(new Integer(180), new Integer(52));
+        spanishKeyCharMap.put(new Integer(123), new Integer(52));
+        spanishKeyCharMap.put(new Integer(186), new Integer(53));
+        spanishKeyCharMap.put(new Integer(170), new Integer(53));
+        spanishKeyCharMap.put(new Integer(92), new Integer(53));
+        spanishKeyCharMap.put(new Integer(59), new Integer(54));
+        spanishKeyCharMap.put(new Integer(58), new Integer(55));
+        spanishKeyCharMap.put(new Integer(45), new Integer(56));
+        spanishKeyCharMap.put(new Integer(95), new Integer(56));
+        spanishKeyCharMap.put(new Integer(215), new Integer(85));
+        spanishKeyCharMap.put(new Integer(60), new Integer(100));
+        spanishKeyCharMap.put(new Integer(62), new Integer(100));
+        italianKeyCharMap.put(new Integer(8364), new Integer(8));
+        italianKeyCharMap.put(new Integer(34), new Integer(31));
+        italianKeyCharMap.put(new Integer(163), new Integer(32));
+        italianKeyCharMap.put(new Integer(38), new Integer(35));
+        italianKeyCharMap.put(new Integer(47), new Integer(36));
+        italianKeyCharMap.put(new Integer(40), new Integer(37));
+        italianKeyCharMap.put(new Integer(41), new Integer(38));
+        italianKeyCharMap.put(new Integer(61), new Integer(39));
+        italianKeyCharMap.put(new Integer(39), new Integer(45));
+        italianKeyCharMap.put(new Integer(63), new Integer(45));
+        italianKeyCharMap.put(new Integer(94), new Integer(46));
+        italianKeyCharMap.put(new Integer(236), new Integer(46));
+        italianKeyCharMap.put(new Integer(64), new Integer(20));
+        italianKeyCharMap.put(new Integer(232), new Integer(47));
+        italianKeyCharMap.put(new Integer(233), new Integer(47));
+        italianKeyCharMap.put(new Integer(43), new Integer(48));
+        italianKeyCharMap.put(new Integer(42), new Integer(48));
+        italianKeyCharMap.put(new Integer(126), new Integer(48));
+        italianKeyCharMap.put(new Integer(249), new Integer(50));
+        italianKeyCharMap.put(new Integer(167), new Integer(50));
+        italianKeyCharMap.put(new Integer(96), new Integer(50));
+        italianKeyCharMap.put(new Integer(242), new Integer(51));
+        italianKeyCharMap.put(new Integer(231), new Integer(51));
+        italianKeyCharMap.put(new Integer(224), new Integer(52));
+        italianKeyCharMap.put(new Integer(176), new Integer(52));
+        italianKeyCharMap.put(new Integer(35), new Integer(52));
+        italianKeyCharMap.put(new Integer(92), new Integer(53));
+        italianKeyCharMap.put(new Integer(124), new Integer(53));
+        italianKeyCharMap.put(new Integer(59), new Integer(54));
+        italianKeyCharMap.put(new Integer(58), new Integer(55));
+        italianKeyCharMap.put(new Integer(45), new Integer(56));
+        italianKeyCharMap.put(new Integer(95), new Integer(56));
+        italianKeyCharMap.put(new Integer(215), new Integer(85));
+        italianKeyCharMap.put(new Integer(60), new Integer(100));
+        italianKeyCharMap.put(new Integer(62), new Integer(100));
+        germanKeyCharMap.put(new Integer(8364), new Integer(8));
+        germanKeyCharMap.put(new Integer(181), new Integer(16));
+        germanKeyCharMap.put(new Integer(64), new Integer(20));
+        germanKeyCharMap.put(new Integer(122), new Integer(28));
+        germanKeyCharMap.put(new Integer(90), new Integer(28));
+        germanKeyCharMap.put(new Integer(121), new Integer(29));
+        germanKeyCharMap.put(new Integer(89), new Integer(29));
+        germanKeyCharMap.put(new Integer(34), new Integer(31));
+        germanKeyCharMap.put(new Integer(178), new Integer(31));
+        germanKeyCharMap.put(new Integer(167), new Integer(32));
+        germanKeyCharMap.put(new Integer(179), new Integer(32));
+        germanKeyCharMap.put(new Integer(38), new Integer(35));
+        germanKeyCharMap.put(new Integer(47), new Integer(36));
+        germanKeyCharMap.put(new Integer(123), new Integer(36));
+        germanKeyCharMap.put(new Integer(40), new Integer(37));
+        germanKeyCharMap.put(new Integer(91), new Integer(37));
+        germanKeyCharMap.put(new Integer(41), new Integer(38));
+        germanKeyCharMap.put(new Integer(93), new Integer(38));
+        germanKeyCharMap.put(new Integer(61), new Integer(39));
+        germanKeyCharMap.put(new Integer(125), new Integer(39));
+        germanKeyCharMap.put(new Integer(92), new Integer(45));
+        germanKeyCharMap.put(new Integer(63), new Integer(45));
+        germanKeyCharMap.put(new Integer(223), new Integer(45));
+        germanKeyCharMap.put(new Integer(96), new Integer(46));
+        germanKeyCharMap.put(new Integer(180), new Integer(46));
+        germanKeyCharMap.put(new Integer(252), new Integer(47));
+        germanKeyCharMap.put(new Integer(220), new Integer(47));
+        germanKeyCharMap.put(new Integer(43), new Integer(48));
+        germanKeyCharMap.put(new Integer(42), new Integer(48));
+        germanKeyCharMap.put(new Integer(126), new Integer(48));
+        germanKeyCharMap.put(new Integer(35), new Integer(50));
+        germanKeyCharMap.put(new Integer(39), new Integer(50));
+        germanKeyCharMap.put(new Integer(246), new Integer(51));
+        germanKeyCharMap.put(new Integer(214), new Integer(51));
+        germanKeyCharMap.put(new Integer(228), new Integer(52));
+        germanKeyCharMap.put(new Integer(196), new Integer(52));
+        germanKeyCharMap.put(new Integer(94), new Integer(53));
+        germanKeyCharMap.put(new Integer(176), new Integer(53));
+        germanKeyCharMap.put(new Integer(44), new Integer(54));
+        germanKeyCharMap.put(new Integer(59), new Integer(54));
+        germanKeyCharMap.put(new Integer(46), new Integer(55));
+        germanKeyCharMap.put(new Integer(58), new Integer(55));
+        germanKeyCharMap.put(new Integer(45), new Integer(56));
+        germanKeyCharMap.put(new Integer(95), new Integer(56));
+        germanKeyCharMap.put(new Integer(215), new Integer(85));
+        germanKeyCharMap.put(new Integer(60), new Integer(100));
+        germanKeyCharMap.put(new Integer(62), new Integer(100));
+        germanKeyCharMap.put(new Integer(124), new Integer(100));
+        frenchKeyCharMap.put(new Integer(113), new Integer(4));
+        frenchKeyCharMap.put(new Integer(81), new Integer(4));
+        frenchKeyCharMap.put(new Integer(8364), new Integer(8));
+        frenchKeyCharMap.put(new Integer(44), new Integer(16));
+        frenchKeyCharMap.put(new Integer(63), new Integer(16));
+        frenchKeyCharMap.put(new Integer(97), new Integer(20));
+        frenchKeyCharMap.put(new Integer(65), new Integer(20));
+        frenchKeyCharMap.put(new Integer(122), new Integer(26));
+        frenchKeyCharMap.put(new Integer(90), new Integer(26));
+        frenchKeyCharMap.put(new Integer(119), new Integer(29));
+        frenchKeyCharMap.put(new Integer(87), new Integer(29));
+        frenchKeyCharMap.put(new Integer(38), new Integer(30));
+        frenchKeyCharMap.put(new Integer(126), new Integer(31));
+        frenchKeyCharMap.put(new Integer(233), new Integer(31));
+        frenchKeyCharMap.put(new Integer(34), new Integer(32));
+        frenchKeyCharMap.put(new Integer(35), new Integer(32));
+        frenchKeyCharMap.put(new Integer(39), new Integer(33));
+        frenchKeyCharMap.put(new Integer(123), new Integer(33));
+        frenchKeyCharMap.put(new Integer(40), new Integer(34));
+        frenchKeyCharMap.put(new Integer(91), new Integer(34));
+        frenchKeyCharMap.put(new Integer(45), new Integer(35));
+        frenchKeyCharMap.put(new Integer(124), new Integer(35));
+        frenchKeyCharMap.put(new Integer(232), new Integer(36));
+        frenchKeyCharMap.put(new Integer(96), new Integer(36));
+        frenchKeyCharMap.put(new Integer(95), new Integer(37));
+        frenchKeyCharMap.put(new Integer(92), new Integer(37));
+        frenchKeyCharMap.put(new Integer(231), new Integer(38));
+        frenchKeyCharMap.put(new Integer(94), new Integer(38));
+        frenchKeyCharMap.put(new Integer(224), new Integer(39));
+        frenchKeyCharMap.put(new Integer(64), new Integer(39));
+        frenchKeyCharMap.put(new Integer(176), new Integer(45));
+        frenchKeyCharMap.put(new Integer(41), new Integer(45));
+        frenchKeyCharMap.put(new Integer(93), new Integer(45));
+        frenchKeyCharMap.put(new Integer(125), new Integer(46));
+        frenchKeyCharMap.put(new Integer(168), new Integer(47));
+        frenchKeyCharMap.put(new Integer(164), new Integer(48));
+        frenchKeyCharMap.put(new Integer(36), new Integer(48));
+        frenchKeyCharMap.put(new Integer(163), new Integer(48));
+        frenchKeyCharMap.put(new Integer(42), new Integer(50));
+        frenchKeyCharMap.put(new Integer(181), new Integer(50));
+        frenchKeyCharMap.put(new Integer(109), new Integer(51));
+        frenchKeyCharMap.put(new Integer(77), new Integer(51));
+        frenchKeyCharMap.put(new Integer(249), new Integer(52));
+        frenchKeyCharMap.put(new Integer(37), new Integer(52));
+        frenchKeyCharMap.put(new Integer(178), new Integer(53));
+        frenchKeyCharMap.put(new Integer(59), new Integer(54));
+        frenchKeyCharMap.put(new Integer(46), new Integer(54));
+        frenchKeyCharMap.put(new Integer(58), new Integer(55));
+        frenchKeyCharMap.put(new Integer(47), new Integer(55));
+        frenchKeyCharMap.put(new Integer(33), new Integer(56));
+        frenchKeyCharMap.put(new Integer(167), new Integer(56));
+        frenchKeyCharMap.put(new Integer(215), new Integer(85));
+        frenchKeyCharMap.put(new Integer(60), new Integer(100));
+        frenchKeyCharMap.put(new Integer(62), new Integer(100));
+        belgianKeyCharMap.put(new Integer(113), new Integer(4));
+        belgianKeyCharMap.put(new Integer(81), new Integer(4));
+        belgianKeyCharMap.put(new Integer(8364), new Integer(8));
+        belgianKeyCharMap.put(new Integer(44), new Integer(16));
+        belgianKeyCharMap.put(new Integer(63), new Integer(16));
+        belgianKeyCharMap.put(new Integer(97), new Integer(20));
+        belgianKeyCharMap.put(new Integer(65), new Integer(20));
+        belgianKeyCharMap.put(new Integer(122), new Integer(26));
+        belgianKeyCharMap.put(new Integer(90), new Integer(26));
+        belgianKeyCharMap.put(new Integer(119), new Integer(29));
+        belgianKeyCharMap.put(new Integer(87), new Integer(29));
+        belgianKeyCharMap.put(new Integer(38), new Integer(30));
+        belgianKeyCharMap.put(new Integer(124), new Integer(30));
+        belgianKeyCharMap.put(new Integer(64), new Integer(31));
+        belgianKeyCharMap.put(new Integer(233), new Integer(31));
+        belgianKeyCharMap.put(new Integer(34), new Integer(32));
+        belgianKeyCharMap.put(new Integer(35), new Integer(32));
+        belgianKeyCharMap.put(new Integer(39), new Integer(33));
+        belgianKeyCharMap.put(new Integer(123), new Integer(33));
+        belgianKeyCharMap.put(new Integer(40), new Integer(34));
+        belgianKeyCharMap.put(new Integer(91), new Integer(34));
+        belgianKeyCharMap.put(new Integer(167), new Integer(35));
+        belgianKeyCharMap.put(new Integer(94), new Integer(35));
+        belgianKeyCharMap.put(new Integer(232), new Integer(36));
+        belgianKeyCharMap.put(new Integer(33), new Integer(37));
+        belgianKeyCharMap.put(new Integer(231), new Integer(38));
+        belgianKeyCharMap.put(new Integer(123), new Integer(38));
+        belgianKeyCharMap.put(new Integer(224), new Integer(39));
+        belgianKeyCharMap.put(new Integer(125), new Integer(39));
+        belgianKeyCharMap.put(new Integer(176), new Integer(45));
+        belgianKeyCharMap.put(new Integer(41), new Integer(45));
+        belgianKeyCharMap.put(new Integer(45), new Integer(46));
+        belgianKeyCharMap.put(new Integer(95), new Integer(46));
+        belgianKeyCharMap.put(new Integer(168), new Integer(47));
+        belgianKeyCharMap.put(new Integer(42), new Integer(48));
+        belgianKeyCharMap.put(new Integer(36), new Integer(48));
+        belgianKeyCharMap.put(new Integer(163), new Integer(50));
+        belgianKeyCharMap.put(new Integer(181), new Integer(50));
+        belgianKeyCharMap.put(new Integer(109), new Integer(51));
+        belgianKeyCharMap.put(new Integer(77), new Integer(51));
+        belgianKeyCharMap.put(new Integer(249), new Integer(52));
+        belgianKeyCharMap.put(new Integer(37), new Integer(52));
+        belgianKeyCharMap.put(new Integer(178), new Integer(53));
+        belgianKeyCharMap.put(new Integer(179), new Integer(53));
+        belgianKeyCharMap.put(new Integer(59), new Integer(54));
+        belgianKeyCharMap.put(new Integer(46), new Integer(54));
+        belgianKeyCharMap.put(new Integer(58), new Integer(55));
+        belgianKeyCharMap.put(new Integer(47), new Integer(55));
+        belgianKeyCharMap.put(new Integer(43), new Integer(56));
+        belgianKeyCharMap.put(new Integer(61), new Integer(56));
+        belgianKeyCharMap.put(new Integer(215), new Integer(85));
+        belgianKeyCharMap.put(new Integer(60), new Integer(100));
+        belgianKeyCharMap.put(new Integer(62), new Integer(100));
+        belgianKeyCharMap.put(new Integer(92), new Integer(100));
+    }
+
+}