Input support update.
This commit is contained in:
@@ -1018,16 +1018,16 @@ NEWSYM ScanCodeListing
|
|||||||
db 'KP8','KP9','KP-','KP4','KP5','KP6','KP+','KP1'
|
db 'KP8','KP9','KP-','KP4','KP5','KP6','KP+','KP1'
|
||||||
db 'KP2','KP3','KP0','KP.',' ',' ','OEM','F11' ; 50h
|
db 'KP2','KP3','KP0','KP.',' ',' ','OEM','F11' ; 50h
|
||||||
db 'F12','HOM',' UP','PGU','LFT','5DH','RGT','END'
|
db 'F12','HOM',' UP','PGU','LFT','5DH','RGT','END'
|
||||||
db 'DWN','PGD','INS','DEL','64H','65H','66H','67H' ; 80h
|
db 'DWN','PGD','INS','DEL','64H','65H','66H','67H' ; 60h
|
||||||
%else
|
%else
|
||||||
db 'F6 ','F7 ','F8 ','F9 ','F10','NUM','SCR','N 7' ; 40h
|
db 'F6 ','F7 ','F8 ','F9 ','F10','NUM','SCR','N 7' ; 40h
|
||||||
db 'N 8','N 9','N -','N 4','N 5','N 6','N +','N 1'
|
db 'N 8','N 9','N -','N 4','N 5','N 6','N +','N 1'
|
||||||
db 'N 2','N 3','N 0','N .',' ',' ','OEM','F11' ; 50h
|
db 'N 2','N 3','N 0','N .',' ',' ','OEM','F11' ; 50h
|
||||||
db 'F12','59h','5Ah','5BH','5CH','5DH','5EH','5FH'
|
db 'F12','59h','5Ah','5BH','5CH','5DH','5EH','5FH'
|
||||||
db '60H','61H','62H','63H','64H','65H','66H','67H' ; 80h
|
db '60H','61H','62H','63H','64H','65H','66H','67H' ; 60h
|
||||||
db '68H','69H','6AH','6BH','6CH','6DH','6EH','6FH'
|
|
||||||
%endif
|
%endif
|
||||||
db '70H','71H','72H','73H','74H','75H','76H','77H' ; 90h
|
db '68H','69H','6AH','6BH','6CH','6DH','6EH','6FH'
|
||||||
|
db '70H','71H','72H','73H','74H','75H','76H','77H' ; 70h
|
||||||
db '78H','79H','7AH','7BH','7CH','7DH','7EH','7FH'
|
db '78H','79H','7AH','7BH','7CH','7DH','7EH','7FH'
|
||||||
; Keyboard continued (Direct Input)
|
; Keyboard continued (Direct Input)
|
||||||
db '80H','81H','82H','83H','84H','85H','86H','87H' ; 80h
|
db '80H','81H','82H','83H','84H','85H','86H','87H' ; 80h
|
||||||
@@ -1046,32 +1046,44 @@ NEWSYM ScanCodeListing
|
|||||||
db 'E8H','E9H','EAH','EBH','ECH','EDH','EEH','EFH'
|
db 'E8H','E9H','EAH','EBH','ECH','EDH','EEH','EFH'
|
||||||
db 'F0H','F1H','F2H','F3H','F4H','F5H','F6H','F7H' ; F0h
|
db 'F0H','F1H','F2H','F3H','F4H','F5H','F6H','F7H' ; F0h
|
||||||
db 'F8H','F9H','FAH','FBH','FCH','FDH','FEH','FFH'
|
db 'F8H','F9H','FAH','FBH','FCH','FDH','FEH','FFH'
|
||||||
; Joystick Stuff (Direct Input)
|
; Joystick Stuff
|
||||||
db 'J00','J01','J02','J03','J04','J05','J06','J07'
|
db 'J00','J01','J02','J03','J04','J05','J06','J07' ; 100h
|
||||||
db 'J08','J09','J0A','J0B','J0C','J0D','J0E','J0F'
|
db 'J08','J09','J0A','J0B','J0C','J0D','J0E','J0F'
|
||||||
db 'J10','J11','J12','J13','J14','J15','J16','J17'
|
db 'J10','J11','J12','J13','J14','J15','J16','J17' ; 110h
|
||||||
db 'J18','J19','J1A','J1B','J1C','J1D','J1E','J1F'
|
db 'J18','J19','J1A','J1B','J1C','J1D','J1E','J1F'
|
||||||
db 'J20','J21','J22','J23','J24','J25','J26','J27'
|
db 'J20','J21','J22','J23','J24','J25','J26','J27' ; 120h
|
||||||
db 'J28','J29','J2A','J2B','J2C','J2D','J2E','J2F'
|
db 'J28','J29','J2A','J2B','J2C','J2D','J2E','J2F'
|
||||||
db 'J30','J31','J32','J33','J34','J35','J36','J37'
|
db 'J30','J31','J32','J33','J34','J35','J36','J37' ; 130h
|
||||||
db 'J38','J39','J3A','J3B','J3C','J3D','J3E','J3F'
|
db 'J38','J39','J3A','J3B','J3C','J3D','J3E','J3F'
|
||||||
db 'J40','J41','J42','J43','J44','J45','J46','J47'
|
db 'J40','J41','J42','J43','J44','J45','J46','J47' ; 140h
|
||||||
db 'J48','J49','J4A','J4B','J4C','J4D','J4E','J4F'
|
db 'J48','J49','J4A','J4B','J4C','J4D','J4E','J4F'
|
||||||
db 'J50','J51','J52','J53','J54','J55','J56','J57'
|
db 'J50','J51','J52','J53','J54','J55','J56','J57' ; 150h
|
||||||
db 'J58','J59','J5A','J5B','J5C','J5D','J5E','J5F'
|
db 'J58','J59','J5A','J5B','J5C','J5D','J5E','J5F'
|
||||||
db 'J60','J61','J62','J63','J64','J65','J66','J67'
|
db 'J60','J61','J62','J63','J64','J65','J66','J67' ; 160h
|
||||||
db 'J68','J69','J6A','J6B','J6C','J6D','J6E','J6F'
|
db 'J68','J69','J6A','J6B','J6C','J6D','J6E','J6F'
|
||||||
db 'J70','J71','J72','J73','J74','J75','J76','J77'
|
db 'J70','J71','J72','J73','J74','J75','J76','J77' ; 170h
|
||||||
db 'J78','J79','J7A','J7B','J7C','J7D','J7E','J7F'
|
db 'J78','J79','J7A','J7B','J7C','J7D','J7E','J7F'
|
||||||
|
%ifdef __LINUX__
|
||||||
|
; Extra Joystick Stuff
|
||||||
|
db 'J80','J81','J82','J83','J84','J85','J86','J87' ; 180h
|
||||||
|
db 'J88','J89','J8A','J8B','J8C','J8D','J8E','J8F'
|
||||||
|
db 'J90','J91','J92','J93','J94','J95','J96','J97' ; 190h
|
||||||
|
db 'J98','J99','J9A','J9B','J9C','J9D','J9E','J9F'
|
||||||
|
db 'JA0','JA1','JA2','JA3','JA4','JA5','JA6','JA7' ; 2A0h
|
||||||
|
db 'JA8','JA9','JAA','JAB','JAC','JAD','JAE','JAF'
|
||||||
|
db 'JB0','JB1','JB2','JB3','JB4','JB5','JB6','JB7' ; 2B0h
|
||||||
|
db 'JB8','JB9','JBA','JBB','JBC','JBD','JBE','JBF'
|
||||||
|
%else
|
||||||
; Extra Stuff (180h) (Parallel Port)
|
; Extra Stuff (180h) (Parallel Port)
|
||||||
db 'PPB','PPY','PSL','PST','PUP','PDN','PLT','PRT'
|
db 'PPB','PPY','PSL','PST','PUP','PDN','PLT','PRT' ; 180h
|
||||||
db 'PPA','PPX','PPL','PPR',' ',' ',' ',' '
|
db 'PPA','PPX','PPL','PPR',' ',' ',' ',' '
|
||||||
db 'P2B','P2Y','P2S','P2T','P2U','P2D','P2L','P2R'
|
db 'P2B','P2Y','P2S','P2T','P2U','P2D','P2L','P2R' ; 190h
|
||||||
db 'P2A','P2X','P2L','P2R',' ',' ',' ',' '
|
db 'P2A','P2X','P2L','P2R',' ',' ',' ',' '
|
||||||
db 'PPB','PPY','PSL','PST','PUP','PDN','PLT','PRT'
|
db 'PPB','PPY','PSL','PST','PUP','PDN','PLT','PRT' ; 2A0h
|
||||||
db 'PPA','PPX','PPL','PPR',' ',' ',' ',' '
|
db 'PPA','PPX','PPL','PPR',' ',' ',' ',' '
|
||||||
db 'P2B','P2Y','P2S','P2T','P2U','P2D','P2L','P2R'
|
db 'P2B','P2Y','P2S','P2T','P2U','P2D','P2L','P2R' ; 2B0h
|
||||||
db 'P2A','P2X','P2L','P2R',' ',' ',' ',' '
|
db 'P2A','P2X','P2L','P2R',' ',' ',' ',' '
|
||||||
|
%endif
|
||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,12 @@ extern BYTE GUIHQ4X[];
|
|||||||
|
|
||||||
/* JOYSTICK AND KEYBOARD INPUT */
|
/* JOYSTICK AND KEYBOARD INPUT */
|
||||||
SDL_Joystick *JoystickInput[5];
|
SDL_Joystick *JoystickInput[5];
|
||||||
|
unsigned int AxisOffset[5] = {256 + 128 + 64}; // per joystick offsets in
|
||||||
|
unsigned int ButtonOffset[5] = {448}; // pressed. We have 128 + 64
|
||||||
|
unsigned int HatOffset[5] = {448}; // bytes for all joysticks. We
|
||||||
|
unsigned int BallOffset[5] = {448}; // can control all 5 players.
|
||||||
int shiftptr = 0;
|
int shiftptr = 0;
|
||||||
|
int offset;
|
||||||
DWORD numlockptr;
|
DWORD numlockptr;
|
||||||
|
|
||||||
extern unsigned char pressed[];
|
extern unsigned char pressed[];
|
||||||
@@ -150,7 +155,6 @@ static void adjustMouseYScale(void)
|
|||||||
|
|
||||||
int Main_Proc(void)
|
int Main_Proc(void)
|
||||||
{
|
{
|
||||||
int j;
|
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
|
||||||
while (SDL_PollEvent(&event))
|
while (SDL_PollEvent(&event))
|
||||||
@@ -176,7 +180,7 @@ int Main_Proc(void)
|
|||||||
if (event.key.keysym.scancode - 8 >= 0)
|
if (event.key.keysym.scancode - 8 >= 0)
|
||||||
{
|
{
|
||||||
//if (pressed[event.key.keysym.scancode - 8] != 2)
|
//if (pressed[event.key.keysym.scancode - 8] != 2)
|
||||||
pressed[event.key.keysym.scancode - 8] = 1;
|
pressed[event.key.keysym.scancode - 8] = 1;
|
||||||
ProcessKeyBuf(event.key.keysym.sym);
|
ProcessKeyBuf(event.key.keysym.sym);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -228,7 +232,6 @@ int Main_Proc(void)
|
|||||||
MouseButton = MouseButton | event.button.button;
|
MouseButton = MouseButton | event.button.button;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
@@ -236,132 +239,127 @@ int Main_Proc(void)
|
|||||||
MouseButton & ~event.button.button;
|
MouseButton & ~event.button.button;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_JOYHATMOTION: // POV hats act as direction pad
|
case SDL_JOYHATMOTION: // POV hats act as direction pad
|
||||||
if (event.jhat.hat == 0) // only support the first POV hat for now
|
offset = HatOffset[event.jhat.which];
|
||||||
{
|
if (offset >= (256 + 128 + 64)) break;
|
||||||
switch (event.jhat.value)
|
switch (event.jhat.value)
|
||||||
{
|
{
|
||||||
case SDL_HAT_CENTERED:
|
case SDL_HAT_CENTERED:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 0] = 0;
|
pressed[offset] = 0;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 1] = 0;
|
pressed[offset + 1] = 0;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 2] = 0;
|
pressed[offset + 2] = 0;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 3] = 0;
|
pressed[offset + 3] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_UP:
|
case SDL_HAT_UP:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 3] = 1;
|
pressed[offset + 3] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 2] = 0;
|
pressed[offset + 2] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_RIGHTUP:
|
case SDL_HAT_RIGHTUP:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 0] = 1;
|
pressed[offset] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 3] = 1;
|
pressed[offset + 3] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 1] = 0;
|
pressed[offset + 1] = 0;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 2] = 0;
|
pressed[offset + 2] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_RIGHT:
|
case SDL_HAT_RIGHT:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 0] = 1;
|
pressed[offset] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 1] = 0;
|
pressed[offset + 1] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_RIGHTDOWN:
|
case SDL_HAT_RIGHTDOWN:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 0] = 1;
|
pressed[offset] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 2] = 1;
|
pressed[offset + 2] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 1] = 0;
|
pressed[offset + 1] = 0;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 3] = 0;
|
pressed[offset + 3] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_DOWN:
|
case SDL_HAT_DOWN:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 2] = 1;
|
pressed[offset + 2] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 3] = 0;
|
pressed[offset + 3] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_LEFTDOWN:
|
case SDL_HAT_LEFTDOWN:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 1] = 1;
|
pressed[offset + 1] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 2] = 1;
|
pressed[offset + 2] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 0] = 0;
|
pressed[offset] = 0;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 3] = 0;
|
pressed[offset + 3] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_LEFT:
|
case SDL_HAT_LEFT:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 1] = 1;
|
pressed[offset + 1] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 0] = 0;
|
pressed[offset] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_HAT_LEFTUP:
|
case SDL_HAT_LEFTUP:
|
||||||
pressed[0x100 + event.jhat.which * 32 + 1] = 1;
|
pressed[offset + 1] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 3] = 1;
|
pressed[offset + 3] = 1;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 0] = 0;
|
pressed[offset] = 0;
|
||||||
pressed[0x100 + event.jhat.which * 32 + 2] = 0;
|
pressed[offset + 2] = 0;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
joystick trackball code untested; change the test values
|
joystick trackball code untested; change the test
|
||||||
if the motion is too sensitive (or not sensitive enough);
|
values if the motion is too sensitive (or not
|
||||||
only the first trackball is supported for now. we could get
|
sensitive enough)
|
||||||
really general here, but this may break the format of 'pressed'
|
|
||||||
*/
|
*/
|
||||||
case SDL_JOYBALLMOTION:
|
case SDL_JOYBALLMOTION:
|
||||||
//CurrentJoy = event.jball.which;
|
offset = BallOffset[event.jball.which];
|
||||||
if (event.jball.ball == 0)
|
offset += event.jball.ball;
|
||||||
|
if (offset >= (256 + 128 + 64)) break;
|
||||||
|
if (event.jball.xrel < -100)
|
||||||
{
|
{
|
||||||
if (event.jball.xrel < -100)
|
pressed[offset] = 0;
|
||||||
{
|
pressed[offset + 1] = 1;
|
||||||
pressed[0x100 + event.jball.which * 32 + 6] = 0;
|
|
||||||
pressed[0x100 + event.jball.which * 32 + 7] = 1;
|
|
||||||
}
|
|
||||||
if (event.jball.xrel > 100)
|
|
||||||
{
|
|
||||||
pressed[0x100 + event.jball.which * 32 + 6] = 1;
|
|
||||||
pressed[0x100 + event.jball.which * 32 + 7] = 0;
|
|
||||||
}
|
|
||||||
if (event.jball.yrel < -100)
|
|
||||||
{
|
|
||||||
pressed[0x100 + event.jball.which * 32 + 8] = 0;
|
|
||||||
pressed[0x100 + event.jball.which * 32 + 9] = 1;
|
|
||||||
}
|
|
||||||
if (event.jball.yrel > 100)
|
|
||||||
{
|
|
||||||
pressed[0x100 + event.jball.which * 32 + 8] = 1;
|
|
||||||
pressed[0x100 + event.jball.which * 32 + 9] = 0;
|
|
||||||
}
|
}
|
||||||
|
if (event.jball.xrel > 100)
|
||||||
|
{
|
||||||
|
pressed[offset] = 1;
|
||||||
|
pressed[offset + 1] = 0;
|
||||||
|
}
|
||||||
|
if (event.jball.yrel < -100)
|
||||||
|
{
|
||||||
|
pressed[offset + 2] = 0;
|
||||||
|
pressed[offset + 3] = 1;
|
||||||
|
}
|
||||||
|
if (event.jball.yrel > 100)
|
||||||
|
{
|
||||||
|
pressed[offset + 2] = 1;
|
||||||
|
pressed[offset + 3] = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_JOYAXISMOTION:
|
case SDL_JOYAXISMOTION:
|
||||||
for (j = 0; j < 4; j++)
|
offset = AxisOffset[event.jaxis.which];
|
||||||
|
offset += event.jaxis.axis * 2;
|
||||||
|
if (offset >= (256 + 128 + 64)) break;
|
||||||
|
// printf("DEBUG axis offset: %d\n", offset);
|
||||||
|
if (event.jaxis.value < -16384)
|
||||||
{
|
{
|
||||||
if (event.jaxis.axis == j)
|
pressed[offset + 1] = 1;
|
||||||
{
|
pressed[offset + 0] = 0;
|
||||||
if (event.jaxis.value < -16384)
|
}
|
||||||
{
|
else if (event.jaxis.value > 16384)
|
||||||
pressed[0x100 +
|
{
|
||||||
event.jaxis.which * 32 + 2 * j + 1] = 1;
|
pressed[offset + 0] = 1;
|
||||||
pressed[0x100 +
|
pressed[offset + 1] = 0;
|
||||||
event.jaxis.which * 32 + 2 * j + 0] = 0;
|
}
|
||||||
}
|
else
|
||||||
else if (event.jaxis.value > 16384)
|
{
|
||||||
{
|
pressed[offset + 0] = 0;
|
||||||
pressed[0x100 +
|
pressed[offset + 1] = 0;
|
||||||
event.jaxis.which * 32 + 2 * j + 0] = 1;
|
|
||||||
pressed[0x100 +
|
|
||||||
event.jaxis.which * 32 + 2 * j + 1] = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pressed[0x100 +
|
|
||||||
event.jaxis.which * 32 + 2 * j + 0] = 0;
|
|
||||||
pressed[0x100 +
|
|
||||||
event.jaxis.which * 32 + 2 * j + 1] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_JOYBUTTONDOWN:
|
case SDL_JOYBUTTONDOWN:
|
||||||
pressed[0x100 + event.jbutton.which * 32 + 16 +
|
offset = ButtonOffset[event.jbutton.which];
|
||||||
event.jbutton.button] = 1;
|
offset += event.jbutton.button;
|
||||||
|
// printf("DEBUG button offset: %d\n", offset);
|
||||||
|
if (offset >= (256 + 128 + 64)) break;
|
||||||
|
pressed[offset] = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_JOYBUTTONUP:
|
case SDL_JOYBUTTONUP:
|
||||||
pressed[0x100 + event.jbutton.which * 32 + 16 +
|
offset = ButtonOffset[event.jbutton.which];
|
||||||
event.jbutton.button] = 0;
|
offset += event.jbutton.button;
|
||||||
|
// printf("DEBUG button offset: %d\n", offset);
|
||||||
|
if (offset >= (256 + 64)) break;
|
||||||
|
pressed[offset] = 0;
|
||||||
break;
|
break;
|
||||||
case SDL_QUIT:
|
case SDL_QUIT:
|
||||||
LinuxExit();
|
LinuxExit();
|
||||||
@@ -584,6 +582,8 @@ int ReInitSound(void)
|
|||||||
BOOL InitJoystickInput(void)
|
BOOL InitJoystickInput(void)
|
||||||
{
|
{
|
||||||
int i, max_num_joysticks;
|
int i, max_num_joysticks;
|
||||||
|
int num_axes, num_buttons, num_hats, num_balls;
|
||||||
|
int js_fail = 0;
|
||||||
|
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
JoystickInput[i] = NULL;
|
JoystickInput[i] = NULL;
|
||||||
@@ -602,12 +602,51 @@ BOOL InitJoystickInput(void)
|
|||||||
SDL_JoystickEventState(SDL_ENABLE);
|
SDL_JoystickEventState(SDL_ENABLE);
|
||||||
|
|
||||||
if (max_num_joysticks > 5) max_num_joysticks = 5;
|
if (max_num_joysticks > 5) max_num_joysticks = 5;
|
||||||
|
|
||||||
for (i = 0; i < max_num_joysticks; i++)
|
for (i = 0; i < max_num_joysticks; i++)
|
||||||
{
|
{
|
||||||
JoystickInput[i] = SDL_JoystickOpen(i);
|
JoystickInput[i] = SDL_JoystickOpen(i);
|
||||||
printf("Joystick %i (%i Buttons): %s\n", i,
|
num_axes = SDL_JoystickNumAxes(JoystickInput[i]);
|
||||||
SDL_JoystickNumButtons(JoystickInput[i]),
|
num_buttons = SDL_JoystickNumButtons(JoystickInput[i]);
|
||||||
SDL_JoystickName(i));
|
num_hats = SDL_JoystickNumHats(JoystickInput[i]);
|
||||||
|
num_balls = SDL_JoystickNumBalls(JoystickInput[i]);
|
||||||
|
printf("Device %i %s\n", i, SDL_JoystickName(i));
|
||||||
|
printf(" %i axis, %i buttons, %i hats, %i balls\n",
|
||||||
|
num_axes, num_buttons, num_hats, num_balls);
|
||||||
|
|
||||||
|
if (js_fail)
|
||||||
|
{
|
||||||
|
printf("Warning: Joystick won't work.\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
|
AxisOffset[0] = 256; // After key data
|
||||||
|
ButtonOffset[0] = AxisOffset[0] + num_axes * 2;
|
||||||
|
// printf("ButtonOffset %d\n", ButtonOffset[0]);
|
||||||
|
HatOffset[0] = ButtonOffset[0] + num_buttons;
|
||||||
|
// printf("HatOffset %d\n", HatOffset[0]);
|
||||||
|
BallOffset[0] = HatOffset[0] + num_hats * 4;
|
||||||
|
// printf("BallOffset %d\n", BallOffset[0]);
|
||||||
|
if ((BallOffset[0] + num_balls * 4) >= (256 + 128 + 64))
|
||||||
|
js_fail = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AxisOffset[i] = BallOffset[i - 1] +
|
||||||
|
SDL_JoystickNumBalls(JoystickInput[i - 1]);
|
||||||
|
ButtonOffset[i] = AxisOffset[i] + num_axes * 2;
|
||||||
|
HatOffset[i] = ButtonOffset[i] + num_buttons;
|
||||||
|
BallOffset[i] = HatOffset[i] + num_hats * 4;
|
||||||
|
if ((BallOffset[i] + num_balls * 4) >= (256 + 128 + 64))
|
||||||
|
js_fail = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (js_fail)
|
||||||
|
{
|
||||||
|
printf("Warning: Too many buttons, axes, hats and/or Balls!\n");
|
||||||
|
printf("Warning: Joystick won't work fully.\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||
Reference in New Issue
Block a user