Ensure the mappings are generated from/to Key and Scancode.
| 549 | |
| 550 | /// Ensure the mappings are generated from/to Key and Scancode. |
| 551 | void ensureMappings() |
| 552 | { |
| 553 | static bool isMappingInitialized = false; |
| 554 | |
| 555 | if (isMappingInitialized) |
| 556 | return; |
| 557 | |
| 558 | // Phase 1: Initialize mappings with default values |
| 559 | keyToScancodeMapping.fill(sf::Keyboard::Scan::Unknown); |
| 560 | scancodeToKeyMapping.fill(sf::Keyboard::Key::Unknown); |
| 561 | |
| 562 | // Phase 2: Translate scancode to virtual code to key names |
| 563 | for (unsigned int i = 0; i < sf::Keyboard::ScancodeCount; ++i) |
| 564 | { |
| 565 | const auto scan = static_cast<sf::Keyboard::Scancode>(i); |
| 566 | const UINT virtualKey = sfScanToVirtualKey(scan); |
| 567 | const sf::Keyboard::Key key = virtualKeyToSfKey(virtualKey); |
| 568 | if (key != sf::Keyboard::Key::Unknown && keyToScancodeMapping[key] == sf::Keyboard::Scan::Unknown) |
| 569 | keyToScancodeMapping[key] = scan; |
| 570 | scancodeToKeyMapping[scan] = key; |
| 571 | } |
| 572 | |
| 573 | isMappingInitialized = true; |
| 574 | } |
| 575 | |
| 576 | bool isValidScancode(sf::Keyboard::Scancode code) |
| 577 | { |
no test coverage detected