diff options
Diffstat (limited to 'src/yuzu/configuration')
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 15 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.h | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.cpp | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.ui | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 60 | 
5 files changed, 81 insertions, 9 deletions
| diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 32c81dc70..5e0d0e7af 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -211,8 +211,8 @@ const std::array<int, Settings::NativeKeyboard::NumKeyboardMods> Config::default  // This must be in alphabetical order according to action name as it must have the same order as  // UISetting::values.shortcuts, which is alphabetically ordered.  // clang-format off -const std::array<UISettings::Shortcut, 15> Config::default_hotkeys{{ -    {QStringLiteral("Capture Screenshot"),       QStringLiteral("Main Window"), {QStringLiteral("Ctrl+P"), Qt::ApplicationShortcut}}, +const std::array<UISettings::Shortcut, 16> Config::default_hotkeys{{ +    {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,9 @@ const std::array<UISettings::Shortcut, 15> 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}},      {QStringLiteral("Toggle Filter Bar"),        QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F"), Qt::WindowShortcut}}, @@ -664,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/config.h b/src/yuzu/configuration/config.h index 5cd2a5feb..09316382c 100644 --- a/src/yuzu/configuration/config.h +++ b/src/yuzu/configuration/config.h @@ -27,7 +27,7 @@ public:          default_mouse_buttons;      static const std::array<int, Settings::NativeKeyboard::NumKeyboardKeys> default_keyboard_keys;      static const std::array<int, Settings::NativeKeyboard::NumKeyboardMods> default_keyboard_mods; -    static const std::array<UISettings::Shortcut, 15> default_hotkeys; +    static const std::array<UISettings::Shortcut, 16> default_hotkeys;  private:      void ReadValues(); diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp index cb95423e0..74b2ad537 100644 --- a/src/yuzu/configuration/configure_general.cpp +++ b/src/yuzu/configuration/configure_general.cpp @@ -23,6 +23,11 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent)  ConfigureGeneral::~ConfigureGeneral() = default;  void ConfigureGeneral::SetConfiguration() { +    const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); + +    ui->use_multi_core->setEnabled(runtime_lock); +    ui->use_multi_core->setChecked(Settings::values.use_multi_core); +      ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing);      ui->toggle_user_on_boot->setChecked(UISettings::values.select_user_on_boot);      ui->toggle_background_pause->setChecked(UISettings::values.pause_when_in_background); @@ -41,6 +46,7 @@ void ConfigureGeneral::ApplyConfiguration() {      Settings::values.use_frame_limit = ui->toggle_frame_limit->isChecked();      Settings::values.frame_limit = ui->frame_limit->value(); +    Settings::values.use_multi_core = ui->use_multi_core->isChecked();  }  void ConfigureGeneral::changeEvent(QEvent* event) { diff --git a/src/yuzu/configuration/configure_general.ui b/src/yuzu/configuration/configure_general.ui index fc3b7e65a..2711116a2 100644 --- a/src/yuzu/configuration/configure_general.ui +++ b/src/yuzu/configuration/configure_general.ui @@ -52,6 +52,13 @@             </layout>            </item>            <item> +           <widget class="QCheckBox" name="use_multi_core"> +            <property name="text"> +             <string>Multicore CPU Emulation</string> +            </property> +           </widget> +          </item> +          <item>             <widget class="QCheckBox" name="toggle_check_exit">              <property name="text">               <string>Confirm exit while emulation is running</string> 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);      } | 
