Merge pull request #59 from JayFoxRox/xid-update

XID update
This commit is contained in:
espes 2015-09-06 10:11:56 +10:00
commit fcbc057e54
1 changed files with 52 additions and 13 deletions

View File

@ -168,6 +168,11 @@ static const XIDDesc desc_xid_xbox_gamepad = {
#define GAMEPAD_LEFT_THUMB_LEFT 18
#define GAMEPAD_LEFT_THUMB_RIGHT 19
#define GAMEPAD_RIGHT_THUMB_UP 20
#define GAMEPAD_RIGHT_THUMB_DOWN 21
#define GAMEPAD_RIGHT_THUMB_LEFT 22
#define GAMEPAD_RIGHT_THUMB_RIGHT 23
static const int gamepad_mapping[] = {
[0 ... Q_KEY_CODE_MAX] = -1,
@ -183,17 +188,27 @@ static const int gamepad_mapping[] = {
[Q_KEY_CODE_RET] = GAMEPAD_START,
[Q_KEY_CODE_BACKSPACE] = GAMEPAD_BACK,
[Q_KEY_CODE_Z] = GAMEPAD_A,
[Q_KEY_CODE_X] = GAMEPAD_B,
[Q_KEY_CODE_A] = GAMEPAD_X,
[Q_KEY_CODE_S] = GAMEPAD_Y,
[Q_KEY_CODE_Q] = GAMEPAD_LEFT_TRIGGER,
[Q_KEY_CODE_W] = GAMEPAD_RIGHT_TRIGGER,
[Q_KEY_CODE_W] = GAMEPAD_X,
[Q_KEY_CODE_E] = GAMEPAD_Y,
[Q_KEY_CODE_S] = GAMEPAD_A,
[Q_KEY_CODE_D] = GAMEPAD_B,
[Q_KEY_CODE_X] = GAMEPAD_WHITE,
[Q_KEY_CODE_C] = GAMEPAD_BLACK,
[Q_KEY_CODE_U] = GAMEPAD_LEFT_THUMB_UP,
[Q_KEY_CODE_J] = GAMEPAD_LEFT_THUMB_DOWN,
[Q_KEY_CODE_H] = GAMEPAD_LEFT_THUMB_LEFT,
[Q_KEY_CODE_K] = GAMEPAD_LEFT_THUMB_RIGHT,
[Q_KEY_CODE_Q] = GAMEPAD_LEFT_TRIGGER,
[Q_KEY_CODE_R] = GAMEPAD_RIGHT_TRIGGER,
[Q_KEY_CODE_V] = GAMEPAD_LEFT_THUMB,
[Q_KEY_CODE_T] = GAMEPAD_LEFT_THUMB_UP,
[Q_KEY_CODE_F] = GAMEPAD_LEFT_THUMB_LEFT,
[Q_KEY_CODE_G] = GAMEPAD_LEFT_THUMB_DOWN,
[Q_KEY_CODE_H] = GAMEPAD_LEFT_THUMB_RIGHT,
[Q_KEY_CODE_M] = GAMEPAD_RIGHT_THUMB,
[Q_KEY_CODE_I] = GAMEPAD_RIGHT_THUMB_UP,
[Q_KEY_CODE_J] = GAMEPAD_RIGHT_THUMB_LEFT,
[Q_KEY_CODE_K] = GAMEPAD_RIGHT_THUMB_DOWN,
[Q_KEY_CODE_L] = GAMEPAD_RIGHT_THUMB_RIGHT,
};
static void xbox_gamepad_keyboard_event(void *opaque, int keycode)
@ -231,6 +246,19 @@ static void xbox_gamepad_keyboard_event(void *opaque, int keycode)
case GAMEPAD_LEFT_THUMB_RIGHT:
s->in_state.sThumbLX = up?0:32767;
break;
case GAMEPAD_RIGHT_THUMB_UP:
s->in_state.sThumbRY = up?0:32767;
break;
case GAMEPAD_RIGHT_THUMB_DOWN:
s->in_state.sThumbRY = up?0:-32768;
break;
case GAMEPAD_RIGHT_THUMB_LEFT:
s->in_state.sThumbRX = up?0:-32768;
break;
case GAMEPAD_RIGHT_THUMB_RIGHT:
s->in_state.sThumbRX = up?0:32767;
break;
default:
break;
}
@ -297,17 +325,28 @@ static void usb_xid_handle_control(USBDevice *dev, USBPacket *p,
break;
case VendorInterfaceRequest | XID_GET_CAPABILITIES:
DPRINTF("xid XID_GET_CAPABILITIES 0x%x\n", value);
//FIXME: !
/* FIXME: ! */
p->status = USB_RET_STALL;
//assert(false);
break;
case ((USB_DIR_IN|USB_TYPE_CLASS|USB_RECIP_DEVICE)<<8) | 0x06:
DPRINTF("xid unknown xpad request 1: value = 0x%x\n", value);
case ((USB_DIR_IN|USB_TYPE_CLASS|USB_RECIP_DEVICE)<<8)
| USB_REQ_GET_DESCRIPTOR:
/* FIXME: ! */
DPRINTF("xid unknown xpad request 0x%x: value = 0x%x\n",
request, value);
memset(data, 0x00, length);
//FIXME: Intended for the hub: usbd_get_hub_descriptor, UT_READ_CLASS?!
p->status = USB_RET_STALL;
//assert(false);
break;
case ((USB_DIR_OUT|USB_TYPE_STANDARD|USB_RECIP_ENDPOINT)<<8)
| USB_REQ_CLEAR_FEATURE:
/* FIXME: ! */
DPRINTF("xid unknown xpad request 0x%x: value = 0x%x\n",
request, value);
memset(data, 0x00, length);
p->status = USB_RET_STALL;
break;
default:
DPRINTF("xid USB stalled on request 0x%x value 0x%x\n", request, value);
p->status = USB_RET_STALL;