try to fix some winport joystick hotkey bullcrap for >1 attached joysticks
This commit is contained in:
parent
928004e13e
commit
f0bef635c2
|
@ -565,44 +565,50 @@ static void InputTimer()
|
||||||
DWORD firstPressedTime;
|
DWORD firstPressedTime;
|
||||||
DWORD lastPressedTime;
|
DWORD lastPressedTime;
|
||||||
WORD repeatCount;
|
WORD repeatCount;
|
||||||
} joyState [256];
|
} joyState [256*16];
|
||||||
static bool initialized = false;
|
static bool initialized = false;
|
||||||
|
|
||||||
if(!initialized) {
|
if(!initialized) {
|
||||||
for(int i = 0; i < 256; i++) {
|
for(int i = 0; i < 256*16; i++) {
|
||||||
joyState[i].wasPressed = false;
|
joyState[i].wasPressed = false;
|
||||||
joyState[i].repeatCount = 1;
|
joyState[i].repeatCount = 1;
|
||||||
}
|
}
|
||||||
initialized = true;
|
initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int nloops = JOYSTICK?16:1;
|
||||||
|
for(int j=0;j<nloops;j++)
|
||||||
|
{
|
||||||
for (int z = 0; z < 256; z++) {
|
for (int z = 0; z < 256; z++) {
|
||||||
int i = z | (JOYSTICK?0x8000:0);
|
int i = z | (JOYSTICK?0x8000:0);
|
||||||
|
i |= (j<<8);
|
||||||
|
int n = i&0xFFF;
|
||||||
bool active = !S9xGetState(i);
|
bool active = !S9xGetState(i);
|
||||||
|
|
||||||
if (active) {
|
if (active) {
|
||||||
bool keyRepeat = (currentTime - joyState[z].firstPressedTime) >= (DWORD)KeyInDelayMSec;
|
bool keyRepeat = (currentTime - joyState[n].firstPressedTime) >= (DWORD)KeyInDelayMSec;
|
||||||
if (!joyState[z].wasPressed || keyRepeat) {
|
if (!joyState[n].wasPressed || keyRepeat) {
|
||||||
if (!joyState[z].wasPressed)
|
if (!joyState[n].wasPressed)
|
||||||
joyState[z].firstPressedTime = currentTime;
|
joyState[n].firstPressedTime = currentTime;
|
||||||
joyState[z].lastPressedTime = currentTime;
|
joyState[n].lastPressedTime = currentTime;
|
||||||
if (keyRepeat && joyState[z].repeatCount < 0xffff)
|
if (keyRepeat && joyState[n].repeatCount < 0xffff)
|
||||||
joyState[z].repeatCount++;
|
joyState[n].repeatCount++;
|
||||||
int mods = GetInitialModifiers(i);
|
int mods = GetInitialModifiers(i);
|
||||||
WPARAM wparam = i | (mods << 8);
|
WPARAM wparam = i | (mods << 16) | (j<<8);
|
||||||
PostMessage(MainWindow->getHWnd(), WM_CUSTKEYDOWN, wparam,(LPARAM)(joyState[z].repeatCount | (joyState[z].wasPressed ? 0x40000000 : 0)));
|
PostMessage(MainWindow->getHWnd(), WM_CUSTKEYDOWN, wparam,(LPARAM)(joyState[n].repeatCount | (joyState[n].wasPressed ? 0x40000000 : 0)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
joyState[z].repeatCount = 1;
|
joyState[n].repeatCount = 1;
|
||||||
if (joyState[z].wasPressed)
|
if (joyState[n].wasPressed)
|
||||||
{
|
{
|
||||||
int mods = GetInitialModifiers(i);
|
int mods = GetInitialModifiers(i);
|
||||||
WPARAM wparam = i | (mods << 8);
|
WPARAM wparam = i | (mods << 16) | (j<<8);
|
||||||
PostMessage(MainWindow->getHWnd(), WM_CUSTKEYUP, wparam,(LPARAM)(joyState[z].repeatCount | (joyState[z].wasPressed ? 0x40000000 : 0)));
|
PostMessage(MainWindow->getHWnd(), WM_CUSTKEYUP, wparam,(LPARAM)(joyState[n].repeatCount | (joyState[n].wasPressed ? 0x40000000 : 0)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
joyState[z].wasPressed = active;
|
joyState[n].wasPressed = active;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
lastTime = currentTime;
|
lastTime = currentTime;
|
||||||
}
|
}
|
||||||
|
@ -4049,7 +4055,7 @@ int GetModifiers(int key)
|
||||||
if (key == VK_MENU || key == VK_CONTROL || key == VK_SHIFT)
|
if (key == VK_MENU || key == VK_CONTROL || key == VK_SHIFT)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int bakedModifiers = (key >> 8) & (CUSTKEY_ALT_MASK | CUSTKEY_CTRL_MASK | CUSTKEY_SHIFT_MASK | CUSTKEY_NONE_MASK);
|
int bakedModifiers = (key >> 16) & (CUSTKEY_ALT_MASK | CUSTKEY_CTRL_MASK | CUSTKEY_SHIFT_MASK | CUSTKEY_NONE_MASK);
|
||||||
if(bakedModifiers)
|
if(bakedModifiers)
|
||||||
return bakedModifiers & ~CUSTKEY_NONE_MASK;
|
return bakedModifiers & ~CUSTKEY_NONE_MASK;
|
||||||
|
|
||||||
|
@ -4061,7 +4067,7 @@ int GetModifiers(int key)
|
||||||
}
|
}
|
||||||
int PurgeModifiers(int key)
|
int PurgeModifiers(int key)
|
||||||
{
|
{
|
||||||
return key & ~((CUSTKEY_ALT_MASK | CUSTKEY_CTRL_MASK | CUSTKEY_SHIFT_MASK | CUSTKEY_NONE_MASK) << 8);
|
return key & ~((CUSTKEY_ALT_MASK | CUSTKEY_CTRL_MASK | CUSTKEY_SHIFT_MASK | CUSTKEY_NONE_MASK) << 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
int HandleKeyUp(WPARAM wParam, LPARAM lParam, int modifiers)
|
int HandleKeyUp(WPARAM wParam, LPARAM lParam, int modifiers)
|
||||||
|
|
Loading…
Reference in New Issue