KEYMAPPER: Use the default action bindings defined by the backends

This commit is contained in:
Bastien Bouclet 2020-01-22 11:18:55 +01:00
parent 17791e2f7d
commit 576982bc33
5 changed files with 48 additions and 3 deletions

View file

@ -29,6 +29,7 @@
#include "backends/keymapper/action.h"
#include "backends/keymapper/hardware-input.h"
#include "backends/keymapper/keymapper-defaults.h"
#define KEYMAP_KEY_PREFIX "keymap_"
@ -39,7 +40,8 @@ Keymap::Keymap(KeymapType type, const String &name) :
_name(name),
_configDomain(nullptr),
_enabled(true),
_hardwareInputSet(nullptr) {
_hardwareInputSet(nullptr),
_backendDefaultBindings(nullptr) {
}
@ -123,6 +125,23 @@ void Keymap::setHardwareInputs(HardwareInputSet *hardwareInputSet) {
_hardwareInputSet = hardwareInputSet;
}
void Keymap::setBackendDefaultBindings(const Common::KeymapperDefaultBindings *backendDefaultBindings) {
_backendDefaultBindings = backendDefaultBindings;
}
void Keymap::registerBackendDefaultMappings() {
assert(_backendDefaultBindings);
for (ActionArray::const_iterator it = _actions.begin(); it != _actions.end(); ++it) {
Action *action = *it;
Common::String defaultHwId = _backendDefaultBindings->getDefaultBinding(_name, action->id);
if (!defaultHwId.empty()) {
action->addDefaultInputMapping(defaultHwId);
}
}
}
void Keymap::loadMappings() {
assert(_configDomain);
assert(_hardwareInputSet);
@ -131,6 +150,10 @@ void Keymap::loadMappings() {
return;
}
if (_backendDefaultBindings) {
registerBackendDefaultMappings();
}
String prefix = KEYMAP_KEY_PREFIX + _name + "_";
_hwActionMap.clear();