//////////////////////////////////////////////////////////// // // SFML - Simple and Fast Multimedia Library // Copyright (C) 2007-2021 Laurent Gomila (laurent@sfml-dev.org) // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. // // Permission is granted to anyone to use this software for any purpose, // including commercial applications, and to alter it and redistribute it freely, // subject to the following restrictions: // // 1. The origin of this software must not be misrepresented; // you must not claim that you wrote the original software. // If you use this software in a product, an acknowledgment // in the product documentation would be appreciated but is not required. // // 2. Altered source versions must be plainly marked as such, // and must not be misrepresented as being the original software. // // 3. This notice may not be removed or altered from any source distribution. // //////////////////////////////////////////////////////////// #ifndef SFML_KEYBOARD_HPP #define SFML_KEYBOARD_HPP //////////////////////////////////////////////////////////// // Headers //////////////////////////////////////////////////////////// #include namespace sf { //////////////////////////////////////////////////////////// /// \brief Give access to the real-time state of the keyboard /// //////////////////////////////////////////////////////////// class SFML_WINDOW_API Keyboard { public: //////////////////////////////////////////////////////////// /// \brief Key codes /// //////////////////////////////////////////////////////////// enum Key { Unknown = -1, //!< Unhandled key A = 0, //!< The A key B, //!< The B key C, //!< The C key D, //!< The D key E, //!< The E key F, //!< The F key G, //!< The G key H, //!< The H key I, //!< The I key J, //!< The J key K, //!< The K key L, //!< The L key M, //!< The M key N, //!< The N key O, //!< The O key P, //!< The P key Q, //!< The Q key R, //!< The R key S, //!< The S key T, //!< The T key U, //!< The U key V, //!< The V key W, //!< The W key X, //!< The X key Y, //!< The Y key Z, //!< The Z key Num0, //!< The 0 key Num1, //!< The 1 key Num2, //!< The 2 key Num3, //!< The 3 key Num4, //!< The 4 key Num5, //!< The 5 key Num6, //!< The 6 key Num7, //!< The 7 key Num8, //!< The 8 key Num9, //!< The 9 key Escape, //!< The Escape key LControl, //!< The left Control key LShift, //!< The left Shift key LAlt, //!< The left Alt key LSystem, //!< The left OS specific key: window (Windows and Linux), apple (MacOS X), ... RControl, //!< The right Control key RShift, //!< The right Shift key RAlt, //!< The right Alt key RSystem, //!< The right OS specific key: window (Windows and Linux), apple (MacOS X), ... Menu, //!< The Menu key LBracket, //!< The [ key RBracket, //!< The ] key Semicolon, //!< The ; key Comma, //!< The , key Period, //!< The . key Quote, //!< The ' key Slash, //!< The / key Backslash, //!< The \ key Tilde, //!< The ~ key Equal, //!< The = key Hyphen, //!< The - key (hyphen) Space, //!< The Space key Enter, //!< The Enter/Return keys Backspace, //!< The Backspace key Tab, //!< The Tabulation key PageUp, //!< The Page up key PageDown, //!< The Page down key End, //!< The End key Home, //!< The Home key Insert, //!< The Insert key Delete, //!< The Delete key Add, //!< The + key Subtract, //!< The - key (minus, usually from numpad) Multiply, //!< The * key Divide, //!< The / key Left, //!< Left arrow Right, //!< Right arrow Up, //!< Up arrow Down, //!< Down arrow Numpad0, //!< The numpad 0 key Numpad1, //!< The numpad 1 key Numpad2, //!< The numpad 2 key Numpad3, //!< The numpad 3 key Numpad4, //!< The numpad 4 key Numpad5, //!< The numpad 5 key Numpad6, //!< The numpad 6 key Numpad7, //!< The numpad 7 key Numpad8, //!< The numpad 8 key Numpad9, //!< The numpad 9 key F1, //!< The F1 key F2, //!< The F2 key F3, //!< The F3 key F4, //!< The F4 key F5, //!< The F5 key F6, //!< The F6 key F7, //!< The F7 key F8, //!< The F8 key F9, //!< The F9 key F10, //!< The F10 key F11, //!< The F11 key F12, //!< The F12 key F13, //!< The F13 key F14, //!< The F14 key F15, //!< The F15 key Pause, //!< The Pause key KeyCount, //!< Keep last -- the total number of keyboard keys // Deprecated values: Dash = Hyphen, //!< \deprecated Use Hyphen instead BackSpace = Backspace, //!< \deprecated Use Backspace instead BackSlash = Backslash, //!< \deprecated Use Backslash instead SemiColon = Semicolon, //!< \deprecated Use Semicolon instead Return = Enter //!< \deprecated Use Enter instead }; //////////////////////////////////////////////////////////// /// \brief Check if a key is pressed /// /// \param key Key to check /// /// \return True if the key is pressed, false otherwise /// //////////////////////////////////////////////////////////// static bool isKeyPressed(Key key); //////////////////////////////////////////////////////////// /// \brief Show or hide the virtual keyboard /// /// Warning: the virtual keyboard is not supported on all /// systems. It will typically be implemented on mobile OSes /// (Android, iOS) but not on desktop OSes (Windows, Linux, ...). /// /// If the virtual keyboard is not available, this function does /// nothing. /// /// \param visible True to show, false to hide /// //////////////////////////////////////////////////////////// static void setVirtualKeyboardVisible(bool visible); }; } // namespace sf #endif // SFML_KEYBOARD_HPP //////////////////////////////////////////////////////////// /// \class sf::Keyboard /// \ingroup window /// /// sf::Keyboard provides an interface to the state of the /// keyboard. It only contains static functions (a single /// keyboard is assumed), so it's not meant to be instantiated. /// /// This class allows users to query the keyboard state at any /// time and directly, without having to deal with a window and /// its events. Compared to the KeyPressed and KeyReleased events, /// sf::Keyboard can retrieve the state of a key at any time /// (you don't need to store and update a boolean on your side /// in order to know if a key is pressed or released), and you /// always get the real state of the keyboard, even if keys are /// pressed or released when your window is out of focus and no /// event is triggered. /// /// Usage example: /// \code /// if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) /// { /// // move left... /// } /// else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) /// { /// // move right... /// } /// else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) /// { /// // quit... /// } /// \endcode /// /// \see sf::Joystick, sf::Mouse, sf::Touch /// ////////////////////////////////////////////////////////////