diff --git a/src/platform/qt/InputController.cpp b/src/platform/qt/InputController.cpp index 7bbf51cd1..3ddeb0b1e 100644 --- a/src/platform/qt/InputController.cpp +++ b/src/platform/qt/InputController.cpp @@ -230,6 +230,9 @@ void InputController::saveConfiguration() { void InputController::saveConfiguration(uint32_t type) { for (auto& inputMap : m_inputMaps) { + if (!inputMap.info) { + continue; + } mInputMapSave(&inputMap, type, m_config->input()); } m_config->write(); @@ -491,6 +494,9 @@ QSet> InputController::activeGamepadAxes } void InputController::bindKey(mPlatform platform, uint32_t type, int key, int coreKey) { + if (m_inputMaps.find(platform) == m_inputMaps.end() || coreKey >= m_inputMaps[platform].info->nKeys) { + return; + } QModelIndex index = m_inputModel->index(coreKey, 0, m_inputMenuIndices[platform]); bool signalsBlocked = m_inputModel->blockSignals(true); if (type != KEYBOARD) { @@ -503,6 +509,9 @@ void InputController::bindKey(mPlatform platform, uint32_t type, int key, int co } void InputController::bindAxis(mPlatform platform, uint32_t type, int axis, GamepadAxisEvent::Direction direction, int key) { + if (m_inputMaps.find(platform) == m_inputMaps.end() || key >= m_inputMaps[platform].info->nKeys) { + return; + } QModelIndex index = m_inputModel->index(key, 0, m_inputMenuIndices[platform]); bool signalsBlocked = m_inputModel->blockSignals(true); m_inputModel->updateAxis(index, axis, direction); @@ -566,6 +575,9 @@ QSet> InputController::activeGamepadHats( } void InputController::bindHat(mPlatform platform, uint32_t type, int hat, GamepadHatEvent::Direction direction, int coreKey) { + if (m_inputMaps.find(platform) == m_inputMaps.end() || coreKey >= m_inputMaps[platform].info->nKeys) { + return; + } QModelIndex index = m_inputModel->index(coreKey, 0, m_inputMenuIndices[platform]); //m_inputModel->updateHat(index, hat, direction);