<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic USB HID Keyboard LPC1754 in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/USB-HID-Keyboard-LPC1754/m-p/523648#M6284</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by maxxracing on Fri Dec 04 06:35:51 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would like to make a USB HID Keyboard with my LPC1754.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have already a program with the LPC1754 with a usb hid, but i on the PC side i have a software that make a HID connection and after that a make transactions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would like that my board be recognised by the PC like a hid keyboard, and the datas send to the PC will be write on the active cursor like a hid keyboard.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I already modify HID_ReportDescriptor[] in the file usbdesc.c, the PC recognised the board like a keyboard PIH, so i think it's a good start.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But after that i can't send data to the PC.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have in the file usbuser.c this callback, but since i modify HID_ReportDescriptor, it's not tell:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *&amp;nbsp; USB Endpoint 1 Event Callback&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *&amp;nbsp;&amp;nbsp; Called automatically on USB Endpoint 1 Event&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *&amp;nbsp;&amp;nbsp;&amp;nbsp; Parameter:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void USB_EndPoint1 (uint32_t event) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; switch (event) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case USB_EVT_IN:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetInReport();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_WriteEP(HID_EP_IN, &amp;amp;InReport, sizeof(InReport));&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;file usbdesc.c :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;const uint8_t HID_ReportDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0x05, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* USAGE_PAGE (Generic Desktop) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0x09, 0x06,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* USAGE (Keyboard) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0xa1, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* COLLECTION (Application) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x05, 0x07,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_PAGE (Keyboard) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x85, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_ID (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Ctrl, Shift and other modifier keys, 8 in total */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x19, 0xe0,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MINIMUM (kbd LeftControl) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x29, 0xe7,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MAXIMUM (kbd Right GUI) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x15, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MINIMUM (0) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x25, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MAXIMUM (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (8) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x81, 0x02,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; INPUT (Data,Var,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Reserved byte */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /******/ 0x75, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (8) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x81, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; INPUT (Cnst,Ary,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* LEDs for num lock etc */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x05,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (5) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x05, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_PAGE (LEDs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x85, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_ID (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x19, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MINIMUM (Num Lock) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x29, 0x05,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MAXIMUM (Kana) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x91, 0x02,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; OUTPUT (Data,Var,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Reserved 3 bits */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x03,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (3) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x91, 0x03,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; OUTPUT (Cnst,Var,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Slots for 6 keys that can be pressed down at the same time */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x06,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (6) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (8) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x15, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MINIMUM (0) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x25, 0x65,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MAXIMUM (101) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /******/ 0x05, 0x07,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_PAGE (Keyboard) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x19, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MINIMUM (Reserved (no event indicated)) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x29, 0x65,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MAXIMUM (Keyboard Application) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x81, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; INPUT (Data,Ary,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0xc0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // END_COLLECTION&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* USB Standard Device Descriptor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;const uint8_t USB_DeviceDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_DEVICE_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_DEVICE_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0200), /* 2.00 */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bcdUSB */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDeviceClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDeviceSubClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDeviceProtocol */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_MAX_PACKET0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bMaxPacketSize0 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x1FC9),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* idVendor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x8002),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* idProduct */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0100), /* 1.00 */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bcdDevice */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iManufacturer */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iProduct */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x03,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iSerialNumber */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumConfigurations: one possible configuration*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* USB Configuration Descriptor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&amp;nbsp;&amp;nbsp; All Descriptors (Configuration, Interface, Endpoint, Class, Vendor) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;const uint8_t USB_ConfigDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Configuration 1 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIGUARTION_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wTotalLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_CONFIGUARTION_DESC_SIZE +&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_INTERFACE_DESC_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HID_DESC_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_ENDPOINT_DESC_SIZE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; ),&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumInterfaces */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bConfigurationValue */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iConfiguration */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIG_BUS_POWERED /*|*/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bmAttributes */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*USB_CONFIG_REMOTE_WAKEUP*/,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIG_POWER_MA(100),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bMaxPower */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Interface 0, Alternate Setting 0, HID Class */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_INTERFACE_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_INTERFACE_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterfaceNumber */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bAlternateSetting */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumEndpoints */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_DEVICE_CLASS_HUMAN_INTERFACE,&amp;nbsp; /* bInterfaceClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_SUBCLASS_NONE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterfaceSubClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_PROTOCOL_NONE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterfaceProtocol */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x04,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iInterface */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* HID Class Descriptor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* HID_DESC_OFFSET = 0x0012 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_HID_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0100), /* 1.00 */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bcdHID */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bCountryCode */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumDescriptors */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_REPORT_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(HID_REPORT_DESC_SIZE),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wDescriptorLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Endpoint, HID Interrupt In */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_IN(1),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bEndpointAddress */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_TYPE_INTERRUPT,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bmAttributes */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0040),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wMaxPacketSize */ //OLD 0x0004&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 32ms */ //OLD 0x20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterval */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Terminator */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If someone can help me :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you need i can send more code for help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank's.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 16:46:12 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T16:46:12Z</dc:date>
    <item>
      <title>USB HID Keyboard LPC1754</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/USB-HID-Keyboard-LPC1754/m-p/523648#M6284</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by maxxracing on Fri Dec 04 06:35:51 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would like to make a USB HID Keyboard with my LPC1754.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have already a program with the LPC1754 with a usb hid, but i on the PC side i have a software that make a HID connection and after that a make transactions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would like that my board be recognised by the PC like a hid keyboard, and the datas send to the PC will be write on the active cursor like a hid keyboard.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I already modify HID_ReportDescriptor[] in the file usbdesc.c, the PC recognised the board like a keyboard PIH, so i think it's a good start.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But after that i can't send data to the PC.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have in the file usbuser.c this callback, but since i modify HID_ReportDescriptor, it's not tell:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *&amp;nbsp; USB Endpoint 1 Event Callback&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *&amp;nbsp;&amp;nbsp; Called automatically on USB Endpoint 1 Event&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *&amp;nbsp;&amp;nbsp;&amp;nbsp; Parameter:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void USB_EndPoint1 (uint32_t event) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; switch (event) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case USB_EVT_IN:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetInReport();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_WriteEP(HID_EP_IN, &amp;amp;InReport, sizeof(InReport));&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;file usbdesc.c :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;const uint8_t HID_ReportDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0x05, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* USAGE_PAGE (Generic Desktop) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0x09, 0x06,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* USAGE (Keyboard) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0xa1, 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* COLLECTION (Application) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x05, 0x07,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_PAGE (Keyboard) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x85, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_ID (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Ctrl, Shift and other modifier keys, 8 in total */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x19, 0xe0,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MINIMUM (kbd LeftControl) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x29, 0xe7,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MAXIMUM (kbd Right GUI) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x15, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MINIMUM (0) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x25, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MAXIMUM (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (8) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x81, 0x02,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; INPUT (Data,Var,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Reserved byte */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /******/ 0x75, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (8) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x81, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; INPUT (Cnst,Ary,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* LEDs for num lock etc */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x05,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (5) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x05, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_PAGE (LEDs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x85, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_ID (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x19, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MINIMUM (Num Lock) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x29, 0x05,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MAXIMUM (Kana) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x91, 0x02,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; OUTPUT (Data,Var,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Reserved 3 bits */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x01,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (1) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x03,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (3) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x91, 0x03,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; OUTPUT (Cnst,Var,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Slots for 6 keys that can be pressed down at the same time */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x95, 0x06,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_COUNT (6) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x75, 0x08,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; REPORT_SIZE (8) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x15, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MINIMUM (0) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x25, 0x65,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; LOGICAL_MAXIMUM (101) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /******/ 0x05, 0x07,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_PAGE (Keyboard) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x19, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MINIMUM (Reserved (no event indicated)) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x29, 0x65,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; USAGE_MAXIMUM (Keyboard Application) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/******/ 0x81, 0x00,&amp;nbsp;&amp;nbsp; /*&amp;nbsp;&amp;nbsp; INPUT (Data,Ary,Abs) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/****/ 0xc0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // END_COLLECTION&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* USB Standard Device Descriptor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;const uint8_t USB_DeviceDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_DEVICE_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_DEVICE_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0200), /* 2.00 */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bcdUSB */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDeviceClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDeviceSubClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDeviceProtocol */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_MAX_PACKET0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bMaxPacketSize0 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x1FC9),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* idVendor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x8002),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* idProduct */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0100), /* 1.00 */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bcdDevice */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iManufacturer */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x02,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iProduct */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x03,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iSerialNumber */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumConfigurations: one possible configuration*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* USB Configuration Descriptor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*&amp;nbsp;&amp;nbsp; All Descriptors (Configuration, Interface, Endpoint, Class, Vendor) */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;const uint8_t USB_ConfigDescriptor[] = {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Configuration 1 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIGUARTION_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wTotalLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_CONFIGUARTION_DESC_SIZE +&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_INTERFACE_DESC_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HID_DESC_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_ENDPOINT_DESC_SIZE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; ),&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumInterfaces */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bConfigurationValue */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iConfiguration */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIG_BUS_POWERED /*|*/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bmAttributes */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*USB_CONFIG_REMOTE_WAKEUP*/,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_CONFIG_POWER_MA(100),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bMaxPower */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Interface 0, Alternate Setting 0, HID Class */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_INTERFACE_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_INTERFACE_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterfaceNumber */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bAlternateSetting */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumEndpoints */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_DEVICE_CLASS_HUMAN_INTERFACE,&amp;nbsp; /* bInterfaceClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_SUBCLASS_NONE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterfaceSubClass */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_PROTOCOL_NONE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterfaceProtocol */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x04,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iInterface */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* HID Class Descriptor */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* HID_DESC_OFFSET = 0x0012 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_HID_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0100), /* 1.00 */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bcdHID */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bCountryCode */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x01,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bNumDescriptors */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; HID_REPORT_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(HID_REPORT_DESC_SIZE),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wDescriptorLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Endpoint, HID Interrupt In */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_DESC_SIZE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_IN(1),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bEndpointAddress */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; USB_ENDPOINT_TYPE_INTERRUPT,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bmAttributes */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; WBVAL(0x0040),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* wMaxPacketSize */ //OLD 0x0004&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x40,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 32ms */ //OLD 0x20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterval */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Terminator */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bLength */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If someone can help me :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you need i can send more code for help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank's.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:46:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/USB-HID-Keyboard-LPC1754/m-p/523648#M6284</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:46:12Z</dc:date>
    </item>
  </channel>
</rss>

