<?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 Implementing a LPC13XX as a USB mouse [SOLVED - working code attached] in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542088#M7679</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Tue Sep 17 09:14:52 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm researching the possibility of an LPC1343, via a USB port connected to an android tablet/ PC, controlling a mouse pointer &amp;amp; associated mouse buttons.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've just read AN10904 but the demo program seems to control the LPC board, I'm looking for the other way around. Is it possible &amp;amp; if so are there examples around?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 23:16:27 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:16:27Z</dc:date>
    <item>
      <title>Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542088#M7679</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Tue Sep 17 09:14:52 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm researching the possibility of an LPC1343, via a USB port connected to an android tablet/ PC, controlling a mouse pointer &amp;amp; associated mouse buttons.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've just read AN10904 but the demo program seems to control the LPC board, I'm looking for the other way around. Is it possible &amp;amp; if so are there examples around?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542088#M7679</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:27Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542089#M7680</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Paul on Tue Sep 17 11:15:58 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Implementing a mouse function with the LPC1343 should not be difficult.&amp;nbsp; The biggest difference will be the report descriptors.&amp;nbsp; You won't be able to use the ROM drivers in the LPC1343 (although you could use the ROM drivers in the LPC1345/46/47).&amp;nbsp; I would suggest looking at the LPC11U14 example code which includes USB mouse code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;You can download the USB mouse code for the LPC11U14 at: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fnxpfile%2Flpcopen-platform" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/nxpfile/lpcopen-platform&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Paul&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542089#M7680</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542090#M7681</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Tue Sep 17 11:40:00 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Paul,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the quick reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I was looking at the LPCopen platform (v1.03), it includes a mouse example for the 1347, but from what you say about the ROM drivers I assume it won't work for the 1343?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks again,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542090#M7681</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:29Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542091#M7682</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Paul on Tue Sep 17 14:53:31 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The LPC1342/43 have a very different USB peripheral than the LPC1345/46/47, so the LPCOpen examples will not work for the LPC1342/43.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Paul&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542091#M7682</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:29Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542092#M7683</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Wed Sep 18 10:37:34 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Paul,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks again for the reply, perhaps I should have spent an extra €3 for the '1347 board! &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyway I'll give the example a try &amp;amp; perhaps post something here if I get it working.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542092#M7683</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:30Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542093#M7684</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Thu Sep 19 09:50:25 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Paul,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Apologies but another question..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've downloaded the LPCOpen v2.00 package &amp;amp; looked at some of the mouse examples for the LPC11U14. I take it I should be looking at the:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;nxp_lpcxpresso_11u14_lpcusblib_MouseDevice&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;example &amp;amp; [u]not[/u] the:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;nxp_lpcxpresso_11u14_usbd_lib_hid_mouse&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;which uses the USB ROM drivers?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542093#M7684</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:31Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542094#M7685</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Paul on Thu Sep 19 12:26:00 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The LPC11U14 doesn't have ROM drivers, so either should work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;An easier place to start would be to use the LPC1343 HID example, and then replace the generic HID descriptors with those from the HID mouse example.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Paul&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542094#M7685</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:32Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542095#M7686</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by wells on Thu Sep 19 13:42:00 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The new v2 examples have the 'new' USBDLIB and the 'old' LPCUSBLIB examples.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;USBDLIB is a library that provides USB device layer (hardware and class) abstraction functions from devices to the USB ROM API.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Just to be clear - LPCUSBLIB is not USBDLIB.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;For devices without the USB ROM API functions, you can use the USBD library. But if you have a device with USB ROM support, you don't need the library.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Say for example you are using the LPC11U1x devices which doesn't have the USB ROM API functions - you would use the library here.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;However, if you are using the LPC11U2x/3x devices, you don't need the library since the functions are already provided in ROM (and you save code space).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The same USBDLIB example will work the same on different devices, but for devices without the USB API functions in ROM, you need to use the library.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542095#M7686</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:32Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542096#M7687</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Sat Sep 21 06:59:36 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Many thanks indeed for this explanation. Still finding my feet the LPCXpresso &amp;amp; USB so things clearer!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542096#M7687</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:33Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542097#M7688</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Tsuneo on Mon Sep 23 13:04:54 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Leo,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The USB ROM driver on LPC1343, described on AN10904, is an early version, which is impractical.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You may start with usbhid example for LPC1343 in,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;C:\nxp\LPCXpresso_6.0.2_151\lpcxpresso\Examples\NXP\LPC1000\LPC13xx\examples.lpc13xx.new.zip&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To make a HID mouse with this example, you have to apply a couple of modifications,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) Descriptors&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2) Request handlers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3) Endpoint handler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4) Suggestion for your application&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;1) Descriptors&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;HID device type (mouse, keyboard, joystick, etc) is determined by the report descriptor.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You'll find an example of mouse report descriptor in this tool.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;"HID Descriptor Tool" on USB.org&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.usb.org%2Fdevelopers%2Fhidpage%2Fdt2_4.zip" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.usb.org/developers/hidpage/dt2_4.zip&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The report descriptor of usbhid is entirely replaced with this example, as follows,&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
usbdesc.c

/* HID Report Descriptor */
const uint8_t HID_ReportDescriptor[] = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 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; // USAGE_PAGE (Generic Desktop)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 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; // USAGE (Mouse)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xa1, 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; // COLLECTION (Application)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 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; USAGE (Pointer)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xa1, 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; COLLECTION (Physical)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 0x09,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USAGE_PAGE (Button)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x19, 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; USAGE_MINIMUM (Button 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x29, 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; USAGE_MAXIMUM (Button 3)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x15, 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; LOGICAL_MINIMUM (0)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25, 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; LOGICAL_MAXIMUM (1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 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; REPORT_COUNT (3)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 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; REPORT_SIZE (1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81, 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; INPUT (Data,Var,Abs)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 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; REPORT_COUNT (1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x05,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REPORT_SIZE (5)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81, 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; INPUT (Cnst,Var,Abs)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x05, 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; USAGE_PAGE (Generic Desktop)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x30,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USAGE (X)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x09, 0x31,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USAGE (Y)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x15, 0x81,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOGICAL_MINIMUM (-127)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25, 0x7f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOGICAL_MAXIMUM (127)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x75, 0x08,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REPORT_SIZE (8)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95, 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; REPORT_COUNT (2)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81, 0x06,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INPUT (Data,Var,Rel)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp; END_COLLECTION
&amp;nbsp;&amp;nbsp;&amp;nbsp; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // END_COLLECTION
};
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This report descriptor defines 3 bytes input report of this format,&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
byte offset
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button1 (LSB), button2, button3, and 5 bits padding
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X axis
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y axis
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Vendor/Product ID of your device should be changed, so that your mouse is recognized as a new device for your PC. You may assign temporary VID/PID like this one, just for development phase.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
config.h
#define USB_VENDOR_ID NXP_VID // Vendor ID&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;---- 0xFFF0
#define USB_PROD_ID&amp;nbsp;&amp;nbsp; 0x0003// Product ID&amp;nbsp;&amp;nbsp; &amp;lt;---- 0x0001
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;On the endpoint descriptor,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- wMaxPacketSize is reduced to 3 bytes input report (not necessarily, because greater is allowed)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- polling interval (bInterval) is set to 1 ms, to get better response&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
usbdesc.c

/* USB Configuration Descriptor */
/*&amp;nbsp;&amp;nbsp; All Descriptors (Configuration, Interface, Endpoint, Class, Vendor) */
const uint8_t USB_ConfigDescriptor[] = {
&amp;nbsp; ...
/* Endpoint, HID Interrupt In */
&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 */
&amp;nbsp; USB_ENDPOINT_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */
&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 */
&amp;nbsp; USB_ENDPOINT_TYPE_INTERRUPT,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bmAttributes */
&amp;nbsp; WBVAL(0x0004),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 */&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;---- WBVAL(0x0003)
&amp;nbsp; 0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 32ms */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bInterval */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;---- 0x01
&amp;nbsp; ...
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Optionally&lt;/STRONG&gt;&lt;SPAN&gt;, you may apply boot protocol, so that your mouse is recognized by BIOS at PC start up.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
usbdesc.c

/* USB Configuration Descriptor */
/*&amp;nbsp;&amp;nbsp; All Descriptors (Configuration, Interface, Endpoint, Class, Vendor) */
const uint8_t USB_ConfigDescriptor[] = {
&amp;nbsp; ...
/* Interface 0, Alternate Setting 0, HID Class */
&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 */
&amp;nbsp; USB_INTERFACE_DESCRIPTOR_TYPE,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* bDescriptorType */
&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 */
&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 */
&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 */
&amp;nbsp; USB_DEVICE_CLASS_HUMAN_INTERFACE,&amp;nbsp; /* bInterfaceClass */
&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 */&amp;nbsp; &amp;lt;---- HID_SUBCLASS_BOOT
&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 */&amp;nbsp; &amp;lt;---- HID_PROTOCOL_MOUSE
&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; /* iInterface */
&amp;nbsp; ...
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;2) Request handlers&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;USB_Configure_Event() is modified as follows.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
usbuser.c

#define HID_BOOT_PROTOCOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0
#define HID_REPORT_PROTOCOL&amp;nbsp;&amp;nbsp; 1

extern uint8_t HID_Protocol;
uint8_t hid_int_EP_busy;

#if USB_CONFIGURE_EVENT
void USB_Configure_Event (void) {

&amp;nbsp; if (USB_Configuration) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check if USB is configured */
/*&amp;nbsp; comment these lines
&amp;nbsp;&amp;nbsp;&amp;nbsp; GetInReport();
&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_WriteEP(0x81, &amp;amp;InReport, sizeof(InReport));
*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; HID_Protocol = HID_REPORT_PROTOCOL;&amp;nbsp;&amp;nbsp; // the default is report protocol
&amp;nbsp;&amp;nbsp;&amp;nbsp; hid_int_EP_busy = FALSE;
&amp;nbsp; }
}
#endif
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;3) Endpoint handler&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The InReport buffer is extended to 3 bytes array, to hold the input report.&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
hiduser.c
uint8_t InReport;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;---- InReport[3]

demo.h
extern uint8_t InReport;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;---- InReport[3]
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;USB_EndPoint1(), which is called at endpoint interrupt, is modified so that it puts the input report to this endpoint.&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
usbuser.c

void USB_EndPoint1 (uint32_t event) {

&amp;nbsp; switch (event) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; case USB_EVT_IN:
/*&amp;nbsp;&amp;nbsp;&amp;nbsp; comment this line
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetInReport();
*/
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( hid_int_EP_busy ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_WriteEP(0x81, &amp;amp;InReport, sizeof(InReport));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hid_int_EP_busy = FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp; }
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;4) Suggestion for your application&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Mouse movement and its buttons are regularly polled in a timer interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You have to set up a timer (or SysTick), to generate regular interrupt of around 10 ms interval.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In the timer ISR, input report is filled and EP1 interrupt is forced.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void timer_ISR( void )
{
&amp;nbsp; if ( ! hid_int_EP_busy ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //
&amp;nbsp;&amp;nbsp;&amp;nbsp; // poll mouse movement and its buttons, here
&amp;nbsp;&amp;nbsp;&amp;nbsp; //
&amp;nbsp;&amp;nbsp;&amp;nbsp; InReport[0] = buttons;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // put input report to the buffer
&amp;nbsp;&amp;nbsp;&amp;nbsp; InReport[1] = x_relative_movement;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InReport[2] = y_relative_movement;
&amp;nbsp;&amp;nbsp;&amp;nbsp; hid_int_EP_busy = TRUE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USB-&amp;gt;DevIntSet = 1 &amp;lt;&amp;lt; 2;&amp;nbsp;&amp;nbsp; // force endpoint 1 interrupt
&amp;nbsp; }
&amp;nbsp; LPC_TMR32B0-&amp;gt;IR = 1;/* clear interrupt flag */
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We don't use GetInReport() routine any more. Ignore this routine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this helps you [;)]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Tsuneo&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542097#M7688</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:33Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542098#M7689</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Tue Sep 24 02:08:39 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Tsuneo,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Brilliant, many thanks indeed for this! It'll really help!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542098#M7689</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:34Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542099#M7690</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Mon Nov 18 14:29:36 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Tsuneo,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Still working on your code. Just wondering how the USB_EndPoint1() should be handled, specifically the line:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;USB_WriteEP(0x81, &amp;amp;InReport, sizeof(InReport));&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As InReport is now an array?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542099#M7690</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:35Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542100#M7691</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Mon Nov 18 14:57:50 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Actually,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think I see the solution from a previous post of yours:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fforum%2Flpc1343-usb-hid-example%23comment-1128132" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/forum/lpc1343-usb-hid-example#comment-1128132&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542100#M7691</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:35Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542101#M7692</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Thu Nov 21 11:14:37 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I've made some progress, implemented the soft-connect feature &amp;amp; can get my laptop to recognise the LPC board as a mouse:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;[ 1966.839917] usb 3-1: USB disconnect, device number 22
[ 1971.497942] usb 3-1: new full-speed USB device number 23 using ohci_hcd
[ 1971.672939] usb 3-1: New USB device found, idVendor=fff0, idProduct=0001
[ 1971.672957] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1971.672966] usb 3-1: Product: LPC13xx USB HID 
[ 1971.672975] usb 3-1: Manufacturer: NXP SEMICOND 
[ 1971.672984] usb 3-1: SerialNumber: DEMO00000001
[ 1971.681803] input: NXP SEMICOND&amp;nbsp; LPC13xx USB HID&amp;nbsp; as /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0/input/input35
[ 1971.682183] hid-generic 0003:FFF0:0001.0018: input,hidraw2: USB HID v1.00 Mouse [NXP SEMICOND&amp;nbsp; LPC13xx USB HID ] on usb-0000:00:12.0-1/input0
[ 2136.392365] usb 3-1: USB disconnect, device number 23
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However I'm trying to get the board to create mouse movement but no success. Any idea where I should look? I've got wireshark setup to look at USB packets but not sure what I should be looking for. This USB stuff is all new!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542101#M7692</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:36Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542102#M7693</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Wed Nov 27 02:44:15 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've attached a zip of my source files &amp;amp; accompanying CMSIS (v1.3). Any chance someone who knows USB could try it out &amp;amp; see if it works for them?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;All the changes to the code have been marked with 'changed' to enable easier searching.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542102#M7693</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:36Z</dc:date>
    </item>
    <item>
      <title>Re: Implementing a LPC13XX as a USB mouse [SOLVED - working code attached]</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542103#M7694</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Fri Nov 29 10:56:37 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Finally got this working, thanks in large part to Tsuneo who seems to know he's USB!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyway for others I've attached my code. It moves the mouse once every second &amp;amp; clicks the (left) mouse button.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's successfully running on an LPC1343 Xpresso board. I've implemented soft connect on the board based on these links:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fblog.ilektronx.com%2F2011%2F09%2Fall-about-lpc1343-usb-bootloader.html" rel="nofollow" target="_blank"&gt;http://blog.ilektronx.com/2011/09/all-about-lpc1343-usb-bootloader.html&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.keil.com%2Fsupport%2Fdocs%2F3141.htm" rel="nofollow" target="_blank"&gt;http://www.keil.com/support/docs/3141.htm&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this helps others!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:16:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Implementing-a-LPC13XX-as-a-USB-mouse-SOLVED-working-code/m-p/542103#M7694</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:16:37Z</dc:date>
    </item>
  </channel>
</rss>

