使xbox控制器适应简单的ncurses游戏

使xbox控制器适应简单的ncurses游戏,c,embedded-linux,xbox360,C,Embedded Linux,Xbox360,这是处理设备的部分,之后在移动部分我有这些代码 libusb_device_handle *h; int transferred , r; r = libusb_init(NULL); libusb_set_debug(NULL, 3); /

这是处理设备的部分,之后在移动部分我有这些代码

libusb_device_handle *h;                                                                                      
int transferred , r;                          
r = libusb_init(NULL);                
libusb_set_debug(NULL, 3);

//Open device                                               
h = libusb_open_device_with_vid_pid(NULL, 0x045e, 0x028e);
if (h == NULL) {
    fprintf(stderr, "Failed to open device\n");
    return (1);
}


r = libusb_kernel_driver_active(h,0); 
if(r>0)
    r = libusb_detach_kernel_driver(h,0);

r = libusb_claim_interface(h,0);

if(r!=0)
{
    fprintf(stderr, "Interface failed: %d\n",r);
    return (1);
} 
但是有了这段代码,你就不能移动蛇了。这是怎么回事

unsigned char buffer[20];
    libusb_interrupt_transfer(h, 0x81, buffer, sizeof (buffer),  &transferred, 0);
char direction = 'l';

    if (((buffer[3] >> 6)&0x01)) {
    if (direction != 'r')
        direction = 'l';
}
if (((buffer[3] >> 7)&0x01)) {
    if (direction != 'd')
        direction = 'u';
}
if (((buffer[3] >> 4)&0x01)) {
    if (direction != 'u')
        direction = 'd';
}
if (((buffer[3] >> 5)&0x01)) {
    if (direction != 'l')
        direction = 'r';
}