More fixes to the new input system in win32
This commit is contained in:
parent
6b65d1264d
commit
f8d1258a1c
|
@ -213,7 +213,14 @@ uint32 GetGamepadPressedImmediate()
|
||||||
return JSButtons;
|
return JSButtons;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DTestButton(ButtConfig *bc, uint8_t just_down)
|
|
||||||
|
// Function to check if key/button/combination is pressed/held
|
||||||
|
// bc: button mapping structure
|
||||||
|
// just_down: indicates that only new button presses should be logged, not held down
|
||||||
|
// block_meta: indicates that key can't be pressed in combination with meta keys
|
||||||
|
// if it's not set explicitly,
|
||||||
|
// e.g. do not trigger "F1" if "Ctrl+F1" is pressed
|
||||||
|
int DTestButton(ButtConfig *bc, uint8_t just_down, uint8_t block_meta)
|
||||||
{
|
{
|
||||||
static unsigned int *keys_data = !just_down ? GetKeyboard_nr() : GetKeyboard_jd();
|
static unsigned int *keys_data = !just_down ? GetKeyboard_nr() : GetKeyboard_jd();
|
||||||
|
|
||||||
|
@ -230,10 +237,10 @@ int DTestButton(ButtConfig *bc, uint8_t just_down)
|
||||||
int ctlstate = (cmd & CMD_KEY_LALT) ? keys_data[SCAN_LEFTALT] : 0;
|
int ctlstate = (cmd & CMD_KEY_LALT) ? keys_data[SCAN_LEFTALT] : 0;
|
||||||
ctlstate |= (cmd & CMD_KEY_RALT) ? keys_data[SCAN_RIGHTALT] : 0;
|
ctlstate |= (cmd & CMD_KEY_RALT) ? keys_data[SCAN_RIGHTALT] : 0;
|
||||||
if (!ctlstate)
|
if (!ctlstate)
|
||||||
return 0;
|
continue;
|
||||||
}
|
}
|
||||||
else if ((cmdmask != SCAN_LEFTALT && keys_data[SCAN_LEFTALT]) || (cmdmask != SCAN_RIGHTALT && keys_data[SCAN_RIGHTALT]))
|
else if (block_meta && ((cmdmask != SCAN_LEFTALT && keys_data[SCAN_LEFTALT]) || (cmdmask != SCAN_RIGHTALT && keys_data[SCAN_RIGHTALT])))
|
||||||
return 0;
|
continue;
|
||||||
|
|
||||||
if (cmd & CMD_KEY_CTRL)
|
if (cmd & CMD_KEY_CTRL)
|
||||||
{
|
{
|
||||||
|
@ -242,7 +249,7 @@ int DTestButton(ButtConfig *bc, uint8_t just_down)
|
||||||
if (!ctlstate)
|
if (!ctlstate)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if ((cmdmask != SCAN_LEFTCONTROL && keys_data[SCAN_LEFTCONTROL]) || (cmdmask != SCAN_RIGHTCONTROL && keys_data[SCAN_RIGHTCONTROL]))
|
else if (block_meta && ((cmdmask != SCAN_LEFTCONTROL && keys_data[SCAN_LEFTCONTROL]) || (cmdmask != SCAN_RIGHTCONTROL && keys_data[SCAN_RIGHTCONTROL])))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (cmd & CMD_KEY_SHIFT)
|
if (cmd & CMD_KEY_SHIFT)
|
||||||
|
@ -252,7 +259,7 @@ int DTestButton(ButtConfig *bc, uint8_t just_down)
|
||||||
if (!ctlstate)
|
if (!ctlstate)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if ((cmdmask != SCAN_LEFTSHIFT && keys_data[SCAN_LEFTSHIFT]) || (cmdmask != SCAN_RIGHTSHIFT && keys_data[SCAN_RIGHTSHIFT]))
|
else if (block_meta && ((cmdmask != SCAN_LEFTSHIFT && keys_data[SCAN_LEFTSHIFT]) || (cmdmask != SCAN_RIGHTSHIFT && keys_data[SCAN_RIGHTSHIFT])))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (cmd & CMD_KEY_WIN)
|
if (cmd & CMD_KEY_WIN)
|
||||||
|
@ -262,7 +269,7 @@ int DTestButton(ButtConfig *bc, uint8_t just_down)
|
||||||
if (!ctlstate)
|
if (!ctlstate)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if ((cmdmask != SCAN_LEFTWIN && keys_data[SCAN_LEFTWIN]) || (cmdmask != SCAN_RIGHTWIN && keys_data[SCAN_RIGHTWIN]))
|
else if (block_meta && ((cmdmask != SCAN_LEFTWIN && keys_data[SCAN_LEFTWIN]) || (cmdmask != SCAN_RIGHTWIN && keys_data[SCAN_RIGHTWIN])))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(keys_data[cmdmask])
|
if(keys_data[cmdmask])
|
||||||
|
@ -1841,9 +1848,12 @@ int FCEUD_TestCommandState(int c)
|
||||||
case EMUCMD_FRAME_ADVANCE:
|
case EMUCMD_FRAME_ADVANCE:
|
||||||
case EMUCMD_SPEED_TURBO:
|
case EMUCMD_SPEED_TURBO:
|
||||||
case EMUCMD_TASEDITOR_REWIND:
|
case EMUCMD_TASEDITOR_REWIND:
|
||||||
|
// Check that key/button is held down
|
||||||
return DTestButton(&FCEUD_CommandMapping[c], 0);
|
return DTestButton(&FCEUD_CommandMapping[c], 0);
|
||||||
default:
|
default:
|
||||||
return DTestButton(&FCEUD_CommandMapping[c], 1);
|
// Check that key/button is just pressed, not held down
|
||||||
|
// Register only if no additional meta keys are pressed
|
||||||
|
return DTestButton(&FCEUD_CommandMapping[c], 1, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ void ParseGIInput(FCEUGI *GameInfo);
|
||||||
int FCEUD_TestCommandState(int c);
|
int FCEUD_TestCommandState(int c);
|
||||||
void FCEUD_UpdateInput();
|
void FCEUD_UpdateInput();
|
||||||
int DWaitButton(HWND hParent, const char *text, ButtConfig *bc);
|
int DWaitButton(HWND hParent, const char *text, ButtConfig *bc);
|
||||||
int DTestButton(ButtConfig *bc, uint8_t just_down = 0);
|
int DTestButton(ButtConfig *bc, uint8_t just_down = 0, uint8_t block_meta = 0);
|
||||||
char *MakeButtString(ButtConfig *bc, int appendKB = 1);
|
char *MakeButtString(ButtConfig *bc, int appendKB = 1);
|
||||||
|
|
||||||
extern CFGSTRUCT HotkeyConfig[];
|
extern CFGSTRUCT HotkeyConfig[];
|
||||||
|
|
Loading…
Reference in New Issue