From 75aab75b46888226ccafa40054afee346d760839 Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Sun, 23 Oct 2022 18:54:18 +0100 Subject: [PATCH] start to support analogue --- usbcontroller.cpp | 20 ++++++++++---------- usbcontroller.h | 7 +++++-- wfmain.cpp | 26 ++++++++++++++------------ 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/usbcontroller.cpp b/usbcontroller.cpp index 926a1c4..1e2ea8d 100644 --- a/usbcontroller.cpp +++ b/usbcontroller.cpp @@ -107,27 +107,27 @@ void usbController::run() }); connect(gamepad, &QGamepad::buttonAChanged, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button A" << pressed; - this->buttonState(5, pressed); + this->buttonState("A", pressed); }); connect(gamepad, &QGamepad::buttonBChanged, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button B" << pressed; - this->buttonState(4, pressed); + this->buttonState("B", pressed); }); connect(gamepad, &QGamepad::buttonXChanged, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button X" << pressed; - this->buttonState(3, pressed); + this->buttonState("X", pressed); }); connect(gamepad, &QGamepad::buttonYChanged, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button Y" << pressed; - this->buttonState(2, pressed); + this->buttonState("Y", pressed); }); connect(gamepad, &QGamepad::buttonL1Changed, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button L1" << pressed; - this->buttonState(6, pressed); + this->buttonState("L1", pressed); }); connect(gamepad, &QGamepad::buttonR1Changed, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button R1" << pressed; - this->buttonState(7, pressed); + this->buttonState("R1", pressed); }); connect(gamepad, &QGamepad::buttonL2Changed, this, [](double value) { qInfo(logUsbControl()) << "Button L2: " << value; @@ -137,11 +137,11 @@ void usbController::run() }); connect(gamepad, &QGamepad::buttonSelectChanged, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button Select" << pressed; - this->buttonState(0, pressed); + this->buttonState("SELECT", pressed); }); connect(gamepad, &QGamepad::buttonStartChanged, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button Start" << pressed; - this->buttonState(1, pressed); + this->buttonState("START", pressed); }); connect(gamepad, &QGamepad::buttonGuideChanged, this, [this](bool pressed) { qInfo(logUsbControl()) << "Button Guide" << pressed; @@ -409,10 +409,10 @@ void usbController::ledControl(bool on, unsigned char num) } } -void usbController::buttonState(char num, bool val) +void usbController::buttonState(QString name, bool val) { for (BUTTON* but = buttonList->begin(); but != buttonList->end(); but++) { - if (but->dev == usbDevice && but->num == num) { + if (but->dev == usbDevice && but->name == name) { if (val && but->onCommand->index > 0) { qInfo(logUsbControl()) << "On Button event:" << but->onCommand->text; diff --git a/usbcontroller.h b/usbcontroller.h index a2330d7..fc79eda 100644 --- a/usbcontroller.h +++ b/usbcontroller.h @@ -57,10 +57,13 @@ struct BUTTON { BUTTON() {} BUTTON(quint8 dev, int num, QRect pos, const QColor textColour, COMMAND* on, COMMAND* off) : - dev(dev), num(num), pos(pos), textColour(textColour), onCommand(on),offCommand(off) {} + dev(dev), name(""), num(num), pos(pos), textColour(textColour), onCommand(on), offCommand(off) {} + BUTTON(quint8 dev, QString name, QRect pos, const QColor textColour, COMMAND* on, COMMAND* off) : + dev(dev), num(-1),name(name), pos(pos), textColour(textColour), onCommand(on), offCommand(off) {} quint8 dev; int num; + QString name; QRect pos; QColor textColour; int onEvent = 0; @@ -116,7 +119,7 @@ private: QString manufacturer=""; QString serial=""; QGamepad* gamepad=Q_NULLPTR; - void buttonState(char but, bool val); + void buttonState(QString but, bool val); protected: }; diff --git a/wfmain.cpp b/wfmain.cpp index 5e20c69..5ad377e 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -2146,18 +2146,18 @@ void wfmain::loadSettings() usbButtons.append(BUTTON(2, 14, QRect(280, 195, 25, 80), Qt::red, &usbCommands[0], &usbCommands[0])); // Xbox Gamepad - usbButtons.append(BUTTON(4, 0, QRect(302, 160, 40, 40), Qt::red, &usbCommands[0], &usbCommands[0])); // select - usbButtons.append(BUTTON(4, 1, QRect(412,163, 40, 40), Qt::red, &usbCommands[0], &usbCommands[0])); // start - usbButtons.append(BUTTON(4, 2, QRect(534, 104, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //y - usbButtons.append(BUTTON(4, 3, QRect(485, 152, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //x - usbButtons.append(BUTTON(4, 4, QRect(590, 152, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //b - usbButtons.append(BUTTON(4, 5, QRect(534, 202, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //a - usbButtons.append(BUTTON(4, 6, QRect(123, 40, 70, 45), Qt::red, &usbCommands[0], &usbCommands[0])); //L1 - usbButtons.append(BUTTON(4, 7, QRect(562, 40, 70, 45), Qt::red, &usbCommands[0], &usbCommands[0])); // R1 - //usbButtons.append(BUTTON(4, 10, QRect(210, 270, 70, 55), Qt::red, &usbCommands[0], &usbCommands[0])); - //usbButtons.append(BUTTON(4, 11, QRect(50, 335, 70, 55), Qt::red, &usbCommands[0], &usbCommands[0])); - //usbButtons.append(BUTTON(4, 12, QRect(210, 335, 70, 55), Qt::red, &usbCommands[0], &usbCommands[0])); - //usbButtons.append(BUTTON(4, 13, QRect(30, 195, 25, 80), Qt::red, &usbCommands[0], &usbCommands[0])); + usbButtons.append(BUTTON(4, "SELECT", QRect(302, 160, 40, 40), Qt::red, &usbCommands[0], &usbCommands[0])); // select + usbButtons.append(BUTTON(4, "START", QRect(412, 163, 40, 40), Qt::red, &usbCommands[0], &usbCommands[0])); // start + usbButtons.append(BUTTON(4, "Y", QRect(534, 104, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //y + usbButtons.append(BUTTON(4, "X", QRect(485, 152, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //x + usbButtons.append(BUTTON(4, "B", QRect(590, 152, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //b + usbButtons.append(BUTTON(4, "A", QRect(534, 202, 53, 53), Qt::red, &usbCommands[0], &usbCommands[0])); //a + usbButtons.append(BUTTON(4, "L1", QRect(123, 40, 70, 45), Qt::red, &usbCommands[0], &usbCommands[0])); //L1 + usbButtons.append(BUTTON(4, "R1", QRect(562, 40, 70, 45), Qt::red, &usbCommands[0], &usbCommands[0])); // R1 + usbButtons.append(BUTTON(4, "LEFTX", QRect(143, 119, 83, 35), Qt::red, &usbCommands[0], &usbCommands[0])); + usbButtons.append(BUTTON(4, "LEFTY", QRect(162, 132, 50, 57), Qt::red, &usbCommands[0], &usbCommands[0])); + usbButtons.append(BUTTON(4, "RIGHTX", QRect(430, 298, 83, 35), Qt::red, &usbCommands[0], &usbCommands[0])); + usbButtons.append(BUTTON(4, "RIGHTY", QRect(453, 233, 50, 57), Qt::red, &usbCommands[0], &usbCommands[0])); //usbButtons.append(BUTTON(4, 14, QRect(280, 195, 25, 80), Qt::red, &usbCommands[0], &usbCommands[0])); } @@ -2169,6 +2169,7 @@ void wfmain::loadSettings() BUTTON butt; butt.dev = settings->value("Dev", 0).toInt(); butt.num = settings->value("Num", 0).toInt(); + butt.name = settings->value("Name", "").toString(); butt.pos = QRect(settings->value("Left", 0).toInt(), settings->value("Top", 0).toInt(), settings->value("Width", 0).toInt(), @@ -2564,6 +2565,7 @@ void wfmain::saveSettings() settings->setArrayIndex(nb); settings->setValue("Dev", usbButtons[nb].dev); settings->setValue("Num", usbButtons[nb].num); + settings->setValue("Name", usbButtons[nb].name); settings->setValue("Left", usbButtons[nb].pos.left()); settings->setValue("Top", usbButtons[nb].pos.top()); settings->setValue("Width", usbButtons[nb].pos.width());