1 /* 2 * Copyright (c) 2009, 2016, 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 package sun.awt; 26 27 import java.util.Collections; 28 import java.util.HashMap; 29 import java.util.HashSet; 30 import java.awt.event.KeyEvent; 31 32 public class ExtendedKeyCodes { 33 /** 34 * ATTN: These are the readonly hashes with load factor == 1; 35 * adding a value, please set the inital capacity to exact number of items 36 * or higher. 37 */ 38 // Keycodes declared in KeyEvent.java with corresponding Unicode values. 39 private static final HashMap<Integer, Integer> regularKeyCodesMap = 40 new HashMap<Integer,Integer>(98, 1.0f); 41 42 // Keycodes derived from Unicode values. Here should be collected codes 43 // for characters appearing on the primary layer of at least one 44 // known keyboard layout. For instance, sterling sign is on the primary layer 45 // of the Mac Italian layout. 46 private static final HashSet<Integer> extendedKeyCodesSet = 47 new HashSet<Integer>(501, 1.0f); 48 public static final int getExtendedKeyCodeForChar( int c ) { 49 int uc = Character.toUpperCase( c ); 50 int lc = Character.toLowerCase( c ); 51 if (regularKeyCodesMap.containsKey( c )) { 52 if(regularKeyCodesMap.containsKey(uc)) { 53 return regularKeyCodesMap.get( uc ); 54 } 55 return regularKeyCodesMap.get( c ); 56 } 57 uc += 0x01000000; 58 lc += 0x01000000; 59 if (extendedKeyCodesSet.contains( uc )) { 60 return uc; 61 }else if (extendedKeyCodesSet.contains( lc )) { 62 return lc; 63 } 64 return KeyEvent.VK_UNDEFINED; 65 } 66 static { 67 regularKeyCodesMap.put(0x08, KeyEvent.VK_BACK_SPACE); 68 regularKeyCodesMap.put(0x09, KeyEvent.VK_TAB); 69 regularKeyCodesMap.put(0x0a, KeyEvent.VK_ENTER); 70 regularKeyCodesMap.put(0x1B, KeyEvent.VK_ESCAPE); 71 regularKeyCodesMap.put(0x20AC, KeyEvent.VK_EURO_SIGN); 72 regularKeyCodesMap.put(0x20, KeyEvent.VK_SPACE); 73 regularKeyCodesMap.put(0x21, KeyEvent.VK_EXCLAMATION_MARK); 74 regularKeyCodesMap.put(0x22, KeyEvent.VK_QUOTEDBL); 75 regularKeyCodesMap.put(0x23, KeyEvent.VK_NUMBER_SIGN); 76 regularKeyCodesMap.put(0x24, KeyEvent.VK_DOLLAR); 77 regularKeyCodesMap.put(0x26, KeyEvent.VK_AMPERSAND); 78 regularKeyCodesMap.put(0x27, KeyEvent.VK_QUOTE); 79 regularKeyCodesMap.put(0x28, KeyEvent.VK_LEFT_PARENTHESIS); 80 regularKeyCodesMap.put(0x29, KeyEvent.VK_RIGHT_PARENTHESIS); 81 regularKeyCodesMap.put(0x2A, KeyEvent.VK_ASTERISK); 82 regularKeyCodesMap.put(0x2B, KeyEvent.VK_PLUS); 83 regularKeyCodesMap.put(0x2C, KeyEvent.VK_COMMA); 84 regularKeyCodesMap.put(0x2D, KeyEvent.VK_MINUS); 85 regularKeyCodesMap.put(0x2E, KeyEvent.VK_PERIOD); 86 regularKeyCodesMap.put(0x2F, KeyEvent.VK_SLASH); 87 regularKeyCodesMap.put(0x30, KeyEvent.VK_0); 88 regularKeyCodesMap.put(0x31, KeyEvent.VK_1); 89 regularKeyCodesMap.put(0x32, KeyEvent.VK_2); 90 regularKeyCodesMap.put(0x33, KeyEvent.VK_3); 91 regularKeyCodesMap.put(0x34, KeyEvent.VK_4); 92 regularKeyCodesMap.put(0x35, KeyEvent.VK_5); 93 regularKeyCodesMap.put(0x36, KeyEvent.VK_6); 94 regularKeyCodesMap.put(0x37, KeyEvent.VK_7); 95 regularKeyCodesMap.put(0x38, KeyEvent.VK_8); 96 regularKeyCodesMap.put(0x39, KeyEvent.VK_9); 97 regularKeyCodesMap.put(0x3A, KeyEvent.VK_COLON); 98 regularKeyCodesMap.put(0x3B, KeyEvent.VK_SEMICOLON); 99 regularKeyCodesMap.put(0x3C, KeyEvent.VK_LESS); 100 regularKeyCodesMap.put(0x3D, KeyEvent.VK_EQUALS); 101 regularKeyCodesMap.put(0x3E, KeyEvent.VK_GREATER); 102 regularKeyCodesMap.put(0x40, KeyEvent.VK_AT); 103 regularKeyCodesMap.put(0x41, KeyEvent.VK_A); 104 regularKeyCodesMap.put(0x42, KeyEvent.VK_B); 105 regularKeyCodesMap.put(0x43, KeyEvent.VK_C); 106 regularKeyCodesMap.put(0x44, KeyEvent.VK_D); 107 regularKeyCodesMap.put(0x45, KeyEvent.VK_E); 108 regularKeyCodesMap.put(0x46, KeyEvent.VK_F); 109 regularKeyCodesMap.put(0x47, KeyEvent.VK_G); 110 regularKeyCodesMap.put(0x48, KeyEvent.VK_H); 111 regularKeyCodesMap.put(0x49, KeyEvent.VK_I); 112 regularKeyCodesMap.put(0x4A, KeyEvent.VK_J); 113 regularKeyCodesMap.put(0x4B, KeyEvent.VK_K); 114 regularKeyCodesMap.put(0x4C, KeyEvent.VK_L); 115 regularKeyCodesMap.put(0x4D, KeyEvent.VK_M); 116 regularKeyCodesMap.put(0x4E, KeyEvent.VK_N); 117 regularKeyCodesMap.put(0x4F, KeyEvent.VK_O); 118 regularKeyCodesMap.put(0x50, KeyEvent.VK_P); 119 regularKeyCodesMap.put(0x51, KeyEvent.VK_Q); 120 regularKeyCodesMap.put(0x52, KeyEvent.VK_R); 121 regularKeyCodesMap.put(0x53, KeyEvent.VK_S); 122 regularKeyCodesMap.put(0x54, KeyEvent.VK_T); 123 regularKeyCodesMap.put(0x55, KeyEvent.VK_U); 124 regularKeyCodesMap.put(0x56, KeyEvent.VK_V); 125 regularKeyCodesMap.put(0x57, KeyEvent.VK_W); 126 regularKeyCodesMap.put(0x58, KeyEvent.VK_X); 127 regularKeyCodesMap.put(0x59, KeyEvent.VK_Y); 128 regularKeyCodesMap.put(0x5A, KeyEvent.VK_Z); 129 regularKeyCodesMap.put(0x5B, KeyEvent.VK_OPEN_BRACKET); 130 regularKeyCodesMap.put(0x5C, KeyEvent.VK_BACK_SLASH); 131 regularKeyCodesMap.put(0x5D, KeyEvent.VK_CLOSE_BRACKET); 132 regularKeyCodesMap.put(0x5E, KeyEvent.VK_CIRCUMFLEX); 133 regularKeyCodesMap.put(0x5F, KeyEvent.VK_UNDERSCORE); 134 regularKeyCodesMap.put(0x60, KeyEvent.VK_BACK_QUOTE); 135 regularKeyCodesMap.put(0x61, KeyEvent.VK_A); 136 regularKeyCodesMap.put(0x62, KeyEvent.VK_B); 137 regularKeyCodesMap.put(0x63, KeyEvent.VK_C); 138 regularKeyCodesMap.put(0x64, KeyEvent.VK_D); 139 regularKeyCodesMap.put(0x65, KeyEvent.VK_E); 140 regularKeyCodesMap.put(0x66, KeyEvent.VK_F); 141 regularKeyCodesMap.put(0x67, KeyEvent.VK_G); 142 regularKeyCodesMap.put(0x68, KeyEvent.VK_H); 143 regularKeyCodesMap.put(0x69, KeyEvent.VK_I); 144 regularKeyCodesMap.put(0x6A, KeyEvent.VK_J); 145 regularKeyCodesMap.put(0x6B, KeyEvent.VK_K); 146 regularKeyCodesMap.put(0x6C, KeyEvent.VK_L); 147 regularKeyCodesMap.put(0x6D, KeyEvent.VK_M); 148 regularKeyCodesMap.put(0x6E, KeyEvent.VK_N); 149 regularKeyCodesMap.put(0x6F, KeyEvent.VK_O); 150 regularKeyCodesMap.put(0x70, KeyEvent.VK_P); 151 regularKeyCodesMap.put(0x71, KeyEvent.VK_Q); 152 regularKeyCodesMap.put(0x72, KeyEvent.VK_R); 153 regularKeyCodesMap.put(0x73, KeyEvent.VK_S); 154 regularKeyCodesMap.put(0x74, KeyEvent.VK_T); 155 regularKeyCodesMap.put(0x75, KeyEvent.VK_U); 156 regularKeyCodesMap.put(0x76, KeyEvent.VK_V); 157 regularKeyCodesMap.put(0x77, KeyEvent.VK_W); 158 regularKeyCodesMap.put(0x78, KeyEvent.VK_X); 159 regularKeyCodesMap.put(0x79, KeyEvent.VK_Y); 160 regularKeyCodesMap.put(0x7A, KeyEvent.VK_Z); 161 regularKeyCodesMap.put(0x7B, KeyEvent.VK_BRACELEFT); 162 regularKeyCodesMap.put(0x7D, KeyEvent.VK_BRACERIGHT); 163 regularKeyCodesMap.put(0x7F, KeyEvent.VK_DELETE); 164 regularKeyCodesMap.put(0xA1, KeyEvent.VK_INVERTED_EXCLAMATION_MARK); 165 166 extendedKeyCodesSet.add(0x01000000+0x0060); 167 extendedKeyCodesSet.add(0x01000000+0x007C); 168 extendedKeyCodesSet.add(0x01000000+0x007E); 169 extendedKeyCodesSet.add(0x01000000+0x00A2); 170 extendedKeyCodesSet.add(0x01000000+0x00A3); 171 extendedKeyCodesSet.add(0x01000000+0x00A5); 172 extendedKeyCodesSet.add(0x01000000+0x00A7); 173 extendedKeyCodesSet.add(0x01000000+0x00A8); 174 extendedKeyCodesSet.add(0x01000000+0x00AB); 175 extendedKeyCodesSet.add(0x01000000+0x00B0); 176 extendedKeyCodesSet.add(0x01000000+0x00B1); 177 extendedKeyCodesSet.add(0x01000000+0x00B2); 178 extendedKeyCodesSet.add(0x01000000+0x00B3); 179 extendedKeyCodesSet.add(0x01000000+0x00B4); 180 extendedKeyCodesSet.add(0x01000000+0x00B5); 181 extendedKeyCodesSet.add(0x01000000+0x00B6); 182 extendedKeyCodesSet.add(0x01000000+0x00B7); 183 extendedKeyCodesSet.add(0x01000000+0x00B9); 184 extendedKeyCodesSet.add(0x01000000+0x00BA); 185 extendedKeyCodesSet.add(0x01000000+0x00BB); 186 extendedKeyCodesSet.add(0x01000000+0x00BC); 187 extendedKeyCodesSet.add(0x01000000+0x00BD); 188 extendedKeyCodesSet.add(0x01000000+0x00BE); 189 extendedKeyCodesSet.add(0x01000000+0x00BF); 190 extendedKeyCodesSet.add(0x01000000+0x00C4); 191 extendedKeyCodesSet.add(0x01000000+0x00C5); 192 extendedKeyCodesSet.add(0x01000000+0x00C6); 193 extendedKeyCodesSet.add(0x01000000+0x00C7); 194 extendedKeyCodesSet.add(0x01000000+0x00D1); 195 extendedKeyCodesSet.add(0x01000000+0x00D6); 196 extendedKeyCodesSet.add(0x01000000+0x00D7); 197 extendedKeyCodesSet.add(0x01000000+0x00D8); 198 extendedKeyCodesSet.add(0x01000000+0x00DF); 199 extendedKeyCodesSet.add(0x01000000+0x00E0); 200 extendedKeyCodesSet.add(0x01000000+0x00E1); 201 extendedKeyCodesSet.add(0x01000000+0x00E2); 202 extendedKeyCodesSet.add(0x01000000+0x00E4); 203 extendedKeyCodesSet.add(0x01000000+0x00E5); 204 extendedKeyCodesSet.add(0x01000000+0x00E6); 205 extendedKeyCodesSet.add(0x01000000+0x00E7); 206 extendedKeyCodesSet.add(0x01000000+0x00E8); 207 extendedKeyCodesSet.add(0x01000000+0x00E9); 208 extendedKeyCodesSet.add(0x01000000+0x00EA); 209 extendedKeyCodesSet.add(0x01000000+0x00EB); 210 extendedKeyCodesSet.add(0x01000000+0x00EC); 211 extendedKeyCodesSet.add(0x01000000+0x00ED); 212 extendedKeyCodesSet.add(0x01000000+0x00EE); 213 extendedKeyCodesSet.add(0x01000000+0x00F0); 214 extendedKeyCodesSet.add(0x01000000+0x00F1); 215 extendedKeyCodesSet.add(0x01000000+0x00F2); 216 extendedKeyCodesSet.add(0x01000000+0x00F3); 217 extendedKeyCodesSet.add(0x01000000+0x00F4); 218 extendedKeyCodesSet.add(0x01000000+0x00F5); 219 extendedKeyCodesSet.add(0x01000000+0x00F6); 220 extendedKeyCodesSet.add(0x01000000+0x00F7); 221 extendedKeyCodesSet.add(0x01000000+0x00F8); 222 extendedKeyCodesSet.add(0x01000000+0x00F9); 223 extendedKeyCodesSet.add(0x01000000+0x00FA); 224 extendedKeyCodesSet.add(0x01000000+0x00FB); 225 extendedKeyCodesSet.add(0x01000000+0x00FC); 226 extendedKeyCodesSet.add(0x01000000+0x00FD); 227 extendedKeyCodesSet.add(0x01000000+0x00FE); 228 extendedKeyCodesSet.add(0x01000000+0x0105); 229 extendedKeyCodesSet.add(0x01000000+0x02DB); 230 extendedKeyCodesSet.add(0x01000000+0x0142); 231 extendedKeyCodesSet.add(0x01000000+0x013E); 232 extendedKeyCodesSet.add(0x01000000+0x015B); 233 extendedKeyCodesSet.add(0x01000000+0x0161); 234 extendedKeyCodesSet.add(0x01000000+0x015F); 235 extendedKeyCodesSet.add(0x01000000+0x0165); 236 extendedKeyCodesSet.add(0x01000000+0x017E); 237 extendedKeyCodesSet.add(0x01000000+0x017C); 238 extendedKeyCodesSet.add(0x01000000+0x0103); 239 extendedKeyCodesSet.add(0x01000000+0x0107); 240 extendedKeyCodesSet.add(0x01000000+0x010D); 241 extendedKeyCodesSet.add(0x01000000+0x0119); 242 extendedKeyCodesSet.add(0x01000000+0x011B); 243 extendedKeyCodesSet.add(0x01000000+0x0111); 244 extendedKeyCodesSet.add(0x01000000+0x0148); 245 extendedKeyCodesSet.add(0x01000000+0x0151); 246 extendedKeyCodesSet.add(0x01000000+0x0171); 247 extendedKeyCodesSet.add(0x01000000+0x0159); 248 extendedKeyCodesSet.add(0x01000000+0x016F); 249 extendedKeyCodesSet.add(0x01000000+0x0163); 250 extendedKeyCodesSet.add(0x01000000+0x02D9); 251 extendedKeyCodesSet.add(0x01000000+0x0130); 252 extendedKeyCodesSet.add(0x01000000+0x0127); 253 extendedKeyCodesSet.add(0x01000000+0x0125); 254 extendedKeyCodesSet.add(0x01000000+0x0131); 255 extendedKeyCodesSet.add(0x01000000+0x011F); 256 extendedKeyCodesSet.add(0x01000000+0x0135); 257 extendedKeyCodesSet.add(0x01000000+0x010B); 258 extendedKeyCodesSet.add(0x01000000+0x0109); 259 extendedKeyCodesSet.add(0x01000000+0x0121); 260 extendedKeyCodesSet.add(0x01000000+0x011D); 261 extendedKeyCodesSet.add(0x01000000+0x016D); 262 extendedKeyCodesSet.add(0x01000000+0x015D); 263 extendedKeyCodesSet.add(0x01000000+0x0138); 264 extendedKeyCodesSet.add(0x01000000+0x0157); 265 extendedKeyCodesSet.add(0x01000000+0x013C); 266 extendedKeyCodesSet.add(0x01000000+0x0113); 267 extendedKeyCodesSet.add(0x01000000+0x0123); 268 extendedKeyCodesSet.add(0x01000000+0x0167); 269 extendedKeyCodesSet.add(0x01000000+0x014B); 270 extendedKeyCodesSet.add(0x01000000+0x0101); 271 extendedKeyCodesSet.add(0x01000000+0x012F); 272 extendedKeyCodesSet.add(0x01000000+0x0117); 273 extendedKeyCodesSet.add(0x01000000+0x012B); 274 extendedKeyCodesSet.add(0x01000000+0x0146); 275 extendedKeyCodesSet.add(0x01000000+0x014D); 276 extendedKeyCodesSet.add(0x01000000+0x0137); 277 extendedKeyCodesSet.add(0x01000000+0x0173); 278 extendedKeyCodesSet.add(0x01000000+0x016B); 279 extendedKeyCodesSet.add(0x01000000+0x0153); 280 extendedKeyCodesSet.add(0x01000000+0x30FC); 281 extendedKeyCodesSet.add(0x01000000+0x30A2); 282 extendedKeyCodesSet.add(0x01000000+0x30A4); 283 extendedKeyCodesSet.add(0x01000000+0x30A6); 284 extendedKeyCodesSet.add(0x01000000+0x30A8); 285 extendedKeyCodesSet.add(0x01000000+0x30AA); 286 extendedKeyCodesSet.add(0x01000000+0x30AB); 287 extendedKeyCodesSet.add(0x01000000+0x30AD); 288 extendedKeyCodesSet.add(0x01000000+0x30AF); 289 extendedKeyCodesSet.add(0x01000000+0x30B1); 290 extendedKeyCodesSet.add(0x01000000+0x30B3); 291 extendedKeyCodesSet.add(0x01000000+0x30B5); 292 extendedKeyCodesSet.add(0x01000000+0x30B7); 293 extendedKeyCodesSet.add(0x01000000+0x30B9); 294 extendedKeyCodesSet.add(0x01000000+0x30BB); 295 extendedKeyCodesSet.add(0x01000000+0x30BD); 296 extendedKeyCodesSet.add(0x01000000+0x30BF); 297 extendedKeyCodesSet.add(0x01000000+0x30C1); 298 extendedKeyCodesSet.add(0x01000000+0x30C4); 299 extendedKeyCodesSet.add(0x01000000+0x30C6); 300 extendedKeyCodesSet.add(0x01000000+0x30C8); 301 extendedKeyCodesSet.add(0x01000000+0x30CA); 302 extendedKeyCodesSet.add(0x01000000+0x30CB); 303 extendedKeyCodesSet.add(0x01000000+0x30CC); 304 extendedKeyCodesSet.add(0x01000000+0x30CD); 305 extendedKeyCodesSet.add(0x01000000+0x30CE); 306 extendedKeyCodesSet.add(0x01000000+0x30CF); 307 extendedKeyCodesSet.add(0x01000000+0x30D2); 308 extendedKeyCodesSet.add(0x01000000+0x30D5); 309 extendedKeyCodesSet.add(0x01000000+0x30D8); 310 extendedKeyCodesSet.add(0x01000000+0x30DB); 311 extendedKeyCodesSet.add(0x01000000+0x30DE); 312 extendedKeyCodesSet.add(0x01000000+0x30DF); 313 extendedKeyCodesSet.add(0x01000000+0x30E0); 314 extendedKeyCodesSet.add(0x01000000+0x30E1); 315 extendedKeyCodesSet.add(0x01000000+0x30E2); 316 extendedKeyCodesSet.add(0x01000000+0x30E4); 317 extendedKeyCodesSet.add(0x01000000+0x30E6); 318 extendedKeyCodesSet.add(0x01000000+0x30E8); 319 extendedKeyCodesSet.add(0x01000000+0x30E9); 320 extendedKeyCodesSet.add(0x01000000+0x30EA); 321 extendedKeyCodesSet.add(0x01000000+0x30EB); 322 extendedKeyCodesSet.add(0x01000000+0x30EC); 323 extendedKeyCodesSet.add(0x01000000+0x30ED); 324 extendedKeyCodesSet.add(0x01000000+0x30EF); 325 extendedKeyCodesSet.add(0x01000000+0x30F3); 326 extendedKeyCodesSet.add(0x01000000+0x309B); 327 extendedKeyCodesSet.add(0x01000000+0x309C); 328 extendedKeyCodesSet.add(0x01000000+0x06F0); 329 extendedKeyCodesSet.add(0x01000000+0x06F1); 330 extendedKeyCodesSet.add(0x01000000+0x06F2); 331 extendedKeyCodesSet.add(0x01000000+0x06F3); 332 extendedKeyCodesSet.add(0x01000000+0x06F4); 333 extendedKeyCodesSet.add(0x01000000+0x06F5); 334 extendedKeyCodesSet.add(0x01000000+0x06F6); 335 extendedKeyCodesSet.add(0x01000000+0x06F7); 336 extendedKeyCodesSet.add(0x01000000+0x06F8); 337 extendedKeyCodesSet.add(0x01000000+0x06F9); 338 extendedKeyCodesSet.add(0x01000000+0x0670); 339 extendedKeyCodesSet.add(0x01000000+0x067E); 340 extendedKeyCodesSet.add(0x01000000+0x0686); 341 extendedKeyCodesSet.add(0x01000000+0x060C); 342 extendedKeyCodesSet.add(0x01000000+0x06D4); 343 extendedKeyCodesSet.add(0x01000000+0x0660); 344 extendedKeyCodesSet.add(0x01000000+0x0661); 345 extendedKeyCodesSet.add(0x01000000+0x0662); 346 extendedKeyCodesSet.add(0x01000000+0x0663); 347 extendedKeyCodesSet.add(0x01000000+0x0664); 348 extendedKeyCodesSet.add(0x01000000+0x0665); 349 extendedKeyCodesSet.add(0x01000000+0x0666); 350 extendedKeyCodesSet.add(0x01000000+0x0667); 351 extendedKeyCodesSet.add(0x01000000+0x0668); 352 extendedKeyCodesSet.add(0x01000000+0x0669); 353 extendedKeyCodesSet.add(0x01000000+0x061B); 354 extendedKeyCodesSet.add(0x01000000+0x0621); 355 extendedKeyCodesSet.add(0x01000000+0x0624); 356 extendedKeyCodesSet.add(0x01000000+0x0626); 357 extendedKeyCodesSet.add(0x01000000+0x0627); 358 extendedKeyCodesSet.add(0x01000000+0x0628); 359 extendedKeyCodesSet.add(0x01000000+0x0629); 360 extendedKeyCodesSet.add(0x01000000+0x062A); 361 extendedKeyCodesSet.add(0x01000000+0x062B); 362 extendedKeyCodesSet.add(0x01000000+0x062C); 363 extendedKeyCodesSet.add(0x01000000+0x062D); 364 extendedKeyCodesSet.add(0x01000000+0x062E); 365 extendedKeyCodesSet.add(0x01000000+0x062F); 366 extendedKeyCodesSet.add(0x01000000+0x0630); 367 extendedKeyCodesSet.add(0x01000000+0x0631); 368 extendedKeyCodesSet.add(0x01000000+0x0632); 369 extendedKeyCodesSet.add(0x01000000+0x0633); 370 extendedKeyCodesSet.add(0x01000000+0x0634); 371 extendedKeyCodesSet.add(0x01000000+0x0635); 372 extendedKeyCodesSet.add(0x01000000+0x0636); 373 extendedKeyCodesSet.add(0x01000000+0x0637); 374 extendedKeyCodesSet.add(0x01000000+0x0638); 375 extendedKeyCodesSet.add(0x01000000+0x0639); 376 extendedKeyCodesSet.add(0x01000000+0x063A); 377 extendedKeyCodesSet.add(0x01000000+0x0641); 378 extendedKeyCodesSet.add(0x01000000+0x0642); 379 extendedKeyCodesSet.add(0x01000000+0x0643); 380 extendedKeyCodesSet.add(0x01000000+0x0644); 381 extendedKeyCodesSet.add(0x01000000+0x0645); 382 extendedKeyCodesSet.add(0x01000000+0x0646); 383 extendedKeyCodesSet.add(0x01000000+0x0647); 384 extendedKeyCodesSet.add(0x01000000+0x0648); 385 extendedKeyCodesSet.add(0x01000000+0x0649); 386 extendedKeyCodesSet.add(0x01000000+0x064A); 387 extendedKeyCodesSet.add(0x01000000+0x064E); 388 extendedKeyCodesSet.add(0x01000000+0x064F); 389 extendedKeyCodesSet.add(0x01000000+0x0650); 390 extendedKeyCodesSet.add(0x01000000+0x0652); 391 extendedKeyCodesSet.add(0x01000000+0x0698); 392 extendedKeyCodesSet.add(0x01000000+0x06A4); 393 extendedKeyCodesSet.add(0x01000000+0x06A9); 394 extendedKeyCodesSet.add(0x01000000+0x06AF); 395 extendedKeyCodesSet.add(0x01000000+0x06BE); 396 extendedKeyCodesSet.add(0x01000000+0x06CC); 397 extendedKeyCodesSet.add(0x01000000+0x06CC); 398 extendedKeyCodesSet.add(0x01000000+0x06D2); 399 extendedKeyCodesSet.add(0x01000000+0x0493); 400 extendedKeyCodesSet.add(0x01000000+0x0497); 401 extendedKeyCodesSet.add(0x01000000+0x049B); 402 extendedKeyCodesSet.add(0x01000000+0x049D); 403 extendedKeyCodesSet.add(0x01000000+0x04A3); 404 extendedKeyCodesSet.add(0x01000000+0x04AF); 405 extendedKeyCodesSet.add(0x01000000+0x04B1); 406 extendedKeyCodesSet.add(0x01000000+0x04B3); 407 extendedKeyCodesSet.add(0x01000000+0x04B9); 408 extendedKeyCodesSet.add(0x01000000+0x04BB); 409 extendedKeyCodesSet.add(0x01000000+0x04D9); 410 extendedKeyCodesSet.add(0x01000000+0x04E9); 411 extendedKeyCodesSet.add(0x01000000+0x0452); 412 extendedKeyCodesSet.add(0x01000000+0x0453); 413 extendedKeyCodesSet.add(0x01000000+0x0451); 414 extendedKeyCodesSet.add(0x01000000+0x0454); 415 extendedKeyCodesSet.add(0x01000000+0x0455); 416 extendedKeyCodesSet.add(0x01000000+0x0456); 417 extendedKeyCodesSet.add(0x01000000+0x0457); 418 extendedKeyCodesSet.add(0x01000000+0x0458); 419 extendedKeyCodesSet.add(0x01000000+0x0459); 420 extendedKeyCodesSet.add(0x01000000+0x045A); 421 extendedKeyCodesSet.add(0x01000000+0x045B); 422 extendedKeyCodesSet.add(0x01000000+0x045C); 423 extendedKeyCodesSet.add(0x01000000+0x0491); 424 extendedKeyCodesSet.add(0x01000000+0x045E); 425 extendedKeyCodesSet.add(0x01000000+0x045F); 426 extendedKeyCodesSet.add(0x01000000+0x2116); 427 extendedKeyCodesSet.add(0x01000000+0x044E); 428 extendedKeyCodesSet.add(0x01000000+0x0430); 429 extendedKeyCodesSet.add(0x01000000+0x0431); 430 extendedKeyCodesSet.add(0x01000000+0x0446); 431 extendedKeyCodesSet.add(0x01000000+0x0434); 432 extendedKeyCodesSet.add(0x01000000+0x0435); 433 extendedKeyCodesSet.add(0x01000000+0x0444); 434 extendedKeyCodesSet.add(0x01000000+0x0433); 435 extendedKeyCodesSet.add(0x01000000+0x0445); 436 extendedKeyCodesSet.add(0x01000000+0x0438); 437 extendedKeyCodesSet.add(0x01000000+0x0439); 438 extendedKeyCodesSet.add(0x01000000+0x043A); 439 extendedKeyCodesSet.add(0x01000000+0x043B); 440 extendedKeyCodesSet.add(0x01000000+0x043C); 441 extendedKeyCodesSet.add(0x01000000+0x043D); 442 extendedKeyCodesSet.add(0x01000000+0x043E); 443 extendedKeyCodesSet.add(0x01000000+0x043F); 444 extendedKeyCodesSet.add(0x01000000+0x044F); 445 extendedKeyCodesSet.add(0x01000000+0x0440); 446 extendedKeyCodesSet.add(0x01000000+0x0441); 447 extendedKeyCodesSet.add(0x01000000+0x0442); 448 extendedKeyCodesSet.add(0x01000000+0x0443); 449 extendedKeyCodesSet.add(0x01000000+0x0436); 450 extendedKeyCodesSet.add(0x01000000+0x0432); 451 extendedKeyCodesSet.add(0x01000000+0x044C); 452 extendedKeyCodesSet.add(0x01000000+0x044B); 453 extendedKeyCodesSet.add(0x01000000+0x0437); 454 extendedKeyCodesSet.add(0x01000000+0x0448); 455 extendedKeyCodesSet.add(0x01000000+0x044D); 456 extendedKeyCodesSet.add(0x01000000+0x0449); 457 extendedKeyCodesSet.add(0x01000000+0x0447); 458 extendedKeyCodesSet.add(0x01000000+0x044A); 459 extendedKeyCodesSet.add(0x01000000+0x2015); 460 extendedKeyCodesSet.add(0x01000000+0x03B1); 461 extendedKeyCodesSet.add(0x01000000+0x03B2); 462 extendedKeyCodesSet.add(0x01000000+0x03B3); 463 extendedKeyCodesSet.add(0x01000000+0x03B4); 464 extendedKeyCodesSet.add(0x01000000+0x03B5); 465 extendedKeyCodesSet.add(0x01000000+0x03B6); 466 extendedKeyCodesSet.add(0x01000000+0x03B7); 467 extendedKeyCodesSet.add(0x01000000+0x03B8); 468 extendedKeyCodesSet.add(0x01000000+0x03B9); 469 extendedKeyCodesSet.add(0x01000000+0x03BA); 470 extendedKeyCodesSet.add(0x01000000+0x03BB); 471 extendedKeyCodesSet.add(0x01000000+0x03BC); 472 extendedKeyCodesSet.add(0x01000000+0x03BD); 473 extendedKeyCodesSet.add(0x01000000+0x03BE); 474 extendedKeyCodesSet.add(0x01000000+0x03BF); 475 extendedKeyCodesSet.add(0x01000000+0x03C0); 476 extendedKeyCodesSet.add(0x01000000+0x03C1); 477 extendedKeyCodesSet.add(0x01000000+0x03C3); 478 extendedKeyCodesSet.add(0x01000000+0x03C2); 479 extendedKeyCodesSet.add(0x01000000+0x03C4); 480 extendedKeyCodesSet.add(0x01000000+0x03C5); 481 extendedKeyCodesSet.add(0x01000000+0x03C6); 482 extendedKeyCodesSet.add(0x01000000+0x03C7); 483 extendedKeyCodesSet.add(0x01000000+0x03C8); 484 extendedKeyCodesSet.add(0x01000000+0x03C9); 485 extendedKeyCodesSet.add(0x01000000+0x2190); 486 extendedKeyCodesSet.add(0x01000000+0x2192); 487 extendedKeyCodesSet.add(0x01000000+0x2193); 488 extendedKeyCodesSet.add(0x01000000+0x2013); 489 extendedKeyCodesSet.add(0x01000000+0x201C); 490 extendedKeyCodesSet.add(0x01000000+0x201D); 491 extendedKeyCodesSet.add(0x01000000+0x201E); 492 extendedKeyCodesSet.add(0x01000000+0x05D0); 493 extendedKeyCodesSet.add(0x01000000+0x05D1); 494 extendedKeyCodesSet.add(0x01000000+0x05D2); 495 extendedKeyCodesSet.add(0x01000000+0x05D3); 496 extendedKeyCodesSet.add(0x01000000+0x05D4); 497 extendedKeyCodesSet.add(0x01000000+0x05D5); 498 extendedKeyCodesSet.add(0x01000000+0x05D6); 499 extendedKeyCodesSet.add(0x01000000+0x05D7); 500 extendedKeyCodesSet.add(0x01000000+0x05D8); 501 extendedKeyCodesSet.add(0x01000000+0x05D9); 502 extendedKeyCodesSet.add(0x01000000+0x05DA); 503 extendedKeyCodesSet.add(0x01000000+0x05DB); 504 extendedKeyCodesSet.add(0x01000000+0x05DC); 505 extendedKeyCodesSet.add(0x01000000+0x05DD); 506 extendedKeyCodesSet.add(0x01000000+0x05DE); 507 extendedKeyCodesSet.add(0x01000000+0x05DF); 508 extendedKeyCodesSet.add(0x01000000+0x05E0); 509 extendedKeyCodesSet.add(0x01000000+0x05E1); 510 extendedKeyCodesSet.add(0x01000000+0x05E2); 511 extendedKeyCodesSet.add(0x01000000+0x05E3); 512 extendedKeyCodesSet.add(0x01000000+0x05E4); 513 extendedKeyCodesSet.add(0x01000000+0x05E5); 514 extendedKeyCodesSet.add(0x01000000+0x05E6); 515 extendedKeyCodesSet.add(0x01000000+0x05E7); 516 extendedKeyCodesSet.add(0x01000000+0x05E8); 517 extendedKeyCodesSet.add(0x01000000+0x05E9); 518 extendedKeyCodesSet.add(0x01000000+0x05EA); 519 extendedKeyCodesSet.add(0x01000000+0x0E01); 520 extendedKeyCodesSet.add(0x01000000+0x0E02); 521 extendedKeyCodesSet.add(0x01000000+0x0E03); 522 extendedKeyCodesSet.add(0x01000000+0x0E04); 523 extendedKeyCodesSet.add(0x01000000+0x0E05); 524 extendedKeyCodesSet.add(0x01000000+0x0E07); 525 extendedKeyCodesSet.add(0x01000000+0x0E08); 526 extendedKeyCodesSet.add(0x01000000+0x0E0A); 527 extendedKeyCodesSet.add(0x01000000+0x0E0C); 528 extendedKeyCodesSet.add(0x01000000+0x0E14); 529 extendedKeyCodesSet.add(0x01000000+0x0E15); 530 extendedKeyCodesSet.add(0x01000000+0x0E16); 531 extendedKeyCodesSet.add(0x01000000+0x0E17); 532 extendedKeyCodesSet.add(0x01000000+0x0E19); 533 extendedKeyCodesSet.add(0x01000000+0x0E1A); 534 extendedKeyCodesSet.add(0x01000000+0x0E1B); 535 extendedKeyCodesSet.add(0x01000000+0x0E1C); 536 extendedKeyCodesSet.add(0x01000000+0x0E1D); 537 extendedKeyCodesSet.add(0x01000000+0x0E1E); 538 extendedKeyCodesSet.add(0x01000000+0x0E1F); 539 extendedKeyCodesSet.add(0x01000000+0x0E20); 540 extendedKeyCodesSet.add(0x01000000+0x0E21); 541 extendedKeyCodesSet.add(0x01000000+0x0E22); 542 extendedKeyCodesSet.add(0x01000000+0x0E23); 543 extendedKeyCodesSet.add(0x01000000+0x0E25); 544 extendedKeyCodesSet.add(0x01000000+0x0E27); 545 extendedKeyCodesSet.add(0x01000000+0x0E2A); 546 extendedKeyCodesSet.add(0x01000000+0x0E2B); 547 extendedKeyCodesSet.add(0x01000000+0x0E2D); 548 extendedKeyCodesSet.add(0x01000000+0x0E30); 549 extendedKeyCodesSet.add(0x01000000+0x0E31); 550 extendedKeyCodesSet.add(0x01000000+0x0E32); 551 extendedKeyCodesSet.add(0x01000000+0x0E33); 552 extendedKeyCodesSet.add(0x01000000+0x0E34); 553 extendedKeyCodesSet.add(0x01000000+0x0E35); 554 extendedKeyCodesSet.add(0x01000000+0x0E36); 555 extendedKeyCodesSet.add(0x01000000+0x0E37); 556 extendedKeyCodesSet.add(0x01000000+0x0E38); 557 extendedKeyCodesSet.add(0x01000000+0x0E39); 558 extendedKeyCodesSet.add(0x01000000+0x0E3F); 559 extendedKeyCodesSet.add(0x01000000+0x0E40); 560 extendedKeyCodesSet.add(0x01000000+0x0E41); 561 extendedKeyCodesSet.add(0x01000000+0x0E43); 562 extendedKeyCodesSet.add(0x01000000+0x0E44); 563 extendedKeyCodesSet.add(0x01000000+0x0E45); 564 extendedKeyCodesSet.add(0x01000000+0x0E46); 565 extendedKeyCodesSet.add(0x01000000+0x0E47); 566 extendedKeyCodesSet.add(0x01000000+0x0E48); 567 extendedKeyCodesSet.add(0x01000000+0x0E49); 568 extendedKeyCodesSet.add(0x01000000+0x0E50); 569 extendedKeyCodesSet.add(0x01000000+0x0E51); 570 extendedKeyCodesSet.add(0x01000000+0x0E52); 571 extendedKeyCodesSet.add(0x01000000+0x0E53); 572 extendedKeyCodesSet.add(0x01000000+0x0E54); 573 extendedKeyCodesSet.add(0x01000000+0x0E55); 574 extendedKeyCodesSet.add(0x01000000+0x0E56); 575 extendedKeyCodesSet.add(0x01000000+0x0E57); 576 extendedKeyCodesSet.add(0x01000000+0x0E58); 577 extendedKeyCodesSet.add(0x01000000+0x0E59); 578 extendedKeyCodesSet.add(0x01000000+0x0587); 579 extendedKeyCodesSet.add(0x01000000+0x0589); 580 extendedKeyCodesSet.add(0x01000000+0x0589); 581 extendedKeyCodesSet.add(0x01000000+0x055D); 582 extendedKeyCodesSet.add(0x01000000+0x055D); 583 extendedKeyCodesSet.add(0x01000000+0x055B); 584 extendedKeyCodesSet.add(0x01000000+0x055B); 585 extendedKeyCodesSet.add(0x01000000+0x055E); 586 extendedKeyCodesSet.add(0x01000000+0x055E); 587 extendedKeyCodesSet.add(0x01000000+0x0561); 588 extendedKeyCodesSet.add(0x01000000+0x0562); 589 extendedKeyCodesSet.add(0x01000000+0x0563); 590 extendedKeyCodesSet.add(0x01000000+0x0564); 591 extendedKeyCodesSet.add(0x01000000+0x0565); 592 extendedKeyCodesSet.add(0x01000000+0x0566); 593 extendedKeyCodesSet.add(0x01000000+0x0567); 594 extendedKeyCodesSet.add(0x01000000+0x0568); 595 extendedKeyCodesSet.add(0x01000000+0x0569); 596 extendedKeyCodesSet.add(0x01000000+0x056A); 597 extendedKeyCodesSet.add(0x01000000+0x056B); 598 extendedKeyCodesSet.add(0x01000000+0x056C); 599 extendedKeyCodesSet.add(0x01000000+0x056D); 600 extendedKeyCodesSet.add(0x01000000+0x056E); 601 extendedKeyCodesSet.add(0x01000000+0x056F); 602 extendedKeyCodesSet.add(0x01000000+0x0570); 603 extendedKeyCodesSet.add(0x01000000+0x0571); 604 extendedKeyCodesSet.add(0x01000000+0x0572); 605 extendedKeyCodesSet.add(0x01000000+0x0573); 606 extendedKeyCodesSet.add(0x01000000+0x0574); 607 extendedKeyCodesSet.add(0x01000000+0x0575); 608 extendedKeyCodesSet.add(0x01000000+0x0576); 609 extendedKeyCodesSet.add(0x01000000+0x0577); 610 extendedKeyCodesSet.add(0x01000000+0x0578); 611 extendedKeyCodesSet.add(0x01000000+0x0579); 612 extendedKeyCodesSet.add(0x01000000+0x057A); 613 extendedKeyCodesSet.add(0x01000000+0x057B); 614 extendedKeyCodesSet.add(0x01000000+0x057C); 615 extendedKeyCodesSet.add(0x01000000+0x057D); 616 extendedKeyCodesSet.add(0x01000000+0x057E); 617 extendedKeyCodesSet.add(0x01000000+0x057F); 618 extendedKeyCodesSet.add(0x01000000+0x0580); 619 extendedKeyCodesSet.add(0x01000000+0x0581); 620 extendedKeyCodesSet.add(0x01000000+0x0582); 621 extendedKeyCodesSet.add(0x01000000+0x0583); 622 extendedKeyCodesSet.add(0x01000000+0x0584); 623 extendedKeyCodesSet.add(0x01000000+0x0585); 624 extendedKeyCodesSet.add(0x01000000+0x0586); 625 extendedKeyCodesSet.add(0x01000000+0x10D0); 626 extendedKeyCodesSet.add(0x01000000+0x10D1); 627 extendedKeyCodesSet.add(0x01000000+0x10D2); 628 extendedKeyCodesSet.add(0x01000000+0x10D3); 629 extendedKeyCodesSet.add(0x01000000+0x10D4); 630 extendedKeyCodesSet.add(0x01000000+0x10D5); 631 extendedKeyCodesSet.add(0x01000000+0x10D6); 632 extendedKeyCodesSet.add(0x01000000+0x10D7); 633 extendedKeyCodesSet.add(0x01000000+0x10D8); 634 extendedKeyCodesSet.add(0x01000000+0x10D9); 635 extendedKeyCodesSet.add(0x01000000+0x10DA); 636 extendedKeyCodesSet.add(0x01000000+0x10DB); 637 extendedKeyCodesSet.add(0x01000000+0x10DC); 638 extendedKeyCodesSet.add(0x01000000+0x10DD); 639 extendedKeyCodesSet.add(0x01000000+0x10DE); 640 extendedKeyCodesSet.add(0x01000000+0x10DF); 641 extendedKeyCodesSet.add(0x01000000+0x10E0); 642 extendedKeyCodesSet.add(0x01000000+0x10E1); 643 extendedKeyCodesSet.add(0x01000000+0x10E2); 644 extendedKeyCodesSet.add(0x01000000+0x10E3); 645 extendedKeyCodesSet.add(0x01000000+0x10E4); 646 extendedKeyCodesSet.add(0x01000000+0x10E5); 647 extendedKeyCodesSet.add(0x01000000+0x10E6); 648 extendedKeyCodesSet.add(0x01000000+0x10E7); 649 extendedKeyCodesSet.add(0x01000000+0x10E8); 650 extendedKeyCodesSet.add(0x01000000+0x10E9); 651 extendedKeyCodesSet.add(0x01000000+0x10EA); 652 extendedKeyCodesSet.add(0x01000000+0x10EB); 653 extendedKeyCodesSet.add(0x01000000+0x10EC); 654 extendedKeyCodesSet.add(0x01000000+0x10ED); 655 extendedKeyCodesSet.add(0x01000000+0x10EE); 656 extendedKeyCodesSet.add(0x01000000+0x10EF); 657 extendedKeyCodesSet.add(0x01000000+0x10F0); 658 extendedKeyCodesSet.add(0x01000000+0x01E7); 659 extendedKeyCodesSet.add(0x01000000+0x0259); 660 extendedKeyCodesSet.add(0x01000000+0x1EB9); 661 extendedKeyCodesSet.add(0x01000000+0x1ECB); 662 extendedKeyCodesSet.add(0x01000000+0x1ECD); 663 extendedKeyCodesSet.add(0x01000000+0x1EE5); 664 extendedKeyCodesSet.add(0x01000000+0x01A1); 665 extendedKeyCodesSet.add(0x01000000+0x01B0); 666 extendedKeyCodesSet.add(0x01000000+0x20AB); 667 } 668 }