diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-08-31 21:33:50 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-08-31 21:49:21 +0300 |
commit | 8a999b66fd697404c6640778a6dd1ce0e747334a (patch) | |
tree | b9d16368acff30878f28264286b1b8be8b01b168 /src/input/keyboardconfig.h | |
parent | b310c51796d1632aeefc834dc0e931c52f909a41 (diff) | |
download | plus-8a999b66fd697404c6640778a6dd1ce0e747334a.tar.gz plus-8a999b66fd697404c6640778a6dd1ce0e747334a.tar.bz2 plus-8a999b66fd697404c6640778a6dd1ce0e747334a.tar.xz plus-8a999b66fd697404c6640778a6dd1ce0e747334a.zip |
move input related files into input dir.
Diffstat (limited to 'src/input/keyboardconfig.h')
-rw-r--r-- | src/input/keyboardconfig.h | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/src/input/keyboardconfig.h b/src/input/keyboardconfig.h new file mode 100644 index 000000000..f6152fa1a --- /dev/null +++ b/src/input/keyboardconfig.h @@ -0,0 +1,125 @@ +/* + * Custom keyboard shortcuts configuration + * Copyright (C) 2007 Joshua Langley <joshlangley@optusnet.com.au> + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2013 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef INPUT_KEYBOARDCONFIG_H +#define INPUT_KEYBOARDCONFIG_H + +#include <SDL_types.h> +#include <SDL_keyboard.h> + +#include "sdlshared.h" + +#include "input/inputevent.h" + +#include <map> +#include <string> +#include <vector> + +union SDL_Event; + +class KeyboardConfig final +{ + public: + KeyboardConfig(); + + A_DELETE_COPY(KeyboardConfig) + + /** + * Initializes the keyboard config explicitly. + */ + void init(); + + void deinit(); + + /** + * Get the enable flag, which will stop the user from doing actions. + */ + bool isEnabled() const A_WARN_UNUSED + { return mEnabled; } + + /** + * Get the key function index by providing the keys value. + */ + int getKeyIndex(const SDL_Event &event, + const int grp = 1) const A_WARN_UNUSED; + + /** + * Set the enable flag, which will stop the user from doing actions. + */ + void setEnabled(const bool flag) + { mEnabled = flag; } + + /** + * Takes a snapshot of all the active keys. + */ + void refreshActiveKeys(); + + static std::string getKeyShortString(const std::string &key) + A_WARN_UNUSED; + + static SDLKey getKeyFromEvent(const SDL_Event &event) A_WARN_UNUSED; + + int getKeyValueFromEvent(const SDL_Event &event) const A_WARN_UNUSED; + + KeysVector *getActionVector(const SDL_Event &event) A_WARN_UNUSED; + + KeysVector *getActionVectorByKey(const int i) A_WARN_UNUSED; + + static std::string getKeyName(const int key)A_WARN_UNUSED; + + bool isActionActive(const int index) const A_WARN_UNUSED; + + void update(); + + void handleActicateKey(const SDL_Event &event); + + void handleActicateKey(const int key); + + void handleDeActicateKey(const SDL_Event &event); + + void handleDeActicateKey(const int key); + + int getActionId(const SDL_Event &event) A_WARN_UNUSED; + + void handleRepeat(const int time); + + void resetRepeat(const int key); + + private: + bool mEnabled; /**< Flag to respond to key input */ + + const uint8_t *mActiveKeys; /**< Stores a list of all the keys */ + + uint8_t *mActiveKeys2; /**< Stores a list of all the keys */ + + unsigned int mRepeatTime; + + KeyToActionMap mKeyToAction; + + KeyToIdMap mKeyToId; + + KeyTimeMap mKeyTimeMap; +}; + +extern KeyboardConfig keyboard; + +#endif // INPUT_KEYBOARDCONFIG_H |