Any HID (Human Input Device) compliant joysticks can be used. XBox 360 game controllers have two joysticks, a D-pad and a number of buttons. The joystick portion is the same as any other joysticks or game controllers. However, the button mappings are different. Here is the button map I used:
Code:
#define Btn(n) (1 << (n))
//
// Logitech Joystick:
// UsagePage=0x01, Usage=0x04
//
#define Logitech_Trigger Btn(0)
#define Logitech_Btn2 Btn(1)
#define Logitech_Btn3 Btn(2)
#define Logitech_Btn4 Btn(3)
#define Logitech_Btn5 Btn(4)
#define Logitech_Btn6 Btn(5)
#define Logitech_Btn7 Btn(6)
#define Logitech_Btn8 Btn(7)
#define Logitech_Btn9 Btn(8)
#define Logitech_Btn10 Btn(9)
#define Logitech_Btn11 Btn(10)
#define Logitech_Btn12 Btn(11)
//
// Microsoft SideWinder Joystick:
// UsagePage=0x01, Usage=0x04
//
#define SideWinder_Trigger Btn(0)
#define SideWinder_Btn2 Btn(1)
#define SideWinder_Btn3 Btn(2)
#define SideWinder_Btn4 Btn(3)
#define SideWinder_BtnA Btn(4)
#define SideWinder_BtnB Btn(5)
#define SideWinder_BtnC Btn(6)
#define SideWinder_BtnD Btn(7)
#define SideWinder_Btn9 Btn(8)
//
// Microsoft Xbox Game Controller:
// UsagePage=0x01, Usage=0x05
//
#define Xbox_BtnA Btn(0)
#define Xbox_BtnB Btn(1)
#define Xbox_BtnX Btn(2)
#define Xbox_BtnY Btn(3)
#define Xbox_LB Btn(4)
#define Xbox_RB Btn(5)
#define Xbox_Back Btn(6)
#define Xbox_Start Btn(7)