diff options
Diffstat (limited to 'src/yuzu/configuration')
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_advanced.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_advanced.ui | 22 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 17 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player_widget.cpp | 35 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player_widget.h | 2 | 
6 files changed, 58 insertions, 22 deletions
| diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 35fef506a..31209fb2e 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -441,6 +441,7 @@ void Config::ReadControlValues() {      Settings::values.mouse_panning = false;      ReadBasicSetting(Settings::values.mouse_panning_sensitivity);      ReadBasicSetting(Settings::values.enable_joycon_driver); +    ReadBasicSetting(Settings::values.enable_procon_driver);      ReadBasicSetting(Settings::values.tas_enable);      ReadBasicSetting(Settings::values.tas_loop); @@ -1141,6 +1142,7 @@ void Config::SaveControlValues() {      WriteGlobalSetting(Settings::values.motion_enabled);      WriteBasicSetting(Settings::values.enable_raw_input);      WriteBasicSetting(Settings::values.enable_joycon_driver); +    WriteBasicSetting(Settings::values.enable_procon_driver);      WriteBasicSetting(Settings::values.keyboard_enabled);      WriteBasicSetting(Settings::values.emulate_analog_keyboard);      WriteBasicSetting(Settings::values.mouse_panning_sensitivity); diff --git a/src/yuzu/configuration/configure_input_advanced.cpp b/src/yuzu/configuration/configure_input_advanced.cpp index 77b976e74..8d81322f3 100644 --- a/src/yuzu/configuration/configure_input_advanced.cpp +++ b/src/yuzu/configuration/configure_input_advanced.cpp @@ -139,6 +139,7 @@ void ConfigureInputAdvanced::ApplyConfiguration() {      Settings::values.enable_ring_controller = ui->enable_ring_controller->isChecked();      Settings::values.enable_ir_sensor = ui->enable_ir_sensor->isChecked();      Settings::values.enable_joycon_driver = ui->enable_joycon_driver->isChecked(); +    Settings::values.enable_procon_driver = ui->enable_procon_driver->isChecked();  }  void ConfigureInputAdvanced::LoadConfiguration() { @@ -174,6 +175,7 @@ void ConfigureInputAdvanced::LoadConfiguration() {      ui->enable_ring_controller->setChecked(Settings::values.enable_ring_controller.GetValue());      ui->enable_ir_sensor->setChecked(Settings::values.enable_ir_sensor.GetValue());      ui->enable_joycon_driver->setChecked(Settings::values.enable_joycon_driver.GetValue()); +    ui->enable_procon_driver->setChecked(Settings::values.enable_procon_driver.GetValue());      UpdateUIEnabled();  } diff --git a/src/yuzu/configuration/configure_input_advanced.ui b/src/yuzu/configuration/configure_input_advanced.ui index 75d96d3ab..0eb2b34bc 100644 --- a/src/yuzu/configuration/configure_input_advanced.ui +++ b/src/yuzu/configuration/configure_input_advanced.ui @@ -2712,6 +2712,22 @@                       </widget>                     </item>                     <item row="6" column="0"> +                      <widget class="QCheckBox" name="enable_procon_driver"> +                       <property name="toolTip"> +                         <string>Requires restarting yuzu</string> +                       </property> +                       <property name="minimumSize"> +                         <size> +                           <width>0</width> +                           <height>23</height> +                         </size> +                       </property> +                       <property name="text"> +                         <string>Enable direct Pro Controller driver [EXPERIMENTAL]</string> +                       </property> +                     </widget> +                   </item> +                   <item row="7" column="0">                       <widget class="QCheckBox" name="mouse_panning">                         <property name="minimumSize">                           <size> @@ -2724,7 +2740,7 @@                         </property>                       </widget>                     </item> -                   <item row="6" column="2"> +                   <item row="7" column="2">                       <widget class="QSpinBox" name="mouse_panning_sensitivity">                         <property name="toolTip">                           <string>Mouse sensitivity</string> @@ -2746,14 +2762,14 @@                         </property>                       </widget>                     </item> -                   <item row="7" column="0"> +                   <item row="8" column="0">                       <widget class="QLabel" name="motion_touch">                         <property name="text">                           <string>Motion / Touch</string>                         </property>                       </widget>                     </item> -                   <item row="7" column="2"> +                   <item row="8" column="2">                       <widget class="QPushButton" name="buttonMotionTouch">                         <property name="text">                           <string>Configure</string> diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 4b7e3b01b..723690e71 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -182,12 +182,13 @@ QString ConfigureInputPlayer::ButtonToText(const Common::ParamPackage& param) {      const QString toggle = QString::fromStdString(param.Get("toggle", false) ? "~" : "");      const QString inverted = QString::fromStdString(param.Get("inverted", false) ? "!" : "");      const QString invert = QString::fromStdString(param.Get("invert", "+") == "-" ? "-" : ""); +    const QString turbo = QString::fromStdString(param.Get("turbo", false) ? "$" : "");      const auto common_button_name = input_subsystem->GetButtonName(param);      // Retrieve the names from Qt      if (param.Get("engine", "") == "keyboard") {          const QString button_str = GetKeyName(param.Get("code", 0)); -        return QObject::tr("%1%2%3").arg(toggle, inverted, button_str); +        return QObject::tr("%1%2%3%4").arg(turbo, toggle, inverted, button_str);      }      if (common_button_name == Common::Input::ButtonNames::Invalid) { @@ -201,7 +202,7 @@ QString ConfigureInputPlayer::ButtonToText(const Common::ParamPackage& param) {      if (common_button_name == Common::Input::ButtonNames::Value) {          if (param.Has("hat")) {              const QString hat = GetDirectionName(param.Get("direction", "")); -            return QObject::tr("%1%2Hat %3").arg(toggle, inverted, hat); +            return QObject::tr("%1%2%3Hat %4").arg(turbo, toggle, inverted, hat);          }          if (param.Has("axis")) {              const QString axis = QString::fromStdString(param.Get("axis", "")); @@ -219,13 +220,13 @@ QString ConfigureInputPlayer::ButtonToText(const Common::ParamPackage& param) {          }          if (param.Has("button")) {              const QString button = QString::fromStdString(param.Get("button", "")); -            return QObject::tr("%1%2Button %3").arg(toggle, inverted, button); +            return QObject::tr("%1%2%3Button %4").arg(turbo, toggle, inverted, button);          }      }      QString button_name = GetButtonName(common_button_name);      if (param.Has("hat")) { -        return QObject::tr("%1%2Hat %3").arg(toggle, inverted, button_name); +        return QObject::tr("%1%2%3Hat %4").arg(turbo, toggle, inverted, button_name);      }      if (param.Has("axis")) {          return QObject::tr("%1%2Axis %3").arg(toggle, inverted, button_name); @@ -234,7 +235,7 @@ QString ConfigureInputPlayer::ButtonToText(const Common::ParamPackage& param) {          return QObject::tr("%1%2Axis %3").arg(toggle, inverted, button_name);      }      if (param.Has("button")) { -        return QObject::tr("%1%2Button %3").arg(toggle, inverted, button_name); +        return QObject::tr("%1%2%3Button %4").arg(turbo, toggle, inverted, button_name);      }      return QObject::tr("[unknown]"); @@ -395,6 +396,12 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i                              button_map[button_id]->setText(ButtonToText(param));                              emulated_controller->SetButtonParam(button_id, param);                          }); +                        context_menu.addAction(tr("Turbo button"), [&] { +                            const bool turbo_value = !param.Get("turbo", false); +                            param.Set("turbo", turbo_value); +                            button_map[button_id]->setText(ButtonToText(param)); +                            emulated_controller->SetButtonParam(button_id, param); +                        });                      }                      if (param.Has("axis")) {                          context_menu.addAction(tr("Invert axis"), [&] { diff --git a/src/yuzu/configuration/configure_input_player_widget.cpp b/src/yuzu/configuration/configure_input_player_widget.cpp index 68af6c20c..c287220fc 100644 --- a/src/yuzu/configuration/configure_input_player_widget.cpp +++ b/src/yuzu/configuration/configure_input_player_widget.cpp @@ -81,7 +81,6 @@ void PlayerControlPreview::UpdateColors() {          colors.outline = QColor(0, 0, 0);          colors.primary = QColor(225, 225, 225);          colors.button = QColor(109, 111, 114); -        colors.button2 = QColor(109, 111, 114);          colors.button2 = QColor(77, 80, 84);          colors.slider_arrow = QColor(65, 68, 73);          colors.font2 = QColor(0, 0, 0); @@ -100,6 +99,7 @@ void PlayerControlPreview::UpdateColors() {      colors.led_off = QColor(170, 238, 255);      colors.indicator2 = QColor(59, 165, 93);      colors.charging = QColor(250, 168, 26); +    colors.button_turbo = QColor(217, 158, 4);      colors.left = colors.primary;      colors.right = colors.primary; @@ -2469,7 +2469,6 @@ void PlayerControlPreview::DrawJoystickDot(QPainter& p, const QPointF center,  void PlayerControlPreview::DrawRoundButton(QPainter& p, QPointF center,                                             const Common::Input::ButtonStatus& pressed, float width,                                             float height, Direction direction, float radius) { -    p.setBrush(button_color);      if (pressed.value) {          switch (direction) {          case Direction::Left: @@ -2487,16 +2486,16 @@ void PlayerControlPreview::DrawRoundButton(QPainter& p, QPointF center,          case Direction::None:              break;          } -        p.setBrush(colors.highlight);      }      QRectF rect = {center.x() - width, center.y() - height, width * 2.0f, height * 2.0f}; +    p.setBrush(GetButtonColor(button_color, pressed.value, pressed.turbo));      p.drawRoundedRect(rect, radius, radius);  }  void PlayerControlPreview::DrawMinusButton(QPainter& p, const QPointF center,                                             const Common::Input::ButtonStatus& pressed,                                             int button_size) {      p.setPen(colors.outline); -    p.setBrush(pressed.value ? colors.highlight : colors.button); +    p.setBrush(GetButtonColor(colors.button, pressed.value, pressed.turbo));      DrawRectangle(p, center, button_size, button_size / 3.0f);  }  void PlayerControlPreview::DrawPlusButton(QPainter& p, const QPointF center, @@ -2504,7 +2503,7 @@ void PlayerControlPreview::DrawPlusButton(QPainter& p, const QPointF center,                                            int button_size) {      // Draw outer line      p.setPen(colors.outline); -    p.setBrush(pressed.value ? colors.highlight : colors.button); +    p.setBrush(GetButtonColor(colors.button, pressed.value, pressed.turbo));      DrawRectangle(p, center, button_size, button_size / 3.0f);      DrawRectangle(p, center, button_size / 3.0f, button_size); @@ -2526,7 +2525,7 @@ void PlayerControlPreview::DrawGCButtonX(QPainter& p, const QPointF center,      }      p.setPen(colors.outline); -    p.setBrush(pressed.value ? colors.highlight : colors.button); +    p.setBrush(GetButtonColor(colors.button, pressed.value, pressed.turbo));      DrawPolygon(p, button_x);  } @@ -2539,7 +2538,7 @@ void PlayerControlPreview::DrawGCButtonY(QPainter& p, const QPointF center,      }      p.setPen(colors.outline); -    p.setBrush(pressed.value ? colors.highlight : colors.button); +    p.setBrush(GetButtonColor(colors.button, pressed.value, pressed.turbo));      DrawPolygon(p, button_x);  } @@ -2553,17 +2552,15 @@ void PlayerControlPreview::DrawGCButtonZ(QPainter& p, const QPointF center,      }      p.setPen(colors.outline); -    p.setBrush(pressed.value ? colors.highlight : colors.button2); +    p.setBrush(GetButtonColor(colors.button2, pressed.value, pressed.turbo));      DrawPolygon(p, button_x);  }  void PlayerControlPreview::DrawCircleButton(QPainter& p, const QPointF center,                                              const Common::Input::ButtonStatus& pressed,                                              float button_size) { -    p.setBrush(button_color); -    if (pressed.value) { -        p.setBrush(colors.highlight); -    } + +    p.setBrush(GetButtonColor(button_color, pressed.value, pressed.turbo));      p.drawEllipse(center, button_size, button_size);  } @@ -2620,7 +2617,7 @@ void PlayerControlPreview::DrawArrowButton(QPainter& p, const QPointF center,      // Draw arrow button      p.setPen(pressed.value ? colors.highlight : colors.button); -    p.setBrush(pressed.value ? colors.highlight : colors.button); +    p.setBrush(GetButtonColor(colors.button, pressed.value, pressed.turbo));      DrawPolygon(p, arrow_button);      switch (direction) { @@ -2672,10 +2669,20 @@ void PlayerControlPreview::DrawTriggerButton(QPainter& p, const QPointF center,      // Draw arrow button      p.setPen(colors.outline); -    p.setBrush(pressed.value ? colors.highlight : colors.button); +    p.setBrush(GetButtonColor(colors.button, pressed.value, pressed.turbo));      DrawPolygon(p, qtrigger_button);  } +QColor PlayerControlPreview::GetButtonColor(QColor default_color, bool is_pressed, bool turbo) { +    if (is_pressed && turbo) { +        return colors.button_turbo; +    } +    if (is_pressed) { +        return colors.highlight; +    } +    return default_color; +} +  void PlayerControlPreview::DrawBattery(QPainter& p, QPointF center,                                         Common::Input::BatteryLevel battery) {      if (battery == Common::Input::BatteryLevel::None) { diff --git a/src/yuzu/configuration/configure_input_player_widget.h b/src/yuzu/configuration/configure_input_player_widget.h index b258c6d77..0e9e95e85 100644 --- a/src/yuzu/configuration/configure_input_player_widget.h +++ b/src/yuzu/configuration/configure_input_player_widget.h @@ -81,6 +81,7 @@ private:          QColor right{};          QColor button{};          QColor button2{}; +        QColor button_turbo{};          QColor font{};          QColor font2{};          QColor highlight{}; @@ -183,6 +184,7 @@ private:                           const Common::Input::ButtonStatus& pressed, float size = 1.0f);      void DrawTriggerButton(QPainter& p, QPointF center, Direction direction,                             const Common::Input::ButtonStatus& pressed); +    QColor GetButtonColor(QColor default_color, bool is_pressed, bool turbo);      // Draw battery functions      void DrawBattery(QPainter& p, QPointF center, Common::Input::BatteryLevel battery); | 
