| 558 | static std::vector<char> key_translation_memory; |
| 559 | |
| 560 | void InitKeyTranslator() { |
| 561 | keys.clear(); |
| 562 | key_translation_memory.resize(1024); |
| 563 | std::vector<std::pair<int, uint32_t> > offsets; |
| 564 | |
| 565 | size_t cur_index = 0; |
| 566 | for (unsigned int& i : SDL_SCANCODES) { |
| 567 | const char* scancodename = SDL_GetScancodeName((SDL_Scancode)i); |
| 568 | size_t memlen = strlen(scancodename) + 1; |
| 569 | if (cur_index + memlen > key_translation_memory.size()) { |
| 570 | key_translation_memory.resize(key_translation_memory.size() + 1024); |
| 571 | } |
| 572 | memcpy(&key_translation_memory[cur_index], scancodename, memlen); |
| 573 | UTF8InPlaceLower(&key_translation_memory[cur_index]); |
| 574 | offsets.push_back(std::pair<int, uint32_t>(cur_index, i)); |
| 575 | cur_index += memlen; |
| 576 | } |
| 577 | |
| 578 | for (auto& offset : offsets) { |
| 579 | keys.push_back(KeyPair(&key_translation_memory[offset.first], (SDL_Scancode)offset.second)); |
| 580 | } |
| 581 | |
| 582 | keys.push_back(KeyPair("backspace", SDL_SCANCODE_BACKSPACE)); |
| 583 | keys.push_back(KeyPair("tab", SDL_SCANCODE_TAB)); |
| 584 | keys.push_back(KeyPair("clear", SDL_SCANCODE_CLEAR)); |
| 585 | keys.push_back(KeyPair("return", SDL_SCANCODE_RETURN)); |
| 586 | keys.push_back(KeyPair("pause", SDL_SCANCODE_PAUSE)); |
| 587 | keys.push_back(KeyPair("esc", SDL_SCANCODE_ESCAPE)); |
| 588 | keys.push_back(KeyPair("space", SDL_SCANCODE_SPACE)); |
| 589 | // keys.push_back(KeyPair("!",SDL_SCANCODE_EXCLAIM)); |
| 590 | // keys.push_back(KeyPair("\"",SDL_SCANCODE_QUOTEDBL)); |
| 591 | // keys.push_back(KeyPair("#",SDL_SCANCODE_HASH)); |
| 592 | // keys.push_back(KeyPair("$",SDL_SCANCODE_DOLLAR)); |
| 593 | // keys.push_back(KeyPair("&",SDL_SCANCODE_AMPERSAND)); |
| 594 | // keys.push_back(KeyPair("\'",SDL_SCANCODE_QUOTE)); |
| 595 | // keys.push_back(KeyPair("(",SDL_SCANCODE_LEFTPAREN)); |
| 596 | // keys.push_back(KeyPair(")",SDL_SCANCODE_RIGHTPAREN)); |
| 597 | // keys.push_back(KeyPair("*",SDL_SCANCODE_ASTERISK)); |
| 598 | // keys.push_back(KeyPair("+",SDL_SCANCODE_PLUS)); |
| 599 | keys.push_back(KeyPair(",", SDL_SCANCODE_COMMA)); |
| 600 | keys.push_back(KeyPair("-", SDL_SCANCODE_MINUS)); |
| 601 | keys.push_back(KeyPair(".", SDL_SCANCODE_PERIOD)); |
| 602 | keys.push_back(KeyPair("/", SDL_SCANCODE_SLASH)); |
| 603 | keys.push_back(KeyPair("0", SDL_SCANCODE_0)); |
| 604 | keys.push_back(KeyPair("1", SDL_SCANCODE_1)); |
| 605 | keys.push_back(KeyPair("2", SDL_SCANCODE_2)); |
| 606 | keys.push_back(KeyPair("3", SDL_SCANCODE_3)); |
| 607 | keys.push_back(KeyPair("4", SDL_SCANCODE_4)); |
| 608 | keys.push_back(KeyPair("5", SDL_SCANCODE_5)); |
| 609 | keys.push_back(KeyPair("6", SDL_SCANCODE_6)); |
| 610 | keys.push_back(KeyPair("7", SDL_SCANCODE_7)); |
| 611 | keys.push_back(KeyPair("8", SDL_SCANCODE_8)); |
| 612 | keys.push_back(KeyPair("9", SDL_SCANCODE_9)); |
| 613 | // keys.push_back(KeyPair(":",SDL_SCANCODE_COLON)); |
| 614 | keys.push_back(KeyPair(";", SDL_SCANCODE_SEMICOLON)); |
| 615 | // keys.push_back(KeyPair("<",SDL_SCANCODE_LESS)); |
| 616 | keys.push_back(KeyPair("=", SDL_SCANCODE_EQUALS)); |
| 617 | // keys.push_back(KeyPair(">",SDL_SCANCODE_GREATER)); |
no test coverage detected