diff --git a/src/duckstation-qt/CMakeLists.txt b/src/duckstation-qt/CMakeLists.txt
index 59a15d841..b5e4da3e7 100644
--- a/src/duckstation-qt/CMakeLists.txt
+++ b/src/duckstation-qt/CMakeLists.txt
@@ -34,6 +34,7 @@ set(SRCS
controllerbindingwidget_analog_joystick.ui
controllerbindingwidget_digital_controller.ui
controllerbindingwidget_guncon.ui
+ controllerbindingwidget_mouse.ui
controllerbindingwidget_negcon.ui
controllerbindingwidgets.cpp
controllerbindingwidgets.h
diff --git a/src/duckstation-qt/controllerbindingwidget_mouse.ui b/src/duckstation-qt/controllerbindingwidget_mouse.ui
new file mode 100644
index 000000000..c652a666c
--- /dev/null
+++ b/src/duckstation-qt/controllerbindingwidget_mouse.ui
@@ -0,0 +1,183 @@
+
+
+ ControllerBindingWidget_Mouse
+
+
+
+ 0
+ 0
+ 1100
+ 500
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 1100
+ 500
+
+
+
+ Form
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 187
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 405
+ 20
+
+
+
+
+ -
+
+
+ Buttons
+
+
+
-
+
+
+ Left
+
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
-
+
+
+
+ 100
+ 0
+
+
+
+
+ 100
+ 16777215
+
+
+
+ PushButton
+
+
+
+
+
+
+ -
+
+
+ Right
+
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
-
+
+
+
+ 100
+ 0
+
+
+
+
+ 100
+ 16777215
+
+
+
+ PushButton
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 405
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 187
+
+
+
+
+
+
+
+
+ InputBindingWidget
+ QPushButton
+
+
+
+
+
+
+
+
diff --git a/src/duckstation-qt/controllerbindingwidgets.cpp b/src/duckstation-qt/controllerbindingwidgets.cpp
index 4547ad9c9..c1d571166 100644
--- a/src/duckstation-qt/controllerbindingwidgets.cpp
+++ b/src/duckstation-qt/controllerbindingwidgets.cpp
@@ -113,6 +113,9 @@ void ControllerBindingWidget::populateWidgets()
case ControllerType::NeGcon:
m_bindings_widget = ControllerBindingWidget_NeGcon::createInstance(this);
break;
+ case ControllerType::PlayStationMouse:
+ m_bindings_widget = ControllerBindingWidget_Mouse::createInstance(this);
+ break;
default:
m_bindings_widget = new ControllerBindingWidget_Base(this);
break;
@@ -880,3 +883,24 @@ ControllerBindingWidget_Base* ControllerBindingWidget_GunCon::createInstance(Con
}
//////////////////////////////////////////////////////////////////////////
+
+ControllerBindingWidget_Mouse::ControllerBindingWidget_Mouse(ControllerBindingWidget* parent)
+ : ControllerBindingWidget_Base(parent)
+{
+ m_ui.setupUi(this);
+ initBindingWidgets();
+}
+
+ControllerBindingWidget_Mouse::~ControllerBindingWidget_Mouse() {}
+
+QIcon ControllerBindingWidget_Mouse::getIcon() const
+{
+ return QIcon::fromTheme(QStringLiteral("mouse-line"));
+}
+
+ControllerBindingWidget_Base* ControllerBindingWidget_Mouse::createInstance(ControllerBindingWidget* parent)
+{
+ return new ControllerBindingWidget_Mouse(parent);
+}
+
+//////////////////////////////////////////////////////////////////////////
diff --git a/src/duckstation-qt/controllerbindingwidgets.h b/src/duckstation-qt/controllerbindingwidgets.h
index be0d66bcf..9350f6d0a 100644
--- a/src/duckstation-qt/controllerbindingwidgets.h
+++ b/src/duckstation-qt/controllerbindingwidgets.h
@@ -11,6 +11,7 @@
#include "ui_controllerbindingwidget_analog_joystick.h"
#include "ui_controllerbindingwidget_digital_controller.h"
#include "ui_controllerbindingwidget_guncon.h"
+#include "ui_controllerbindingwidget_mouse.h"
#include "ui_controllerbindingwidget_negcon.h"
#include "ui_controllermacroeditwidget.h"
#include "ui_controllermacrowidget.h"
@@ -263,3 +264,21 @@ private:
};
//////////////////////////////////////////////////////////////////////////
+
+class ControllerBindingWidget_Mouse final : public ControllerBindingWidget_Base
+{
+ Q_OBJECT
+
+public:
+ ControllerBindingWidget_Mouse(ControllerBindingWidget* parent);
+ ~ControllerBindingWidget_Mouse();
+
+ QIcon getIcon() const override;
+
+ static ControllerBindingWidget_Base* createInstance(ControllerBindingWidget* parent);
+
+private:
+ Ui::ControllerBindingWidget_Mouse m_ui;
+};
+
+//////////////////////////////////////////////////////////////////////////
diff --git a/src/duckstation-qt/duckstation-qt.vcxproj b/src/duckstation-qt/duckstation-qt.vcxproj
index 3b39f1196..2648d2ad7 100644
--- a/src/duckstation-qt/duckstation-qt.vcxproj
+++ b/src/duckstation-qt/duckstation-qt.vcxproj
@@ -176,6 +176,9 @@
Document
+
+ Document
+
Document
diff --git a/src/duckstation-qt/resources/icons/black/svg/mouse-line.svg b/src/duckstation-qt/resources/icons/black/svg/mouse-line.svg
new file mode 100644
index 000000000..7f6e2dcac
--- /dev/null
+++ b/src/duckstation-qt/resources/icons/black/svg/mouse-line.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/duckstation-qt/resources/icons/white/svg/mouse-line.svg b/src/duckstation-qt/resources/icons/white/svg/mouse-line.svg
new file mode 100644
index 000000000..1524cb638
--- /dev/null
+++ b/src/duckstation-qt/resources/icons/white/svg/mouse-line.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/duckstation-qt/resources/resources.qrc b/src/duckstation-qt/resources/resources.qrc
index 914915165..1fb62e951 100644
--- a/src/duckstation-qt/resources/resources.qrc
+++ b/src/duckstation-qt/resources/resources.qrc
@@ -181,6 +181,7 @@
icons/black/svg/keyboard-line.svg
icons/black/svg/layout-grid-line.svg
icons/black/svg/list-check.svg
+ icons/black/svg/mouse-line.svg
icons/black/svg/paint-brush-line.svg
icons/black/svg/paint-fill.svg
icons/black/svg/pantone-line.svg
@@ -510,6 +511,7 @@
icons/white/svg/keyboard-line.svg
icons/white/svg/layout-grid-line.svg
icons/white/svg/list-check.svg
+ icons/white/svg/mouse-line.svg
icons/white/svg/paint-brush-line.svg
icons/white/svg/paint-fill.svg
icons/white/svg/pantone-line.svg