Line data Source code
1 : /*
2 : Minetest
3 : Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 :
5 : This program is free software; you can redistribute it and/or modify
6 : it under the terms of the GNU Lesser General Public License as published by
7 : the Free Software Foundation; either version 2.1 of the License, or
8 : (at your option) any later version.
9 :
10 : This program is distributed in the hope that it will be useful,
11 : but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 : GNU Lesser General Public License for more details.
14 :
15 : You should have received a copy of the GNU Lesser General Public License along
16 : with this program; if not, write to the Free Software Foundation, Inc.,
17 : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 : */
19 :
20 : #ifndef KEYCODE_HEADER
21 : #define KEYCODE_HEADER
22 :
23 : #include "irrlichttypes.h"
24 : #include "Keycodes.h"
25 : #include <IEventReceiver.h>
26 : #include <string>
27 :
28 : /* A key press, consisting of either an Irrlicht keycode
29 : or an actual char */
30 :
31 3023 : class KeyPress
32 : {
33 : public:
34 : KeyPress();
35 : KeyPress(const char *name);
36 :
37 : KeyPress(const irr::SEvent::SKeyInput &in, bool prefer_character=false);
38 :
39 134550 : bool operator==(const KeyPress &o) const
40 : {
41 270711 : return (Char > 0 && Char == o.Char) ||
42 403202 : (valid_kcode(Key) && Key == o.Key);
43 : }
44 :
45 : const char *sym() const;
46 : const char *name() const;
47 :
48 : std::string debug() const;
49 : protected:
50 134582 : static bool valid_kcode(irr::EKEY_CODE k)
51 : {
52 134582 : return k > 0 && k < irr::KEY_KEY_CODES_COUNT;
53 : }
54 :
55 : irr::EKEY_CODE Key;
56 : wchar_t Char;
57 : std::string m_name;
58 : };
59 :
60 : extern const KeyPress EscapeKey;
61 : extern const KeyPress CancelKey;
62 : extern const KeyPress NumberKey[10];
63 :
64 : // Key configuration getter
65 : KeyPress getKeySetting(const char *settingname);
66 :
67 : // Clear fast lookup cache
68 : void clearKeyCache();
69 :
70 : irr::EKEY_CODE keyname_to_keycode(const char *name);
71 :
72 : #endif
73 :
|