input_common: add TouchFromButtonDevice
This commit is contained in:
parent
36809b2e2e
commit
41facaece3
16 changed files with 792 additions and 2 deletions
|
@ -164,10 +164,42 @@ void Config::ReadCameraValues() {
|
|||
void Config::ReadControlValues() {
|
||||
qt_config->beginGroup(QStringLiteral("Controls"));
|
||||
|
||||
int num_touch_from_button_maps =
|
||||
qt_config->beginReadArray(QStringLiteral("touch_from_button_maps"));
|
||||
|
||||
if (num_touch_from_button_maps > 0) {
|
||||
const auto& append_touch_from_button_map = [this] {
|
||||
Settings::TouchFromButtonMap map;
|
||||
map.name = ReadSetting(QStringLiteral("name"), QStringLiteral("default"))
|
||||
.toString()
|
||||
.toStdString();
|
||||
const std::size_t num_touch_maps = qt_config->beginReadArray(QStringLiteral("entries"));
|
||||
map.buttons.reserve(num_touch_maps);
|
||||
for (int i = 0; i < num_touch_maps; i++) {
|
||||
qt_config->setArrayIndex(i);
|
||||
std::string touch_mapping =
|
||||
ReadSetting(QStringLiteral("bind")).toString().toStdString();
|
||||
map.buttons.emplace_back(std::move(touch_mapping));
|
||||
}
|
||||
qt_config->endArray(); // entries
|
||||
Settings::values.touch_from_button_maps.emplace_back(std::move(map));
|
||||
};
|
||||
|
||||
for (int i = 0; i < num_touch_from_button_maps; ++i) {
|
||||
qt_config->setArrayIndex(i);
|
||||
append_touch_from_button_map();
|
||||
}
|
||||
} else {
|
||||
Settings::values.touch_from_button_maps.emplace_back(
|
||||
Settings::TouchFromButtonMap{"default", {}});
|
||||
num_touch_from_button_maps = 1;
|
||||
}
|
||||
qt_config->endArray();
|
||||
|
||||
Settings::values.current_input_profile_index =
|
||||
ReadSetting(QStringLiteral("profile"), 0).toInt();
|
||||
|
||||
const auto append_profile = [this] {
|
||||
const auto append_profile = [this, num_touch_from_button_maps] {
|
||||
Settings::InputProfile profile;
|
||||
profile.name =
|
||||
ReadSetting(QStringLiteral("name"), QStringLiteral("default")).toString().toStdString();
|
||||
|
@ -201,6 +233,12 @@ void Config::ReadControlValues() {
|
|||
ReadSetting(QStringLiteral("touch_device"), QStringLiteral("engine:emu_window"))
|
||||
.toString()
|
||||
.toStdString();
|
||||
profile.use_touch_from_button =
|
||||
ReadSetting(QStringLiteral("use_touch_from_button"), false).toBool();
|
||||
profile.touch_from_button_map_index =
|
||||
ReadSetting(QStringLiteral("touch_from_button_map"), 0).toInt();
|
||||
profile.touch_from_button_map_index =
|
||||
std::clamp(profile.touch_from_button_map_index, 0, num_touch_from_button_maps - 1);
|
||||
profile.udp_input_address =
|
||||
ReadSetting(QStringLiteral("udp_input_address"),
|
||||
QString::fromUtf8(InputCommon::CemuhookUDP::DEFAULT_ADDR))
|
||||
|
@ -758,6 +796,9 @@ void Config::SaveControlValues() {
|
|||
QStringLiteral("engine:motion_emu,update_period:100,sensitivity:0.01,tilt_clamp:90.0"));
|
||||
WriteSetting(QStringLiteral("touch_device"), QString::fromStdString(profile.touch_device),
|
||||
QStringLiteral("engine:emu_window"));
|
||||
WriteSetting(QStringLiteral("use_touch_from_button"), profile.use_touch_from_button, false);
|
||||
WriteSetting(QStringLiteral("touch_from_button_map"), profile.touch_from_button_map_index,
|
||||
0);
|
||||
WriteSetting(QStringLiteral("udp_input_address"),
|
||||
QString::fromStdString(profile.udp_input_address),
|
||||
QString::fromUtf8(InputCommon::CemuhookUDP::DEFAULT_ADDR));
|
||||
|
@ -767,6 +808,21 @@ void Config::SaveControlValues() {
|
|||
}
|
||||
qt_config->endArray();
|
||||
|
||||
qt_config->beginWriteArray(QStringLiteral("touch_from_button_maps"));
|
||||
for (std::size_t p = 0; p < Settings::values.touch_from_button_maps.size(); ++p) {
|
||||
qt_config->setArrayIndex(static_cast<int>(p));
|
||||
const auto& map = Settings::values.touch_from_button_maps[p];
|
||||
WriteSetting(QStringLiteral("name"), QString::fromStdString(map.name),
|
||||
QStringLiteral("default"));
|
||||
qt_config->beginWriteArray(QStringLiteral("entries"));
|
||||
for (std::size_t q = 0; q < map.buttons.size(); ++q) {
|
||||
qt_config->setArrayIndex(static_cast<int>(q));
|
||||
WriteSetting(QStringLiteral("bind"), QString::fromStdString(map.buttons[q]));
|
||||
}
|
||||
qt_config->endArray();
|
||||
}
|
||||
qt_config->endArray();
|
||||
|
||||
qt_config->endGroup();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue