Ability to bind key combinations using "DWaitButton", refactoring
This commit is contained in:
parent
49427511f1
commit
c5d59a24b5
|
@ -25,14 +25,19 @@ void LoadFCEUConfig(const char *filename, CFGSTRUCT *cfgst);
|
||||||
// Single piece of data(integer).
|
// Single piece of data(integer).
|
||||||
#define AC(x) {#x,&x,sizeof(x)}
|
#define AC(x) {#x,&x,sizeof(x)}
|
||||||
#define NAC(w,x) {#w,&x,sizeof(x)}
|
#define NAC(w,x) {#w,&x,sizeof(x)}
|
||||||
|
// VAC intruduced for backward compatibility with
|
||||||
|
// configuration files of previous versions
|
||||||
|
#define VAC(x,version) {#x "_V" #version,&x,sizeof(x)}
|
||||||
|
|
||||||
// Array.
|
// Array.
|
||||||
#define ACA(x) {#x,x,sizeof(x)}
|
#define ACA(x) {#x,x,sizeof(x)}
|
||||||
#define NACA(w,x) {#w,x,sizeof(x)}
|
#define NACA(w,x) {#w,x,sizeof(x)}
|
||||||
|
#define VACA(x,version) {#x "_V" #version,x,sizeof(x)}
|
||||||
|
|
||||||
// String(pointer) with automatic memory allocation.
|
// String(pointer) with automatic memory allocation.
|
||||||
#define ACS(x) {#x,&x,0}
|
#define ACS(x) {#x,&x,0}
|
||||||
#define NACS(w,x) {#w,&x,0}
|
#define NACS(w,x) {#w,&x,0}
|
||||||
|
#define VACS(x,version) {#x "_V" #version,&x,0}
|
||||||
|
|
||||||
#define _DRIVERS_CONFIGH
|
#define _DRIVERS_CONFIGH
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -238,20 +238,54 @@ uint32 GetGamepadPressedImmediate()
|
||||||
|
|
||||||
int DTestButton(ButtConfig *bc)
|
int DTestButton(ButtConfig *bc)
|
||||||
{
|
{
|
||||||
uint32 x;//mbg merge 7/17/06 changed to uint
|
static unsigned int *keys_data = GetKeyboard_nr();
|
||||||
|
|
||||||
for(x=0;x<bc->NumC;x++)
|
for(int x=0; x < bc->NumC; x++)
|
||||||
{
|
{
|
||||||
if(bc->ButtType[x] == BUTTC_KEYBOARD)
|
if(bc->ButtType[x] == BUTTC_KEYBOARD)
|
||||||
{
|
{
|
||||||
if(keys_nr[bc->ButtonNum[x]])
|
int cmd = bc->ButtonNum[x];
|
||||||
|
int cmdmask = cmd&CMD_KEY_MASK;
|
||||||
|
|
||||||
|
/* test CTRL, SHIFT, ALT */
|
||||||
|
if (cmd & CMD_KEY_ALT)
|
||||||
{
|
{
|
||||||
return(1);
|
int ctlstate = (cmd & CMD_KEY_LALT) ? keys_data[SCAN_LEFTALT] : 0;
|
||||||
|
ctlstate |= (cmd & CMD_KEY_RALT) ? keys_data[SCAN_RIGHTALT] : 0;
|
||||||
|
if (!ctlstate)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if ((cmdmask != SCAN_LEFTALT && keys_data[SCAN_LEFTALT]) || (cmdmask != SCAN_RIGHTALT && keys_data[SCAN_RIGHTALT]))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (cmd & CMD_KEY_CTRL)
|
||||||
|
{
|
||||||
|
int ctlstate = (cmd & CMD_KEY_LCTRL) ? keys_data[SCAN_LEFTCONTROL] : 0;
|
||||||
|
ctlstate |= (cmd & CMD_KEY_RCTRL) ? keys_data[SCAN_RIGHTCONTROL] : 0;
|
||||||
|
if (!ctlstate)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if ((cmdmask != SCAN_LEFTCONTROL && keys_data[SCAN_LEFTCONTROL]) || (cmdmask != SCAN_RIGHTCONTROL && keys_data[SCAN_RIGHTCONTROL]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (cmd & CMD_KEY_SHIFT)
|
||||||
|
{
|
||||||
|
int ctlstate = (cmd & CMD_KEY_LSHIFT) ? keys_data[SCAN_LEFTSHIFT] : 0;
|
||||||
|
ctlstate |= (cmd & CMD_KEY_RSHIFT) ? keys_data[SCAN_RIGHTSHIFT] : 0;
|
||||||
|
if (!ctlstate)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if ((cmdmask != SCAN_LEFTSHIFT && keys_data[SCAN_LEFTSHIFT]) || (cmdmask != SCAN_RIGHTSHIFT && keys_data[SCAN_RIGHTSHIFT]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(keys_data[cmdmask])
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(DTestButtonJoy(bc)) return(1);
|
if (DTestButtonJoy(bc)) return 1;
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateGamepad(bool snes)
|
void UpdateGamepad(bool snes)
|
||||||
|
@ -856,19 +890,19 @@ int DWaitButton(HWND hParent, const uint8 *text, ButtConfig *bc);
|
||||||
int DWaitSimpleButton(HWND hParent, const uint8 *text);
|
int DWaitSimpleButton(HWND hParent, const uint8 *text);
|
||||||
|
|
||||||
CFGSTRUCT InputConfig[]={
|
CFGSTRUCT InputConfig[]={
|
||||||
AC(powerpadsc),
|
VAC(powerpadsc, 2),
|
||||||
AC(QuizKingButtons),
|
VAC(QuizKingButtons, 2),
|
||||||
AC(FTrainerButtons),
|
VAC(FTrainerButtons, 2),
|
||||||
AC(HyperShotButtons),
|
VAC(HyperShotButtons, 2),
|
||||||
AC(MahjongButtons),
|
VAC(MahjongButtons, 2),
|
||||||
AC(GamePadConfig),
|
VAC(GamePadConfig, 2),
|
||||||
AC(GamePadPreset1),
|
VAC(GamePadPreset1, 2),
|
||||||
AC(GamePadPreset2),
|
VAC(GamePadPreset2, 2),
|
||||||
AC(GamePadPreset3),
|
VAC(GamePadPreset3, 2),
|
||||||
AC(fkbmap),
|
VAC(fkbmap, 2),
|
||||||
AC(suborkbmap),
|
VAC(suborkbmap, 2),
|
||||||
AC(virtualboysc),
|
VAC(virtualboysc, 2),
|
||||||
AC(lcdcompzappersc),
|
VAC(lcdcompzappersc, 2),
|
||||||
ENDCFGSTRUCT
|
ENDCFGSTRUCT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -910,7 +944,7 @@ void InitInputStuff(void)
|
||||||
JoyClearBC(&lcdcompzappersc[x][y]);
|
JoyClearBC(&lcdcompzappersc[x][y]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *MakeButtString(ButtConfig *bc)
|
static char *MakeButtString(ButtConfig *bc, int appendKB = 1)
|
||||||
{
|
{
|
||||||
uint32 x; //mbg merge 7/17/06 changed to uint
|
uint32 x; //mbg merge 7/17/06 changed to uint
|
||||||
char tmpstr[512];
|
char tmpstr[512];
|
||||||
|
@ -924,7 +958,48 @@ static char *MakeButtString(ButtConfig *bc)
|
||||||
|
|
||||||
if(bc->ButtType[x] == BUTTC_KEYBOARD)
|
if(bc->ButtType[x] == BUTTC_KEYBOARD)
|
||||||
{
|
{
|
||||||
|
if (appendKB)
|
||||||
strcat(tmpstr,"KB: ");
|
strcat(tmpstr,"KB: ");
|
||||||
|
|
||||||
|
if ((bc->ButtonNum[x] & CMD_KEY_CTRL) == CMD_KEY_CTRL)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Ctrl + ");
|
||||||
|
}
|
||||||
|
else if ((bc->ButtonNum[x] & CMD_KEY_CTRL) == CMD_KEY_LCTRL)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Left Ctrl + ");
|
||||||
|
}
|
||||||
|
else if ((bc->ButtonNum[x] & CMD_KEY_CTRL) == CMD_KEY_RCTRL)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Right Ctrl + ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((bc->ButtonNum[x] & CMD_KEY_ALT) == CMD_KEY_ALT)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Alt + ");
|
||||||
|
}
|
||||||
|
else if ((bc->ButtonNum[x] & CMD_KEY_ALT) == CMD_KEY_LALT)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Left Alt + ");
|
||||||
|
}
|
||||||
|
else if ((bc->ButtonNum[x] & CMD_KEY_ALT) == CMD_KEY_RALT)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Right Alt + ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((bc->ButtonNum[x] & CMD_KEY_SHIFT) == CMD_KEY_SHIFT)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Shift + ");
|
||||||
|
}
|
||||||
|
else if ((bc->ButtonNum[x] & CMD_KEY_SHIFT) == CMD_KEY_LSHIFT)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Left Shift + ");
|
||||||
|
}
|
||||||
|
else if ((bc->ButtonNum[x] & CMD_KEY_SHIFT) == CMD_KEY_RSHIFT)
|
||||||
|
{
|
||||||
|
strcat(tmpstr, "Right Shift + ");
|
||||||
|
}
|
||||||
|
|
||||||
if(!GetKeyNameText(((bc->ButtonNum[x] & 0x7F) << 16) | ((bc->ButtonNum[x] & 0x80) << 17), tmpstr+strlen(tmpstr), 16))
|
if(!GetKeyNameText(((bc->ButtonNum[x] & 0x7F) << 16) | ((bc->ButtonNum[x] & 0x80) << 17), tmpstr+strlen(tmpstr), 16))
|
||||||
{
|
{
|
||||||
// GetKeyNameText wasn't able to provide a name for the key, then just show scancode
|
// GetKeyNameText wasn't able to provide a name for the key, then just show scancode
|
||||||
|
@ -958,6 +1033,109 @@ static char *MakeButtString(ButtConfig *bc)
|
||||||
return(astr);
|
return(astr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8 keyonce[MKK_COUNT];
|
||||||
|
|
||||||
|
static int newpressed(int a)
|
||||||
|
{
|
||||||
|
if (keys_nr[a])
|
||||||
|
{
|
||||||
|
if (!keyonce[a])
|
||||||
|
{
|
||||||
|
keyonce[a] = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
keyonce[a] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GetKeyPressed()
|
||||||
|
{
|
||||||
|
int key = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
keys_nr = GetKeyboard_nr();
|
||||||
|
|
||||||
|
for (i = 0; i < 256 && !key; ++i)
|
||||||
|
{
|
||||||
|
if (newpressed(i))
|
||||||
|
{
|
||||||
|
key = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int NothingPressed()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
keys_nr = GetKeyboard_nr();
|
||||||
|
|
||||||
|
for (i = 0; i < 256; ++i)
|
||||||
|
{
|
||||||
|
if (keys_nr[i])
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GetKeyMeta(int key)
|
||||||
|
{
|
||||||
|
int meta = key & (~CMD_KEY_MASK);
|
||||||
|
|
||||||
|
switch (key & CMD_KEY_MASK)
|
||||||
|
{
|
||||||
|
case SCAN_LEFTCONTROL:
|
||||||
|
case SCAN_RIGHTCONTROL:
|
||||||
|
return CMD_KEY_CTRL | meta;
|
||||||
|
|
||||||
|
case SCAN_LEFTALT:
|
||||||
|
case SCAN_RIGHTALT:
|
||||||
|
return CMD_KEY_ALT | meta;
|
||||||
|
|
||||||
|
case SCAN_LEFTSHIFT:
|
||||||
|
case SCAN_RIGHTSHIFT:
|
||||||
|
return CMD_KEY_SHIFT | meta;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return meta;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ClearExtraMeta(int* key)
|
||||||
|
{
|
||||||
|
switch ((*key) & 0xff)
|
||||||
|
{
|
||||||
|
case SCAN_LEFTCONTROL:
|
||||||
|
case SCAN_RIGHTCONTROL:
|
||||||
|
*key &= ~(CMD_KEY_CTRL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCAN_LEFTALT:
|
||||||
|
case SCAN_RIGHTALT:
|
||||||
|
*key &= ~(CMD_KEY_ALT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCAN_LEFTSHIFT:
|
||||||
|
case SCAN_RIGHTSHIFT:
|
||||||
|
*key &= ~(CMD_KEY_SHIFT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int DWBStarted;
|
static int DWBStarted;
|
||||||
static ButtConfig *DWBButtons;
|
static ButtConfig *DWBButtons;
|
||||||
|
@ -967,30 +1145,23 @@ static HWND die;
|
||||||
|
|
||||||
static INT_PTR CALLBACK DWBCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
static INT_PTR CALLBACK DWBCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
static int key = 0;
|
||||||
switch(uMsg) {
|
switch(uMsg) {
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
die = NULL;
|
die = NULL;
|
||||||
return(0);
|
return(0);
|
||||||
|
|
||||||
case WM_TIMER:
|
case WM_TIMER:
|
||||||
{
|
{
|
||||||
uint8 devicenum;
|
uint8 devicenum;
|
||||||
uint16 buttonnum;
|
uint16 buttonnum;
|
||||||
GUID guid;
|
GUID guid;
|
||||||
|
ButtConfig *bc = DWBButtons;
|
||||||
|
char *nstr;
|
||||||
|
int wc = bc->NumC;
|
||||||
|
|
||||||
if(DoJoyWaitTest(&guid, &devicenum, &buttonnum))
|
if(DoJoyWaitTest(&guid, &devicenum, &buttonnum))
|
||||||
{
|
{
|
||||||
ButtConfig *bc = DWBButtons;
|
|
||||||
char *nstr;
|
|
||||||
int wc;
|
|
||||||
if(DWBStarted)
|
|
||||||
{
|
|
||||||
ButtConfig *bc = DWBButtons;
|
|
||||||
bc->NumC = 0;
|
|
||||||
DWBStarted = 0;
|
|
||||||
}
|
|
||||||
wc = bc->NumC;
|
|
||||||
//FCEU_printf("%d: %d\n",devicenum,buttonnum);
|
|
||||||
bc->ButtType[wc]=BUTTC_JOYSTICK;
|
bc->ButtType[wc]=BUTTC_JOYSTICK;
|
||||||
bc->DeviceNum[wc]=devicenum;
|
bc->DeviceNum[wc]=devicenum;
|
||||||
bc->ButtonNum[wc]=buttonnum;
|
bc->ButtonNum[wc]=buttonnum;
|
||||||
|
@ -1010,58 +1181,76 @@ static INT_PTR CALLBACK DWBCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
||||||
free(nstr);
|
free(nstr);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WM_USER + 666:
|
|
||||||
//SetFocus(GetDlgItem(hwndDlg,LBL_DWBDIALOG_TEXT));
|
|
||||||
if(DWBStarted)
|
|
||||||
{
|
{
|
||||||
char *nstr;
|
int newkey;
|
||||||
ButtConfig *bc = DWBButtons;
|
int meta = GetKeyMeta(key);
|
||||||
bc->NumC = 0;
|
|
||||||
DWBStarted = 0;
|
|
||||||
nstr = MakeButtString(bc);
|
|
||||||
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
|
||||||
free(nstr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
KeyboardUpdateState();
|
||||||
|
|
||||||
|
if ((newkey = GetKeyPressed()) != 0)
|
||||||
{
|
{
|
||||||
ButtConfig *bc = DWBButtons;
|
key = newkey | meta;
|
||||||
int wc = bc->NumC;
|
ClearExtraMeta(&key);
|
||||||
char *nstr;
|
|
||||||
|
|
||||||
bc->ButtType[wc] = BUTTC_KEYBOARD;
|
bc->ButtType[wc] = BUTTC_KEYBOARD;
|
||||||
bc->DeviceNum[wc] = 0;
|
bc->DeviceNum[wc] = 0;
|
||||||
bc->ButtonNum[wc]=lParam&255;
|
bc->ButtonNum[wc] = key;
|
||||||
|
|
||||||
//Stop config if the user pushes the same button twice in a row.
|
/* Stop config if the user pushes the same button twice in a row. */
|
||||||
if (wc && bc->ButtType[wc] == bc->ButtType[wc - 1] && bc->DeviceNum[wc] == bc->DeviceNum[wc - 1] &&
|
if (wc && bc->ButtType[wc] == bc->ButtType[wc - 1] && bc->DeviceNum[wc] == bc->DeviceNum[wc - 1] &&
|
||||||
bc->ButtonNum[wc] == bc->ButtonNum[wc - 1])
|
bc->ButtonNum[wc] == bc->ButtonNum[wc - 1])
|
||||||
goto gornk;
|
goto gornk;
|
||||||
|
|
||||||
bc->NumC++;
|
bc->NumC++;
|
||||||
//Stop config if we reached our maximum button limit.
|
nstr = MakeButtString(bc);
|
||||||
|
bc->NumC--;
|
||||||
|
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
||||||
|
free(nstr);
|
||||||
|
}
|
||||||
|
else if (NothingPressed() && key)
|
||||||
|
{
|
||||||
|
bc->ButtType[wc] = BUTTC_KEYBOARD;
|
||||||
|
bc->DeviceNum[wc] = 0;
|
||||||
|
bc->ButtonNum[wc] = key;
|
||||||
|
|
||||||
|
/* Stop config if the user pushes the same button twice in a row. */
|
||||||
|
if (wc && bc->ButtType[wc] == bc->ButtType[wc - 1] && bc->DeviceNum[wc] == bc->DeviceNum[wc - 1] &&
|
||||||
|
bc->ButtonNum[wc] == bc->ButtonNum[wc - 1])
|
||||||
|
goto gornk;
|
||||||
|
|
||||||
|
bc->NumC++;
|
||||||
|
/* Stop config if we reached our maximum button limit. */
|
||||||
if (bc->NumC >= MAXBUTTCONFIG)
|
if (bc->NumC >= MAXBUTTCONFIG)
|
||||||
goto gornk;
|
goto gornk;
|
||||||
|
|
||||||
nstr = MakeButtString(bc);
|
nstr = MakeButtString(bc);
|
||||||
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
||||||
free(nstr);
|
free(nstr);
|
||||||
|
|
||||||
|
key = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
|
key = 0;
|
||||||
|
memset(keyonce, 0, sizeof(keyonce));
|
||||||
SetWindowText(hwndDlg, (char*)DWBText); //mbg merge 7/17/06 added cast
|
SetWindowText(hwndDlg, (char*)DWBText); //mbg merge 7/17/06 added cast
|
||||||
BeginJoyWait(hwndDlg);
|
BeginJoyWait(hwndDlg);
|
||||||
|
KeyboardSetBackgroundAccess(true);
|
||||||
SetTimer(hwndDlg,666,25,0); //Every 25ms.
|
SetTimer(hwndDlg,666,25,0); //Every 25ms.
|
||||||
|
if (DWBButtons->NumC)
|
||||||
{
|
{
|
||||||
char *nstr = MakeButtString(DWBButtons);
|
char *nstr = MakeButtString(DWBButtons);
|
||||||
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
SetDlgItemText(hwndDlg, LBL_DWBDIALOG_TEXT, nstr);
|
||||||
free(nstr);
|
free(nstr);
|
||||||
}
|
}
|
||||||
|
DWBButtons->NumC = 0;
|
||||||
|
/* workaround for enter and tab keys */
|
||||||
|
SetFocus(NULL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
case WM_QUIT: goto gornk;
|
case WM_QUIT: goto gornk;
|
||||||
|
|
||||||
|
@ -1082,8 +1271,8 @@ static INT_PTR CALLBACK DWBCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
|
||||||
gornk:
|
gornk:
|
||||||
KillTimer(hwndDlg,666);
|
KillTimer(hwndDlg,666);
|
||||||
EndJoyWait(hAppWnd);
|
EndJoyWait(hAppWnd);
|
||||||
SetForegroundWindow(GetParent(hwndDlg));
|
KeyboardSetBackgroundAccess(false);
|
||||||
DestroyWindow(hwndDlg);
|
EndDialog(hwndDlg, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1096,39 +1285,8 @@ int DWaitButton(HWND hParent, const uint8 *text, ButtConfig *bc)
|
||||||
DWBButtons = bc;
|
DWBButtons = bc;
|
||||||
DWBStarted = 1;
|
DWBStarted = 1;
|
||||||
|
|
||||||
die = CreateDialog(fceu_hInstance, "DWBDIALOG", hParent, DWBCallB);
|
int nRet = DialogBox(fceu_hInstance, "DWBDIALOG", hParent, DWBCallB);
|
||||||
|
SetFocus(hParent);
|
||||||
EnableWindow(hParent, 0);
|
|
||||||
|
|
||||||
ShowWindow(die, 1);
|
|
||||||
|
|
||||||
while(die)
|
|
||||||
{
|
|
||||||
MSG msg;
|
|
||||||
while(PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE))
|
|
||||||
{
|
|
||||||
if(GetMessage(&msg, 0, 0, 0) > 0)
|
|
||||||
{
|
|
||||||
if(msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN)
|
|
||||||
{
|
|
||||||
LPARAM tmpo;
|
|
||||||
|
|
||||||
tmpo = ((msg.lParam >> 16) & 0x7F) | ((msg.lParam >> 17) & 0x80);
|
|
||||||
PostMessage(die,WM_USER+666,0,tmpo);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(msg.message == WM_SYSCOMMAND) continue;
|
|
||||||
if(!IsDialogMessage(die, &msg))
|
|
||||||
{
|
|
||||||
TranslateMessage(&msg);
|
|
||||||
DispatchMessage(&msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Sleep(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
EnableWindow(hParent, 1);
|
|
||||||
return 0; //mbg merge TODO 7/17/06 - had to add this return value--is it right?
|
return 0; //mbg merge TODO 7/17/06 - had to add this return value--is it right?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern uint8 BWorldData[1 + 13 + 1];
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8 ButtType[MAXBUTTCONFIG];
|
uint8 ButtType[MAXBUTTCONFIG];
|
||||||
uint8 DeviceNum[MAXBUTTCONFIG];
|
uint8 DeviceNum[MAXBUTTCONFIG];
|
||||||
uint16 ButtonNum[MAXBUTTCONFIG];
|
int ButtonNum[MAXBUTTCONFIG];
|
||||||
uint32 NumC;
|
uint32 NumC;
|
||||||
GUID DeviceInstance[MAXBUTTCONFIG];
|
GUID DeviceInstance[MAXBUTTCONFIG];
|
||||||
//uint64 DeviceID[MAXBUTTCONFIG]; /* TODO */
|
//uint64 DeviceID[MAXBUTTCONFIG]; /* TODO */
|
||||||
|
|
|
@ -112,9 +112,9 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIB
|
||||||
CAPTION "DWB!"
|
CAPTION "DWB!"
|
||||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Text",LBL_DWBDIALOG_TEXT,7,9,237,8
|
LTEXT "Press a key or a button",LBL_DWBDIALOG_TEXT,7,9,237,8
|
||||||
PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14
|
PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14
|
||||||
PUSHBUTTON "Close",BTN_CLOSE,188,33,50,14
|
PUSHBUTTON "OK",BTN_CLOSE,188,33,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
FKBDIALOG DIALOGEX 13, 72, 402, 194
|
FKBDIALOG DIALOGEX 13, 72, 402, 194
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#define LBL_KEY_COMBO 100
|
#define LBL_KEY_COMBO 100
|
||||||
#define LBL_CDLOGGER_CODECOUNT 100
|
#define LBL_CDLOGGER_CODECOUNT 100
|
||||||
#define CHECK_PALETTE_ENABLED 100
|
#define CHECK_PALETTE_ENABLED 100
|
||||||
#define LBL_DWBDIALOG_TEXT 100
|
#define LBL_DWBDIALOG_TEXT 100 | WS_TABSTOP
|
||||||
#define GRP_GAMEPAD1 100
|
#define GRP_GAMEPAD1 100
|
||||||
#define IDC_TRACER_LOG 100
|
#define IDC_TRACER_LOG 100
|
||||||
#define MENU_MV_FILE_SAVE 100
|
#define MENU_MV_FILE_SAVE 100
|
||||||
|
|
Loading…
Reference in New Issue