你的位置:首页 > 操作系统

[操作系统]stm32 hid 键盘描述


/* USB Standard Device Descriptor */const uint8_t Joystick_DeviceDescriptor[JOYSTICK_SIZ_DEVICE_DESC] = {  0x12,            /*bLength */  USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/  0x00,            /*bcdUSB */  0x02,  0x00,            /*bDeviceClass*/  0x00,            /*bDeviceSubClass*/  0x00,            /*bDeviceProtocol*/  0x40,            /*bMaxPacketSize40*/  0x08,            /*idVendor (0x0483)*/  0x48,  0x57,            /*idProduct = 0x5710*/  0x10,  0x00,            /*bcdDevice rel. 2.00*/  0x02,  1,             /*Index of string descriptor describing                         manufacturer */  2,             /*Index of string descriptor describing                         product*/  3,             /*Index of string descriptor describing the                         device serial number */  0x01            /*bNumConfigurations*/ } ; /* Joystick_DeviceDescriptor *//* USB Configuration Descriptor *//*  All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */const uint8_t Joystick_ConfigDescriptor[JOYSTICK_SIZ_CONFIG_DESC] = {  0x09, /* bLength: Configuation Descriptor size */  USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */  JOYSTICK_SIZ_CONFIG_DESC,  /* 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 Joystick Mouse interface ****************/  /* 09 */  0x09,     /*bLength: Interface Descriptor size*/  USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type*/  0x00,     /*bInterfaceNumber: Number of Interface*/  0x00,     /*bAlternateSetting: Alternate setting*/  0x02,     /*bNumEndpoints*/  0x03,     /*bInterfaceClass: HID*/  0x01,     /*bInterfaceSubClass : 1=BOOT, 0=no boot*/  0x01,     /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/  0,      /*iInterface: Index of string descriptor*/  /******************** Descriptor of Joystick Mouse HID ********************/  /* 18 */  0x09,     /*bLength: HID Descriptor size*/  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/  0x00,     /*bcdHID: HID Class Spec release number*/  0x01,  0x00,     /*bCountryCode: Hardware target country*/  0x01,     /*bNumDescriptors: Number of HID class descriptors to follow*/  0x22,     /*bDescriptorType*/  JOYSTICK_SIZ_REPORT_DESC,/*wItemLength: Total length of Report descriptor*/  0x00,  /******************** Descriptor of Joystick Mouse endpoint ********************/  /* 27 */  0x07,     /*bLength: Endpoint Descriptor size*/  USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/  0x81,     /*bEndpointAddress: Endpoint Address (IN)*/  0x03,     /*bmAttributes: Interrupt endpoint*/  0x08,     /*wMaxPacketSize: 4 Byte max */  0x00,  0x20,     /*bInterval: Polling Interval (32 ms)*/  /* 34 */     0x07,     /*bLength: Endpoint Descriptor size*/   USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/    0x01,     /*bEndpointAddress: Endpoint Address (OUT)*/    0x03,     /*bmAttributes: Interrupt endpoint*/    0x08,     /*wMaxPacketSize: 8 Byte max */    0x00,    0x05,  //0x20    /*bInterval: Polling Interval (32 ms)*//* 41 */     } ; /* MOUSE_ConfigDescriptor */const uint8_t Joystick_ReportDescriptor[JOYSTICK_SIZ_REPORT_DESC] = {   0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x06, // USAGE (Keyboard) 0xa1, 0x01, // COLLECTION (Application) 0x05, 0x07, //   USAGE_PAGE (Keyboard/Keypad) 0x19, 0xe0, //   USAGE_MINIMUM (Keyboard LeftControl) 0x29, 0xe7, //   USAGE_MAXIMUM (Keyboard Right GUI) 0x15, 0x00, //   LOGICAL_MINIMUM (0) 0x25, 0x01, //   LOGICAL_MAXIMUM (1) 0x95, 0x08, //   REPORT_COUNT (8) 0x75, 0x01, //   REPORT_SIZE (1) 0x81, 0x02, //   INPUT (Data,Var,Abs) 0x95, 0x01, //   REPORT_COUNT (1) 0x75, 0x08, //   REPORT_SIZE (8) 0x81, 0x03, //   INPUT (Cnst,Var,Abs) 0x95, 0x06, //  REPORT_COUNT (6) 0x75, 0x08, //  REPORT_SIZE (8) 0x25, 0xFF, //  LOGICAL_MAXIMUM (255) 0x19, 0x00, //  USAGE_MINIMUM (Reserved (no event indicated)) 0x29, 0x65, //  USAGE_MAXIMUM (Keyboard Application) 0x81, 0x00, //   INPUT (Data,Ary,Abs) 0x25, 0x01, //   LOGICAL_MAXIMUM (1) 0x95, 0x02, //  REPORT_COUNT (2) 0x75, 0x01, //  REPORT_SIZE (1) 0x05, 0x08, //  USAGE_PAGE (LEDs) 0x19, 0x01, //  USAGE_MINIMUM (Num Lock) 0x29, 0x02, //  USAGE_MAXIMUM (Caps Lock) 0x91, 0x02, //  OUTPUT (Data,Var,Abs) 0x95, 0x01, //  REPORT_COUNT (1) 0x75, 0x06, //  REPORT_SIZE (6) 0x91, 0x03, //  OUTPUT (Cnst,Var,Abs) 0xc0    // END_COLLECTION } ; /* Joystick_ReportDescriptor *//* USB String Descriptors (optional) */const uint8_t Joystick_StringLangID[JOYSTICK_SIZ_STRING_LANGID] = {  JOYSTICK_SIZ_STRING_LANGID,  USB_STRING_DESCRIPTOR_TYPE,  0x09,  0x04 } ; /* LangID = 0x0409: U.S. English */