Minor fixes (#3370)

This commit is contained in:
rainmakerv2 2025-08-03 17:25:08 +08:00 committed by GitHub
commit e56232134f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 30 additions and 24 deletions

View file

@ -859,61 +859,66 @@ bool ControlSettings::eventFilter(QObject* obj, QEvent* event) {
void ControlSettings::processSDLEvents(int Type, int Input, int Value) { void ControlSettings::processSDLEvents(int Type, int Input, int Value) {
if (EnableButtonMapping) { if (EnableButtonMapping) {
if (pressedButtons.size() >= 3) {
return;
}
if (Type == SDL_EVENT_GAMEPAD_BUTTON_DOWN) { if (Type == SDL_EVENT_GAMEPAD_BUTTON_DOWN) {
switch (Input) { switch (Input) {
case SDL_GAMEPAD_BUTTON_SOUTH: case SDL_GAMEPAD_BUTTON_SOUTH:
pressedButtons.insert("cross"); pressedButtons.insert(5, "cross");
break; break;
case SDL_GAMEPAD_BUTTON_EAST: case SDL_GAMEPAD_BUTTON_EAST:
pressedButtons.insert("circle"); pressedButtons.insert(6, "circle");
break; break;
case SDL_GAMEPAD_BUTTON_NORTH: case SDL_GAMEPAD_BUTTON_NORTH:
pressedButtons.insert("triangle"); pressedButtons.insert(7, "triangle");
break; break;
case SDL_GAMEPAD_BUTTON_WEST: case SDL_GAMEPAD_BUTTON_WEST:
pressedButtons.insert("square"); pressedButtons.insert(8, "square");
break; break;
case SDL_GAMEPAD_BUTTON_LEFT_SHOULDER: case SDL_GAMEPAD_BUTTON_LEFT_SHOULDER:
pressedButtons.insert("l1"); pressedButtons.insert(3, "l1");
break; break;
case SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER: case SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER:
pressedButtons.insert("r1"); pressedButtons.insert(4, "r1");
break; break;
case SDL_GAMEPAD_BUTTON_LEFT_STICK: case SDL_GAMEPAD_BUTTON_LEFT_STICK:
pressedButtons.insert("l3"); pressedButtons.insert(9, "l3");
break; break;
case SDL_GAMEPAD_BUTTON_RIGHT_STICK: case SDL_GAMEPAD_BUTTON_RIGHT_STICK:
pressedButtons.insert("r3"); pressedButtons.insert(10, "r3");
break; break;
case SDL_GAMEPAD_BUTTON_DPAD_UP: case SDL_GAMEPAD_BUTTON_DPAD_UP:
pressedButtons.insert("pad_up"); pressedButtons.insert(13, "pad_up");
break; break;
case SDL_GAMEPAD_BUTTON_DPAD_DOWN: case SDL_GAMEPAD_BUTTON_DPAD_DOWN:
pressedButtons.insert("pad_down"); pressedButtons.insert(14, "pad_down");
break; break;
case SDL_GAMEPAD_BUTTON_DPAD_LEFT: case SDL_GAMEPAD_BUTTON_DPAD_LEFT:
pressedButtons.insert("pad_left"); pressedButtons.insert(15, "pad_left");
break; break;
case SDL_GAMEPAD_BUTTON_DPAD_RIGHT: case SDL_GAMEPAD_BUTTON_DPAD_RIGHT:
pressedButtons.insert("pad_right"); pressedButtons.insert(16, "pad_right");
break; break;
case SDL_GAMEPAD_BUTTON_BACK: case SDL_GAMEPAD_BUTTON_BACK:
pressedButtons.insert("back"); pressedButtons.insert(11, "back");
break; break;
case SDL_GAMEPAD_BUTTON_LEFT_PADDLE1: case SDL_GAMEPAD_BUTTON_LEFT_PADDLE1:
pressedButtons.insert("lpaddle_high"); pressedButtons.insert(17, "lpaddle_high");
break; break;
case SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1: case SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1:
pressedButtons.insert("rpaddle_high"); pressedButtons.insert(18, "rpaddle_high");
break; break;
case SDL_GAMEPAD_BUTTON_LEFT_PADDLE2: case SDL_GAMEPAD_BUTTON_LEFT_PADDLE2:
pressedButtons.insert("lpaddle_low"); pressedButtons.insert(19, "lpaddle_low");
break; break;
case SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2: case SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2:
pressedButtons.insert("rpaddle_low"); pressedButtons.insert(20, "rpaddle_low");
break; break;
case SDL_GAMEPAD_BUTTON_START: case SDL_GAMEPAD_BUTTON_START:
pressedButtons.insert("options"); pressedButtons.insert(12, "options");
break; break;
default: default:
break; break;
@ -926,19 +931,19 @@ void ControlSettings::processSDLEvents(int Type, int Input, int Value) {
switch (Input) { switch (Input) {
case SDL_GAMEPAD_AXIS_LEFT_TRIGGER: case SDL_GAMEPAD_AXIS_LEFT_TRIGGER:
if (Value > 16000) { if (Value > 16000) {
pressedButtons.insert("l2"); pressedButtons.insert(1, "l2");
L2Pressed = true; L2Pressed = true;
} else if (Value < 5000) { } else if (Value < 5000) {
if (L2Pressed) if (L2Pressed && !R2Pressed)
emit PushGamepadEvent(); emit PushGamepadEvent();
} }
break; break;
case SDL_GAMEPAD_AXIS_RIGHT_TRIGGER: case SDL_GAMEPAD_AXIS_RIGHT_TRIGGER:
if (Value > 16000) { if (Value > 16000) {
pressedButtons.insert("r2"); pressedButtons.insert(2, "r2");
R2Pressed = true; R2Pressed = true;
} else if (Value < 5000) { } else if (Value < 5000) {
if (R2Pressed) if (R2Pressed && !L2Pressed)
emit PushGamepadEvent(); emit PushGamepadEvent();
} }
break; break;

View file

@ -47,9 +47,10 @@ private:
void EnableMappingButtons(); void EnableMappingButtons();
void Cleanup(); void Cleanup();
// use QMap instead of QSet to maintain order of inserted strings
QMap<int, QString> pressedButtons;
QList<QPushButton*> ButtonsList; QList<QPushButton*> ButtonsList;
QList<QPushButton*> AxisList; QList<QPushButton*> AxisList;
QSet<QString> pressedButtons;
std::string RunningGameSerial; std::string RunningGameSerial;
bool GameRunning; bool GameRunning;

View file

@ -234,7 +234,7 @@ void KBMSettings::SaveKBMConfig(bool close_on_save) {
lines.push_back(""); lines.push_back("");
add_mapping(ui->MouseJoystickBox->currentText(), "mouse_to_joystick"); lines.push_back("mouse_to_joystick = " + ui->MouseJoystickBox->currentText().toStdString());
add_mapping(ui->LHalfButton->text(), "leftjoystick_halfmode"); add_mapping(ui->LHalfButton->text(), "leftjoystick_halfmode");
add_mapping(ui->RHalfButton->text(), "rightjoystick_halfmode"); add_mapping(ui->RHalfButton->text(), "rightjoystick_halfmode");