diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2011-08-13 22:44:31 +0200 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2011-08-22 13:01:11 +0200 |
commit | 7e610aece52ad547d4ae263aff5297342d5a4bff (patch) | |
tree | 983681e730d3d0ad782d38a1abec2f99cfae8b1a /src/keycode.h | |
parent | 16aedc0ef6cfd23f06b162501f26fd7f5c63172c (diff) | |
download | minetest-7e610aece52ad547d4ae263aff5297342d5a4bff.tar.gz minetest-7e610aece52ad547d4ae263aff5297342d5a4bff.tar.bz2 minetest-7e610aece52ad547d4ae263aff5297342d5a4bff.zip |
Overhaul the input system
This allows us to map the keys which are not considered in
irrlicht's EKEY_CODE system, such as \, [, /, ] etc.
Diffstat (limited to 'src/keycode.h')
-rw-r--r-- | src/keycode.h | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/keycode.h b/src/keycode.h index e64cb362c..28fb3f1fb 100644 --- a/src/keycode.h +++ b/src/keycode.h @@ -23,11 +23,42 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common_irrlicht.h" #include <string> -irr::EKEY_CODE keyname_to_keycode(const char *name); -const char *keycode_to_keyname(s32 keycode); +/* A key press, consisting of either an Irrlicht keycode + or an actual char */ + +class KeyPress +{ +public: + KeyPress(); + KeyPress(const char *name); + + KeyPress(const irr::SEvent::SKeyInput &in); + + bool operator==(const KeyPress &o) const + { + return valid_kcode(Key) ? Key == o.Key : Char == o.Char; + } + + const char *sym() const; + const char *name() const; + + std::string debug() const; +protected: + static bool valid_kcode(irr::EKEY_CODE k) + { + return k > 0 && k < irr::KEY_KEY_CODES_COUNT; + } + + irr::EKEY_CODE Key; + wchar_t Char; + std::string m_name; +}; + +extern const KeyPress EscapeKey; +extern const KeyPress NumberKey[10]; // Key configuration getter -irr::EKEY_CODE getKeySetting(const char *settingname); +KeyPress getKeySetting(const char *settingname); // Clear fast lookup cache void clearKeyCache(); |