关于模拟一个Xbox 设备时的按键数量问题

[复制链接]
1392|4
 楼主| 1779564238 发表于 2020-4-27 10:22 | 显示全部楼层 |阅读模式
背景:
因需要,自己的板子(GD32F150c8t6的主控)要做成一个Xbox 设备,当做xBOx手柄用,借鉴了前人的经验,实现了Xbox 的功能,但是还有很多地方不懂 ,最重要的是游戏控制器的按键数量问题,怎么改报告描述符都是10个按键,求有经验的大佬给小弟点拨一下,下面是配置描述符
  1. const uint8_t XBOX_ConfigDescriptor[XBOX_SIZ_CONFIG_DESC] =
  2.   {
  3.     0x09, /* bLength: Configuration Descriptor size */
  4.     USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
  5.     XBOX_SIZ_CONFIG_DESC,
  6.     /* wTotalLength: Bytes returned */
  7.     0x00,
  8.     0x01,         /* bNumInterfaces: 1 interface */
  9.     0x01,         /* bConfigurationValue: Configuration value */
  10.     0x00,         /* iConfiguration: Index of string descriptor describing
  11.                                  the configuration*/
  12.     0x80,         /* bmAttributes: Bus powered, Remote wakeup */
  13.     0xFA,         /* MaxPower 500 mA: this current is used for detecting Vbus */

  14.     /************** Descriptor of Vendor-Specific interface ****************/
  15.     /* 09 */
  16.     0x09,         /* bLength: Interface Descriptor size */
  17.     USB_INTERFACE_DESCRIPTOR_TYPE,/* bDescriptorType: Interface descriptor type */
  18.     0x00,         /* bInterfaceNumber: Number of Interface */
  19.     0x00,         /* bAlternateSetting: Alternate setting */
  20.     0x02,         /* bNumEndpoints */
  21.     0xFF,         /* bInterfaceClass: Vendor-Specific */
  22.     0x5D,         /* bInterfaceSubClass */
  23.     0x01,         /* nInterfaceProtocol */
  24.     0,            /* iInterface: Index of string descriptor */
  25.     /******************** Descriptor of Class-Specific ********************/
  26.     /* 18 */
  27.     0x10,         /* bLength: Descriptor size */
  28.     0x21,                         /* bDescriptorType : hid */
  29.     0x10, 0x01,   /* bcdHID: HID Class Spec release number  0110 */
  30.         0x01,  
  31.         0x24,
  32.         0x81,
  33.         0x14,
  34.         0x03,
  35.         0x00,
  36.         0x03,
  37.         0x13,
  38.         0x02,
  39.         0x00,
  40.         0x03,
  41.         0x00,
  42.     /******************** Descriptor of endpoints ******************/
  43.     /* 27 */
  44.     0x07,          /* bLength: Endpoint Descriptor size */
  45.     USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */

  46.     0x81,          /* bEndpointAddress: Endpoint Address (IN) */
  47.     0x03,          /* bmAttributes: Interrupt endpoint */
  48.     0x20,          /* wMaxPacketSize: 32 Bytes max */
  49.     0x00,
  50.     0x04,          /* bInterval: Polling Interval (4 ms) */
  51.     /* 34 */
  52.            
  53.     0x07,        /* bLength: Endpoint Descriptor size */
  54.     USB_ENDPOINT_DESCRIPTOR_TYPE,        /* bDescriptorType: */
  55.                         /*        Endpoint descriptor type */
  56.     0x02,        /* bEndpointAddress: */
  57.                         /*        Endpoint Address (OUT) */
  58.     0x03,        /* bmAttributes: Interrupt endpoint */
  59.     0x20,        /* wMaxPacketSize: 32 Bytes max  */
  60.     0x00,
  61.     0x08,        /* bInterval: Polling Interval (8 ms) */
  62.     /* 41 */
  63.   }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 1779564238 发表于 2020-4-27 10:25 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 1779564238 发表于 2020-4-27 10:30 | 显示全部楼层
再附上报告描述符
  1. const uint8_t XBOX_ReportDescriptor[XBOX_SIZ_REPORT_DESC] =
  2. {                    
  3.    /* 0 - 7 */
  4.         0x05, 0x01,                  /* USAGE_PAGE (Generic Desktop) */
  5.         0x09, 0x04,                  /* USAGE (Joystick) */
  6.         0xA1, 0x01,                         /* COLLECTION (Application) */
  7.         0xA1, 0x02,                   /* COLLECTION (Logical) */
  8.        
  9.         //输入报告配置
  10.         /* 8 - 31 */
  11.         0x15, 0x00,             /* Logical Minimum (0) */
  12.         0x26, 0xFF, 0x03,       /* Logical Maximum (1023) */
  13.         0x35, 0x00,                        /* Physical Minimum (0) */
  14.         0x46, 0xFF, 0x03,       /* Physical Maximum (1023) */
  15.         0x75, 0x0A,                        /* Report Size (10) */       
  16.         0x95, 0x01,             /* Report Count (1) */       
  17.         0x09, 0x30,                        /* Usage (X) */       
  18.         0x81, 0x02,             /* Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) */       
  19.         0x75, 0x06,                        /* Report Size (6) */       
  20.         0x95, 0x01,             /* Report Count (1) */                       
  21.         0x81, 0x01,                                /* Input (Cnst,Ary,Abs) */        
  22.        
  23.         /* 32 - 47*/
  24.         0x26, 0xFF, 0x00,       /* Logical Maximum (255) */
  25.         0x46, 0xFF, 0x00,       /* Physical Maximum (255) */
  26.         0x75, 0x08,                        /* Report Size (8) */       
  27.         0x95, 0x02,             /* Report Count (2) */       
  28.         0x09, 0x31,                        /* Usage (Y) */                       
  29.         0x09, 0x32,                        /* Usage (Z) */       
  30.         0x81, 0x02,             /* Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) */
  31.        
  32.         /* 48 - 69*/
  33.         0x75, 0x01,             /* Report Size (1) */               
  34.         0x95, 0x17,                        /* Report Count (23) */               
  35.         0x25, 0x01,             /* Logical Maximum (1) */       
  36.         0x45, 0x01,             /* Physical Maximum (1) */
  37.         0x05, 0x09,                        /* Usage Page (Button) */
  38.         0x19, 0x01,                        /* Usage Minimum (Button 1) */
  39.         0x29, 0x17,             /* Usage Maximum (Button 23) */
  40.         0x81, 0x02,             /* Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) */
  41.         0x75, 0x01,                        /* Report Size (1) */               
  42.         0x95, 0x01,             /* Report Count (1) */
  43.         0x81, 0x01,                                /* Input (Cnst,Ary,Abs) */
  44.        
  45.         /* 70 - 87*/
  46.         0x06, 0x00, 0xFF,                /* Usage Page (Vendor-Defined 1) */  
  47.         0x09, 0x01,                                /* Usage (Vendor-Defined 1) */
  48.         0x26, 0xFF, 0x00,       /* Logical Maximum (255) */
  49.         0x46, 0xFF, 0x00,       /* Physical Maximum (255) */
  50.         0x75, 0x08,             /* Report Size (8) */
  51.         0x95, 0x01,                        /* Report Count (1) */
  52.         0x81, 0x02,             /* Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) */
  53.         0xC0,                   /* End Collection */
  54.        
  55.         /* 88 - 103*/
  56.         0xA1, 0x02,                   /* COLLECTION (Logical) */
  57.         0x75, 0x08,             /* Report Size (8) */     
  58.         0x95, 0x38,                        /* Report Count (56) */
  59.         0x46, 0xFF, 0x00,       /* Physical Maximum (255) */
  60.         0x26, 0xFF, 0x00,       /* Logical Maximum (255) */
  61.         0x09, 0x02,             /* Usage (Vendor-Defined 2) */       
  62.         0x81, 0x02,             /* Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) */
  63.        
  64.         //输出报告配置
  65.         /* 104 - 117*/
  66.         0x75, 0x08,                       /* Report Size (8) */               
  67.         0x95, 0x40,                                  /* Report Count (64) */
  68.         0x46, 0xFF, 0x00,       /* Physical Maximum (255) */
  69.         0x26, 0xFF, 0x00,       /* Logical Maximum (255) */
  70.         0x09, 0x03,             /* Usage (Vendor-Defined 3) */       
  71.         0x91, 0x02,                        /* Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) */
  72.        
  73.         /* 118 - 136*/
  74.         0x75, 0x08,                       /* Report Size (8) */               
  75.         0x95, 0x03,                        /* Report Count (3) */
  76.         0x26, 0xFF, 0x00,       /* Logical Maximum (255) */
  77.         0x46, 0xFF, 0x00,       /* Physical Maximum (255) */
  78.         0x09, 0x01,             /* Usage (Vendor-Defined 1) */
  79.         0x09, 0x02,             /* Usage (Vendor-Defined 2) */
  80.         0x09, 0x03,             /* Usage (Vendor-Defined 3) */
  81.         0xB1, 0x02,                                /* Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) */
  82.         0xC0,                   /* End Collection */
  83.        
  84.         /*137*/
  85.         0xC0                 /* End Collection */
  86. }; /* CustomHID_ReportDescriptor */
 楼主| 1779564238 发表于 2020-4-27 10:34 | 显示全部楼层
1779564238 发表于 2020-4-27 10:30
再附上报告描述符

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xgx520 发表于 2021-7-29 18:08 | 显示全部楼层
您好,请问下调好了吗?我现在也在开发个游戏手柄,能交流下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

67

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部