<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How to drive USB keyboard from Arduino</title>
	<atom:link href="http://www.circuitsathome.com/mcu/programming/how-to-drive-usb-keyboard-from-arduino/feed" rel="self" type="application/rss+xml" />
	<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino</link>
	<description>A Solder Joint</description>
	<lastBuildDate>Thu, 17 May 2012 05:09:08 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: oleg</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-3663</link>
		<dc:creator>oleg</dc:creator>
		<pubDate>Mon, 04 Apr 2011 05:05:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-3663</guid>
		<description>Power pins are not specific to the shield, you can connect the as usual, i.e., VCC to 5V, GND to GND and Vo to a wiper of a potentiometer connected between VCC and GND. You don&#039;t need to change the library.</description>
		<content:encoded><![CDATA[<p>Power pins are not specific to the shield, you can connect the as usual, i.e., VCC to 5V, GND to GND and Vo to a wiper of a potentiometer connected between VCC and GND. You don&#8217;t need to change the library.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sudar</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-3662</link>
		<dc:creator>Sudar</dc:creator>
		<pubDate>Mon, 04 Apr 2011 04:59:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-3662</guid>
		<description>How is the LCD connected to the USB Shield? Can you share that information? I tried looking into the max_LCD.h file and connected RS, E and the four pins but was not able to figure out how to connect the VCC and Vo pins. Also do we have to make any change to the library to use LCD?</description>
		<content:encoded><![CDATA[<p>How is the LCD connected to the USB Shield? Can you share that information? I tried looking into the max_LCD.h file and connected RS, E and the four pins but was not able to figure out how to connect the VCC and Vo pins. Also do we have to make any change to the library to use LCD?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: amos</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-2171</link>
		<dc:creator>amos</dc:creator>
		<pubDate>Mon, 07 Feb 2011 06:15:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-2171</guid>
		<description>Hi, 

I am trying to get a USB DELL keyboard to work with the most updated USB Host Shield codes. Tried the board_test but it keeps giving packet error D. 

I am using the old version of the USB Host Shield, but have already swapped the MAX_GPX and _INT and rewired the SPI since I am using Mega1280.

Any ideas on how I should go about doing it?

This is the USB properties of the keyboard:

Connection Status Device connected 
Current Configuration 1 
Speed Low 
Device Address 1 
Number Of Open Pipes 1 

Device Descriptor Dell USB Keyboard
Offset Field Size Value Description 
0. bLength 1 12h  
1. bDescriptorType 1 01h Device 
2. bcdUSB 2 0110h USB Spec 1.1 
4. bDeviceClass 1 00h Class info in Ifc Descriptors 
5. bDeviceSubClass 1 00h  
6. bDeviceProtocol 1 00h  
7. bMaxPacketSize0 1 08h 8 bytes 
8. idVendor 2 413Ch Dell Computer Corp. 
10. idProduct 2 2003h  
12. bcdDevice 2 0100h 1.00 
14. iManufacturer 1 01h &quot;Dell&quot; 
15. iProduct 1 02h &quot;Dell USB Keyboard&quot; 
16. iSerialNumber 1 00h  
17. bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 70 mA
Offset Field Size Value Description 
0. bLength 1 09h  
1. bDescriptorType 1 02h Configuration 
2. wTotalLength 2 0022h  
4. bNumInterfaces 1 01h  
5. bConfigurationValue 1 01h  
6. iConfiguration 1 04h &quot;HID Keyboard&quot; 
7. bmAttributes 1 A0h Bus Powered, Remote Wakeup 
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..1.....  Yes 
 6: Self Powered  .0......  No, Bus Powered 
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8. bMaxPower 1 23h 70 mA 

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description 
0. bLength 1 09h  
1. bDescriptorType 1 04h Interface 
2. bInterfaceNumber 1 00h  
3. bAlternateSetting 1 00h  
4. bNumEndpoints 1 01h  
5. bInterfaceClass 1 03h HID 
6. bInterfaceSubClass 1 01h Boot Interface 
7. bInterfaceProtocol 1 01h Keyboard 
8. iInterface 1 05h &quot;EP1 Interrupt&quot; 

HID Descriptor 
Offset Field Size Value Description 
0. bLength 1 09h  
1. bDescriptorType 1 21h HID 
2. bcdHID 2 0110h 1.10 
4. bCountryCode 1 00h  
5. bNumDescriptors 1 01h  
6. bDescriptorType 1 22h Report 
7. wDescriptorLength 2 0041h 65 bytes 

Endpoint Descriptor 81 1 In, Interrupt, 24 ms
Offset Field Size Value Description 
0. bLength 1 07h  
1. bDescriptorType 1 05h Endpoint 
2. bEndpointAddress 1 81h 1 In 
3. bmAttributes 1 03h Interrupt 
 1..0: Transfer Type  ......11  Interrupt 
 7..2: Reserved  000000..   
4. wMaxPacketSize 2 0008h 8 bytes 
6. bInterval 1 18h 24 ms 

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data 
Usage Page (Generic Desktop) 05 01  
Usage (Keyboard) 09 06  
Collection (Application) A1 01  
    Usage Page (Keyboard/Keypad) 05 07  
    Usage Minimum (Keyboard Left Control) 19 E0  
    Usage Maximum (Keyboard Right GUI) 29 E7  
    Logical Minimum (0) 15 00  
    Logical Maximum (1) 25 01  
    Report Size (1) 75 01  
    Report Count (8) 95 08  
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02  
    Report Count (1) 95 01  
    Report Size (8) 75 08  
    Input (Cnst,Ary,Abs) 81 01  
    Report Count (3) 95 03  
    Report Size (1) 75 01  
    Usage Page (LEDs) 05 08  
    Usage Minimum (Num Lock) 19 01  
    Usage Maximum (Scroll Lock) 29 03  
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02  
    Report Count (1) 95 01  
    Report Size (5) 75 05  
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01  
    Report Count (6) 95 06  
    Report Size (8) 75 08  
    Logical Minimum (0) 15 00  
    Logical Maximum (255) 26 FF 00  
    Usage Page (Keyboard/Keypad) 05 07  
    Usage Minimum (Undefined) 19 00  
    Usage Maximum 2A FF 00  
    Input (Data,Ary,Abs) 81 00  
End Collection C0  

-Amos</description>
		<content:encoded><![CDATA[<p>Hi, </p>
<p>I am trying to get a USB DELL keyboard to work with the most updated USB Host Shield codes. Tried the board_test but it keeps giving packet error D. </p>
<p>I am using the old version of the USB Host Shield, but have already swapped the MAX_GPX and _INT and rewired the SPI since I am using Mega1280.</p>
<p>Any ideas on how I should go about doing it?</p>
<p>This is the USB properties of the keyboard:</p>
<p>Connection Status Device connected<br />
Current Configuration 1<br />
Speed Low<br />
Device Address 1<br />
Number Of Open Pipes 1 </p>
<p>Device Descriptor Dell USB Keyboard<br />
Offset Field Size Value Description<br />
0. bLength 1 12h<br />
1. bDescriptorType 1 01h Device<br />
2. bcdUSB 2 0110h USB Spec 1.1<br />
4. bDeviceClass 1 00h Class info in Ifc Descriptors<br />
5. bDeviceSubClass 1 00h<br />
6. bDeviceProtocol 1 00h<br />
7. bMaxPacketSize0 1 08h 8 bytes<br />
8. idVendor 2 413Ch Dell Computer Corp.<br />
10. idProduct 2 2003h<br />
12. bcdDevice 2 0100h 1.00<br />
14. iManufacturer 1 01h &#8220;Dell&#8221;<br />
15. iProduct 1 02h &#8220;Dell USB Keyboard&#8221;<br />
16. iSerialNumber 1 00h<br />
17. bNumConfigurations 1 01h </p>
<p>Configuration Descriptor 1 Bus Powered, 70 mA<br />
Offset Field Size Value Description<br />
0. bLength 1 09h<br />
1. bDescriptorType 1 02h Configuration<br />
2. wTotalLength 2 0022h<br />
4. bNumInterfaces 1 01h<br />
5. bConfigurationValue 1 01h<br />
6. iConfiguration 1 04h &#8220;HID Keyboard&#8221;<br />
7. bmAttributes 1 A0h Bus Powered, Remote Wakeup<br />
 4..0: Reserved  &#8230;00000<br />
 5: Remote Wakeup  ..1&#8230;..  Yes<br />
 6: Self Powered  .0&#8230;&#8230;  No, Bus Powered<br />
 7: Reserved (set to one)<br />
(bus-powered for 1.0)  1&#8230;&#8230;.<br />
8. bMaxPower 1 23h 70 mA </p>
<p>Interface Descriptor 0/0 HID, 1 Endpoint<br />
Offset Field Size Value Description<br />
0. bLength 1 09h<br />
1. bDescriptorType 1 04h Interface<br />
2. bInterfaceNumber 1 00h<br />
3. bAlternateSetting 1 00h<br />
4. bNumEndpoints 1 01h<br />
5. bInterfaceClass 1 03h HID<br />
6. bInterfaceSubClass 1 01h Boot Interface<br />
7. bInterfaceProtocol 1 01h Keyboard<br />
8. iInterface 1 05h &#8220;EP1 Interrupt&#8221; </p>
<p>HID Descriptor<br />
Offset Field Size Value Description<br />
0. bLength 1 09h<br />
1. bDescriptorType 1 21h HID<br />
2. bcdHID 2 0110h 1.10<br />
4. bCountryCode 1 00h<br />
5. bNumDescriptors 1 01h<br />
6. bDescriptorType 1 22h Report<br />
7. wDescriptorLength 2 0041h 65 bytes </p>
<p>Endpoint Descriptor 81 1 In, Interrupt, 24 ms<br />
Offset Field Size Value Description<br />
0. bLength 1 07h<br />
1. bDescriptorType 1 05h Endpoint<br />
2. bEndpointAddress 1 81h 1 In<br />
3. bmAttributes 1 03h Interrupt<br />
 1..0: Transfer Type  &#8230;&#8230;11  Interrupt<br />
 7..2: Reserved  000000..<br />
4. wMaxPacketSize 2 0008h 8 bytes<br />
6. bInterval 1 18h 24 ms </p>
<p>Interface 0 HID Report Descriptor Keyboard<br />
Item Tag (Value) Raw Data<br />
Usage Page (Generic Desktop) 05 01<br />
Usage (Keyboard) 09 06<br />
Collection (Application) A1 01<br />
    Usage Page (Keyboard/Keypad) 05 07<br />
    Usage Minimum (Keyboard Left Control) 19 E0<br />
    Usage Maximum (Keyboard Right GUI) 29 E7<br />
    Logical Minimum (0) 15 00<br />
    Logical Maximum (1) 25 01<br />
    Report Size (1) 75 01<br />
    Report Count (8) 95 08<br />
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02<br />
    Report Count (1) 95 01<br />
    Report Size (8) 75 08<br />
    Input (Cnst,Ary,Abs) 81 01<br />
    Report Count (3) 95 03<br />
    Report Size (1) 75 01<br />
    Usage Page (LEDs) 05 08<br />
    Usage Minimum (Num Lock) 19 01<br />
    Usage Maximum (Scroll Lock) 29 03<br />
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02<br />
    Report Count (1) 95 01<br />
    Report Size (5) 75 05<br />
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01<br />
    Report Count (6) 95 06<br />
    Report Size (8) 75 08<br />
    Logical Minimum (0) 15 00<br />
    Logical Maximum (255) 26 FF 00<br />
    Usage Page (Keyboard/Keypad) 05 07<br />
    Usage Minimum (Undefined) 19 00<br />
    Usage Maximum 2A FF 00<br />
    Input (Data,Ary,Abs) 81 00<br />
End Collection C0  </p>
<p>-Amos</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: oleg</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-1144</link>
		<dc:creator>oleg</dc:creator>
		<pubDate>Tue, 07 Dec 2010 17:44:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-1144</guid>
		<description>If you use interrupt endpoint to poll the Keyboard, it replies immediately or returns a NAK. You may want to play with NAK_LIMIT to see if delay is caused by NAKs.</description>
		<content:encoded><![CDATA[<p>If you use interrupt endpoint to poll the Keyboard, it replies immediately or returns a NAK. You may want to play with NAK_LIMIT to see if delay is caused by NAKs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Einar</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-1142</link>
		<dc:creator>Einar</dc:creator>
		<pubDate>Tue, 07 Dec 2010 15:54:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-1142</guid>
		<description>I got the whole thing running but there&#039;s one problem, it seems like the keyboard put a lag into the motor run, kinda like the button checking is taking too long in the loop. Any idea how I can smooth it out?</description>
		<content:encoded><![CDATA[<p>I got the whole thing running but there&#8217;s one problem, it seems like the keyboard put a lag into the motor run, kinda like the button checking is taking too long in the loop. Any idea how I can smooth it out?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Einar</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-1115</link>
		<dc:creator>Einar</dc:creator>
		<pubDate>Sat, 04 Dec 2010 14:24:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-1115</guid>
		<description>Alright, thanks :). I think I&#039;ve learned enough about the keyboard function, now I just need to figure out how to loop digitalWrite functions for two stepper motors while a button is pressed. It only runs one time through it, as in only one step when button is pressed. If you have the time I would really appreciate the help. I&#039;m using switch case function. I&#039;ve read about a few methods but it&#039;s a bit over my head at the moment.

-Einar</description>
		<content:encoded><![CDATA[<p>Alright, thanks <img src='http://www.circuitsathome.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I think I&#8217;ve learned enough about the keyboard function, now I just need to figure out how to loop digitalWrite functions for two stepper motors while a button is pressed. It only runs one time through it, as in only one step when button is pressed. If you have the time I would really appreciate the help. I&#8217;m using switch case function. I&#8217;ve read about a few methods but it&#8217;s a bit over my head at the moment.</p>
<p>-Einar</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: oleg</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-1100</link>
		<dc:creator>oleg</dc:creator>
		<pubDate>Sat, 04 Dec 2010 04:12:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-1100</guid>
		<description>Read this article -&gt; http://www.circuitsathome.com/mcu/arduino-usb-host-part-4-peripherals ; there is a sketch that does very similar thing, i.e., it shows when a key (or keys) are pressed/released.</description>
		<content:encoded><![CDATA[<p>Read this article -&gt; <a href="http://www.circuitsathome.com/mcu/arduino-usb-host-part-4-peripherals" rel="nofollow">http://www.circuitsathome.com/mcu/arduino-usb-host-part-4-peripherals</a> ; there is a sketch that does very similar thing, i.e., it shows when a key (or keys) are pressed/released.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Einar</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-1099</link>
		<dc:creator>Einar</dc:creator>
		<pubDate>Sat, 04 Dec 2010 04:07:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-1099</guid>
		<description>I have one more question :P
Can I change the code so buttons on the keyboard work as momentary switches so HIGH and LOW state can be read on each button?</description>
		<content:encoded><![CDATA[<p>I have one more question <img src='http://www.circuitsathome.com/wp/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
Can I change the code so buttons on the keyboard work as momentary switches so HIGH and LOW state can be read on each button?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Einar</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-980</link>
		<dc:creator>Einar</dc:creator>
		<pubDate>Sat, 20 Nov 2010 03:30:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-980</guid>
		<description>Nevermind, I figured it out :). Thanks Oleg.</description>
		<content:encoded><![CDATA[<p>Nevermind, I figured it out <img src='http://www.circuitsathome.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Thanks Oleg.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Einar</title>
		<link>http://www.circuitsathome.com/mcu/how-to-drive-usb-keyboard-from-arduino/comment-page-1#comment-974</link>
		<dc:creator>Einar</dc:creator>
		<pubDate>Fri, 19 Nov 2010 03:18:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.circuitsathome.com/?p=1739#comment-974</guid>
		<description>Do I then use HEX to specify a button on the keyboard with a definition, or is it a bit more complex than that?

Einar.</description>
		<content:encoded><![CDATA[<p>Do I then use HEX to specify a button on the keyboard with a definition, or is it a bit more complex than that?</p>
<p>Einar.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

