start to support analogue

half-duplex
Phil Taylor 2022-10-23 18:54:18 +01:00
rodzic d753315c55
commit 75aab75b46
3 zmienionych plików z 29 dodań i 24 usunięć

Wyświetl plik

@ -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;

Wyświetl plik

@ -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="<none>";
QGamepad* gamepad=Q_NULLPTR;
void buttonState(char but, bool val);
void buttonState(QString but, bool val);
protected:
};

Wyświetl plik

@ -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());