From 1d652e0b1eae8d1d76efb4ede350ed17eccf1812 Mon Sep 17 00:00:00 2001 From: kimci86 Date: Fri, 22 Nov 2024 21:34:00 +0100 Subject: [PATCH] Add keyboard example program --- examples/CMakeLists.txt | 1 + examples/asset_licenses.md | 34 +- examples/keyboard/CMakeLists.txt | 16 + examples/keyboard/Keyboard.cpp | 865 ++++++++++++++++++ examples/keyboard/resources/Tuffy.ttf | Bin 0 -> 172324 bytes examples/keyboard/resources/error_005.ogg | Bin 0 -> 7266 bytes examples/keyboard/resources/mouseclick1.ogg | Bin 0 -> 4686 bytes examples/keyboard/resources/mouserelease1.ogg | Bin 0 -> 4775 bytes 8 files changed, 901 insertions(+), 15 deletions(-) create mode 100644 examples/keyboard/CMakeLists.txt create mode 100644 examples/keyboard/Keyboard.cpp create mode 100755 examples/keyboard/resources/Tuffy.ttf create mode 100644 examples/keyboard/resources/error_005.ogg create mode 100644 examples/keyboard/resources/mouseclick1.ogg create mode 100644 examples/keyboard/resources/mouserelease1.ogg diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 2ee9b16b1..ffbb2d1cc 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -44,6 +44,7 @@ if(SFML_BUILD_GRAPHICS) endif() if(SFML_BUILD_GRAPHICS AND SFML_BUILD_AUDIO) add_subdirectory(tennis) + add_subdirectory(keyboard) if(NOT SFML_OPENGL_ES) add_subdirectory(sound_effects) diff --git a/examples/asset_licenses.md b/examples/asset_licenses.md index db56cb2da..ba58e84a2 100644 --- a/examples/asset_licenses.md +++ b/examples/asset_licenses.md @@ -2,19 +2,22 @@ All assets are under public domain (CC0): -| Name | Author | Link | -| ------------------------------- | ------------------------- | -------------------------- | -| Tuffy 1.1 font | Thatcher Ulrich | [Ulrich's fonts][1] | -| sounds/resources/doodle_pop.ogg | Elijah Hopp | [public-domain][2] | -| tennis/resources/ball.wav | Elijah Hopp | [public-domain][2] | -| opengl/resources/background.jpg | Nidhoggn | [Open Game Art][3] | -| shader/resources/background.jpg | Arcana Dea | [Public Domain Images][4] | -| shader/resources/devices.png | Kenney.nl | [Game Icons Pack][5] | -| sound/resources/ding.flac | Kenney.nl | [Interface Sounds Pack][6] | -| sound/resources/ding.mp3 | Kenney.nl | [Interface Sounds Pack][6] | -| win32/resources/image1.jpg | Kenney.nl | [Toon Character Pack][7] | -| win32/resources/image2.jpg | Kenney.nl | [Toon Character Pack][7] | -| sound/resources/killdeer.wav | US National Park Services | [Bird sounds][8] | +| Name | Author | Link | +| ------------------------------------ | ------------------------- | -------------------------- | +| Tuffy 1.1 and 1.28 fonts | Thatcher Ulrich | [Ulrich's fonts][1] | +| sounds/resources/doodle_pop.ogg | Elijah Hopp | [public-domain][2] | +| tennis/resources/ball.wav | Elijah Hopp | [public-domain][2] | +| opengl/resources/background.jpg | Nidhoggn | [Open Game Art][3] | +| shader/resources/background.jpg | Arcana Dea | [Public Domain Images][4] | +| shader/resources/devices.png | Kenney.nl | [Game Icons Pack][5] | +| sound/resources/ding.flac | Kenney.nl | [Interface Sounds Pack][6] | +| sound/resources/ding.mp3 | Kenney.nl | [Interface Sounds Pack][6] | +| keyboard/resources/error_005.ogg | Kenney.nl | [Interface Sounds Pack][6] | +| keyboard/resources/mouseclick1.ogg | Kenney.nl | [UI Audio Pack][7] | +| keyboard/resources/mouserelease1.ogg | Kenney.nl | [UI Audio Pack][7] | +| win32/resources/image1.jpg | Kenney.nl | [Toon Character Pack][8] | +| win32/resources/image2.jpg | Kenney.nl | [Toon Character Pack][8] | +| sound/resources/killdeer.wav | US National Park Services | [Bird sounds][9] | [1]: http://tulrich.com/fonts/ [2]: https://github.com/elijahfhopp/public-domain @@ -22,5 +25,6 @@ All assets are under public domain (CC0): [4]: https://www.publicdomainpictures.net/en/view-image.php?image=10979&picture=monarch-butterfly [5]: https://www.kenney.nl/assets/game-icons [6]: https://www.kenney.nl/assets/interface-sounds -[7]: https://www.kenney.nl/assets/toon-characters-1 -[8]: https://www.nps.gov/subjects/sound/sounds-killdeer.htm +[7]: https://www.kenney.nl/assets/ui-audio +[8]: https://www.kenney.nl/assets/toon-characters-1 +[9]: https://www.nps.gov/subjects/sound/sounds-killdeer.htm diff --git a/examples/keyboard/CMakeLists.txt b/examples/keyboard/CMakeLists.txt new file mode 100644 index 000000000..a43777704 --- /dev/null +++ b/examples/keyboard/CMakeLists.txt @@ -0,0 +1,16 @@ +# all source files +set(SRC Keyboard.cpp) +if(SFML_OS_IOS) + set(RESOURCES + resources/error_005.ogg + resources/mouseclick1.ogg + resources/mouserelease1.ogg + resources/Tuffy.ttf) + set_source_files_properties(${RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) +endif() + +# define the keyboard target +sfml_add_example(keyboard GUI_APP + SOURCES ${SRC} + BUNDLE_RESOURCES ${RESOURCES} + DEPENDS SFML::Audio SFML::Graphics) diff --git a/examples/keyboard/Keyboard.cpp b/examples/keyboard/Keyboard.cpp new file mode 100644 index 000000000..f9ed9f7c8 --- /dev/null +++ b/examples/keyboard/Keyboard.cpp @@ -0,0 +1,865 @@ +//////////////////////////////////////////////////////////// +// Headers +//////////////////////////////////////////////////////////// +#include + +#include + +#ifdef SFML_SYSTEM_IOS +#include +#endif + +#include + +#include +#include + + +namespace +{ +std::filesystem::path resourcesDir() +{ +#ifdef SFML_SYSTEM_IOS + return ""; +#else + return "resources"; +#endif +} + +// Get the C++ enumerator name of the given `sf::Keyboard::Key` value including `Key::` prefix +std::string keyIdentifier(sf::Keyboard::Key code) +{ + switch (code) + { +#define CASE(code) \ + case sf::Keyboard::Key::code: \ + return "Key::" #code + CASE(Unknown); + CASE(A); + CASE(B); + CASE(C); + CASE(D); + CASE(E); + CASE(F); + CASE(G); + CASE(H); + CASE(I); + CASE(J); + CASE(K); + CASE(L); + CASE(M); + CASE(N); + CASE(O); + CASE(P); + CASE(Q); + CASE(R); + CASE(S); + CASE(T); + CASE(U); + CASE(V); + CASE(W); + CASE(X); + CASE(Y); + CASE(Z); + CASE(Num0); + CASE(Num1); + CASE(Num2); + CASE(Num3); + CASE(Num4); + CASE(Num5); + CASE(Num6); + CASE(Num7); + CASE(Num8); + CASE(Num9); + CASE(Escape); + CASE(LControl); + CASE(LShift); + CASE(LAlt); + CASE(LSystem); + CASE(RControl); + CASE(RShift); + CASE(RAlt); + CASE(RSystem); + CASE(Menu); + CASE(LBracket); + CASE(RBracket); + CASE(Semicolon); + CASE(Comma); + CASE(Period); + CASE(Apostrophe); + CASE(Slash); + CASE(Backslash); + CASE(Grave); + CASE(Equal); + CASE(Hyphen); + CASE(Space); + CASE(Enter); + CASE(Backspace); + CASE(Tab); + CASE(PageUp); + CASE(PageDown); + CASE(End); + CASE(Home); + CASE(Insert); + CASE(Delete); + CASE(Add); + CASE(Subtract); + CASE(Multiply); + CASE(Divide); + CASE(Left); + CASE(Right); + CASE(Up); + CASE(Down); + CASE(Numpad0); + CASE(Numpad1); + CASE(Numpad2); + CASE(Numpad3); + CASE(Numpad4); + CASE(Numpad5); + CASE(Numpad6); + CASE(Numpad7); + CASE(Numpad8); + CASE(Numpad9); + CASE(F1); + CASE(F2); + CASE(F3); + CASE(F4); + CASE(F5); + CASE(F6); + CASE(F7); + CASE(F8); + CASE(F9); + CASE(F10); + CASE(F11); + CASE(F12); + CASE(F13); + CASE(F14); + CASE(F15); + CASE(Pause); +#undef CASE + } + + throw std::runtime_error("invalid keyboard code"); +} + +// Get the C++ enumerator name of the given `sf::Keyboard::Scancode` value including `Scan::` prefix +std::string scancodeIdentifier(sf::Keyboard::Scancode scancode) +{ + switch (scancode) + { +#define CASE(scancode) \ + case sf::Keyboard::Scan::scancode: \ + return "Scan::" #scancode + CASE(Unknown); + CASE(A); + CASE(B); + CASE(C); + CASE(D); + CASE(E); + CASE(F); + CASE(G); + CASE(H); + CASE(I); + CASE(J); + CASE(K); + CASE(L); + CASE(M); + CASE(N); + CASE(O); + CASE(P); + CASE(Q); + CASE(R); + CASE(S); + CASE(T); + CASE(U); + CASE(V); + CASE(W); + CASE(X); + CASE(Y); + CASE(Z); + CASE(Num1); + CASE(Num2); + CASE(Num3); + CASE(Num4); + CASE(Num5); + CASE(Num6); + CASE(Num7); + CASE(Num8); + CASE(Num9); + CASE(Num0); + CASE(Enter); + CASE(Escape); + CASE(Backspace); + CASE(Tab); + CASE(Space); + CASE(Hyphen); + CASE(Equal); + CASE(LBracket); + CASE(RBracket); + CASE(Backslash); + CASE(Semicolon); + CASE(Apostrophe); + CASE(Grave); + CASE(Comma); + CASE(Period); + CASE(Slash); + CASE(F1); + CASE(F2); + CASE(F3); + CASE(F4); + CASE(F5); + CASE(F6); + CASE(F7); + CASE(F8); + CASE(F9); + CASE(F10); + CASE(F11); + CASE(F12); + CASE(F13); + CASE(F14); + CASE(F15); + CASE(F16); + CASE(F17); + CASE(F18); + CASE(F19); + CASE(F20); + CASE(F21); + CASE(F22); + CASE(F23); + CASE(F24); + CASE(CapsLock); + CASE(PrintScreen); + CASE(ScrollLock); + CASE(Pause); + CASE(Insert); + CASE(Home); + CASE(PageUp); + CASE(Delete); + CASE(End); + CASE(PageDown); + CASE(Right); + CASE(Left); + CASE(Down); + CASE(Up); + CASE(NumLock); + CASE(NumpadDivide); + CASE(NumpadMultiply); + CASE(NumpadMinus); + CASE(NumpadPlus); + CASE(NumpadEqual); + CASE(NumpadEnter); + CASE(NumpadDecimal); + CASE(Numpad1); + CASE(Numpad2); + CASE(Numpad3); + CASE(Numpad4); + CASE(Numpad5); + CASE(Numpad6); + CASE(Numpad7); + CASE(Numpad8); + CASE(Numpad9); + CASE(Numpad0); + CASE(NonUsBackslash); + CASE(Application); + CASE(Execute); + CASE(ModeChange); + CASE(Help); + CASE(Menu); + CASE(Select); + CASE(Redo); + CASE(Undo); + CASE(Cut); + CASE(Copy); + CASE(Paste); + CASE(VolumeMute); + CASE(VolumeUp); + CASE(VolumeDown); + CASE(MediaPlayPause); + CASE(MediaStop); + CASE(MediaNextTrack); + CASE(MediaPreviousTrack); + CASE(LControl); + CASE(LShift); + CASE(LAlt); + CASE(LSystem); + CASE(RControl); + CASE(RShift); + CASE(RAlt); + CASE(RSystem); + CASE(Back); + CASE(Forward); + CASE(Refresh); + CASE(Stop); + CASE(Search); + CASE(Favorites); + CASE(HomePage); + CASE(LaunchApplication1); + CASE(LaunchApplication2); + CASE(LaunchMail); + CASE(LaunchMediaSelect); +#undef CASE + } + + throw std::runtime_error("invalid keyboard scancode"); +} + +//////////////////////////////////////////////////////////// +// Entity showing keyboard events and real-time state on a keyboard +//////////////////////////////////////////////////////////// +class KeyboardView : public sf::Drawable, public sf::Transformable +{ +public: + explicit KeyboardView(const sf::Font& font) : m_labels(sf::Keyboard::ScancodeCount, sf::Text(font, "", 14)) + { + // Check all the scancodes are in the matrix exactly once + { + std::unordered_set scancodesInMatrix; + for (const auto& [cells, marginBottom] : m_matrix) + { + for (const auto& [scancode, size, marginRight] : cells) + { + assert(scancodesInMatrix.count(scancode) == 0); + scancodesInMatrix.insert(scancode); + } + } + assert(scancodesInMatrix.size() == sf::Keyboard::ScancodeCount); + } + + // Initialize keys color and label + forEachKey( + [this](sf::Keyboard::Scancode scancode, const sf::FloatRect& rect) + { + const auto scancodeIndex = static_cast(scancode); + + for (std::size_t vertexIndex = 0u; vertexIndex < 6u; ++vertexIndex) + m_triangles[6u * scancodeIndex + vertexIndex] + .color = sf::Keyboard::delocalize(sf::Keyboard::localize(scancode)) != scancode + ? sf::Color::Red + : sf::Color::White; + + sf::Text& label = m_labels[scancodeIndex]; + label.setString(sf::Keyboard::getDescription(scancode)); + label.setPosition(rect.position + rect.size / 2.f); + + if (rect.size.x < label.getLocalBounds().size.x + padding * 2.f + 2.f) + { + sf::String string = label.getString(); + string.replace(" ", "\n"); + label.setString(string); + } + while (rect.size.x < label.getLocalBounds().size.x + padding * 2.f + 2.f) + label.setCharacterSize(label.getCharacterSize() - 2); + + const sf::FloatRect bounds = label.getLocalBounds(); + label.setOrigin({std::round(bounds.position.x + bounds.size.x / 2.f), + std::round(static_cast(label.getCharacterSize()) / 2.f)}); + }); + } + + void handle(const sf::Event& event) + { + // React to keyboard events by starting an animation + if (const auto* keyPressed = event.getIf()) + { + if (keyPressed->scancode != sf::Keyboard::Scan::Unknown) + m_moveFactors[static_cast(keyPressed->scancode)] = 1.f; + } + else if (const auto* keyReleased = event.getIf()) + { + if (keyReleased->scancode != sf::Keyboard::Scan::Unknown) + m_moveFactors[static_cast(keyReleased->scancode)] = -1.f; + } + } + + void update(sf::Time frameTime) + { + // Animate m_moveFactors values linearly towards zero + static constexpr sf::Time transitionDuration = sf::milliseconds(200); + for (float& factor : m_moveFactors) + { + const float absoluteChange = std::min(std::abs(factor), frameTime / transitionDuration); + factor += factor > 0.f ? -absoluteChange : absoluteChange; + } + + // Update vertices positions from m_moveFactors and opacity from real-time keyboard state + forEachKey( + [this](sf::Keyboard::Scancode scancode, const sf::FloatRect& rect) + { + const auto scancodeIndex = static_cast(scancode); + + static constexpr std::array square = { + sf::Vector2f(0.f, 0.f), + sf::Vector2f(1.f, 0.f), + sf::Vector2f(1.f, 1.f), + sf::Vector2f(0.f, 1.f), + }; + static constexpr std::array cornerIndexes = {0u, 1u, 3u, 3u, 1u, 2u}; + + const float moveFactor = m_moveFactors[scancodeIndex]; + const sf::Vector2f move(0.f, 2.f * moveFactor * (1.f - std::abs(moveFactor)) * padding); + + const bool pressed = sf::Keyboard::isKeyPressed(scancode); + + for (std::size_t vertexIndex = 0u; vertexIndex < 6u; ++vertexIndex) + { + sf::Vertex& vertex = m_triangles[6u * scancodeIndex + vertexIndex]; + const sf::Vector2f& corner = square[cornerIndexes[vertexIndex]]; + static constexpr sf::Vector2f pad(padding, padding); + vertex.position = rect.position + pad + (rect.size - 2.f * pad).componentWiseMul(corner) + move; + vertex.color.a = pressed ? 96 : 48; + } + m_labels[scancodeIndex].setPosition(rect.position + rect.size / 2.f + move); + }); + } + +private: + void draw(sf::RenderTarget& target, sf::RenderStates states) const override + { + states.transform *= getTransform(); + target.draw(m_triangles, states); + for (const sf::Text& label : m_labels) + target.draw(label, states); + } + + // Template to iterate on scancodes and the corresponding computed rectangle in local coordinates + template + void forEachKey(F function) const + { + sf::Vector2f position; + for (const auto& [cells, marginBottom] : m_matrix) + { + for (const auto& [scancode, size, marginRight] : cells) + { + function(scancode, sf::FloatRect(position, size)); + position.x += size.x + marginRight; + } + position.x = 0.f; + position.y += keySize + marginBottom; + } + } + + static constexpr float keySize = 54.f; + static constexpr float padding = 4.f; + + struct Cell + { + Cell(sf::Keyboard::Scancode theScancode, sf::Vector2f sizeRatio = {1.f, 1.f}, float marginRightRatio = 0.f) : + scancode(theScancode), + size(sizeRatio * keySize), + marginRight(marginRightRatio * keySize) + { + } + + Cell(sf::Keyboard::Scancode theScancode, float marginRightRatio) : + Cell(theScancode, {1.f, 1.f}, marginRightRatio) + { + } + + sf::Keyboard::Scancode scancode; + sf::Vector2f size; + float marginRight; + }; + + struct Row + { + Row(std::vector theCells, float marginBottomRatio = 0.f) : + cells(std::move(theCells)), + marginBottom(marginBottomRatio * keySize) + { + } + + std::vector cells; + float marginBottom; + }; + + const std::array m_matrix{{ + {{{sf::Keyboard::Scan::Escape, 1}, + {sf::Keyboard::Scan::F1}, + {sf::Keyboard::Scan::F2}, + {sf::Keyboard::Scan::F3}, + {sf::Keyboard::Scan::F4, 0.5}, + {sf::Keyboard::Scan::F5}, + {sf::Keyboard::Scan::F6}, + {sf::Keyboard::Scan::F7}, + {sf::Keyboard::Scan::F8, 0.5}, + {sf::Keyboard::Scan::F9}, + {sf::Keyboard::Scan::F10}, + {sf::Keyboard::Scan::F11}, + {sf::Keyboard::Scan::F12, 0.5}, + {sf::Keyboard::Scan::PrintScreen}, + {sf::Keyboard::Scan::ScrollLock}, + {sf::Keyboard::Scan::Pause}}, + 0.5}, + {{{sf::Keyboard::Scan::Grave}, // + {sf::Keyboard::Scan::Num1}, + {sf::Keyboard::Scan::Num2}, + {sf::Keyboard::Scan::Num3}, + {sf::Keyboard::Scan::Num4}, + {sf::Keyboard::Scan::Num5}, + {sf::Keyboard::Scan::Num6}, + {sf::Keyboard::Scan::Num7}, + {sf::Keyboard::Scan::Num8}, + {sf::Keyboard::Scan::Num9}, + {sf::Keyboard::Scan::Num0}, + {sf::Keyboard::Scan::Hyphen}, + {sf::Keyboard::Scan::Equal}, + {sf::Keyboard::Scan::Backspace, {2, 1}, 0.5}, + {sf::Keyboard::Scan::Insert}, + {sf::Keyboard::Scan::Home}, + {sf::Keyboard::Scan::PageUp, 0.5}, + {sf::Keyboard::Scan::NumLock}, + {sf::Keyboard::Scan::NumpadDivide}, + {sf::Keyboard::Scan::NumpadMultiply}, + {sf::Keyboard::Scan::NumpadMinus}}}, + {{{sf::Keyboard::Scan::Tab, {1.5, 1}}, + {sf::Keyboard::Scan::Q}, + {sf::Keyboard::Scan::W}, + {sf::Keyboard::Scan::E}, + {sf::Keyboard::Scan::R}, + {sf::Keyboard::Scan::T}, + {sf::Keyboard::Scan::Y}, + {sf::Keyboard::Scan::U}, + {sf::Keyboard::Scan::I}, + {sf::Keyboard::Scan::O}, + {sf::Keyboard::Scan::P}, + {sf::Keyboard::Scan::LBracket}, + {sf::Keyboard::Scan::RBracket}, + {sf::Keyboard::Scan::Backslash, {1.5, 1}, 0.5}, + {sf::Keyboard::Scan::Delete}, + {sf::Keyboard::Scan::End}, + {sf::Keyboard::Scan::PageDown, 0.5}, + {sf::Keyboard::Scan::Numpad7}, + {sf::Keyboard::Scan::Numpad8}, + {sf::Keyboard::Scan::Numpad9}, + {sf::Keyboard::Scan::NumpadPlus}}}, + {{{sf::Keyboard::Scan::CapsLock, {1.75, 1}}, + {sf::Keyboard::Scan::A}, + {sf::Keyboard::Scan::S}, + {sf::Keyboard::Scan::D}, + {sf::Keyboard::Scan::F}, + {sf::Keyboard::Scan::G}, + {sf::Keyboard::Scan::H}, + {sf::Keyboard::Scan::J}, + {sf::Keyboard::Scan::K}, + {sf::Keyboard::Scan::L}, + {sf::Keyboard::Scan::Semicolon}, + {sf::Keyboard::Scan::Apostrophe}, + {sf::Keyboard::Scan::Enter, {2.25, 1}, 4}, + {sf::Keyboard::Scan::Numpad4}, + {sf::Keyboard::Scan::Numpad5}, + {sf::Keyboard::Scan::Numpad6}, + {sf::Keyboard::Scan::NumpadEqual}}}, + {{{sf::Keyboard::Scan::LShift, {1.25, 1}}, + {sf::Keyboard::Scan::NonUsBackslash}, + {sf::Keyboard::Scan::Z}, + {sf::Keyboard::Scan::X}, + {sf::Keyboard::Scan::C}, + {sf::Keyboard::Scan::V}, + {sf::Keyboard::Scan::B}, + {sf::Keyboard::Scan::N}, + {sf::Keyboard::Scan::M}, + {sf::Keyboard::Scan::Comma}, + {sf::Keyboard::Scan::Period}, + {sf::Keyboard::Scan::Slash}, + {sf::Keyboard::Scan::RShift, {2.75, 1}, 1.5}, + {sf::Keyboard::Scan::Up, 1.5}, + {sf::Keyboard::Scan::Numpad1}, + {sf::Keyboard::Scan::Numpad2}, + {sf::Keyboard::Scan::Numpad3}, + {sf::Keyboard::Scan::NumpadEnter, {1, 2}}}}, + {{{sf::Keyboard::Scan::LControl, {1.5, 1}}, + {sf::Keyboard::Scan::LSystem, {1.25, 1}}, + {sf::Keyboard::Scan::LAlt, {1.5, 1}}, + {sf::Keyboard::Scan::Space, {5.75, 1}}, + {sf::Keyboard::Scan::RAlt, {1.25, 1}}, + {sf::Keyboard::Scan::RSystem, {1.25, 1}}, + {sf::Keyboard::Scan::Menu, {1.25, 1}}, + {sf::Keyboard::Scan::RControl, {1.25, 1}, 0.5}, + {sf::Keyboard::Scan::Left}, + {sf::Keyboard::Scan::Down}, + {sf::Keyboard::Scan::Right, 0.5}, + {sf::Keyboard::Scan::Numpad0, {2, 1}}, + {sf::Keyboard::Scan::NumpadDecimal}}, + 0.5}, + {{{sf::Keyboard::Scan::F13}, + {sf::Keyboard::Scan::F14}, + {sf::Keyboard::Scan::F15}, + {sf::Keyboard::Scan::F16}, + {sf::Keyboard::Scan::F17}, + {sf::Keyboard::Scan::F18}, + {sf::Keyboard::Scan::F19}, + {sf::Keyboard::Scan::F20}, + {sf::Keyboard::Scan::F21}, + {sf::Keyboard::Scan::F22}, + {sf::Keyboard::Scan::F23}, + {sf::Keyboard::Scan::F24}}}, + {{{sf::Keyboard::Scan::Application}, + {sf::Keyboard::Scan::Execute}, + {sf::Keyboard::Scan::ModeChange}, + {sf::Keyboard::Scan::Help}, + {sf::Keyboard::Scan::Select}, + {sf::Keyboard::Scan::Redo}, + {sf::Keyboard::Scan::Undo}, + {sf::Keyboard::Scan::Cut}, + {sf::Keyboard::Scan::Copy}, + {sf::Keyboard::Scan::Paste}, + {sf::Keyboard::Scan::VolumeMute}, + {sf::Keyboard::Scan::VolumeUp}, + {sf::Keyboard::Scan::VolumeDown}, + {sf::Keyboard::Scan::MediaPlayPause}, + {sf::Keyboard::Scan::MediaStop}, + {sf::Keyboard::Scan::MediaNextTrack}, + {sf::Keyboard::Scan::MediaPreviousTrack}}}, + {{{sf::Keyboard::Scan::Back}, + {sf::Keyboard::Scan::Forward}, + {sf::Keyboard::Scan::Refresh}, + {sf::Keyboard::Scan::Stop}, + {sf::Keyboard::Scan::Search}, + {sf::Keyboard::Scan::Favorites}, + {sf::Keyboard::Scan::HomePage}, + {sf::Keyboard::Scan::LaunchApplication1}, + {sf::Keyboard::Scan::LaunchApplication2}, + {sf::Keyboard::Scan::LaunchMail}, + {sf::Keyboard::Scan::LaunchMediaSelect}}}, + }}; + + sf::VertexArray m_triangles{sf::PrimitiveType::Triangles, sf::Keyboard::ScancodeCount * 6}; + std::vector m_labels; + std::array m_moveFactors{}; +}; + +//////////////////////////////////////////////////////////// +// Text with fading opacity outline +//////////////////////////////////////////////////////////// +class ShinyText : public sf::Text +{ +public: + using sf::Text::Text; + + // Start the outline animation + void shine(sf::Color color = sf::Color::Yellow) + { + setOutlineColor(color); + m_remaining = duration; + } + + // Fade out ouline + void update(sf::Time frameTime) + { + const float ratio = m_remaining / duration; + const float alpha = std::max(0.f, ratio * (2.f - ratio)) * 0.5f; + + sf::Color color = getOutlineColor(); + color.a = static_cast(255 * alpha); + setOutlineColor(color); + + if (m_remaining > sf::Time::Zero) + m_remaining -= frameTime; + } + +private: + static constexpr sf::Time duration = sf::milliseconds(150); + sf::Time m_remaining; +}; + +//////////////////////////////////////////////////////////// +// Utilities to create text objets +//////////////////////////////////////////////////////////// + +constexpr unsigned int textSize = 18u; +constexpr unsigned int space = 2u; +constexpr unsigned int lineSize = textSize + space; + +float getSpacingFactor(const sf::Font& font) +{ + return static_cast(lineSize) / font.getLineSpacing(textSize); +} + +ShinyText makeShinyText(const sf::Font& font, const sf::String& string, sf::Vector2f position) +{ + ShinyText text(font, string, textSize); + text.setLineSpacing(getSpacingFactor(font)); + text.setOutlineThickness(2.f); + text.setPosition(position); + + return text; +} + +sf::Text makeText(const sf::Font& font, const sf::String& string, sf::Vector2f position) +{ + sf::Text text(font, string, textSize); + text.setLineSpacing(getSpacingFactor(font)); + text.setPosition(position); + + return text; +} + +//////////////////////////////////////////////////////////// +// Utilities to describe keyboard events +//////////////////////////////////////////////////////////// + +template +bool somethingIsOdd(const KeyEventType& keyEvent) +{ + return keyEvent.code == sf::Keyboard::Key::Unknown || keyEvent.scancode == sf::Keyboard::Scan::Unknown || + sf::Keyboard::getDescription(keyEvent.scancode) == "" || + sf::Keyboard::localize(keyEvent.scancode) != keyEvent.code || + sf::Keyboard::delocalize(keyEvent.code) != keyEvent.scancode; +} + +// Append information to string about a keyboard event +template +sf::String keyEventDescription(sf::String text, const KeyEventType& keyEvent) +{ + text += "\n\n"; + text += keyIdentifier(keyEvent.code); + text += "\n"; + text += scancodeIdentifier(keyEvent.scancode); + if (somethingIsOdd(keyEvent)) + { + text += "\nLocalized:\t"; + text += keyIdentifier(sf::Keyboard::localize(keyEvent.scancode)); + text += "\nDelocalized:\t"; + text += scancodeIdentifier(sf::Keyboard::delocalize(keyEvent.code)); + } + + return text; +} + +// Make a string describing a text event +sf::String textEventDescription(const sf::Event::TextEntered& textEntered) +{ + sf::String text = "Text Entered\n\n"; + text += static_cast(textEntered.unicode); + text += "\nU+"; + + std::ostringstream oss; + oss << std::hex << std::setw(4) << std::setfill('0') << textEntered.unicode; + text += oss.str(); + + return text; +} + +} // namespace + + +//////////////////////////////////////////////////////////// +/// Entry point of application +/// +/// \return Application exit code +/// +//////////////////////////////////////////////////////////// +int main() +{ + // Create the main window + sf::RenderWindow window(sf::VideoMode({1280, 720}), "Keyboard", sf::Style::Titlebar | sf::Style::Close); + window.setFramerateLimit(25); + + // Load sound buffers + const sf::SoundBuffer errorSoundBuffer(resourcesDir() / "error_005.ogg"); + const sf::SoundBuffer pressedSoundBuffer(resourcesDir() / "mouseclick1.ogg"); + const sf::SoundBuffer releasedSoundBuffer(resourcesDir() / "mouserelease1.ogg"); + + // Create sound objects to play them upon keyboard events + sf::Sound errorSound(errorSoundBuffer); + sf::Sound pressedSound(pressedSoundBuffer); + sf::Sound releasedSound(releasedSoundBuffer); + + // Open the font used for all texts + const sf::Font font(resourcesDir() / "Tuffy.ttf"); + + // Create object to display all scancodes descriptions, related events and real-time state + KeyboardView keyboardView(font); + keyboardView.setPosition({16, 16}); + + // Create text to display information about keyboard events and key codes real-time state + ShinyText keyPressedText(makeShinyText(font, "Key Pressed", {16, 575})); + ShinyText keyReleasedText(makeShinyText(font, "Key Released", {300, 575})); + ShinyText textEnteredText(makeShinyText(font, "Text Entered", {600, 575})); + sf::Text keyPressedCheckText(makeText(font, "", {900, 575})); + + sf::Clock clock; + while (window.isOpen()) + { + // Handle events + while (const std::optional event = window.pollEvent()) + { + // Window closed: exit + if (event->is()) + { + window.close(); + break; + } + + // Window size changed: adjust view appropriately + if (const auto* resized = event->getIf()) + window.setView(sf::View(sf::FloatRect({}, sf::Vector2f(resized->size)))); + + // Key events: update text and play sound + if (const auto* keyPressed = event->getIf()) + { + keyPressedText.setString(keyEventDescription("Key Pressed", *keyPressed)); + if (somethingIsOdd(*keyPressed)) + { + keyPressedText.shine(sf::Color::Red); + errorSound.play(); + } + else + { + keyPressedText.shine(sf::Color::Green); + pressedSound.play(); + } + } + if (const auto* keyReleased = event->getIf()) + { + keyReleasedText.setString(keyEventDescription("Key Released", *keyReleased)); + if (somethingIsOdd(*keyReleased)) + { + keyReleasedText.shine(sf::Color::Red); + errorSound.play(); + } + else + { + keyReleasedText.shine(sf::Color::Green); + releasedSound.play(); + } + } + if (const auto* textEntered = event->getIf()) + { + textEnteredText.setString(textEventDescription(*textEntered)); + textEnteredText.shine(); + } + + // Let the KeyboardView process the event + keyboardView.handle(*event); + } + + // Update animations and displayed keyboard real-time state + const sf::Time frameTime = clock.restart(); + keyboardView.update(frameTime); + keyPressedText.update(frameTime); + keyReleasedText.update(frameTime); + textEnteredText.update(frameTime); + { + sf::String text = "isKeyPressed(sf::Keyboard::Key)\n\n"; + for (std::size_t keyIndex = 0u; keyIndex < sf::Keyboard::KeyCount; ++keyIndex) + { + const auto key = static_cast(keyIndex); + if (sf::Keyboard::isKeyPressed(key)) + text += keyIdentifier(key) + "\n"; + } + keyPressedCheckText.setString(text); + } + + // Render frame + window.clear(); + window.draw(keyboardView); + window.draw(keyPressedText); + window.draw(keyReleasedText); + window.draw(textEnteredText); + window.draw(keyPressedCheckText); + window.display(); + } + + return EXIT_SUCCESS; +} diff --git a/examples/keyboard/resources/Tuffy.ttf b/examples/keyboard/resources/Tuffy.ttf new file mode 100755 index 0000000000000000000000000000000000000000..ade553a60fd1b01e16a00a8ef5ea396541245d37 GIT binary patch literal 172324 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

-!d7L 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 Mp!?<=~~)z#T^vVXvA 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 literal 0 HcmV?d00001 diff --git a/examples/keyboard/resources/mouseclick1.ogg b/examples/keyboard/resources/mouseclick1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..46d5f62da9a08e16846c19f214c061687029eb1a GIT binary patch literal 4686 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 literal 0 HcmV?d00001 diff --git a/examples/keyboard/resources/mouserelease1.ogg b/examples/keyboard/resources/mouserelease1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f87a9e817f92ed94aae340d231279a1e6696e403 GIT binary patch literal 4775 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 Y^}l~6Oo~mnbozK8c4X_>