Added joystick POV hat support
This commit is contained in:
@@ -98,6 +98,8 @@ DWORD S01Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
|||||||
DWORD S02Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
DWORD S02Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
DWORD S11Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
DWORD S11Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
DWORD S12Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
DWORD S12Disable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
|
DWORD POVDisable[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
|
DWORD NumPOV[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
|
|
||||||
DWORD CurrentJoy=0;
|
DWORD CurrentJoy=0;
|
||||||
|
|
||||||
@@ -817,6 +819,16 @@ BOOL FAR PASCAL InitJoystickInput(LPCDIDEVICEINSTANCE pdinst, LPVOID pvRef)
|
|||||||
S12Disable[CurrentJoy]=1;
|
S12Disable[CurrentJoy]=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i=0; i<5; i++)
|
||||||
|
{
|
||||||
|
diprg.diph.dwObj = DIJOFS_POV(i);
|
||||||
|
if (FAILED(JoystickInput[CurrentJoy]->SetProperty(DIPROP_RANGE, &diprg.diph)))
|
||||||
|
{
|
||||||
|
POVDisable[CurrentJoy]=1;
|
||||||
|
}
|
||||||
|
else NumPOV[i]++;
|
||||||
|
}
|
||||||
|
|
||||||
DIPROPDWORD dipdw;
|
DIPROPDWORD dipdw;
|
||||||
|
|
||||||
dipdw.diph.dwSize = sizeof(DIPROPDWORD);
|
dipdw.diph.dwSize = sizeof(DIPROPDWORD);
|
||||||
@@ -847,6 +859,12 @@ BOOL FAR PASCAL InitJoystickInput(LPCDIDEVICEINSTANCE pdinst, LPVOID pvRef)
|
|||||||
dipdw.diph.dwObj = DIJOFS_SLIDER(1);
|
dipdw.diph.dwObj = DIJOFS_SLIDER(1);
|
||||||
JoystickInput[CurrentJoy]->SetProperty(DIPROP_DEADZONE, &dipdw.diph);
|
JoystickInput[CurrentJoy]->SetProperty(DIPROP_DEADZONE, &dipdw.diph);
|
||||||
|
|
||||||
|
for (int i2=0; i<5; i++)
|
||||||
|
{
|
||||||
|
dipdw.diph.dwObj = DIJOFS_POV(i2);
|
||||||
|
JoystickInput[CurrentJoy]->SetProperty(DIPROP_DEADZONE, &dipdw.diph);
|
||||||
|
}
|
||||||
|
|
||||||
dipdw.diph.dwSize = sizeof(DIPROPDWORD);
|
dipdw.diph.dwSize = sizeof(DIPROPDWORD);
|
||||||
dipdw.diph.dwHeaderSize = sizeof(dipdw.diph);
|
dipdw.diph.dwHeaderSize = sizeof(dipdw.diph);
|
||||||
dipdw.diph.dwHow = DIPH_DEVICE;
|
dipdw.diph.dwHow = DIPH_DEVICE;
|
||||||
@@ -2354,6 +2372,76 @@ void WinUpdateDevices()
|
|||||||
if (js[i].rglSlider[1]<0) keys[0x100+i*32+13]=1;
|
if (js[i].rglSlider[1]<0) keys[0x100+i*32+13]=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!POVDisable[i])
|
||||||
|
{
|
||||||
|
for (int i2=0; i2<NumPOV[i]; i++)
|
||||||
|
{
|
||||||
|
if (js[i].rgdwPOV[i2] == -1)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 0] = 0;
|
||||||
|
keys[0x100 + i * 32 + 1] = 0;
|
||||||
|
keys[0x100 + i * 32 + 2] = 0;
|
||||||
|
keys[0x100 + i * 32 + 3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 0)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 2] = 0;
|
||||||
|
keys[0x100 + i * 32 + 3] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 4500)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 0] = 1;
|
||||||
|
keys[0x100 + i * 32 + 1] = 0;
|
||||||
|
keys[0x100 + i * 32 + 2] = 0;
|
||||||
|
keys[0x100 + i * 32 + 3] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 9000)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 0] = 1;
|
||||||
|
keys[0x100 + i * 32 + 1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 13500)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 0] = 1;
|
||||||
|
keys[0x100 + i * 32 + 1] = 0;
|
||||||
|
keys[0x100 + i * 32 + 2] = 1;
|
||||||
|
keys[0x100 + i * 32 + 3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 18000)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 2] = 1;
|
||||||
|
keys[0x100 + i * 32 + 3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 22500)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 0] = 0;
|
||||||
|
keys[0x100 + i * 32 + 1] = 1;
|
||||||
|
keys[0x100 + i * 32 + 2] = 1;
|
||||||
|
keys[0x100 + i * 32 + 3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 27000)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 0] = 0;
|
||||||
|
keys[0x100 + i * 32 + 1] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (js[i].rgdwPOV[i2] == 31500)
|
||||||
|
{
|
||||||
|
keys[0x100 + i * 32 + 0] = 0;
|
||||||
|
keys[0x100 + i * 32 + 1] = 1;
|
||||||
|
keys[0x100 + i * 32 + 2] = 0;
|
||||||
|
keys[0x100 + i * 32 + 3] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (js[i].rgbButtons[0]) keys[0x100+i*32+16]=1;
|
if (js[i].rgbButtons[0]) keys[0x100+i*32+16]=1;
|
||||||
if (js[i].rgbButtons[1]) keys[0x100+i*32+17]=1;
|
if (js[i].rgbButtons[1]) keys[0x100+i*32+17]=1;
|
||||||
if (js[i].rgbButtons[2]) keys[0x100+i*32+18]=1;
|
if (js[i].rgbButtons[2]) keys[0x100+i*32+18]=1;
|
||||||
|
|||||||
Reference in New Issue
Block a user