MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / InitKeyTranslator

Function InitKeyTranslator

Source/UserInput/keyTranslator.cpp:560–762  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

558static std::vector<char> key_translation_memory;
559
560void 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));

Callers 1

InitializeMethod · 0.85

Calls 5

UTF8InPlaceLowerFunction · 0.85
clearMethod · 0.45
resizeMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected