diff options
Diffstat (limited to 'src/yuzu/configuration')
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 12 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 60 | 
3 files changed, 68 insertions, 10 deletions
| diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index bbbd96113..5e0d0e7af 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -212,7 +212,7 @@ const std::array<int, Settings::NativeKeyboard::NumKeyboardMods> Config::default  // UISetting::values.shortcuts, which is alphabetically ordered.  // clang-format off  const std::array<UISettings::Shortcut, 16> Config::default_hotkeys{{ -    {QStringLiteral("Capture Screenshot"),       QStringLiteral("Main Window"), {QStringLiteral("Ctrl+P"), Qt::ApplicationShortcut}}, +    {QStringLiteral("Capture Screenshot"),       QStringLiteral("Main Window"), {QStringLiteral("Ctrl+P"), Qt::WidgetWithChildrenShortcut}},      {QStringLiteral("Change Docked Mode"),       QStringLiteral("Main Window"), {QStringLiteral("F10"), Qt::ApplicationShortcut}},      {QStringLiteral("Continue/Pause Emulation"), QStringLiteral("Main Window"), {QStringLiteral("F4"), Qt::WindowShortcut}},      {QStringLiteral("Decrease Speed Limit"),     QStringLiteral("Main Window"), {QStringLiteral("-"), Qt::ApplicationShortcut}}, @@ -220,8 +220,8 @@ const std::array<UISettings::Shortcut, 16> Config::default_hotkeys{{      {QStringLiteral("Exit yuzu"),                QStringLiteral("Main Window"), {QStringLiteral("Ctrl+Q"), Qt::WindowShortcut}},      {QStringLiteral("Fullscreen"),               QStringLiteral("Main Window"), {QStringLiteral("F11"), Qt::WindowShortcut}},      {QStringLiteral("Increase Speed Limit"),     QStringLiteral("Main Window"), {QStringLiteral("+"), Qt::ApplicationShortcut}}, -    {QStringLiteral("Load Amiibo"),              QStringLiteral("Main Window"), {QStringLiteral("F2"), Qt::ApplicationShortcut}}, -    {QStringLiteral("Load File"),                QStringLiteral("Main Window"), {QStringLiteral("Ctrl+O"), Qt::WindowShortcut}}, +    {QStringLiteral("Load Amiibo"),              QStringLiteral("Main Window"), {QStringLiteral("F2"), Qt::WidgetWithChildrenShortcut}}, +    {QStringLiteral("Load File"),                QStringLiteral("Main Window"), {QStringLiteral("Ctrl+O"), Qt::WidgetWithChildrenShortcut}},      {QStringLiteral("Mute Audio"),               QStringLiteral("Main Window"), {QStringLiteral("Ctrl+M"), Qt::WindowShortcut}},      {QStringLiteral("Restart Emulation"),        QStringLiteral("Main Window"), {QStringLiteral("F6"), Qt::WindowShortcut}},      {QStringLiteral("Stop Emulation"),           QStringLiteral("Main Window"), {QStringLiteral("F5"), Qt::WindowShortcut}}, @@ -665,11 +665,13 @@ void Config::ReadShortcutValues() {          const auto& [keyseq, context] = shortcut;          qt_config->beginGroup(group);          qt_config->beginGroup(name); +        // No longer using ReadSetting for shortcut.second as it innacurately returns a value of 1 +        // for WidgetWithChildrenShortcut which is a value of 3. Needed to fix shortcuts the open +        // a file dialog in windowed mode          UISettings::values.shortcuts.push_back(              {name,               group, -             {ReadSetting(QStringLiteral("KeySeq"), keyseq).toString(), -              ReadSetting(QStringLiteral("Context"), context).toInt()}}); +             {ReadSetting(QStringLiteral("KeySeq"), keyseq).toString(), shortcut.second}});          qt_config->endGroup();          qt_config->endGroup();      } diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 304625cd7..431f51d73 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -28,9 +28,9 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent)      SetConfiguration(); -    connect(ui->api, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, +    connect(ui->api, qOverload<int>(&QComboBox::currentIndexChanged), this,              [this] { UpdateDeviceComboBox(); }); -    connect(ui->device, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, +    connect(ui->device, qOverload<int>(&QComboBox::activated), this,              [this](int device) { UpdateDeviceSelection(device); });      connect(ui->bg_button, &QPushButton::clicked, this, [this] { @@ -112,7 +112,7 @@ void ConfigureGraphics::UpdateDeviceComboBox() {          enabled = false;          break;      case Settings::RendererBackend::Vulkan: -        for (const auto device : vulkan_devices) { +        for (const auto& device : vulkan_devices) {              ui->device->addItem(device);          }          ui->device->setCurrentIndex(vulkan_device); diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index a05fa64ba..00433926d 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -70,6 +70,20 @@ static QString ButtonToText(const Common::ParamPackage& param) {          return GetKeyName(param.Get("code", 0));      } +    if (param.Get("engine", "") == "gcpad") { +        if (param.Has("axis")) { +            const QString axis_str = QString::fromStdString(param.Get("axis", "")); +            const QString direction_str = QString::fromStdString(param.Get("direction", "")); + +            return QObject::tr("GC Axis %1%2").arg(axis_str, direction_str); +        } +        if (param.Has("button")) { +            const QString button_str = QString::number(int(std::log2(param.Get("button", 0)))); +            return QObject::tr("GC Button %1").arg(button_str); +        } +        return GetKeyName(param.Get("code", 0)); +    } +      if (param.Get("engine", "") == "sdl") {          if (param.Has("hat")) {              const QString hat_str = QString::fromStdString(param.Get("hat", "")); @@ -126,6 +140,25 @@ static QString AnalogToText(const Common::ParamPackage& param, const std::string          return {};      } +    if (param.Get("engine", "") == "gcpad") { +        if (dir == "modifier") { +            return QObject::tr("[unused]"); +        } + +        if (dir == "left" || dir == "right") { +            const QString axis_x_str = QString::fromStdString(param.Get("axis_x", "")); + +            return QObject::tr("GC Axis %1").arg(axis_x_str); +        } + +        if (dir == "up" || dir == "down") { +            const QString axis_y_str = QString::fromStdString(param.Get("axis_y", "")); + +            return QObject::tr("GC Axis %1").arg(axis_y_str); +        } + +        return {}; +    }      return QObject::tr("[unknown]");  } @@ -332,7 +365,8 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i          connect(analog_map_deadzone_and_modifier_slider[analog_id], &QSlider::valueChanged, [=] {              const float slider_value = analog_map_deadzone_and_modifier_slider[analog_id]->value(); -            if (analogs_param[analog_id].Get("engine", "") == "sdl") { +            if (analogs_param[analog_id].Get("engine", "") == "sdl" || +                analogs_param[analog_id].Get("engine", "") == "gcpad") {                  analog_map_deadzone_and_modifier_slider_label[analog_id]->setText(                      tr("Deadzone: %1%").arg(slider_value));                  analogs_param[analog_id].Set("deadzone", slider_value / 100.0f); @@ -352,6 +386,20 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i      connect(poll_timer.get(), &QTimer::timeout, [this] {          Common::ParamPackage params; +        if (InputCommon::GetGCButtons()->IsPolling()) { +            params = InputCommon::GetGCButtons()->GetNextInput(); +            if (params.Has("engine")) { +                SetPollingResult(params, false); +                return; +            } +        } +        if (InputCommon::GetGCAnalogs()->IsPolling()) { +            params = InputCommon::GetGCAnalogs()->GetNextInput(); +            if (params.Has("engine")) { +                SetPollingResult(params, false); +                return; +            } +        }          for (auto& poller : device_pollers) {              params = poller->GetNextInput();              if (params.Has("engine")) { @@ -534,7 +582,7 @@ void ConfigureInputPlayer::UpdateButtonLabels() {              analog_map_deadzone_and_modifier_slider_label[analog_id];          if (param.Has("engine")) { -            if (param.Get("engine", "") == "sdl") { +            if (param.Get("engine", "") == "sdl" || param.Get("engine", "") == "gcpad") {                  if (!param.Has("deadzone")) {                      param.Set("deadzone", 0.1f);                  } @@ -583,6 +631,11 @@ void ConfigureInputPlayer::HandleClick(      grabKeyboard();      grabMouse(); +    if (type == InputCommon::Polling::DeviceType::Button) { +        InputCommon::GetGCButtons()->BeginConfiguration(); +    } else { +        InputCommon::GetGCAnalogs()->BeginConfiguration(); +    }      timeout_timer->start(5000); // Cancel after 5 seconds      poll_timer->start(200);     // Check for new inputs every 200ms  } @@ -596,6 +649,9 @@ void ConfigureInputPlayer::SetPollingResult(const Common::ParamPackage& params,          poller->Stop();      } +    InputCommon::GetGCButtons()->EndConfiguration(); +    InputCommon::GetGCAnalogs()->EndConfiguration(); +      if (!abort) {          (*input_setter)(params);      } | 
