Trait that adds keyboard-input callbacks to any Core object.
More...
#include <Malena/Traits/Interaction/Keyable.h>
|
| void | onKeypress (std::function< void()> callback, bool overwrite=true) |
| | Register a no-argument callback invoked when a key is pressed while this component has focus.
|
| void | onKeypress (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| | Register a callback invoked when a key is pressed while this component has focus, receiving the raw SFML event.
|
| void | onKeyRelease (std::function< void()> callback, bool overwrite=true) |
| | Register a no-argument callback invoked when a key is released while this component has focus.
|
| void | onKeyRelease (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| | Register a callback invoked when a key is released while this component has focus, receiving the raw SFML event.
|
| void | onTextEntered (std::function< void()> callback, bool overwrite=true) |
| | Register a no-argument callback invoked when a unicode character is entered while this component has focus.
|
| void | onTextEntered (std::function< void(const std::optional< sf::Event > &)> callback, bool overwrite=true) |
| | Register a callback invoked when a unicode character is entered while this component has focus, receiving the raw SFML event.
|
| virtual void | process (const std::string &key, const std::optional< sf::Event > &event) |
| | Invoke all callbacks registered for key.
|
| template<typename ENUM_TYPE> |
| void | process (ENUM_TYPE eventName, const std::optional< sf::Event > &event) |
| | Invoke all callbacks registered for eventName.
|
Trait that adds keyboard-input callbacks to any Core object.
Keyable is automatically inherited by every ml::Core object. Keyboard callbacks only fire on the component that currently has focus (see Focusable). A component receives no keyboard events unless it has been clicked or focus has been explicitly transferred to it.
Usage
myInput.onKeypress([](const std::optional<sf::Event>& e){
if (kp->code == sf::Keyboard::Key::Enter)
submit();
});
myInput.onTextEntered([](const std::optional<sf::Event>& e){
buffer += static_cast<char>(te->unicode);
});
myInput.onKeyRelease([]{
To unsubscribe:
@ TEXT_ENTERED
Unicode character entered while component has focus.
@ KEYPRESS
Key pressed while component has focus.
@ KEY_RELEASE
Key released while component has focus.
- See also
- Focusable, ml::Event::KEYPRESS, ml::Event::KEY_RELEASE, ml::Event::TEXT_ENTERED, Unsubscribable
Definition at line 54 of file Keyable.h.
◆ onKeypress() [1/2]
| void ml::Keyable::onKeypress |
( |
std::function< void()> | callback, |
|
|
bool | overwrite = true ) |
Register a no-argument callback invoked when a key is pressed while this component has focus.
- Parameters
-
| callback | Function invoked with no arguments on key press. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
◆ onKeypress() [2/2]
| void ml::Keyable::onKeypress |
( |
std::function< void(const std::optional< sf::Event > &)> | callback, |
|
|
bool | overwrite = true ) |
Register a callback invoked when a key is pressed while this component has focus, receiving the raw SFML event.
- Parameters
-
| callback | Function invoked with the SFML event on key press. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
◆ onKeyRelease() [1/2]
| void ml::Keyable::onKeyRelease |
( |
std::function< void()> | callback, |
|
|
bool | overwrite = true ) |
Register a no-argument callback invoked when a key is released while this component has focus.
- Parameters
-
| callback | Function invoked with no arguments on key release. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
◆ onKeyRelease() [2/2]
| void ml::Keyable::onKeyRelease |
( |
std::function< void(const std::optional< sf::Event > &)> | callback, |
|
|
bool | overwrite = true ) |
Register a callback invoked when a key is released while this component has focus, receiving the raw SFML event.
- Parameters
-
| callback | Function invoked with the SFML event on key release. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
◆ onTextEntered() [1/2]
| void ml::Keyable::onTextEntered |
( |
std::function< void()> | callback, |
|
|
bool | overwrite = true ) |
Register a no-argument callback invoked when a unicode character is entered while this component has focus.
Prefer onTextEntered over onKeypress for text input — it handles modifier keys, input method editors (IME), and non-ASCII characters correctly.
- Parameters
-
| callback | Function invoked with no arguments when text is entered. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
◆ onTextEntered() [2/2]
| void ml::Keyable::onTextEntered |
( |
std::function< void(const std::optional< sf::Event > &)> | callback, |
|
|
bool | overwrite = true ) |
Register a callback invoked when a unicode character is entered while this component has focus, receiving the raw SFML event.
- Parameters
-
| callback | Function invoked with the SFML event when text is entered. |
| overwrite | When true, replaces any existing callback; when false, appends an additional one. |
◆ process() [1/2]
| virtual void ml::EventReceiver::process |
( |
const std::string & | key, |
|
|
const std::optional< sf::Event > & | event ) |
|
virtualinherited |
Invoke all callbacks registered for key.
Called by framework dispatchers. key is the string produced by EnumKey::get(eventEnum).
- Parameters
-
| key | String key identifying the event. |
| event | SFML event forwarded to each callback. |
◆ process() [2/2]
template<typename ENUM_TYPE>
| void ml::EventReceiver::process |
( |
ENUM_TYPE | eventName, |
|
|
const std::optional< sf::Event > & | event ) |
|
inherited |
Invoke all callbacks registered for eventName.
Template overload that accepts any enum value directly, converting to a string key via EnumKey::get() internally.
- Template Parameters
-
- Parameters
-
| eventName | The enum value identifying the event. |
| event | SFML event forwarded to each callback. |
◆ _selfCore
| Core* ml::EventReceiver::_selfCore = nullptr |
|
inherited |
The owning Core, stamped by Core's constructor.
Traits subscribe from inside their OWN constructors (ml::TextInput calls onFocus(), ComponentCore subscribes to CLICK/HOVER/DRAG), at which point the derived type does not exist yet. Recovering the Core by dynamic_cast there is undefined: Clang returns something usable, MSVC throws "Access violation - no RTTI data!" and aborts the process. Core sets this on every one of its EventReceiver subobjects before any derived constructor runs, so no RTTI is ever needed.
Definition at line 93 of file EventReceiver.h.
The documentation for this class was generated from the following file: