|
|
@@ -86,6 +86,16 @@ constexpr int GetIndexFromControllerType(Settings::ControllerType type) {
|
|
|
|
|
|
QString GetKeyName(int key_code) {
|
|
|
switch (key_code) {
|
|
|
+ case Qt::LeftButton:
|
|
|
+ return QObject::tr("Click 0");
|
|
|
+ case Qt::RightButton:
|
|
|
+ return QObject::tr("Click 1");
|
|
|
+ case Qt::MiddleButton:
|
|
|
+ return QObject::tr("Click 2");
|
|
|
+ case Qt::BackButton:
|
|
|
+ return QObject::tr("Click 3");
|
|
|
+ case Qt::ForwardButton:
|
|
|
+ return QObject::tr("Click 4");
|
|
|
case Qt::Key_Shift:
|
|
|
return QObject::tr("Shift");
|
|
|
case Qt::Key_Control:
|
|
|
@@ -648,9 +658,9 @@ void ConfigureInputPlayer::HandleClick(
|
|
|
button->setText(tr("[waiting]"));
|
|
|
button->setFocus();
|
|
|
|
|
|
- // The first two input devices are always Any and Keyboard. If the user filtered to a
|
|
|
- // controller, then they don't want keyboard input
|
|
|
- want_keyboard_keys = ui->comboDevices->currentIndex() < 2;
|
|
|
+ // The first two input devices are always Any and Keyboard/Mouse. If the user filtered to a
|
|
|
+ // controller, then they don't want keyboard/mouse input
|
|
|
+ want_keyboard_mouse = ui->comboDevices->currentIndex() < 2;
|
|
|
|
|
|
input_setter = new_input_setter;
|
|
|
|
|
|
@@ -660,6 +670,9 @@ void ConfigureInputPlayer::HandleClick(
|
|
|
poller->Start();
|
|
|
}
|
|
|
|
|
|
+ QWidget::grabMouse();
|
|
|
+ QWidget::grabKeyboard();
|
|
|
+
|
|
|
if (type == InputCommon::Polling::DeviceType::Button) {
|
|
|
InputCommon::GetGCButtons()->BeginConfiguration();
|
|
|
} else {
|
|
|
@@ -677,6 +690,9 @@ void ConfigureInputPlayer::SetPollingResult(const Common::ParamPackage& params,
|
|
|
poller->Stop();
|
|
|
}
|
|
|
|
|
|
+ QWidget::releaseMouse();
|
|
|
+ QWidget::releaseKeyboard();
|
|
|
+
|
|
|
InputCommon::GetGCButtons()->EndConfiguration();
|
|
|
InputCommon::GetGCAnalogs()->EndConfiguration();
|
|
|
|
|
|
@@ -688,13 +704,29 @@ void ConfigureInputPlayer::SetPollingResult(const Common::ParamPackage& params,
|
|
|
input_setter = std::nullopt;
|
|
|
}
|
|
|
|
|
|
+void ConfigureInputPlayer::mousePressEvent(QMouseEvent* event) {
|
|
|
+ if (!input_setter || !event) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (want_keyboard_mouse) {
|
|
|
+ SetPollingResult(Common::ParamPackage{InputCommon::GenerateKeyboardParam(event->button())},
|
|
|
+ false);
|
|
|
+ } else {
|
|
|
+ // We don't want any mouse buttons, so don't stop polling
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetPollingResult({}, true);
|
|
|
+}
|
|
|
+
|
|
|
void ConfigureInputPlayer::keyPressEvent(QKeyEvent* event) {
|
|
|
if (!input_setter || !event) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (event->key() != Qt::Key_Escape) {
|
|
|
- if (want_keyboard_keys) {
|
|
|
+ if (want_keyboard_mouse) {
|
|
|
SetPollingResult(Common::ParamPackage{InputCommon::GenerateKeyboardParam(event->key())},
|
|
|
false);
|
|
|
} else {
|
|
|
@@ -702,6 +734,7 @@ void ConfigureInputPlayer::keyPressEvent(QKeyEvent* event) {
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
SetPollingResult({}, true);
|
|
|
}
|
|
|
|