remappable inputs in progress

This commit is contained in:
2026-06-10 15:26:59 +02:00
parent ac4af8106c
commit d26417b83f
9 changed files with 213 additions and 14 deletions
+2 -2
View File
@@ -9,9 +9,9 @@ GeneralSettings::GeneralSettings() : settings(QSettings::UserScope) {
description->setToolTip("Path where game saves are stored.");
selectedFolderLabel = new QLabel(Options::GetSavesPath().c_str());
selectedFolderLabel->setDisabled(true);
folderSelectButton = new QPushButton("Choose...");
folderSelectButton = new QToolButton();
connect(folderSelectButton, &QPushButton::clicked, this, [&] {
connect(folderSelectButton, &QToolButton::clicked, this, [&] {
auto dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), QCoreApplication::applicationDirPath(),
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
selectedFolderLabel->setText(dir);
+2 -2
View File
@@ -1,6 +1,6 @@
#pragma once
#include <QWidget>
#include <QPushButton>
#include <QToolButton>
#include <QVBoxLayout>
#include <QLabel>
#include <QSettings>
@@ -8,7 +8,7 @@
class GeneralSettings final : public QWidget {
Q_OBJECT
QLabel *description;
QPushButton *folderSelectButton;
QToolButton *folderSelectButton;
QLabel *selectedFolderLabel;
QVBoxLayout *v;
QHBoxLayout *h;
+138
View File
@@ -0,0 +1,138 @@
#include <InputSettings.hpp>
InputSettings::InputSettings() : settings(QSettings::UserScope) {
mapping[0] = settings.value("input/mapping/Z", Qt::Key_Z).value<QKeySequence>();
mapping[1] = settings.value("input/mapping/A", Qt::Key_X).value<QKeySequence>();
mapping[2] = settings.value("input/mapping/B", Qt::Key_C).value<QKeySequence>();
mapping[3] = settings.value("input/mapping/L", Qt::Key_A).value<QKeySequence>();
mapping[4] = settings.value("input/mapping/R", Qt::Key_S).value<QKeySequence>();
mapping[5] = settings.value("input/mapping/S", Qt::Key_Return).value<QKeySequence>();
mapping[6] = settings.value("input/mapping/DU", Qt::Key_I).value<QKeySequence>();
mapping[7] = settings.value("input/mapping/DD", Qt::Key_K).value<QKeySequence>();
mapping[8] = settings.value("input/mapping/DL", Qt::Key_J).value<QKeySequence>();
mapping[9] = settings.value("input/mapping/DR", Qt::Key_L).value<QKeySequence>();
mapping[10] = settings.value("input/mapping/CU", Qt::Key_T).value<QKeySequence>();
mapping[11] = settings.value("input/mapping/CD", Qt::Key_G).value<QKeySequence>();
mapping[12] = settings.value("input/mapping/CL", Qt::Key_F).value<QKeySequence>();
mapping[13] = settings.value("input/mapping/CR", Qt::Key_H).value<QKeySequence>();
mapping[14] = settings.value("input/mapping/AU", Qt::Key_Up).value<QKeySequence>();
mapping[15] = settings.value("input/mapping/AD", Qt::Key_Down).value<QKeySequence>();
mapping[16] = settings.value("input/mapping/AL", Qt::Key_Left).value<QKeySequence>();
mapping[17] = settings.value("input/mapping/AR", Qt::Key_Right).value<QKeySequence>();
form = new QFormLayout();
form->addRow("Z:", btnZ);
form->addRow("A:", btnA);
form->addRow("B:", btnB);
form->addRow("L:", btnL);
form->addRow("R:", btnR);
form->addRow("Start:", btnS);
form->addRow("D-pad Up:", btnDU);
form->addRow("D-pad Down:", btnDD);
form->addRow("D-pad Left:", btnDL);
form->addRow("D-pad Right:", btnDR);
form->addRow("C-up:", btnCU);
form->addRow("C-down:", btnCD);
form->addRow("C-left:", btnCL);
form->addRow("C-right:", btnCR);
form->addRow("Up:", btnAU);
form->addRow("Down:", btnAD);
form->addRow("Left:", btnAL);
form->addRow("Right:", btnAR);
connect(btnZ, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[0] = btnZ->keySequence();
settings.setValue("input/mapping/Z", mapping[0]);
settings.sync();
});
connect(btnA, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[1] = btnA->keySequence();
settings.setValue("input/mapping/A", mapping[1]);
settings.sync();
});
connect(btnB, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[2] = btnB->keySequence();
settings.setValue("input/mapping/B", mapping[2]);
settings.sync();
});
connect(btnL, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[3] = btnL->keySequence();
settings.setValue("input/mapping/L", mapping[3]);
settings.sync();
});
connect(btnR, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[4] = btnR->keySequence();
settings.setValue("input/mapping/R", mapping[4]);
settings.sync();
});
connect(btnS, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[5] = btnS->keySequence();
settings.setValue("input/mapping/S", mapping[5]);
settings.sync();
});
connect(btnDU, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[6] = btnDU->keySequence();
settings.setValue("input/mapping/DU", mapping[6]);
settings.sync();
});
connect(btnDD, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[7] = btnDD->keySequence();
settings.setValue("input/mapping/DD", mapping[7]);
settings.sync();
});
connect(btnDL, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[8] = btnDL->keySequence();
settings.setValue("input/mapping/DL", mapping[8]);
settings.sync();
});
connect(btnDR, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[9] = btnDR->keySequence();
settings.setValue("input/mapping/DR", mapping[9]);
settings.sync();
});
connect(btnCU, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[10] = btnCU->keySequence();
settings.setValue("input/mapping/CU", mapping[10]);
settings.sync();
});
connect(btnCD, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[11] = btnCD->keySequence();
settings.setValue("input/mapping/CD", mapping[11]);
settings.sync();
});
connect(btnCL, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[12] = btnCL->keySequence();
settings.setValue("input/mapping/CL", mapping[12]);
settings.sync();
});
connect(btnCR, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[13] = btnCR->keySequence();
settings.setValue("input/mapping/CR", mapping[13]);
settings.sync();
});
connect(btnAU, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[14] = btnAU->keySequence();
settings.setValue("input/mapping/AU", mapping[14]);
settings.sync();
});
connect(btnAD, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[15] = btnAD->keySequence();
settings.setValue("input/mapping/AD", mapping[15]);
settings.sync();
});
connect(btnAL, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[16] = btnAL->keySequence();
settings.setValue("input/mapping/AL", mapping[16]);
settings.sync();
});
connect(btnAR, &QKeySequenceEdit::keySequenceChanged, this, [&] {
mapping[17] = btnAR->keySequence();
settings.setValue("input/mapping/AR", mapping[17]);
settings.sync();
});
v = new QVBoxLayout(this);
v->addLayout(form);
setLayout(v);
}
+42
View File
@@ -0,0 +1,42 @@
#pragma once
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QFormLayout>
#include <QKeySequenceEdit>
#include <QLabel>
#include <QSettings>
#include <QList>
class InputSettings final : public QWidget {
Q_OBJECT
QSettings settings;
QVBoxLayout *v;
QFormLayout *form;
QKeySequenceEdit *btnZ = new QKeySequenceEdit(Qt::Key_Z);
QKeySequenceEdit *btnA = new QKeySequenceEdit(Qt::Key_X);
QKeySequenceEdit *btnB = new QKeySequenceEdit(Qt::Key_C);
QKeySequenceEdit *btnL = new QKeySequenceEdit(Qt::Key_A);
QKeySequenceEdit *btnR = new QKeySequenceEdit(Qt::Key_S);
QKeySequenceEdit *btnS = new QKeySequenceEdit(Qt::Key_Return);
QKeySequenceEdit *btnDU = new QKeySequenceEdit(Qt::Key_T);
QKeySequenceEdit *btnDD = new QKeySequenceEdit(Qt::Key_G);
QKeySequenceEdit *btnDL = new QKeySequenceEdit(Qt::Key_F);
QKeySequenceEdit *btnDR = new QKeySequenceEdit(Qt::Key_H);
QKeySequenceEdit *btnCU = new QKeySequenceEdit(Qt::Key_I);
QKeySequenceEdit *btnCD = new QKeySequenceEdit(Qt::Key_K);
QKeySequenceEdit *btnCL = new QKeySequenceEdit(Qt::Key_J);
QKeySequenceEdit *btnCR = new QKeySequenceEdit(Qt::Key_L);
QKeySequenceEdit *btnAU = new QKeySequenceEdit(Qt::Key_Up);
QKeySequenceEdit *btnAD = new QKeySequenceEdit(Qt::Key_Down);
QKeySequenceEdit *btnAL = new QKeySequenceEdit(Qt::Key_Left);
QKeySequenceEdit *btnAR = new QKeySequenceEdit(Qt::Key_Right);
public:
QList<QKeySequence> mapping = {
Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_A, Qt::Key_S, Qt::Key_Return,
Qt::Key_I, Qt::Key_K, Qt::Key_J, Qt::Key_L, Qt::Key_T, Qt::Key_G,
Qt::Key_F, Qt::Key_H, Qt::Key_Up, Qt::Key_Down, Qt::Key_Left, Qt::Key_Right,
};
explicit InputSettings();
};