/** * @author: Thomas Brandého */ #ifndef KEYBINDINGS_H #define KEYBINDINGS_H #include #include #define NO_KEY -1 #define NO_ACTION -1 class KeysMap { public: enum {PRIMARY,SECONDARY,NB_BINDINGS}; enum {PRESSED, RELEASED, HOLD}; KeysMap(); KeysMap(std::string keysmapping, int nb_actions); int getKeyBinding(int action,int num); void setKeyBinding(int action, int num, int key); int getTypeAction(int action); void setTypeAction(int action, int type); void saveKeysMap(); void loadKeysMap(); private: std::string keysmapping_file; int size_keys_map = 0; int* keys_map; int* actiontype_map; }; class KeyBindings { public: KeyBindings(); KeyBindings(const std::vector action_list, KeysMap* keysmap); int getPressedAction(int key); int getReleasedAction(int key); int getHoldAction(int key); std::unordered_map bindings_hold; private: std::unordered_map bindings_pressed; std::unordered_map bindings_released; void setPressedAction(int key, int action); void setReleasedAction(int key, int action); void setHoldAction(int key, int action); }; #endif