<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://forums.obdev.at/app.php/feed/topic/8785" />

	<title>Objective Development Forums</title>
	
	<link href="https://forums.obdev.at/index.php" />
	<updated>2014-01-03T22:08:10+02:00</updated>

	<author><name><![CDATA[Objective Development Forums]]></name></author>
	<id>https://forums.obdev.at/app.php/feed/topic/8785</id>

		<entry>
		<author><name><![CDATA[sdmeijer]]></name></author>
		<updated>2014-01-03T22:08:10+02:00</updated>

		<published>2014-01-03T22:08:10+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=8785&amp;p=26401#p26401</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=8785&amp;p=26401#p26401"/>
		<title type="html"><![CDATA[Re: usbHidReportDescriptor work under Linux or Windows, not]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=8785&amp;p=26401#p26401"><![CDATA[
I changed the usbHidReporterDescriptor to the following and that works!<br /><br /><div class="codebox"><p>Code: </p><pre><code>const PROGMEM char usbHidReportDescriptor&#91;89&#93; = {                                         //83<br />0x05, 0x01,                    // 52: USAGE_PAGE (Generic Desktop)<br />0x09, 0x02,                    // USAGE (Mouse)<br />0xa1, 0x01,                    // COLLECTION (Application)<br />    0x85, 0x4d,                 //   REPORT_ID (77)<br />0x09, 0x01,                    //   USAGE (Pointer)<br />0xa1, 0x00,                    //   COLLECTION (Physical)<br />0x05, 0x09,                    //     USAGE_PAGE (Button)<br />0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)<br />0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)<br />0x15, 0x00,                    //     LOGICAL_MINIMUM (0)<br />0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)<br />0x95, 0x03,                    //     REPORT_COUNT (3)<br />0x75, 0x01,                    //     REPORT_SIZE (1)<br />0x81, 0x02,                    //     INPUT (Data,Var,Abs)<br />0x95, 0x01,                    //     REPORT_COUNT (1)<br />0x75, 0x05,                    //     REPORT_SIZE (5)<br />0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)<br />0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)<br />0x09, 0x30,                    //     USAGE (X)<br />0x09, 0x31,                    //     USAGE (Y)<br />0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)<br />0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)<br />0x75, 0x08,                    //     REPORT_SIZE (8)<br />0x95, 0x02,                    //     REPORT_COUNT (2)<br />0x81, 0x06,                    //     INPUT (Data,Var,Rel)<br />0xc0,                          //   END_COLLECTION<br />0xc0,                           // END_COLLECTION<br /><br />    0x05, 0x01,                    // 37: USAGE_PAGE (Generic Desktop)<br />    0x09, 0x06,                    // USAGE (Keyboard)<br />    0xa1, 0x01,                    // COLLECTION (Application)<br />    0x85, 0x4b,              //   REPORT_ID (75)<br />    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)<br />    0x19, 0xE0,                    //   USAGE_MINIMUM (Left Ctrl)<br />    0x29, 0xE7,                    //   USAGE_MAXIMUM (Right GUI)<br />    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)<br />    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)<br />    0x75, 0x01,                    //   REPORT_SIZE (1)<br />    0x95, 0x08,                    //   REPORT_COUNT (8)<br />    0x81, 0x02,                    //   INPUT (Data,Var,Abs)<br />   0x95, 0x01,                    //   REPORT_COUNT (1)<br />    0x75, 0x08,                    //   REPORT_SIZE (8)<br />    0x25, 0x65,                    //   LOGICAL_MAXIMUM (101)   <br />    0x19, 0x00,                    //   USAGE_MINIMUM (Reserved, No Event)<br />    0x29, 0x65,                    //   USAGE_MAXIMUM (Keyboard Application)<br />    0x81, 0x00,                    //   INPUT (Data,Var,Abs)<br />    0xc0                           // END_COLLECTION<br />};</code></pre></div><p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=20144">sdmeijer</a> — Fri Jan 03, 2014 10:08 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[sdmeijer]]></name></author>
		<updated>2014-01-03T17:08:33+02:00</updated>

		<published>2014-01-03T17:08:33+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=8785&amp;p=26398#p26398</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=8785&amp;p=26398#p26398"/>
		<title type="html"><![CDATA[usbHidReportDescriptor work under Linux or Windows, not both]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=8785&amp;p=26398#p26398"><![CDATA[
I'm making a combo device (keyboard &amp; mouse).<br /><br />This usbHidReportDescriptor works under Windows, but under Linux everything works except the left mouse button click (it does a right mouse button click):<br /><div class="codebox"><p>Code: </p><pre><code>const PROGMEM char usbHidReportDescriptor&#91;83&#93; = {                                         //83<br />    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)<br />    0x09, 0x02,                    // USAGE (Mouse)<br />    0xa1, 0x01,                    // COLLECTION (Application)<br />    0x85, 0x4d,                 //   REPORT_ID (77)<br />    0x05, 0x09,                    //   USAGE_PAGE (Button)<br />    0x19, 0x01,                    //   USAGE_MINIMUM (Button 1)<br />    0x29, 0x08,                    //   USAGE_MAXIMUM (Button 8)<br />    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)<br />    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)<br />    0x75, 0x01,                    //   REPORT_SIZE (1)<br />    0x95, 0x08,                    //   REPORT_COUNT (8)<br />    0x81, 0x00,                    //   INPUT (Data,Ary,Abs)<br />    0x05, 0x01,                    //   USAGE_PAGE (Generic Desktop)<br />    0x09, 0x01,                    //   USAGE (Pointer)<br />    0xa1, 0x00,                    //   COLLECTION (Physical)<br />    0x09, 0x30,                    //     USAGE (X)<br />    0x09, 0x31,                    //     USAGE (Y)<br />    0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)<br />    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)<br />    0x75, 0x08,                    //     REPORT_SIZE (8)<br />    0x95, 0x02,                    //     REPORT_COUNT (2)<br />    0x81, 0x06,                    //     INPUT (Data,Var,Rel)<br />    0xc0,                          //   END_COLLECTION<br />    0xc0,                          // END_COLLECTION<br />    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)<br />    0x09, 0x06,                    // USAGE (Keyboard)<br />    0xa1, 0x01,                    // COLLECTION (Application)<br />    0x85, 0x4b,              //   REPORT_ID (75)<br />    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)<br />    0x19, 0xE0,                    //   USAGE_MINIMUM (Left Ctrl)<br />    0x29, 0xE7,                    //   USAGE_MAXIMUM (Right GUI)<br />    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)<br />    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)<br />    0x75, 0x01,                    //   REPORT_SIZE (1)<br />    0x95, 0x08,                    //   REPORT_COUNT (8)<br />    0x81, 0x02,                    //   INPUT (Data,Var,Abs)<br />   0x95, 0x01,                    //   REPORT_COUNT (1)<br />    0x75, 0x08,                    //   REPORT_SIZE (8)<br />    0x25, 0x65,                    //   LOGICAL_MAXIMUM (101)   <br />    0x19, 0x00,                    //   USAGE_MINIMUM (Reserved, No Event)<br />    0x29, 0x65,                    //   USAGE_MAXIMUM (Keyboard Application)<br />    0x81, 0x00,                    //   INPUT (Data,Var,Abs)<br />    0xc0                           // END_COLLECTION<br />};<br /></code></pre></div><br /><br />This usbHidReportDescriptor works under Linux, but under Windows only the keyboard part works:<br /><div class="codebox"><p>Code: </p><pre><code>const PROGMEM char usbHidReportDescriptor&#91;100&#93; = {                                         //83<br />    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)<br />    0x09, 0x02,                    // USAGE (Mouse)<br />    0xa1, 0x01,                    // COLLECTION (Application)<br />    0x85, 0x4d,                 //   REPORT_ID (77)<br />    0x09, 0x01,       //   USAGE (Pointer)<br />    0xa1, 0x00,       //   COLLECTION (Physical)<br />    0x05, 0x09,       //     USAGE_PAGE (Button)<br />    0x19, 0x01,       //     USAGE_MINIMUM (Button 1)<br />    0x29, 0x03,       //     USAGE_MAXIMUM (Button 3)<br />    0x15, 0x00,       //     LOGICAL_MINIMUM (0)<br />    0x25, 0x01,       //     LOGICAL_MAXIMUM (1)<br />    0x95, 0x03,       //     REPORT_COUNT (3)<br />    0x75, 0x01,       //     REPORT_SIZE (1)<br />    0x81, 0x02,       //     INPUT (Data,Var,Abs)<br />    0x95, 0x01,       //     REPORT_COUNT (1)<br />    0x75, 0x05,       //     REPORT_SIZE (5)<br />    0x81, 0x03,       //     INPUT (Cnst,Var,Abs)<br />    0x05, 0x01,       //     USAGE_PAGE (Generic Desktop)<br />    0x09, 0x30,       //     USAGE (X)<br />    0x09, 0x31,       //     USAGE (Y)<br />    0x09, 0x38,       //     USAGE (Wheel)<br />    0x15, 0x81,       //     LOGICAL_MINIMUM (-127)<br />    0x25, 0x7f,       //     LOGICAL_MAXIMUM (127)<br />    0x75, 0x08,       //     REPORT_SIZE (8)<br />    0x95, 0x03,       //     REPORT_COUNT (3)<br />    0x81, 0x06,       //     INPUT (Data,Var,Rel)<br />    0x05, 0x0c,       //     USAGE_PAGE (Consumer Devices)<br />    0x0a, 0x38, 0x02, //     USAGE (Undefined)<br />    0x95, 0x01,       //     REPORT_COUNT (1)<br />    0x81, 0x06,       //     INPUT (Data,Var,Rel)<br />    0xc0,                          //   END_COLLECTION<br />    0xc0,                          // END_COLLECTION<br />    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)<br />    0x09, 0x06,                    // USAGE (Keyboard)<br />    0xa1, 0x01,                    // COLLECTION (Application)<br />    0x85, 0x4b,              //   REPORT_ID (75)<br />    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)<br />    0x19, 0xE0,                    //   USAGE_MINIMUM (Left Ctrl)<br />    0x29, 0xE7,                    //   USAGE_MAXIMUM (Right GUI)<br />    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)<br />    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)<br />    0x75, 0x01,                    //   REPORT_SIZE (1)<br />    0x95, 0x08,                    //   REPORT_COUNT (8)<br />    0x81, 0x02,                    //   INPUT (Data,Var,Abs)<br />   0x95, 0x01,                    //   REPORT_COUNT (1)<br />    0x75, 0x08,                    //   REPORT_SIZE (8)<br />    0x25, 0x65,                    //   LOGICAL_MAXIMUM (101)   <br />    0x19, 0x00,                    //   USAGE_MINIMUM (Reserved, No Event)<br />    0x29, 0x65,                    //   USAGE_MAXIMUM (Keyboard Application)<br />    0x81, 0x00,                    //   INPUT (Data,Var,Abs)<br />    0xc0                           // END_COLLECTION<br />};<br /></code></pre></div><br /><br />Who can help me with a working usbHidReportDescriptor which works under Windows, Linux (and preferably Mac)?<p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=20144">sdmeijer</a> — Fri Jan 03, 2014 5:08 pm</p><hr />
]]></content>
	</entry>
	</feed>
