Update kbm_gui.cpp

This commit is contained in:
tlarok 2025-03-24 12:32:12 +01:00 committed by GitHub
parent 6f944ab117
commit d3d150ad01
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -683,8 +683,19 @@ void KBMSettings::CheckMapping(QPushButton*& button) {
} }
void KBMSettings::SetMapping(QString input) { void KBMSettings::SetMapping(QString input) {
mapping = input; if (mappinglist.size() >= 3) {
MappingCompleted = true; return;
}
if (!mappinglist.contains(input)) {
mappinglist.append(input);
}
mapping = mappinglist.join(",");
if (mappinglist.size() >= 1) { // Adjust this condition as needed
MappingCompleted = true;
}
} }
bool KBMSettings::eventFilter(QObject* obj, QEvent* event) { bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
@ -696,281 +707,324 @@ bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
} }
if (EnableMapping) { if (EnableMapping) {
if (Qt::ShiftModifier & QApplication::keyboardModifiers()) {
modifier = "lshift";
} else if (Qt::AltModifier & QApplication::keyboardModifiers()) {
modifier = "lalt";
} else if (Qt::ControlModifier & QApplication::keyboardModifiers()) {
modifier = "lctrl";
} else if (Qt::MetaModifier & QApplication::keyboardModifiers()) {
#ifdef _WIN32
modifier = "lwin";
#else
modifier = "lmeta";
#endif
}
if (event->type() == QEvent::KeyPress) { if (event->type() == QEvent::KeyPress) {
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event); QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
QString keyText;
switch (keyEvent->key()) { switch (keyEvent->key()) {
case Qt::Key_Space: case Qt::Key_Space:
SetMapping("space"); keyText = "space";
break; break;
case Qt::Key_Comma: case Qt::Key_Comma:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kpcomma"); keyText = "kpcomma";
} else { } else {
SetMapping("comma"); keyText = "comma";
} }
break; break;
case Qt::Key_Period: case Qt::Key_Period:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kpperiod"); keyText = "kpperiod";
} else { } else {
SetMapping("period"); keyText = "period";
} }
break; break;
case Qt::Key_Slash: case Qt::Key_Slash:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) if (Qt::KeypadModifier & QApplication::keyboardModifiers())
SetMapping("kpdivide"); keyText = "kpdivide";
break; break;
case Qt::Key_Asterisk: case Qt::Key_Asterisk:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) if (Qt::KeypadModifier & QApplication::keyboardModifiers())
SetMapping("kpmultiply"); keyText = "kpmultiply";
break; break;
case Qt::Key_Question: case Qt::Key_Question:
SetMapping("question"); keyText = "question";
break; break;
case Qt::Key_Semicolon: case Qt::Key_Semicolon:
SetMapping("semicolon"); keyText = "semicolon";
break; break;
case Qt::Key_Minus: case Qt::Key_Minus:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kpminus"); keyText = "kpminus";
} else { } else {
SetMapping("minus"); keyText = "minus";
} }
break; break;
case Qt::Key_Plus: case Qt::Key_Plus:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kpplus"); keyText = "kpplus";
} else { } else {
SetMapping("plus"); keyText = "plus";
} }
break; break;
case Qt::Key_ParenLeft: case Qt::Key_ParenLeft:
SetMapping("lparenthesis"); keyText = "lparenthesis";
break; break;
case Qt::Key_ParenRight: case Qt::Key_ParenRight:
SetMapping("rparenthesis"); keyText = "rparenthesis";
break; break;
case Qt::Key_BracketLeft: case Qt::Key_BracketLeft:
SetMapping("lbracket"); keyText = "lbracket";
break; break;
case Qt::Key_BracketRight: case Qt::Key_BracketRight:
SetMapping("rbracket"); keyText = "rbracket";
break; break;
case Qt::Key_BraceLeft: case Qt::Key_BraceLeft:
SetMapping("lbrace"); keyText = "lbrace";
break; break;
case Qt::Key_BraceRight: case Qt::Key_BraceRight:
SetMapping("rbrace"); keyText = "rbrace";
break; break;
case Qt::Key_Backslash: case Qt::Key_Backslash:
SetMapping("backslash"); keyText = "backslash";
break; break;
case Qt::Key_Tab: case Qt::Key_Tab:
SetMapping("tab"); keyText = "tab";
break; break;
case Qt::Key_Backspace: case Qt::Key_Backspace:
SetMapping("backspace"); keyText = "backspace";
break; break;
case Qt::Key_Return: case Qt::Key_Return:
SetMapping("enter"); keyText = "enter";
break; break;
case Qt::Key_Enter: case Qt::Key_Enter:
SetMapping("kpenter"); keyText = "kpenter";
break; break;
case Qt::Key_Escape: case Qt::Key_Escape:
SetMapping("unmapped"); keyText = "unmapped";
break; break;
case Qt::Key_Shift: case Qt::Key_Shift:
SetMapping("lshift"); if (keyEvent->nativeScanCode() == lshift) {
keyText = "lshift";
} else if (keyEvent->nativeScanCode() == rshift) {
keyText = "rshift";
} else {
keyText = "shift";
}
break; break;
case Qt::Key_Alt: case Qt::Key_Alt:
SetMapping("lalt"); if (keyEvent->nativeScanCode() == lalt) {
keyText = "lalt";
} else if (keyEvent->nativeScanCode() == ralt) {
keyText = "ralt";
} else {
keyText = "alt";
}
break; break;
case Qt::Key_Control: case Qt::Key_Control:
SetMapping("lctrl"); if (keyEvent->nativeScanCode() == lctrl) {
keyText = "lctrl";
} else if (keyEvent->nativeScanCode() == rctrl) {
keyText = "rctrl";
} else {
keyText = "ctrl";
}
break; break;
case Qt::Key_Meta: case Qt::Key_Meta:
activateWindow(); activateWindow();
#ifdef _WIN32 #ifdef _WIN32
SetMapping("lwin"); keyText = "lwin";
#else #else
SetMapping("lmeta"); keyText = "lmeta";
#endif #endif
case Qt::Key_1: case Qt::Key_1:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp1"); keyText = "kp1";
} else { } else {
SetMapping("1"); keyText = "1";
} }
break; break;
case Qt::Key_2: case Qt::Key_2:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp2"); keyText = "kp2";
} else { } else {
SetMapping("2"); keyText = "2";
} }
break; break;
case Qt::Key_3: case Qt::Key_3:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp3"); keyText = "kp3";
} else { } else {
SetMapping("3"); keyText = "3";
} }
break; break;
case Qt::Key_4: case Qt::Key_4:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp4"); keyText = "kp4";
} else { } else {
SetMapping("4"); keyText = "4";
} }
break; break;
case Qt::Key_5: case Qt::Key_5:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp5"); keyText = "kp5";
} else { } else {
SetMapping("5"); keyText = "5";
} }
break; break;
case Qt::Key_6: case Qt::Key_6:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp6"); keyText = "kp6";
} else { } else {
SetMapping("6"); keyText = "6";
} }
break; break;
case Qt::Key_7: case Qt::Key_7:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp7"); keyText = "kp7";
} else { } else {
SetMapping("7"); keyText = "7";
} }
break; break;
case Qt::Key_8: case Qt::Key_8:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp8"); keyText = "kp8";
} else { } else {
SetMapping("8"); keyText = "8";
} }
break; break;
case Qt::Key_9: case Qt::Key_9:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp9"); keyText = "kp9";
} else { } else {
SetMapping("9"); keyText = "9";
} }
break; break;
case Qt::Key_0: case Qt::Key_0:
if (Qt::KeypadModifier & QApplication::keyboardModifiers()) { if (Qt::KeypadModifier & QApplication::keyboardModifiers()) {
SetMapping("kp0"); keyText = "kp0";
} else { } else {
SetMapping("0"); keyText = "0";
} }
break; break;
case Qt::Key_Up: case Qt::Key_Up:
activateWindow(); activateWindow();
SetMapping("up"); keyText = "up";
break; break;
case Qt::Key_Down: case Qt::Key_Down:
SetMapping("down"); keyText = "down";
break; break;
case Qt::Key_Left: case Qt::Key_Left:
SetMapping("left"); keyText = "left";
break; break;
case Qt::Key_Right: case Qt::Key_Right:
SetMapping("right"); keyText = "right";
break; break;
case Qt::Key_A: case Qt::Key_A:
SetMapping("a"); keyText = "a";
break; break;
case Qt::Key_B: case Qt::Key_B:
SetMapping("b"); keyText = "b";
break; break;
case Qt::Key_C: case Qt::Key_C:
SetMapping("c"); keyText = "c";
break; break;
case Qt::Key_D: case Qt::Key_D:
SetMapping("d"); keyText = "d";
break; break;
case Qt::Key_E: case Qt::Key_E:
SetMapping("e"); keyText = "e";
break; break;
case Qt::Key_F: case Qt::Key_F:
SetMapping("f"); keyText = "f";
break; break;
case Qt::Key_G: case Qt::Key_G:
SetMapping("g"); keyText = "g";
break; break;
case Qt::Key_H: case Qt::Key_H:
SetMapping("h"); keyText = "h";
break; break;
case Qt::Key_I: case Qt::Key_I:
SetMapping("i"); keyText = "i";
break; break;
case Qt::Key_J: case Qt::Key_J:
SetMapping("j"); keyText = "j";
break; break;
case Qt::Key_K: case Qt::Key_K:
SetMapping("k"); keyText = "k";
break; break;
case Qt::Key_L: case Qt::Key_L:
SetMapping("l"); keyText = "l";
break; break;
case Qt::Key_M: case Qt::Key_M:
SetMapping("m"); keyText = "m";
break; break;
case Qt::Key_N: case Qt::Key_N:
SetMapping("n"); keyText = "n";
break; break;
case Qt::Key_O: case Qt::Key_O:
SetMapping("o"); keyText = "o";
break; break;
case Qt::Key_P: case Qt::Key_P:
SetMapping("p"); keyText = "p";
break; break;
case Qt::Key_Q: case Qt::Key_Q:
SetMapping("q"); keyText = "q";
break; break;
case Qt::Key_R: case Qt::Key_R:
SetMapping("r"); keyText = "r";
break; break;
case Qt::Key_S: case Qt::Key_S:
SetMapping("s"); keyText = "s";
break; break;
case Qt::Key_T: case Qt::Key_T:
SetMapping("t"); keyText = "t";
break; break;
case Qt::Key_U: case Qt::Key_U:
SetMapping("u"); keyText = "u";
break; break;
case Qt::Key_V: case Qt::Key_V:
SetMapping("v"); keyText = "v";
break; break;
case Qt::Key_W: case Qt::Key_W:
SetMapping("w"); keyText = "w";
break; break;
case Qt::Key_X: case Qt::Key_X:
SetMapping("x"); keyText = "x";
break; break;
case Qt::Key_Y: case Qt::Key_Y:
SetMapping("Y"); keyText = "Y";
break; break;
case Qt::Key_Z: case Qt::Key_Z:
SetMapping("z"); keyText = "z";
break;
default:
break;
}
if (!keyText.isEmpty() && !mappinglist.contains(keyText)) {
SetMapping(keyText); // Add the key to the mapping list
}
return true;
}
if (event->type() == QEvent::KeyRelease) {
EnableMapping = false;
EnableMappingButtons();
timer->stop();
if (modifier != "") {
MappingButton->setText(modifier + "," + mapping);
} else {
MappingButton->setText(mapping);
}
mappinglist.clear(); // Clear the list for the next mapping
return true;
}
if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
QString buttonText;
switch (mouseEvent->button()) {
case Qt::LeftButton:
buttonText = "leftbutton";
break;
case Qt::RightButton:
buttonText = "rightbutton";
break;
case Qt::MiddleButton:
buttonText = "middlebutton";
break; break;
default: default:
break; break;
@ -978,21 +1032,18 @@ bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
return true; return true;
} }
if (event->type() == QEvent::MouseButtonPress) { if (event->type() == QEvent::MouseButtonRelease) {
QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event); EnableMapping = false;
switch (mouseEvent->button()) { EnableMappingButtons();
case Qt::LeftButton: timer->stop();
SetMapping("leftbutton");
break; if (modifier != "") {
case Qt::RightButton: MappingButton->setText(modifier + "," + mapping);
SetMapping("rightbutton"); } else {
break; MappingButton->setText(mapping);
case Qt::MiddleButton:
SetMapping("middlebutton");
break;
default:
break;
} }
mappinglist.clear(); // Clear the list for the next mapping
return true; return true;
} }
@ -1002,16 +1053,17 @@ bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
if (event->type() == QEvent::Wheel) { if (event->type() == QEvent::Wheel) {
QWheelEvent* wheelEvent = static_cast<QWheelEvent*>(event); QWheelEvent* wheelEvent = static_cast<QWheelEvent*>(event);
QString WheelText;
if (wheelEvent->angleDelta().y() > 5) { if (wheelEvent->angleDelta().y() > 5) {
if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) { if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) {
SetMapping("mousewheelup"); WheelText = "mousewheelup";
} else { } else {
QMessageBox::information(this, tr("Cannot set mapping"), QMessageBox::information(this, tr("Cannot set mapping"),
tr("Mousewheel cannot be mapped to stick outputs")); tr("Mousewheel cannot be mapped to stick outputs"));
} }
} else if (wheelEvent->angleDelta().y() < -5) { } else if (wheelEvent->angleDelta().y() < -5) {
if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) { if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) {
SetMapping("mousewheeldown"); WheelText = "mousewheeldown";
} else { } else {
QMessageBox::information(this, tr("Cannot set mapping"), QMessageBox::information(this, tr("Cannot set mapping"),
tr("Mousewheel cannot be mapped to stick outputs")); tr("Mousewheel cannot be mapped to stick outputs"));
@ -1021,9 +1073,9 @@ bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) { if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) {
// QT changes scrolling to horizontal for all widgets with the alt modifier // QT changes scrolling to horizontal for all widgets with the alt modifier
if (Qt::AltModifier & QApplication::keyboardModifiers()) { if (Qt::AltModifier & QApplication::keyboardModifiers()) {
SetMapping("mousewheelup"); WheelText = "mousewheelup";
} else { } else {
SetMapping("mousewheelright"); WheelText = "mousewheelright";
} }
} else { } else {
QMessageBox::information(this, tr("Cannot set mapping"), QMessageBox::information(this, tr("Cannot set mapping"),
@ -1032,9 +1084,9 @@ bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
} else if (wheelEvent->angleDelta().x() < -5) { } else if (wheelEvent->angleDelta().x() < -5) {
if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) { if (std::find(AxisList.begin(), AxisList.end(), MappingButton) == AxisList.end()) {
if (Qt::AltModifier & QApplication::keyboardModifiers()) { if (Qt::AltModifier & QApplication::keyboardModifiers()) {
SetMapping("mousewheeldown"); WheelText = "mousewheeldown";
} else { } else {
SetMapping("mousewheelleft"); WheelText = "mousewheelleft";
} }
} else { } else {
QMessageBox::information(this, tr("Cannot set mapping"), QMessageBox::information(this, tr("Cannot set mapping"),