aboutsummaryrefslogtreecommitdiff
path: root/backends/common/keymap-manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'backends/common/keymap-manager.h')
-rw-r--r--backends/common/keymap-manager.h45
1 files changed, 29 insertions, 16 deletions
diff --git a/backends/common/keymap-manager.h b/backends/common/keymap-manager.h
index d9c97d7de1..e5152d2426 100644
--- a/backends/common/keymap-manager.h
+++ b/backends/common/keymap-manager.h
@@ -2,35 +2,48 @@
#define COMMON_KEYMAP_MANAGER
#include "backends/common/keymap.h"
-#include "common/list.h"
+#include "common/hash-str.h"
+#include "common/hashmap.h"
namespace Common {
class KeymapManager {
public:
- KeymapManager();
+ class Domain {
+ public:
+ Domain() : _defaultKeymap(0) {}
- bool registerSuperGlobalKeymap(const Keymap& map);
- bool registerGlobalKeymap(const String& name, const Keymap& map);
- bool registerKeymap(const String& name, const String& domain, const Keymap& map);
+ void addDefaultKeymap(Keymap *map);
+ void addKeymap(const String& name, Keymap *map);
- bool unregisterSuperGlobalKeymap();
- bool unregisterGlobalKeymap(const String& name);
- bool unregisterKeymap(const String& name, const String& domain);
+ void deleteAllKeyMaps();
-private:
+ Keymap *getDefaultKeymap();
+ Keymap *getKeymap(const String& name);
+
+ private:
+ typedef HashMap<String, Keymap*,
+ IgnoreCase_Hash, IgnoreCase_EqualTo> KeymapMap;
- struct Entry {
- String _name;
- String _domain;
- Keymap *_keymap;
+ Keymap *_defaultKeymap;
+ KeymapMap _keymaps;
};
- typedef List<Entry*>::iterator Iterator;
- Iterator findEntry(const String& name, const String& domain);
+ void registerDefaultGlobalKeymap(Keymap *map);
+ void registerGlobalKeymap(const String& name, Keymap *map);
+
+ void registerDefaultGameKeymap(Keymap *map);
+ void registerGameKeymap(const String& name, Keymap *map);
+
+ void unregisterAllGameKeymaps();
+
+ Keymap *KeymapManager::getKeymap(const String& name);
+
+private:
- List<Entry*> _keymaps;
+ Domain _globalDomain;
+ Domain _gameDomain;
};
} // end of namespace Common