Arduino Computers & Mobile Technology

After a quick search of the posts I’ve written for MAKE, it’s clear that I overuse the word “awesome.” It’s not news to me, but I had no idea how bad my problem was. In fact, I think you could say that I abuse the word. In order to cut down on my usage of “awesome” and to help me find suitable replacements, I made The AWESOME Button. It’s a plug-and-play USB device that will type a random synonym for the word “awesome” when the button is pressed. The beauty of it is that it works on any computer with a USB port in any application.

Subscribe to the MAKE Podcast in iTunes, download the m4v video directly, or watch it on YouTube and Vimeo.

How is it made? At the core of The AWESOME Button is the Teensy USB, a really sweet* microcontroller that has the ability to act like a USB mouse or keyboard right out of the box. Not only that, but if you’re most comfortable writing code for the Arduino, you can load your Arduino sketches onto it directly once you install Teensy Loader and Teensyduino on your system. But don’t let that discourage you, they’re both a snap to install.

Of course, I’m not totally serious about this particular application, but I wanted to show how you can make your own custom USB human interface device. If you’re a gamer, you could make a controller exactly to your own specifications. Or perhaps you could hack an Etch A Sketch to control your mouse pointer. I think I want to mod an NES controller so that it works as a Flickr browser. There are many different tremendous* ways you could use this. Leave your terrific* ideas in the comments!

* Yes, these words were actually generated at random by The AWESOME Button. For the curious, here’s the full list of words programmed into it, comment below if you think I’ve missed any: brilliant, cool, crack, dope, excellent, exceptional, fabulous, fantastic, fine, first-rate, fly, fresh, incredible, keen, laudable, marvelous, neat, nifty, rad, super, superb, sweet, terrific, tremendous, wicked, wonderful, and worthy.

86 thoughts on “The AWESOME Button: A Made-to-Measure USB Input Device

  1. I really liked this build. Gave me a few ideas for myself. Just a small note to all the people who are not that great with hardware, the same could have been done with a simple program like AutoHotKey as a software only solution with a small simple script. Now to get myself a teensy!

      1. You must be new here. They have indeed been guilty of publishing projects that use software that someone else wrote, as the primary tool for the project. One of my first complaints about Make was involving a project that did that “light writing” thing they did in some commercial, and it required Adobe software to do 99% of it.

    1.  We are doing a project with multiple screens in a non-profit exhibition space. We want to run a simple DVD file off a pen drive plugged into the side of a TV. Simple system, but we want to have a physical button to press play for the public, rather than the remote.

      Does any of the above button ideas do this? Can anyone comment how this could be done?


    1. You missed the point. He was showing us how to make a usb device. I’m sure he knows that you can use the web to find stuff cause he is using it right now to show a video.

        1. It may be difficult to have the Teensy access the internet and act as a USB keyboard at the same time. It would basically have to disconnect as a USB keyboard, connect as some device which can access the TCP/IP stack (if that’s even possible), and then reconnect as the keyboard.

          You might be able to do this with an Arduino UNO + Ethernet Shield though.

  2. I ran across something somewhat similar, using a promotional Ecobutton ( ) given as a Christmas gift by a local contractor. If you’ve never seen these things before, they’re little green buttons with slow-scrolling LED special effects. Plug it into your USB port, install the software, and it puts your computer into a low-power sleep mode when pressed. Then it displays how much energy you’ve saved when you wake the computer back up. Silly gimmick, really, but it turned out to be kind of useful for other purposes.

    The button is, in effect, a hardwired macro recorder. When pressed, it sends the keyboard shortcut for the Windows Run command dialogue box, then types the word “ecobutton” and hits return. If you uninstall the software, Windows will dig around in its search path for anything else named “ecobutton”- such as a batch file dumped in the Windows directory (ecobutton.bat). I’ve used it to bring up my timesheet software at work (boss was impressed, anyway) and turn on the TV receiver on my home PC, but anything you can cram into a batch file will work. I’m sure there are a variety of USB widgets out there that work the same way. Could be repurposed to do all sorts of things.

    Anyway, thought I’d mention it- something else to add to the mental toolkit.

    1. What my version does new is you can send a string to the device and it gets programmed in eeprom. So you can change it to any output string to type when you type the button without the need to get a chip programmer and reflash it. Also it is much cheaper to produce and smaller too. Hopefully I’ll be able to finish my soldering of the mini keychain version soon ;). The eco-button uses drivers though. The anykey looks and acts just like a standard usb keyboard to the pc. This way you can plug it into any pc press the button and it will output your string no drivers, no installs it just works instantly. This is what you also need. Lets say your collegue needs your password to do some work on your account (happens all the time) you have to type it in and he looks the other way right? Well now you just pop in the anykey and press the button and he can’t peep at your password also it is just easy in day to day work…

      Here is the rather boring youtube vid, I will make a more exiting one soon. Happy I did it though since it prooves I was earlier with the idea as well ;).

      1. That sounds pretty cool! I look forward to seeing it develop, as I’d love to be able to add additional button functions.

        FWIW, the ecobutton thing doesn’t require drivers specific to the device. It reads and installs as a standard “human interface device” when you plug it in, like a generic keyboard. I’ve used it without even installing the ecobutton software- works as described. But, as you say, considerably less flexible. Still, for the price I paid (free), it’s kind of nifty.

    2. That’s funny about the EcoButton. I discovered the same method of using it as a general-purpose button a few years ago, and thought I was the only one who had figured out how to do that. I wrote a little script in AutoHotKey to put my computer in Standby mode, compiled it to an .exe named ecobutton.exe, and stuck it in my Windows folder. Works like a charm…

  3. In yours an my own defense there is something to be said about saying the first word that comes to mind. People are quick to understand what your saying. That said, this is an /ingenious/ project highlighting how easy it is to make custom USB devices.

  4. I didn’t know that you could do keyboard.print – I really like that. must look at that for my next project…

    1. I don’t know of a way that the Duemilanove can be a USB human interface device “out of the box.” Perhaps it could be done, but I haven’t seen it used that way anywhere. The best bet is with the Uno, but there’s not a lot of support for it to be used that way. I decided to go with the Teensy because it seemed like it was an easy way to do this, and ended up being easier than I imagined.

          1. Oh yeah, I know there has been a little work with the Uno, but it looks like it’s not quite as HID as the Teensy… that said, I just ordered a Teensy for a specific project I have in mind. :)

  5. This is an amazing project! and quite easy too!
    Just a quick question, now that you’ve done all the hard work for us, can we just buy the normal Teensy USB (without the header pins), connect it via USB, program it, and then assemble the button?
    Or do you recommend buying ones with the header, getting a bread board and testing it for ourselves?

    1. Thanks! You don’t need the header pins to prototype, but it does make it a lot easier. Just don’t solder anything to the board until you’ve tested it, it could get messy if you make a mistake.

    1. @Bill Cutter – Wow! looks like you got up on the wrong side of the bed.

      @Matt – Great project. Remarkably simple and it illustrates the concepts beautifully. Thank you.

    2. If comment trolls were fire, I would pour hipster-water on them to put them out.

      Also, big points for spotting Matt’s fixed-gear bike, cool tattoos, single-origin coffee, and vintage wardrobe in this video. All carefully hidden, but you spotted them. Go, you!

  6. I’ve got a million ideas for this, mostly involving World of Warcraft and the occaisional need to hit a very specific button very quickly.

    However, I’m a total newbie at this . I see I would need a teensyduino. Do I need an arduino as well?

    1. Mark, I’m glad that you’re interested. I think you’ll be surprised at how easy it can be. If you use the Teensy, don’t need another other microcontroller, but you’ll need to download the Arduino IDE, the Teensy Loader and Teensyduino. They’re all free and a snap to install.

      I encourage you to give it all a try though, and don’t worry about what you don’t know yet. Since you’re already comfortable with soldering and coding, I think the rest will come easily to you.

  7. Yep this kind of hack I did a year ago without a teensy board on a smaller atmega chip (usb entirely in firmware). Patent pending already.
    Use the button to type in your daily password! its on my blog
    I called it the anykey. Gathering resources to produce it (parts cost me around 5$). Anyone interested in joining the adventure?

    1. Yes, true. Thanks! I’m looking forward to when the Arduino Team (or someone else for that matter) is going to make this an easier thing to do “out of the box.” I could see a lot of people using their Arduinos like this. For example, if you want data to come out of your Arduino and go into an open Excel spreadsheet, it may just be easiest to have the Arduino simply key in the numbers with tabs and returns when appropriate. Yes, you can get the data via serial, but I think that tends to take a little more trickery on the computer-side.

    1. Yep, it works on Mac, Linux and Windows. To load the code onto the the Teensy, you need to install Arduino, The Teensy Loader, and Teensyduino. They’re all very easy to install. Once the code is loaded, it acts like a USB keyboard, so it can be plugged into any computer without extra software.

  8. Such a fabulous idea! Here’s some more words for your list: astonishing, breathtaking, fascinating, inconceivable, magnificent, mind-blowing, peachy, phenomenal, primo, sensational, stunning, unreal

    Almost extinct colloquialisms- only you can save them!: bang-on, boss, fly, groovy, keen, out-of-sight, top drawer, whiz-bang.

  9. Matt, this was Awesome, and your video gave me the idea to do an awesome way to LIKE posts with Kinect, check this video At first I wanted to use the easy button for it, but it was too easy ;) 

  10. Thank you so much for this! For a school project I’m attempting to make a USB Keypad that has uncommon, but useful, keystrokes. This works perfect for making such a device! My friends are also attempting to make a USB device, but instead of a keypad, they want to make a portable USB game emulator for Gameboy games, but they not quite sure how to go about it. How could they use the “awesome buttons” concept to do such a thing?

  11. Like this very much. But can someone please help me with a parts list or a place where i can buy the necessary components? :/

    1. You just need the Teensy, a mini-USB cable and a button, plus some wires.

      The Teensy and the USB cable can be bought from the Teensy website. The link is in the description. (however, if you have a phone from the past 5 years, you will most likely have a mini-USB cable, especially if the phone is a smart phone.) The button and wires are available from any electronic store. Radio Shack is a great place for cheap supplies. is also an awesome place.

  12. My manager wants a Crazy Train button for when problems come into the Lab. I’m going to use part of your build for my off the clock project. I’m not a programmer but I’ll figure it out. We already have a stock Easy button for when the problems are fixed. Thanks for the fun video.

  13. Matt, this is awesome! I bought a teensy after seeing this video and it’s awesome! I was just wondering if you could help me…I’m on a Mac and don’t see any code for typing the ‘command’ button. I tried [char ctrlKey = KEY_LEFT_GUI;;] but it didn’t work. Thanks in advance!

    1. Never mind! I was going through an entire list of Keyboard modifiers from an Arduino page and found this:;
      It worked!

  14. I wanted to modify the code a little to add a “tab” keystroke so that you can get to the next field to enter text. I tried adding Keyboard.Print(“t”); but I did not get a tab keystroke. But the n (newline character) worked. Anyone know where you can get the full documentation for the Keyboard.print function or why this happened?

  15. Pingback: investing

Comments are closed.


Matt Richardson is a San Francisco-based creative technologist and Contributing Editor at MAKE. He’s the co-author of Getting Started with Raspberry Pi and the author of Getting Started with BeagleBone.

View more articles by Matt Richardson