• 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 */
  • 相关阅读:
    minimsg升级扩展
    一起学习Avalonia(十三)
    @Import注解源码
    Python入门随记(3)
    NET WebApi 后端重定向指定链接
    Net Nlog 持久化到数据库
    NetCore Xunit单元测试依赖注入
    VS 调试时,提示无法启动iis服务器
    NET 反射,对可空类型动态赋值
    MSSQL 查询表结构
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/5352510.html
Copyright © 2020-2023  润新知