cancel
Showing results for 
Search instead for 
Did you mean: 

how can I have keyboard and mouse in same programm in hid, the id report not responding

goobinooz
Associate II

the id report for example :

mouse[0] = 0x01; // id 1

mouse[2] = 100; // axe Y

USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, mouse, 4);

HAL_Delay(1000);

mouse[2] = 0;

USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, mouse, 4);

__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =

{

 0x05,  0x01,

 0x09,  0x02,

 0xA1,  0x01,

 0x09,  0x01,

 0xA1,  0x00,

 0x05,  0x09,

 0x85,  0x01, //id report 1

 0x19,  0x01,

 0x29,  0x03,

 0x15,  0x00,

 0x25,  0x01,

 0x95,  0x03,

 0x75,  0x01,

 0x81,  0x02,

 0x95,  0x01,

 0x75,  0x05,

 0x81,  0x01,

 0x05,  0x01,

 0x09,  0x30,

 0x09,  0x31,

 0x09,  0x38,

 0x15,  0x81,

 0x25,  0x7F,

 0x75,  0x08,

 0x95,  0x03,

 0x81,  0x06,

 0xC0,  0x09,

 0x3c,  0x05,

 0xff,  0x09,

 0x01,  0x15,

 0x00,  0x25,

 0x01,  0x75,

 0x01,  0x95,

 0x02,  0xb1,

 0x22,  0x75,

 0x06,  0x95,

 0x01,  0xb1,

 0x01,  0xc0,

  0x05, 0x01,          // USAGE_PAGE (Generic Desktop)

  0x09, 0x06,          // USAGE (Keyboard)

  0xa1, 0x01,          // COLLECTION (Application)

  0x05, 0x07,          //  USAGE_PAGE (Keyboard)

0x85, 0x02, // id report 2

  0x19, 0xe0,          //  USAGE_MINIMUM (Keyboard LeftControl)

  0x29, 0xe7,          //  USAGE_MAXIMUM (Keyboard Right GUI)

  0x15, 0x00,          //  LOGICAL_MINIMUM (0)

  0x25, 0x01,          //  LOGICAL_MAXIMUM (1)

  0x75, 0x01,          //  REPORT_SIZE (1)

  0x95, 0x08,          //  REPORT_COUNT (8)

  0x81, 0x02,          //  INPUT (Data,Var,Abs)

  0x95, 0x01,          //  REPORT_COUNT (1)

  0x75, 0x08,          //  REPORT_SIZE (8)

  0x81, 0x03,          //  INPUT (Cnst,Var,Abs)

  0x95, 0x05,          //  REPORT_COUNT (5)

  0x75, 0x01,          //  REPORT_SIZE (1)

  0x05, 0x08,          //  USAGE_PAGE (LEDs)

  0x19, 0x01,          //  USAGE_MINIMUM (Num Lock)

  0x29, 0x05,          //  USAGE_MAXIMUM (Kana)

  0x91, 0x02,          //  OUTPUT (Data,Var,Abs)

  0x95, 0x01,          //  REPORT_COUNT (1)

  0x75, 0x03,          //  REPORT_SIZE (3)

  0x91, 0x03,          //  OUTPUT (Cnst,Var,Abs)

  0x95, 0x06,          //  REPORT_COUNT (6)

  0x75, 0x08,          //  REPORT_SIZE (8)

  0x15, 0x00,          //  LOGICAL_MINIMUM (0)

  0x25, 0x65,          //  LOGICAL_MAXIMUM (101)

  0x05, 0x07,          //  USAGE_PAGE (Keyboard)

  0x19, 0x00,          //  USAGE_MINIMUM (Reserved (no event indicated))

  0x29, 0x65,          //  USAGE_MAXIMUM (Keyboard Application)

  0x81, 0x00,          //  INPUT (Data,Ary,Abs)

  0xc0              // END_COLLECTION

};

the pc detect the peripheral but the keyboard and mouse don't react

can you help me please

1 REPLY 1
goobinooz
Associate II

__ALIGN_BEGIN static uint8_t USBD_CUSTOM_HID_CfgFSDesc[USB_CUSTOM_HID_CONFIG_DESC_SIZ] __ALIGN_END =

{

 0x09, /* bLength: Configuration Descriptor size */

 USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */

 USB_CUSTOM_HID_CONFIG_DESC_SIZ,

 /* wTotalLength: Bytes returned */

 0x00,

 0x01,     /*bNumInterfaces: 1 interface*/

 0x01,     /*bConfigurationValue: Configuration value*/

 0x00,     /*iConfiguration: Index of string descriptor describing

 the configuration*/

 0xC0,     /*bmAttributes: bus powered */

 0x32,     /*MaxPower 100 mA: this current is used for detecting Vbus*/

 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 /************** Descriptor of CUSTOM HID interface ****************/

 /* 09 */

 0x09,     /*bLength: Interface Descriptor size*/

 USB_DESC_TYPE_INTERFACE,/*bDescriptorType: Interface descriptor type*/

 0x00,     /*bInterfaceNumber: Number of Interface*/

 0x00,     /*bAlternateSetting: Alternate setting*/

 0x01,     /*bNumEndpoints*/

 0x03,     /*bInterfaceClass: CUSTOM_HID*/

 0x01,     /*bInterfaceSubClass : 1=BOOT, 0=no boot*/

 0x02,     /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/

 0,      /*iInterface: Index of string descriptor*/

 /******************** Descriptor of CUSTOM_HID *************************/

 /* 18 */

 0x09,     /*bLength: CUSTOM_HID Descriptor size*/

 CUSTOM_HID_DESCRIPTOR_TYPE, /*bDescriptorType: CUSTOM_HID*/

 0x11,     /*bCUSTOM_HIDUSTOM_HID: CUSTOM_HID Class Spec release number*/

 0x01,

 0x00,     /*bCountryCode: Hardware target country*/

 0x01,     /*bNumDescriptors: Number of CUSTOM_HID class descriptors to follow*/

 0x22,     /*bDescriptorType*/

 USBD_CUSTOM_HID_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/

 0x00,

 /******************** Descriptor of Custom HID endpoints ********************/

 /* 27 */

 0x07,     /*bLength: Endpoint Descriptor size*/

 USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/

 CUSTOM_HID_EPIN_ADDR,   /*bEndpointAddress: Endpoint Address (IN)*/

 0x03,     /*bmAttributes: Interrupt endpoint*/

 CUSTOM_HID_EPIN_SIZE, /*wMaxPacketSize: 2 Byte max */

 0x00,

 CUSTOM_HID_FS_BINTERVAL,     /*bInterval: Polling Interval */

 /* 34 */

 0x07,     /* bLength: Endpoint Descriptor size */

 USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: */

 CUSTOM_HID_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address (OUT)*/

 0x03, /* bmAttributes: Interrupt endpoint */

 CUSTOM_HID_EPOUT_SIZE, /* wMaxPacketSize: 2 Bytes max */

 0x00,

 CUSTOM_HID_FS_BINTERVAL, /* bInterval: Polling Interval */

 /* 41 */

};