Gui controller calibration fixes and enhancements.
This commit is contained in:
parent
7ba7ef4b82
commit
59462545ca
|
@ -11,11 +11,14 @@
|
|||
GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
|
||||
: QDialog( parent )
|
||||
{
|
||||
QHBoxLayout *hbox1;
|
||||
QHBoxLayout *hbox1, *hbox2;
|
||||
QGridLayout *grid;
|
||||
QCheckBox *efs_chkbox, *udlr_chkbox;
|
||||
QGroupBox *frame;
|
||||
QPushButton *loadDefaultButton;
|
||||
QPushButton *clearAllButton;
|
||||
QPushButton *closebutton;
|
||||
QPushButton *clearButton[GAMEPAD_NUM_BUTTONS];
|
||||
|
||||
portNum = 0;
|
||||
configNo = 0;
|
||||
|
@ -24,6 +27,7 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
|
|||
setWindowTitle("GamePad Config");
|
||||
|
||||
hbox1 = new QHBoxLayout();
|
||||
hbox2 = new QHBoxLayout();
|
||||
|
||||
QLabel *label = new QLabel(tr("Port:"));
|
||||
portSel = new QComboBox();
|
||||
|
@ -54,7 +58,7 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
|
|||
//frame->setFrameStyle( QFrame::Box );
|
||||
frame->setLayout( grid );
|
||||
|
||||
for (int i=0; i<10; i++)
|
||||
for (int i=0; i<GAMEPAD_NUM_BUTTONS; i++)
|
||||
{
|
||||
char text[64];
|
||||
QLabel *buttonName;
|
||||
|
@ -65,17 +69,25 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
|
|||
|
||||
//hbox2->setAlignment(Qt::AlignCenter);
|
||||
|
||||
buttonName = new QLabel(tr(text));
|
||||
keyName[i] = new QLabel();
|
||||
button[i] = new GamePadConfigButton_t(i);
|
||||
buttonName = new QLabel(tr(text));
|
||||
keyName[i] = new QLabel();
|
||||
button[i] = new GamePadConfigButton_t(i);
|
||||
clearButton[i] = new QPushButton("Clear");
|
||||
|
||||
grid->addWidget( buttonName, i, 0, Qt::AlignCenter );
|
||||
grid->addWidget( keyName[i], i, 1, Qt::AlignCenter );
|
||||
grid->addWidget( button[i] , i, 2, Qt::AlignCenter );
|
||||
grid->addWidget( buttonName , i, 0, Qt::AlignCenter );
|
||||
grid->addWidget( keyName[i] , i, 1, Qt::AlignCenter );
|
||||
grid->addWidget( button[i] , i, 2, Qt::AlignCenter );
|
||||
grid->addWidget( clearButton[i], i, 3, Qt::AlignCenter );
|
||||
}
|
||||
updateCntrlrDpy();
|
||||
|
||||
closebutton = new QPushButton(tr("Close"));
|
||||
loadDefaultButton = new QPushButton(tr("Load Defaults"));
|
||||
clearAllButton = new QPushButton(tr("Clear All"));
|
||||
closebutton = new QPushButton(tr("Close"));
|
||||
|
||||
hbox2->addWidget( loadDefaultButton );
|
||||
hbox2->addWidget( clearAllButton );
|
||||
hbox2->addWidget( closebutton );
|
||||
|
||||
connect(button[0], SIGNAL(clicked()), this, SLOT(changeButton0(void)) );
|
||||
connect(button[1], SIGNAL(clicked()), this, SLOT(changeButton1(void)) );
|
||||
|
@ -87,7 +99,21 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
|
|||
connect(button[7], SIGNAL(clicked()), this, SLOT(changeButton7(void)) );
|
||||
connect(button[8], SIGNAL(clicked()), this, SLOT(changeButton8(void)) );
|
||||
connect(button[9], SIGNAL(clicked()), this, SLOT(changeButton9(void)) );
|
||||
connect(closebutton, SIGNAL(clicked()), this, SLOT(closeWindow(void)) );
|
||||
|
||||
connect(clearButton[0], SIGNAL(clicked()), this, SLOT(clearButton0(void)) );
|
||||
connect(clearButton[1], SIGNAL(clicked()), this, SLOT(clearButton1(void)) );
|
||||
connect(clearButton[2], SIGNAL(clicked()), this, SLOT(clearButton2(void)) );
|
||||
connect(clearButton[3], SIGNAL(clicked()), this, SLOT(clearButton3(void)) );
|
||||
connect(clearButton[4], SIGNAL(clicked()), this, SLOT(clearButton4(void)) );
|
||||
connect(clearButton[5], SIGNAL(clicked()), this, SLOT(clearButton5(void)) );
|
||||
connect(clearButton[6], SIGNAL(clicked()), this, SLOT(clearButton6(void)) );
|
||||
connect(clearButton[7], SIGNAL(clicked()), this, SLOT(clearButton7(void)) );
|
||||
connect(clearButton[8], SIGNAL(clicked()), this, SLOT(clearButton8(void)) );
|
||||
connect(clearButton[9], SIGNAL(clicked()), this, SLOT(clearButton9(void)) );
|
||||
|
||||
connect(loadDefaultButton, SIGNAL(clicked()), this, SLOT(loadDefaults(void)) );
|
||||
connect(clearAllButton , SIGNAL(clicked()), this, SLOT(clearAllCallback(void)) );
|
||||
connect(closebutton , SIGNAL(clicked()), this, SLOT(closeWindow(void)) );
|
||||
|
||||
connect(portSel , SIGNAL(activated(int)), this, SLOT(controllerSelect(int)) );
|
||||
connect(efs_chkbox , SIGNAL(stateChanged(int)), this, SLOT(ena4score(int)) );
|
||||
|
@ -99,7 +125,7 @@ GamePadConfDialog_t::GamePadConfDialog_t(QWidget *parent)
|
|||
mainLayout->addWidget( efs_chkbox );
|
||||
mainLayout->addWidget( udlr_chkbox );
|
||||
mainLayout->addWidget( frame );
|
||||
mainLayout->addWidget( closebutton, Qt::AlignRight );
|
||||
mainLayout->addLayout( hbox2 );
|
||||
|
||||
setLayout( mainLayout );
|
||||
|
||||
|
@ -126,7 +152,7 @@ void GamePadConfDialog_t::updateCntrlrDpy(void)
|
|||
{
|
||||
char keyNameStr[128];
|
||||
|
||||
for (int i=0; i<10; i++)
|
||||
for (int i=0; i<GAMEPAD_NUM_BUTTONS; i++)
|
||||
{
|
||||
if (GamePadConfig[portNum][i].ButtType[configNo] == BUTTC_KEYBOARD)
|
||||
{
|
||||
|
@ -143,7 +169,7 @@ void GamePadConfDialog_t::updateCntrlrDpy(void)
|
|||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::controllerSelect(int index)
|
||||
{
|
||||
printf("Port Number:%i \n", index);
|
||||
//printf("Port Number:%i \n", index);
|
||||
portNum = index;
|
||||
updateCntrlrDpy();
|
||||
}
|
||||
|
@ -186,11 +212,11 @@ void GamePadConfDialog_t::changeButton(int padNo, int x)
|
|||
g_config->setOption (prefix + GamePadNames[x],
|
||||
GamePadConfig[padNo][x].ButtonNum[configNo]);
|
||||
|
||||
if (GamePadConfig[padNo][x].ButtType[0] == BUTTC_KEYBOARD)
|
||||
if (GamePadConfig[padNo][x].ButtType[configNo] == BUTTC_KEYBOARD)
|
||||
{
|
||||
g_config->setOption (prefix + "DeviceType", "Keyboard");
|
||||
}
|
||||
else if (GamePadConfig[padNo][x].ButtType[0] == BUTTC_JOYSTICK)
|
||||
else if (GamePadConfig[padNo][x].ButtType[configNo] == BUTTC_JOYSTICK)
|
||||
{
|
||||
g_config->setOption (prefix + "DeviceType", "Joystick");
|
||||
}
|
||||
|
@ -211,6 +237,23 @@ void GamePadConfDialog_t::changeButton(int padNo, int x)
|
|||
buttonConfigStatus = 1;
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton( int padNo, int x )
|
||||
{
|
||||
char buf[256];
|
||||
std::string prefix;
|
||||
|
||||
GamePadConfig[padNo][x].ButtonNum[configNo] = -1;
|
||||
|
||||
keyName[x]->setText("");
|
||||
|
||||
snprintf (buf, sizeof(buf)-1, "SDL.Input.GamePad.%d.", padNo);
|
||||
prefix = buf;
|
||||
|
||||
g_config->setOption (prefix + GamePadNames[x],
|
||||
GamePadConfig[padNo][x].ButtonNum[configNo]);
|
||||
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
//printf("GamePad Close Window Event\n");
|
||||
|
@ -276,6 +319,106 @@ void GamePadConfDialog_t::changeButton9(void)
|
|||
changeButton( portNum, 9 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton0(void)
|
||||
{
|
||||
clearButton( portNum, 0 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton1(void)
|
||||
{
|
||||
clearButton( portNum, 1 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton2(void)
|
||||
{
|
||||
clearButton( portNum, 2 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton3(void)
|
||||
{
|
||||
clearButton( portNum, 3 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton4(void)
|
||||
{
|
||||
clearButton( portNum, 4 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton5(void)
|
||||
{
|
||||
clearButton( portNum, 5 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton6(void)
|
||||
{
|
||||
clearButton( portNum, 6 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton7(void)
|
||||
{
|
||||
clearButton( portNum, 7 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton8(void)
|
||||
{
|
||||
clearButton( portNum, 8 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearButton9(void)
|
||||
{
|
||||
clearButton( portNum, 9 );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::clearAllCallback(void)
|
||||
{
|
||||
for (int i=0; i<GAMEPAD_NUM_BUTTONS; i++)
|
||||
{
|
||||
clearButton( portNum, i );
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GamePadConfDialog_t::loadDefaults(void)
|
||||
{
|
||||
char buf[256];
|
||||
std::string prefix;
|
||||
|
||||
if ( portNum > 0 )
|
||||
{
|
||||
clearAllCallback();
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf (buf, sizeof(buf)-1, "SDL.Input.GamePad.%d.", portNum);
|
||||
prefix = buf;
|
||||
|
||||
for (int x=0; x<GAMEPAD_NUM_BUTTONS; x++)
|
||||
{
|
||||
GamePadConfig[portNum][x].ButtType[configNo] = BUTTC_KEYBOARD;
|
||||
GamePadConfig[portNum][x].DeviceNum[configNo] = 0;
|
||||
GamePadConfig[portNum][x].ButtonNum[configNo] = DefaultGamePad[portNum][x];
|
||||
GamePadConfig[portNum][x].NumC = 1;
|
||||
|
||||
g_config->setOption (prefix + GamePadNames[x],
|
||||
GamePadConfig[portNum][x].ButtonNum[configNo]);
|
||||
|
||||
if (GamePadConfig[portNum][x].ButtType[configNo] == BUTTC_KEYBOARD)
|
||||
{
|
||||
g_config->setOption (prefix + "DeviceType", "Keyboard");
|
||||
}
|
||||
else if (GamePadConfig[portNum][x].ButtType[configNo] == BUTTC_JOYSTICK)
|
||||
{
|
||||
g_config->setOption (prefix + "DeviceType", "Joystick");
|
||||
}
|
||||
else
|
||||
{
|
||||
g_config->setOption (prefix + "DeviceType", "Unknown");
|
||||
}
|
||||
g_config->setOption (prefix + "DeviceNum",
|
||||
GamePadConfig[portNum][x].DeviceNum[configNo]);
|
||||
}
|
||||
updateCntrlrDpy();
|
||||
}
|
||||
//----------------------------------------------------
|
||||
GamePadConfigButton_t::GamePadConfigButton_t(int i)
|
||||
{
|
||||
idx = i;
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
#include <QFrame>
|
||||
#include <QGroupBox>
|
||||
|
||||
#include "Qt/main.h"
|
||||
|
||||
class GamePadConfigButton_t : public QPushButton
|
||||
{
|
||||
public:
|
||||
|
@ -36,14 +38,15 @@ class GamePadConfDialog_t : public QDialog
|
|||
|
||||
protected:
|
||||
QComboBox *portSel;
|
||||
QLabel *keyName[10];
|
||||
GamePadConfigButton_t *button[10];
|
||||
QLabel *keyName[GAMEPAD_NUM_BUTTONS];
|
||||
GamePadConfigButton_t *button[GAMEPAD_NUM_BUTTONS];
|
||||
|
||||
int portNum;
|
||||
int configNo;
|
||||
int buttonConfigStatus;
|
||||
|
||||
void changeButton( int port, int button );
|
||||
void clearButton( int port, int button );
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
void keyReleaseEvent(QKeyEvent *event);
|
||||
void closeEvent(QCloseEvent *bar);
|
||||
|
@ -63,6 +66,18 @@ class GamePadConfDialog_t : public QDialog
|
|||
void changeButton7(void);
|
||||
void changeButton8(void);
|
||||
void changeButton9(void);
|
||||
void clearButton0(void);
|
||||
void clearButton1(void);
|
||||
void clearButton2(void);
|
||||
void clearButton3(void);
|
||||
void clearButton4(void);
|
||||
void clearButton5(void);
|
||||
void clearButton6(void);
|
||||
void clearButton7(void);
|
||||
void clearButton8(void);
|
||||
void clearButton9(void);
|
||||
void clearAllCallback(void);
|
||||
void loadDefaults(void);
|
||||
void ena4score(int state);
|
||||
void oppDirEna(int state);
|
||||
void controllerSelect(int index);
|
||||
|
|
|
@ -1041,10 +1041,11 @@ DTestButton (ButtConfig * bc)
|
|||
|
||||
#define MK(x) {{BUTTC_KEYBOARD},{0},{MKK(x)},1}
|
||||
#define MK2(x1,x2) {{BUTTC_KEYBOARD},{0},{MKK(x1),MKK(x2)},2}
|
||||
#define MKZ() {{0},{0},{0},0}
|
||||
#define MKZ() {{0},{0},{-1},0}
|
||||
#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ()}
|
||||
|
||||
ButtConfig GamePadConfig[4][10] = {
|
||||
ButtConfig GamePadConfig[ GAMEPAD_NUM_DEVICES ][ GAMEPAD_NUM_BUTTONS ] =
|
||||
{
|
||||
/* Gamepad 1 */
|
||||
{MK (KP_3), MK (KP_2), MK (SLASH), MK (ENTER),
|
||||
MK (w), MK (z), MK (a), MK (s), MKZ (), MKZ ()},
|
||||
|
@ -1568,6 +1569,10 @@ const char * ButtonName (const ButtConfig * bc, int which)
|
|||
|
||||
name[0] = 0;
|
||||
|
||||
if (bc->ButtonNum[which] == -1)
|
||||
{
|
||||
return name;
|
||||
}
|
||||
switch (bc->ButtType[which])
|
||||
{
|
||||
case BUTTC_KEYBOARD:
|
||||
|
@ -2286,10 +2291,10 @@ const char *DefaultGamePadDevice[GAMEPAD_NUM_DEVICES] =
|
|||
{ "Keyboard", "None", "None", "None" };
|
||||
const int DefaultGamePad[GAMEPAD_NUM_DEVICES][GAMEPAD_NUM_BUTTONS] =
|
||||
{ {SDLK_f, SDLK_d, SDLK_s, SDLK_RETURN,
|
||||
SDLK_UP, SDLK_DOWN, SDLK_LEFT, SDLK_RIGHT, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
|
||||
SDLK_UP, SDLK_DOWN, SDLK_LEFT, SDLK_RIGHT, -1, -1},
|
||||
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
||||
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
|
||||
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}
|
||||
};
|
||||
|
||||
// PowerPad defaults
|
||||
|
|
|
@ -4,14 +4,20 @@
|
|||
#include "common/configSys.h"
|
||||
|
||||
#define MAXBUTTCONFIG 4
|
||||
typedef struct {
|
||||
uint8 ButtType[MAXBUTTCONFIG];
|
||||
uint8 DeviceNum[MAXBUTTCONFIG];
|
||||
//uint16 ButtonNum[MAXBUTTCONFIG];
|
||||
|
||||
enum {
|
||||
BUTTC_KEYBOARD = 0,
|
||||
BUTTC_JOYSTICK = 1,
|
||||
BUTTC_MOUSE = 2
|
||||
};
|
||||
struct ButtConfig
|
||||
{
|
||||
int ButtType[MAXBUTTCONFIG];
|
||||
int DeviceNum[MAXBUTTCONFIG];
|
||||
int ButtonNum[MAXBUTTCONFIG];
|
||||
uint32 NumC;
|
||||
//uint64 DeviceID[MAXBUTTCONFIG]; /* TODO */
|
||||
} ButtConfig;
|
||||
};
|
||||
|
||||
|
||||
extern int NoWaiting;
|
||||
|
@ -26,9 +32,6 @@ void ButtonConfigEnd();
|
|||
void ConfigButton(char *text, ButtConfig *bc);
|
||||
int DWaitButton(const uint8 *text, ButtConfig *bc, int wb, int *buttonConfigStatus = NULL);
|
||||
|
||||
#define BUTTC_KEYBOARD 0x00
|
||||
#define BUTTC_JOYSTICK 0x01
|
||||
#define BUTTC_MOUSE 0x02
|
||||
|
||||
#define FCFGD_GAMEPAD 1
|
||||
#define FCFGD_POWERPAD 2
|
||||
|
|
|
@ -45,7 +45,11 @@ DTestButtonJoy(ButtConfig *bc)
|
|||
|
||||
for(x = 0; x < bc->NumC; x++)
|
||||
{
|
||||
if(bc->ButtonNum[x] & 0x2000)
|
||||
if (bc->ButtonNum[x] == -1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (bc->ButtonNum[x] & 0x2000)
|
||||
{
|
||||
/* Hat "button" */
|
||||
if(SDL_JoystickGetHat(s_Joysticks[bc->DeviceNum[x]],
|
||||
|
@ -53,7 +57,7 @@ DTestButtonJoy(ButtConfig *bc)
|
|||
(bc->ButtonNum[x]&0xFF))
|
||||
return 1;
|
||||
}
|
||||
else if(bc->ButtonNum[x] & 0x8000)
|
||||
else if (bc->ButtonNum[x] & 0x8000)
|
||||
{
|
||||
/* Axis "button" */
|
||||
int pos;
|
||||
|
|
Loading…
Reference in New Issue