http://home.tele2.fr...785/openxdk.zipRecent May 2007 libraries and includes, compiled under Cygwin
It's last summer that we discovered the problem of input (isr instead of isr+dpc). Since last summer interrupts are working fine. Polling was a temporary fix prior to last summer. Call to XInput_GetEvents just sets g_Pads.
But you may still have troubles if you don't see how inputs work in the g_Pads structure:
PressedButtons.ucAnalogButtons[CONSTANT] will detect unpressed->pressed transitions of analog buttons
PressedButtons.usDigitalButtons&CONSTANT will do the same for digital buttons (see below families)
CurrentButtons.ucAnalogButtons[CONSTANT] will detect current state
CurrentButtons.usDigitalButtons&CONSTANT will detect current state
LastButtons.ucAnalogButtons[CONSTANT] will detect last transition (I've never tested it)
LastButtons.usDigitalButtons&CONSTANT will detect last transition
XInput_GetEvents();
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_Y]) debugPrint("Y");
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_X]) debugPrint("X");
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_A]) debugPrint("A");
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_B]) debugPrint("B");
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_BLACK]) debugPrint("0");
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_WHITE]) debugPrint("1");
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_LEFT_TRIGGER]) debugPrint("LT");
if (g_Pads[0].PressedButtons.ucAnalogButtons[XPAD_RIGHT_TRIGGER]) debugPrint("RT");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_DPAD_UP) debugPrint("U");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_DPAD_DOWN) debugPrint("D");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_DPAD_RIGHT) debugPrint("R");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_DPAD_LEFT) debugPrint("L");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_LEFT_THUMB) debugPrint("LS");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_RIGHT_THUMB) debugPrint("RS");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_START) debugPrint("S");
if (g_Pads[0].PressedButtons.usDigitalButtons&XPAD_BACK) debugPrint("B");
for usb keyboard and mouse see other post named "usb keyboard and mouse in openxdk"