ExtendedKeyCodes.java 32.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
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 final static HashMap<Integer, Integer>  regularKeyCodesMap =
16
                                          new HashMap<Integer,Integer>(83, 1.0f);
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

     // 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 final static HashSet<Integer> extendedKeyCodesSet =
                                                  new HashSet<Integer>(501, 1.0f);
     final public static 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;
         }
40
         return KeyEvent.VK_UNDEFINED;
41 42 43 44
     }
     static {
         regularKeyCodesMap.put(0x08, KeyEvent.VK_BACK_SPACE);
         regularKeyCodesMap.put(0x09, KeyEvent.VK_TAB);
45
         regularKeyCodesMap.put(0x0a, KeyEvent.VK_ENTER);
46
         regularKeyCodesMap.put(0x1B, KeyEvent.VK_ESCAPE);
47
         regularKeyCodesMap.put(0x20AC, KeyEvent.VK_EURO_SIGN);
48
         regularKeyCodesMap.put(0x20, KeyEvent.VK_SPACE);
49 50 51 52 53 54 55 56 57 58
         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);
59 60 61 62 63 64 65 66 67 68 69 70 71 72
         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);
73
         regularKeyCodesMap.put(0x3A, KeyEvent.VK_COLON);
74
         regularKeyCodesMap.put(0x3B, KeyEvent.VK_SEMICOLON);
75
         regularKeyCodesMap.put(0x3C, KeyEvent.VK_LESS);
76
         regularKeyCodesMap.put(0x3D, KeyEvent.VK_EQUALS);
77 78
         regularKeyCodesMap.put(0x3E, KeyEvent.VK_GREATER);
         regularKeyCodesMap.put(0x40, KeyEvent.VK_AT);
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
         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);
108 109 110 111 112 113 114 115 116 117 118 119 120 121
         regularKeyCodesMap.put(0x5E, KeyEvent.VK_CIRCUMFLEX);
         regularKeyCodesMap.put(0x5F, KeyEvent.VK_UNDERSCORE);
         regularKeyCodesMap.put(0x60, KeyEvent.VK_BACK_QUOTE);
         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);
122 123
         regularKeyCodesMap.put(0x7B, KeyEvent.VK_BRACELEFT);
         regularKeyCodesMap.put(0x7D, KeyEvent.VK_BRACERIGHT);
124
         regularKeyCodesMap.put(0x7F, KeyEvent.VK_DELETE);
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629
         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);
         extendedKeyCodesSet.add(0x01000000+0x056F);
         extendedKeyCodesSet.add(0x01000000+0x0570);
         extendedKeyCodesSet.add(0x01000000+0x0571);
         extendedKeyCodesSet.add(0x01000000+0x0572);
         extendedKeyCodesSet.add(0x01000000+0x0573);
         extendedKeyCodesSet.add(0x01000000+0x0574);
         extendedKeyCodesSet.add(0x01000000+0x0575);
         extendedKeyCodesSet.add(0x01000000+0x0576);
         extendedKeyCodesSet.add(0x01000000+0x0577);
         extendedKeyCodesSet.add(0x01000000+0x0578);
         extendedKeyCodesSet.add(0x01000000+0x0579);
         extendedKeyCodesSet.add(0x01000000+0x057A);
         extendedKeyCodesSet.add(0x01000000+0x057B);
         extendedKeyCodesSet.add(0x01000000+0x057C);
         extendedKeyCodesSet.add(0x01000000+0x057D);
         extendedKeyCodesSet.add(0x01000000+0x057E);
         extendedKeyCodesSet.add(0x01000000+0x057F);
         extendedKeyCodesSet.add(0x01000000+0x0580);
         extendedKeyCodesSet.add(0x01000000+0x0581);
         extendedKeyCodesSet.add(0x01000000+0x0582);
         extendedKeyCodesSet.add(0x01000000+0x0583);
         extendedKeyCodesSet.add(0x01000000+0x0584);
         extendedKeyCodesSet.add(0x01000000+0x0585);
         extendedKeyCodesSet.add(0x01000000+0x0586);
         extendedKeyCodesSet.add(0x01000000+0x10D0);
         extendedKeyCodesSet.add(0x01000000+0x10D1);
         extendedKeyCodesSet.add(0x01000000+0x10D2);
         extendedKeyCodesSet.add(0x01000000+0x10D3);
         extendedKeyCodesSet.add(0x01000000+0x10D4);
         extendedKeyCodesSet.add(0x01000000+0x10D5);
         extendedKeyCodesSet.add(0x01000000+0x10D6);
         extendedKeyCodesSet.add(0x01000000+0x10D7);
         extendedKeyCodesSet.add(0x01000000+0x10D8);
         extendedKeyCodesSet.add(0x01000000+0x10D9);
         extendedKeyCodesSet.add(0x01000000+0x10DA);
         extendedKeyCodesSet.add(0x01000000+0x10DB);
         extendedKeyCodesSet.add(0x01000000+0x10DC);
         extendedKeyCodesSet.add(0x01000000+0x10DD);
         extendedKeyCodesSet.add(0x01000000+0x10DE);
         extendedKeyCodesSet.add(0x01000000+0x10DF);
         extendedKeyCodesSet.add(0x01000000+0x10E0);
         extendedKeyCodesSet.add(0x01000000+0x10E1);
         extendedKeyCodesSet.add(0x01000000+0x10E2);
         extendedKeyCodesSet.add(0x01000000+0x10E3);
         extendedKeyCodesSet.add(0x01000000+0x10E4);
         extendedKeyCodesSet.add(0x01000000+0x10E5);
         extendedKeyCodesSet.add(0x01000000+0x10E6);
         extendedKeyCodesSet.add(0x01000000+0x10E7);
         extendedKeyCodesSet.add(0x01000000+0x10E8);
         extendedKeyCodesSet.add(0x01000000+0x10E9);
         extendedKeyCodesSet.add(0x01000000+0x10EA);
         extendedKeyCodesSet.add(0x01000000+0x10EB);
         extendedKeyCodesSet.add(0x01000000+0x10EC);
         extendedKeyCodesSet.add(0x01000000+0x10ED);
         extendedKeyCodesSet.add(0x01000000+0x10EE);
         extendedKeyCodesSet.add(0x01000000+0x10EF);
         extendedKeyCodesSet.add(0x01000000+0x10F0);
         extendedKeyCodesSet.add(0x01000000+0x01E7);
         extendedKeyCodesSet.add(0x01000000+0x0259);
         extendedKeyCodesSet.add(0x01000000+0x1EB9);
         extendedKeyCodesSet.add(0x01000000+0x1ECB);
         extendedKeyCodesSet.add(0x01000000+0x1ECD);
         extendedKeyCodesSet.add(0x01000000+0x1EE5);
         extendedKeyCodesSet.add(0x01000000+0x01A1);
         extendedKeyCodesSet.add(0x01000000+0x01B0);
         extendedKeyCodesSet.add(0x01000000+0x20AB);
     }
}