Arduino UNO Keyboard HID version 0.2

I've updated the keyboard driver so it no longer needs delays in the sketch when sending keys. Here's the updated firmware, source, and an example sketch to send "hello world" via the keyboard.

Download file "Arduino-keyboard-0.2.hex"
Download file "arduino-keyboard-0.2.tgz"
Download file "kbd_usb_demo.pde"

And firmware built for the Arduino Mega2560 but not tested (I don't have a board to test on, but it should work). If you do try it out let me know how it goes.

Download file "Arduino-keyboard-mega2560.hex"


feiltom (unauthenticated)
Apr 7, 2011

hello i used your keyboard hid hex on my arduino
i have a problem when i send a keycode > 100, the keycode not arrive on my computer ( example 114 for volume down)
for all the standart touch ist OK.
thank s for your work.

Apr 7, 2011

Hi Feiltom, thanks for trying out the firmware.

I had a look at the Keyboard HID usage codes (in chapter 10 of and found that the volume down key code is 129. I tried out that key code in the demo sketch and it worked for me. Key code 114 is listed as function key F23, so I don't know what that would do to a host PC.

feiltom (unauthenticated)
Apr 10, 2011

Hi thanks for your response.
I have test and i don t receive the key code 129 on my laptop
0 -> buffer0 129 -> buffer2.
i am sorry for ask this but can t you send me your test sketch.
thomas at feillant dot com
thank s for you responce.

Filipe Lemos (unauthenticated)
Sep 27, 2011

Hey Darran, great work dude!
I have followed up your work and it was really simple to do in windows, later I will post somewhere how to do it so you can help others.
But I still does not understand how to do the firmware. What I want to do is to creat a special keyboard.
How do I build that? You say we should use the demos on the LUFA packge, what about that?
Should I use a C compiler? Sorry for the stupid questions, new to arduino and got really lost.

Dewi Mulyani (unauthenticated)
Jan 4, 2012


I have any problem with Driver for Arduino as HID Device. So i can't upload the sketch because serial port in setting (tools>Serial Port ) is not available. In control panel, Arduino detect as HID Keyboard.

How i solved that ? Thanx before.

Jan 17, 2012

Hi Dewi,

to load a sketch you have to flash the arduino-usbserial.hex firmware back onto the 8u2 via DFU mode. The keyboard firmware doesn't support a serial interface so you can't load a sketch with it.

Dewi Mulyani (unauthenticated)
Jan 17, 2012

OK Thanx.. my project has been successful.. I make a Winamp Controller with TV remote as a controller. TV remote input reads as a keyboard input with Arduino, so it can be shortcut for controller Winamp. :)
Thanx for u'r Arduino-keyboard-03.hex. it really helped me..

WillGonz (unauthenticated)
Feb 8, 2012

Can you use the Mouse and Keyboard HIDs at the same time? If you add another USB shield that allows serial communications could you still load a sketch without reloading the serial firmware with the Mega? Also I need serial Communications while in HID mode.

Mar 11, 2012

Hi WillGonz, sorry for the late reply.

You could create a combined Mouse and Keyboard HID driver. You will need a newer Uno or Mega with the atmega16u2 on it (e.g. Uno R3), because the 4KB of flash available for the driver on the atmega8u2 is not enough to fit both drivers. The 16u2 has 12KB available for the driver so there's plenty.


big emlak (unauthenticated)
Apr 19, 2014