aboutsummaryrefslogtreecommitdiff
path: root/backends/keymapper/keymap-manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/keymapper/keymap-manager.cpp')
-rw-r--r--backends/keymapper/keymap-manager.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/backends/keymapper/keymap-manager.cpp b/backends/keymapper/keymap-manager.cpp
index a9ab1c7069..1b6b547858 100644
--- a/backends/keymapper/keymap-manager.cpp
+++ b/backends/keymapper/keymap-manager.cpp
@@ -73,6 +73,7 @@ void KeymapManager::registerGlobalKeymap(Keymap *map) {
void KeymapManager::refreshGameDomain() {
if (_gameDomain.getConfigDomain() != ConfMan.getActiveDomain()) {
_gameDomain.deleteAllKeyMaps();
+
_gameDomain.setConfigDomain(ConfMan.getActiveDomain());
}
}
@@ -85,7 +86,8 @@ void KeymapManager::registerGameKeymap(Keymap *map) {
void KeymapManager::initKeymap(ConfigManager::Domain *domain,
Keymap *map) {
- map->loadMappings(domain, _hardwareKeys);
+ map->setConfigDomain(domain);
+ map->loadMappings(_hardwareKeys);
if (map->isComplete(_hardwareKeys) == false) {
automaticMap(map);
map->saveMappings(domain);
@@ -206,6 +208,8 @@ void KeymapManager::automaticMap(Keymap *map) {
break;
}
}
+ map->saveMappings();
+ ConfMan.flushToDisk();
}
Action *KeymapManager::getParentMappedAction(Keymap *map, KeyState key) {
@@ -221,10 +225,13 @@ Action *KeymapManager::getParentMappedAction(Keymap *map, KeyState key) {
}
}
-Keymap *KeymapManager::getKeymap(const String& name) {
+Keymap *KeymapManager::getKeymap(const String& name, bool *global) {
Keymap *keymap = _gameDomain.getKeymap(name);
- if (!keymap)
+ *global = false;
+ if (!keymap) {
keymap = _globalDomain.getKeymap(name);
+ *global = true;
+ }
return keymap;
}